Я попытался найти ответ на этот вопрос, но безрезультатно. У меня возникают проблемы, когда я повторно синтезирую свой код, и я подозреваю, что это связано с проблемами с часами.Силовой контакт в Verilog для конкретной частоты
Я использую DCM для умножения внешнего кварцевого генератора с 25 МГц до 50 МГц. Тем не менее, я думаю, что инструмент не будет знать, какая частота является кварцевым генератором, так как это внешний физический компонент. Мой код ниже:
//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
);
Будет ли этот код в УКУ перегружайте признать результаты моего DCM в 50МГц?
PIN "bufg_master_dcm_clk_fx.O" TNM_NET = CLK50;
TIMESPEC TS_CLKBuf = PERIOD "CLK50" 100 MHz HIGH 50%;
Кроме того, я использую BUFG правильно? Xilinx говорит, что я должен использовать IBUFG для подключения внешних часов к моему DCM, и я получаю ошибки, заявляя, что мой BUFG может использовать только половину чипа (что, я думаю, станет неприятным).
спасибо,
Натан
Есть ли причина, по которой вы не можете просто использовать 'always @ (posedge CLK или negedge CLK)'? – N8TRO
@Nathan G - это вызывает ошибку, если вы попытаетесь это сделать - «Стиль описания, который вы используете для описания регистра или защелки, не поддерживается в текущем выпуске программного обеспечения». Я не могу легко представить, как вы будете управлять флип-флопами с обоих краев тактовых импульсов. –
Это вопрос о применении ограничений часов для синтеза, а не для реализации Verilog? – Morgan