Отладка выполняется с помощью симулятора и его средства просмотра формы волны - вы можете наблюдать за тем, что все ваши внутренние устройства делают со временем. Кроме того, с помощью Modelsim вы также можете создавать программные точки останова внутри процессов.
Вы можете распечатать вещи с помощью VHDL, используя оператор «report», но вы должны выполнить форматирование совсем не SW:
report "The value is not " & integer'image(some_integer_variable);
Для упрощения печати используйте текстовый пакет .
Еще один совет - во многих кодах есть use ieee.std_logic_arith.all;
. Эта библиотека нестандартная (несмотря на прозвище IEEE), вместо нее используйте ieee.numeric_std.all
.
Начните с простого - создайте счетчик, который увеличивается на единицу каждый раз, когда тикают часы (используйте идиому if rising_edge(clk) then
). Когда счетчик достигает определенного значения, переключите сигнал.
Создайте тестовый стенд для имитации, что в основном означает просто сделать так, чтобы сигнал clk стал «0», «1», «0», «1».
Простой способ понять это:
process:
begin
clk <= '0';
wait for 5 ns;
clk <= '1';
wait for 5 ns;
end process;
Запустите сим, посмотрите, как поднимется ваш счетчик, и включите сигнал переключения. Если вы сделаете свой счетчик достаточно большим, вы сможете создать FPGA и наблюдать за включением и выключением светодиодов, подключив этот сигнал переключения к выводу светодиодов.
Это эквивалент FPGA для "Hello World"!