这是我要完成的工作:我有一个Chisel加速器,该加速器调用另一个Chisel加速器并传递一个值。我希望第二个循环中有一个while循环,其中条件部分地基于输入值。这是一些示例代码:
class Module1 extends Module {
val in = 0.U
val Module2Module = Module2()
Module2Module.io.in := in
}
class Module2 extends Module {
val io = IO(new Bundle {
val in = Input(Reg(UInt))
}
val test = 0.U
while (test < io.in) {
}
}
我收到“ test 实现此目标的正确方法是什么?是否通过将信号发送到模块1或从模块1发送到模块2来指示加速器尚未完成而仅在加速器完成时继续运行?如果是这样,如果您有多个功能,每个功能都在不同的模块中,这是否会很快变得复杂?
您将需要使用由Reg
系列构造函数创建的寄存器,并通过when
,elsewhen
和otherwise
控制流。我强烈建议您查看chisel bootcamp,并逐步进行到3.2节。硬件和软件具有相似之处,但也具有深刻的实现差异。您将在训练营中得到很好的例子