Включение светодиода от переключателя

Я изучал 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список чувствительности. Это довольно необычная вещь, поэтому я бы не стал доверять инструментальной цепочке синтеза что-то подобное.

Существуют также другие сложности с использованием логических выходов в качестве тактовых сигналов в ПЛИС. Это вряд ли будет вашей непосредственной проблемой, потому что ваш модуль тривиален, но может вызвать проблемы в будущем. Вам следует рассмотреть возможность использования там обычного тактового сигнала и создания логики для проверки значения счетчика.

Также учтите, что если этот модуль работает в симуляции, возможно, ошибка не в этом модуле.

Другие вопросы по тегам