xilinx时钟问题 之前用altera没有什么问题,都是直接连接上的,
我在XILINX平台上做DDR2,需要200m的时钟信号,我就用DCM倍频了一个,直接接在DDR2的ipcore上面,出现了如下错误,请大神指点一二,不胜感激!!
ERROR:NgdBuild:770 - IBUFG
'test_ddr2_inst/memc3_infrastructure_inst/se_input_clk.u_ibufg_sys_clk' and
BUFG 'pll_200m_inst/clkout1_buf' on net 'clk_200m' are lined up in series.
Buffers of the same direction cannot be placed in series.
我的程序代码如下:
//**** PLL产生200Mhz时钟信号
pll_200m pll_200m_inst (
.CLK_IN1 (clk ),
.CLK_200m (clk_200m ),
.CLK_50m (clk_50m ),
.LOCKED (locked )
);
然后我直接把clk_200m给了DDR2的系统时钟信号,如下图所示(DDR2代码太多,简单一个链接):
.c3_sys_clk (clk_200m ),
这样会出现问题,不知道怎么解决了呢?
之前测试DDR2的时候,我是把外部的时钟直接接在DDR2的ipcore上面,用的是150M的时钟,现在板子上面只有一个50M的时钟了,只能自己用DCM倍频了,应该是可以通过一个原语解决的,但是不知道是哪个?我胡乱测试了一下,都不行。
我用的是xilinx14.7的版本,也尝试设置了XST的这项设置,去掉Add I/O buffer 但是没用。
我在XILINX平台上做DDR2,需要200m的时钟信号,我就用DCM倍频了一个,直接接在DDR2的ipcore上面,出现了如下错误,请大神指点一二,不胜感激!!
ERROR:NgdBuild:770 - IBUFG
'test_ddr2_inst/memc3_infrastructure_inst/se_input_clk.u_ibufg_sys_clk' and
BUFG 'pll_200m_inst/clkout1_buf' on net 'clk_200m' are lined up in series.
Buffers of the same direction cannot be placed in series.
我的程序代码如下:
//**** PLL产生200Mhz时钟信号
pll_200m pll_200m_inst (
.CLK_IN1 (clk ),
.CLK_200m (clk_200m ),
.CLK_50m (clk_50m ),
.LOCKED (locked )
);
然后我直接把clk_200m给了DDR2的系统时钟信号,如下图所示(DDR2代码太多,简单一个链接):
.c3_sys_clk (clk_200m ),
这样会出现问题,不知道怎么解决了呢?
之前测试DDR2的时候,我是把外部的时钟直接接在DDR2的ipcore上面,用的是150M的时钟,现在板子上面只有一个50M的时钟了,只能自己用DCM倍频了,应该是可以通过一个原语解决的,但是不知道是哪个?我胡乱测试了一下,都不行。
我用的是xilinx14.7的版本,也尝试设置了XST的这项设置,去掉Add I/O buffer 但是没用。
问题解决,我首先尝试修改PLL的源代码,把下面代码注释掉
BUFG clkout1_buf
(.O (CLK_200m),
.I (clkfx));
换成 assign CLK_200m = clkfx ;
编译之后,会报错,多驱动问题的错误,我就又恢复原装,尝试修改DDR2的源码!!
assign sys_clk_ibufg = sys_clk ;
// IBUFG u_ibufg_sys_clk
// (
// .I (sys_clk),
// .O (sys_clk_ibufg)
// );
把上面的代码注释掉,然后换成
assign sys_clk_ibufg = sys_clk ;
大功告成,编译就没问题了!!