我试着寻找这个问题的答案,但没有结果。当我重新合成我的代码时,我遇到了问题,我怀疑这是由于时钟问题。
我正在使用DCM将外部晶体振荡器从25 DCM倍增到50 DCM。然而,我认为工具不会知道晶体振荡器的实际频率,因为它是一个外部物理组件。我的代码如下:
//since our crystal oscillator is only 25Mhz, we use a DCM to multiply it by two since the desired is 50Mhz
DCM #(
.CLKFX_DIVIDE (2),
.CLKFX_MULTIPLY (4)
) dcm_master (
.CLKFB (CLK_FB),
.CLKIN (CLK_crystal),
.RST (DcmReset),
.CLK0 (MasterClk0Unbuf),
.CLK90 (),
.CLK180 (),
.CLK270 (),
.CLK2X (),
.CLK2X180 (),
.CLKFX (MasterClkFxUnBuf),
.CLKFX180 (),
.CLKDV (),
.LOCKED (DcmLocked),
.STATUS (),
.PSCLK (1'b0),
.PSEN (1'b0),
.PSINCDEC (1'b0),
.PSDONE ()
);
//we provide feedback to the DCM's phase input (possibly not neccessary)
BUFG bufg_master_dcm_clk_0 ( .I(MasterClk0Unbuf), .O(CLK_FB) );
BUFG bufg_master_dcm_clk_fx ( .I(MasterClkFxUnBuf), .O(CLK_FX) );
//code taken from xilinx. We toggle using a bufgmux between the onboard and external clock
// BUFGMUX: Global Clock Buffer 2-to-1 MUX
// Spartan-3
// Xilinx HDL Libraries Guide, version 13.2
BUFGMUX BUFGMUX_inst (
.O(CLK), // Clock MUX output
.I0(CLK_FX), // Clock0 input
.I1(CLK_local), // Clock1 input
.S(sw[6]) // Clock select input
);ucf中的这段代码会强制工具将DCM的输出识别为50 the吗?
PIN "bufg_master_dcm_clk_fx.O" TNM_NET = CLK50;
TIMESPEC TS_CLKBuf = PERIOD "CLK50" 100 MHz HIGH 50%; 此外,我是否正确地使用了BUFG?Xilinx说我应该使用IBUFG将外部时钟连接到我的DCM中,并且我收到错误,说我的BUFG只能寻址一半的芯片(我想这会变得很麻烦)。
谢谢,
内森
发布于 2013-07-02 08:19:33
我想你的时钟限制已经关闭了。您应该将输入限制到DCM -- DCM知道如何处理输出。下面是我要用到的:
NET clk_in TNM_NET = tnm_clk_in;
TIMESPEC TS_clk_in = PERIOD tnm_clk_in 40ns;其中clk_in是水晶(在本例中为CLK_crystal)。确保晶体已连接到设备上的时钟引脚。
发布于 2013-06-29 18:57:15
我想先测试一下这个。对于Spartan-3系列FPGA,使用其中一种DCM。这是ISE生成的模板。
请注意,有一个专用的CLK2X。
此外,根据用户手册:.CLKFB应该由BUFG源驱动。
wire i_FeedBack;
wire o_FeedBack;
BUFG clkFBBuf(
.I(i_FeedBack),
.O(o_FeedBack)
);
DCM #(
[...]
.CLKFX_DIVIDE(1), // Can be any integer from 1 to 32
.CLKFX_MULTIPLY(2), // Can be any integer from 2 to 32
[..]
) DCM_inst (
.CLK0(i_FeedBack), // 0 degree DCM CLK output
.CLK2X(CLK2X), // 2X DCM CLK output
[...]
.CLKFX(CLKFX), // DCM CLK synthesis out (M/D)
.CLKFB(o_FeedBack), // DCM clock feedback
.CLKIN(clk), // Clock input (from IBUFG, BUFG or DCM)
[...]
);https://stackoverflow.com/questions/15480840
复制相似问题