调试是通过模拟器及其波形查看器完成的——您可以观察所有内部组件随着时间的推移在做什么。此外,使用 Modelsim,您还可以在进程内进行类似软件的断点。
您可以使用“report”语句使用 VHDL 打印内容,但您必须以非常非 SW 的方式进行格式化:
report "The value is not " & integer'image(some_integer_variable);
为了更容易打印,请使用textio 包。
另一个提示 - 里面有很多代码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 并通过将切换信号连接到 LED 引脚来观察 LED 闪烁。
那就是相当于“Hello World”的FPGA!