risc-v中文社区

 找回密码
 立即注册
查看: 1071|回复: 0

[原创] RegEnable类型寄存器

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2021-8-19 11:06:01 | 显示全部楼层 |阅读模式
前面帖子中介绍了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)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-5-5 03:53 , Processed in 0.015260 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表