0

我读到 UInt(1) 指的是 1 位十进制文字。我对 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   
    }

有人可以解释两个突出显示(以星号为界)语句的工作原理吗?

4

2 回答 2

3

UInt定义一个无符号整数。UInt(value)定义了一个 1 位十进制字面量,因此UInt(0)UInt(1)是 1 位宽整数的字面量,分别为 0 和 1。UInt(value, width)允许您定义值大于 1 位的文字,因此从您的示例中UInt(0, max.getWidth)创建一个无符号整数,其max.getWidth位保持值为 0。

参考: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”大于最大值,我们将返回值 0(UInt 类型)。

于 2013-10-16T21:03:56.723 回答