|
前面帖子中介绍了Reg(chisel类型参数)和RegInit(可chisel类型也可硬件类型),
也介绍了可采用when等条件判断进行初始化赋值等,在chisel3.util包中给出了
一个工具类:RegEnable:
def apply[T <: Data](next: T, enable: Bool): T = {
val r = Reg(chiselTypeOf(next)) //说明next应是硬件类型参数
when (enable) { r := next }
r
}
def apply[T <: Data](next: T, init: T, enable: Bool): T = {
val r = RegInit(init)
when (enable) { r := next }
r
}
从源码中可以看到,RegEnable其实就是前面所说的Reg加上when条件判断
进行赋值(有可能是初值,有可能是平常赋值),使用举例:
val nextValue = Wire(UInt(1.W))
val r1 = RegEnable(nextValue,ena)
val init = UInt(UInt(4.W))
val r2 = RegEnable(nextValue,init,ena)
|
|