simple_force_assignment

问题描述 投票:0回答:1

我正在做一份过去的试卷准备考试,其中有一道题显示了这个波形。Periodic stimulus现在我当然知道你可以直接把代码一行一行的写出来,像这样。

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 test-bench
1个回答
3
投票

测试台的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的特点,即一个没有灵敏度列表的过程在到达终点时将重新开始。

波形将是。

enter image description here


1
投票

VHDL信号分配允许多元素的波形。

IEEE标准1076-2008

10.5.2 简单信号分配

10.5.2.1 总则

simple_signal_assignment ::= simple_waveform_assignment。      

© www.soinside.com 2019 - 2024. All rights reserved.