我正在做一份过去的试卷准备考试,其中有一道题显示了这个波形。现在我当然知道你可以直接把代码一行一行的写出来,像这样。
sig1 <= '1'; sig2 <= '1'; y <= '1'; wait for 20 ns;
y <= '0'; wait for 5 ns;
-- etc.
或者利用数组. 我想知道是否可以通过设置循环函数来简化这个过程,可以同时调用和运行。
-- Some pseudocode
function sig1 is
sig1 <= '1'; wait for 25 ns;
sig1 <= '0'; wait for 50 ns;
end sig1;
-- Definition for the other waves goes here
function waveform is
while n=1 loop
sig1, sig2, y run;
end loop;
end waveform;
我已经在VHDL和Stack Overflow上查阅了文档,但我必须提前道歉,我不知道你会把这样的东西叫做什么,所以我的搜索没有得到任何接近我所想的结果。当然,这只是一个好奇心,我已经预料到由于硬件和语言的性质,这可能是不可能的。
不过还是要先谢谢你的帮助
测试台的VHDL可以更像软件,因为它不需要合成。
´y´部分可以用循环编写,如下图所示,其他部分也可以用类似的方式制作。
library ieee;
use ieee.std_logic_1164.all;
entity tb is
end entity;
architecture sim of tb is
signal y : std_logic;
begin
process is
constant period : time := 80 ns;
constant steps : natural := 8;
begin
for i in 0 to steps - 1 loop
case i is
when 0 | 1 | 3 => y <= '1';
when others => y <= '0';
end case;
wait for period / steps;
end loop;
end process;
end architecture;
上面的例子利用了VHDL的特点,即一个没有灵敏度列表的过程在到达终点时将重新开始。
波形将是。
VHDL信号分配允许多元素的波形。
IEEE标准1076-2008
10.5.2 简单信号分配
10.5.2.1 总则
simple_signal_assignment ::= simple_waveform_assignment。