我读到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
}
有人可以解释两个突出显示的(以星号为界)声明的工作吗?
答案 0 :(得分:3)
UInt
定义无符号整数。 UInt(value)
定义了1位十进制文字,因此UInt(0)
和UInt(1)
是分别保持0和1的1位宽整数的文字。 UInt(value, width)
允许您定义大于1位的文字,因此从您的示例UInt(0, max.getWidth)
创建一个无符号整数,其中max.getWidth
位保持值为0.
答案 1 :(得分:0)
UInt(1)指的是值为1的1位文字 。
Mux (n > max, UInt(0), n)
Mux()基本上执行“lhs = cond?UInt(0):n”。因此,如果“n”大于max,我们回滚并返回值0(类型为UInt)。