UInt(0)是什么意思?

时间:2013-10-16 17:50:02

标签: scala hardware hdl uint chisel

我读到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   
    }

有人可以解释两个突出显示的(以星号为界)声明的工作吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

UInt(1)指的是值为1的1位文字

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

Mux()基本上执行“lhs = cond?UInt(0):n”。因此,如果“n”大于max,我们回滚并返回值0(类型为UInt)。