我有一个使用差分时钟输入的闪烁LED设计(xilinx AC701套件)。 要实例化Xilinx差分缓冲区,我正在使用BlackBox,正如jkoening here所解释的那样:
class Top extends Module {
val io = IO(new Bundle{
val clock_p = Input(Clock())
val clock_n = Input(Clock())
val led = Output(Bool())
})
val ibufds = Module(new IBUFDS)
ibufds.io.I := io.clock_p
ibufds.io.IB:= io.clock_n
val blink = Module(new Blink)
blink.clock := ibufds.io.O
io.led := blink.io.led
}
这样可行,但在Top verilog模块中,我有一个无用的时钟输入:
module Top(
input clock,
input reset,
input io_clock_p,
input io_clock_n,
output io_led
);
...
然后在目标上只有io_clock_p
和io_clock_n
用于时钟输入。 clock
信号无用。有没有正确的方法来隐藏它?
答案 0 :(得分:2)
在使用Chisel3团队discussion之后,我们添加了一项功能来支持此功能。
解决方案是使用RawModule:
class Top extends RawModule {
val clock_p = IO(Input(Clock()))
val clock_n = IO(Input(Clock()))
val led = IO(Output(Bool()))
val ibufds = Module(new IBUFDS)
ibufds.io.I := clock_p
ibufds.io.IB:= clock_n
withClockAndReset(ibufds.io.O, false.B) {
val blink = Module(new Blink)
led := blink.io.led
}
}
原始模块没有隐含信号,并且在verilog生成的文件中反映了«has it»,前缀中没有«io_»。
完全闪烁LED项目的源代码可在this github project上获得(闪烁的led项目:blp)。
Here是法语描述如何做到这一点。要使用此功能,必须使用最后一个git master版本的chisel3。
答案 1 :(得分:1)
目前无法在Chisel Modules上删除甚至重命名clock
和reset
。他们总是在那里。由于Chisel使用正边沿时钟,您可以考虑删除io_clock_p
并使用clock
代替。
这是一个经常被请求的功能,因此可能会在将来添加,但目前不支持。