Включение светодиода от переключателя
Я изучал Verilog с Quartus II от Altera в сочетании с платой terASIC DE10, но теперь происходит что-то неожиданное.
Для отладки я провожу светодиод через переключатель, и между ними я вставил модуль:switch-module-led
Код модуля приведен ниже, где значение переменной to_led
обновляется каждый раз in_clock_counter[0]
менять.
module in_out (
input [31:0] in_clock_counter,
input from_switch,
output reg to_led
);
always @ (posedge in_clock_counter)
begin
if (from_switch)
to_led <= 1'b1;
else
to_led <= 1'b0;
end
endmodule
Я ожидал, что если я нажму на переключатель, загорится светодиод. Но это не так. Используя Simulation Waveform Editor, я вижу, что значение светодиода меняется. Что я делаю неправильно?
2 ответа
и система работает как задумано
Счастлив, что у вас все работает.
Разве не нужен блок ФАПЧ для создания постоянной тактовой частоты? Я так и думал.
Нет, лучшие и самые стабильные часы - это те, которые исходят прямо от вашего генератора.
ФАПЧ позволяет вам делать разные частоты из этих часов (кроме обычных: деление на 2, деление на 3 и т. Д.)
Например, некоторые позволяют сделать что-то столь же странное, как часы 23/3. Таким образом, также более высокая частота. (Фактически, это то, откуда процессоры с тактовой частотой 3 ГГц получают свои часы.) Но характеристики джиттера всегда будут хуже, чем у вашего кристалла.
Но все же этот код должен работать от часов ФАПЧ, поэтому я подозреваю, что что-то еще не так. Предлагаю вам взглянуть на синтезированный список соединений (схему). И проверьте, что все где связано.
Вы можете запутать инструмент, передав многобитовый вектор в posedge
список чувствительности. Это довольно необычная вещь, поэтому я бы не стал доверять инструментальной цепочке синтеза что-то подобное.
Существуют также другие сложности с использованием логических выходов в качестве тактовых сигналов в ПЛИС. Это вряд ли будет вашей непосредственной проблемой, потому что ваш модуль тривиален, но может вызвать проблемы в будущем. Вам следует рассмотреть возможность использования там обычного тактового сигнала и создания логики для проверки значения счетчика.
Также учтите, что если этот модуль работает в симуляции, возможно, ошибка не в этом модуле.