0

UInt(1) は 1 ビットの 10 進リテラルを参照することを読みました。UInt(0) が何を意味するのか混乱しています。次のようにカウンターコードで使用されます:-

package TutorialSolutions

    import Chisel._

    object Counter {`

    `def wrapAround(n: UInt, max: UInt) = `    

        Mux(n > max, **UInt(0)**, n)

        // ---------------------------------------- \\
        // Modify this function to increment by the
        // amt only when en is asserted
        // ---------------------------------------- \\
        def counter(max: UInt, en: Bool, amt: UInt) = {     
        val x = Reg(init=**UInt(0, max.getWidth)**)
        when (en) { x := wrapAround(x + amt, max) }


        x   
    }

強調表示された (アスタリスクで囲まれた) 2 つのステートメントの動作を説明できる人はいますか?

4

2 に答える 2

3

UInt符号なし整数を定義します。UInt(value)は 1 ビットの 10 進数リテラルを定義するためUInt(0)、 とUInt(1)はそれぞれ 0 と 1 を保持する 1 ビット幅の整数のリテラルです。UInt(value, width)1ビットより大きい値でリテラルを定義できるため、例から、値0を保持するビットUInt(0, max.getWidth)で符号なし整数を作成します。max.getWidth

参考:https ://chisel.eecs.berkeley.edu/2.0.0/manual.html

于 2013-10-16T18:51:48.707 に答える
0

UInt(1) は、値 1 の 1ビット リテラルを参照します。

Mux (n > max, UInt(0), n)

Mux() は基本的に「lhs = cond ? UInt(0) : n」を実行します。したがって、"n" が max より大きい場合は、ラップアラウンドして (UInt 型の) 値 0 を返します。

于 2013-10-16T21:03:56.723 に答える