ChiselUtil 中 ShiftRegister 的时钟配置

Clock configuration for ShiftRegister in ChiselUtil

ShiftRegister 是一个有用的函数,可以通过两个触发器将外部信号与主时钟同步:

sync_signal := ShiftRegister(ext_signal, 2)

在这种情况下效果很好。但是有没有办法像这样将它与其他时钟一起使用:

slowClk = Clock(reset=Driver.implicitReset)
sync_signal := ShiftRegister(ext_signal, 2, clock=slowClk)

?

如果您查看 ChiselUtil.scala,您会发现 ShiftRegister 对象没有时钟输入,因此它不能包含您所建议的功能。

修改或扩展 class(根据 Chisel 手册第 18 章)将同步时钟作为输入将很容易。

有了 Chisel3,现在可以使用 withClock(){}

我们只需要用 withClock 包围 ShiftRegister() 调用:

  withClock(clock) {
    led := ShiftRegister(blinkled, 4)
  }

另请参阅 Chisel3 wiki 中的多时钟域章节。