请教FPGA的DCM使用问题
以xilinx为例,在设计时,一般会把外部输入的时钟送入DCM(数字时钟管理器)作处理后供后面设计做统一的同步时钟使用,比如输入CLK,DCM产生同步时钟CLK0,为了让这个CLK0有足够的驱动能力,会把CLK0接到专用的时钟缓冲器BUFG后才送到其他地方使用,代码如下:
BUFG clk0buf (.O(CLKO_BUF)),
.I(CLK0);
问题就来了,我看到的一些Xilinx IP Core产生的程序中,会把 CLKO_BUF再赋值给另一个信号线才输出,代码如下:
assign da_clk = LKO_BUF;
最终da_clk信号才是送到后面设计做统一的同步时钟使用,而不是 CLKO_BUF,这是为什么呢?为什么不直接用 CLKO_BUF信号,而要用赋值后的信号?
这个赋值后的信号的驱动能力和质量有 CLKO_BUF好吗?
应该没有关系吧
不是赋值的含义
只是da_clk使用了CLK而已
当使用assign语句,CLKO_BUF赋给da_clk的过程中,会不会加buffer呢?如果不加buffer,那么da_clk确实只是使用了CLKO_BUF,但如果CLKO_BUF是加了buffer才赋给da_clk的话,那就有问题了,这可能跟软件对assign赋值的处理有关,所以并不好判断。所以使用赋值后的信号是否妥当呢?
怎么就没有人回答这个问题呢?DCM应该挺常用的,难道大家都没有遇到过这个问题?
我也是这么认为的,只是表明一种连接关系, da_clk还是全局的。
最终da_clk信号才是送到后面设计做统一的同步时钟使用,而不是
CLKO_BUF,
不管是用 da_clk 或 CLKO_BUF 结果都一样
都可以
谢谢各位的解答,已经了解。
没错 就是这样
assign da_clk = LKO_BUF;
da_clk 肯定是wire类型的,所以da_clk 和LKO_BUF只是连线,除了一点传输延时无其他区别吧。
