joe 发表于 2021-8-19 11:06:01

RegEnable类型寄存器

前面帖子中介绍了Reg(chisel类型参数)和RegInit(可chisel类型也可硬件类型),
也介绍了可采用when等条件判断进行初始化赋值等,在chisel3.util包中给出了
一个工具类:RegEnable:
def apply(next: T, enable: Bool): T = {
        val r = Reg(chiselTypeOf(next)) //说明next应是硬件类型参数
        when (enable) { r := next }
        r
}

def apply(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)

页: [1]
查看完整版本: RegEnable类型寄存器