2016-04-27 4 views
-2

Я пишу простой код, используя ISE 14.7 для генерации тактового сигнала, но выход в iSim всегда равен 1, пока я не изменил = с < = тогда часы работают, не могли бы вы мне сказать почему?Ошибка генератора часов Verilog?

module nonblocking(clk); 
output reg clk; 

initial 
    #10 clk =0; 

always @ (clk) 
#10 clk = ~ clk; // change to <= to work 

endmodule 
+0

Этот код для синтеза или моделирования? Какой инструментальный инструмент/симулятор/синтезатор/компилятор вы используете? Что именно вы пытаетесь достичь, учитывая, что у вас нет задержек перед переводом значения 'clk' и используются' always @ clk'? – hexafraction

+0

Я бы предпочел просто: «initial clk = 0; всегда # 10 clk = ~ clk; ' – rahulcodesinverilog

ответ

0

Этот код честно не имеет никакого смысла.

В вашем текущем коде указано, что на основании clk значение clk должно быть ~clk. Когда вы используете <=, вы, по крайней мере, указали неблокирующее назначение, что имеет немного больше смысла, но до сих пор его нет.

Если вы хотите тактовый генератор для моделирования, используйте следующее в начальном блоке (давая период 10ns):

forever begin 
    #5 clk <= ~clk; 
end 

Если вы хотите тактовый генератор для синтеза FPGA, либо подключить физический осциллятор входной сигнал часов вашего устройства или использовать встроенный генератор (если он доступен на вашем устройстве). Вы всегда можете использовать DCM/PLL/CMT/MMCM/независимо от того, что ваш FPGA вызывает, чтобы настроить тактовую частоту.

+1

Навсегда должно быть внутри начального. – Morgan

+0

Я использую ISE 14.7, и, как я сказал вам, когда я использую неблокирующее назначение, часы появляются в iSim –

+0

@ HayderAl-Amily. Хотя это может сработать, это не ясный способ сделать это. Если вы хотите сгенерировать часы, сгенерируйте их так, чтобы это было ясно для других читателей вашего кода. Тот факт, что он в процессе, не связанный с краем, присваивает регистру с течением времени, делает его не похожим на то, как генераторы тактовых импульсов обычно создаются для testbenches, и этот код не согласуется с тем, что нужно писать для синтезации. – hexafraction

Смежные вопросы