Вождение светодиода от выключателя - PullRequest
0 голосов
/ 27 марта 2020

Я изучал Verilog с Altera Quartus II в сочетании с платой terASI C DE10, но сейчас происходит нечто неожиданное.

Ради отладки я управляю светодиодом через переключатель и между этими двумя я вставил модуль: светодиод переключателя модуля

Код модуля такой, как показано ниже, где значение переменной 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 ]

1 голос
/ 28 марта 2020

Вы можете запутать инструмент, передав многобитный вектор в список чувствительности posedge. Это довольно необычная вещь, поэтому я бы не стал доверять инструментальной цепочке синтеза чем-то подобным.

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

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

0 голосов
/ 28 марта 2020

и система работает, как задумано

Рад, что все заработало.

Разве это не блок PLL, необходимый для создания постоянной тактовой частоты ? Я так и думал.

Нет, самые лучшие и самые стабильные часы - это те, которые идут прямо от вашего генератора.
PLL позволяет вам делать разные частоты из этих часов (отличные от обычных : делим на 2, делим на 3 и т. д. c.)

Например, некоторые позволяют вам сделать что-то странное, как часы в 23/3 раза. Таким образом, также более высокая частота. (Фактически именно здесь процессоры 3GHz получают свои часы.) Но характеристики джиттера всегда будут хуже, чем у вашего кристалла.

Но, тем не менее, этот код должен работать с часов PLL, поэтому я подозреваю, что что-то еще не так. Я предлагаю вам взглянуть на синтезированный список соединений (schemati c). И проверь, с чем все это связано.

...