小编use*_*895的帖子

如何在Chisel(regmap)中迭代类似的寄存器定义

我有一些类似的寄存器定义,我想在regmap构造下编写.我的代码目前看起来像这样:

val regs = RegInit(Vec(Seq.fill(5)(0.U(32.W))))

regmap (
...
0x30 -> Seq(RegField(32,regs(0),RegFieldDesc("reg0",""),
0x34 -> Seq(RegField(32,regs(1),RegFieldDesc("reg1",""),
0x38 -> Seq(RegField(32,regs(2),RegFieldDesc("reg2",""),
0x3C -> Seq(RegField(32,regs(3),RegFieldDesc("reg3",""),
0x40 -> Seq(RegField(32,regs(4),RegFieldDesc("reg4",""),
...

) 
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法使用Scala迭代器之一以更简洁的方式编写上述内容?我的另一个要求是我仍然需要能够在这个迭代器之前和之后添加寄存器(3个点线).

我相信,使用迭代器可以很好地防止复制/粘贴错误并且看起来更好.
在此先感谢您的帮助.

chisel rocket-chip

5
推荐指数
1
解决办法
83
查看次数

RegEnable 的向量

寻找有关如何使用 RegEnable 作为向量的示例/建议。另外,我想控制输入和使能信号成为向量中寄存器索引的函数。

首先,如何声明 RegEnable() 的 Vector,其次如何迭代它并连接输入和启用。在 RegEnable() 情况下,声明和连接是在同一语句中进行的。就像是:

for (j <- 0 until len) {
    val pipe(j) = RegEnable(in(j),en(j))    
} 
Run Code Online (Sandbox Code Playgroud)

上面的代码无法编译。& en 中还有向量或位选择

chisel

3
推荐指数
1
解决办法
459
查看次数

标签 统计

chisel ×2

rocket-chip ×1