ShiftRegister 是一个有用的功能,可通过两个触发器将外部信号与主时钟同步:
sync_signal := ShiftRegister(ext_signal, 2)
在这种情况下效果很好。但是有没有办法将它与这样的其他时钟一起使用:
slowClk = Clock(reset=Driver.implicitReset)
sync_signal := ShiftRegister(ext_signal, 2, clock=slowClk)
?
ShiftRegister 是一个有用的功能,可通过两个触发器将外部信号与主时钟同步:
sync_signal := ShiftRegister(ext_signal, 2)
在这种情况下效果很好。但是有没有办法将它与这样的其他时钟一起使用:
slowClk = Clock(reset=Driver.implicitReset)
sync_signal := ShiftRegister(ext_signal, 2, clock=slowClk)
?
有了 Chisel3,现在可以使用 withClock(){}
我们只需要用 withClock 包围 ShiftRegister() 调用:
withClock(clock) {
led := ShiftRegister(blinkled, 4)
}
另请参阅Chisel3 wiki中的多个时钟域章节。
如果您查看 ChiselUtil.scala,您可以看到 ShiftRegister 对象没有时钟输入,因此它不能包含您建议编写的功能。
修改或扩展类(根据 Chisel 手册的第 18 章)以将同步时钟作为输入是很容易的。