VHDL中的延迟属性

时间:2014-05-25 09:12:24

标签: attributes delay vhdl

我正在尝试使用VHDL中的'延迟属性创建信号('s')的延迟版本('s_dlyd')。

我的代码(下面)编译和模拟(使用Xilinx webpack,ISIM)并且's'经历了预期的'0/1'转换。

但是,s_dlyd只是坐在'1'(即它不是5s延迟的's'副本我想(天真地?!)预期。

我猜我错过了VHDL调度转换方式的基本信息。我已经尝试了很多代码的变化(将行“s< = ...”分成3个;在11 ns之后尝试“s_dlyd< = s'delayed(5 ns)”之类的东西等但是没有给出我是s的延迟副本。

任何帮助表示赞赏。谢谢你

    architecture Behavioral of five_three is
      signal s : STD_LOGIC := '1';
      signal s_dlyd: STD_LOGIC;
    begin
      my_process :  process is
    begin
    s <= '1', '0' after 10 ns, '1' after 20 ns;
    s_dlyd <= s'delayed(5 ns);
    wait for 50 ns;
    s <= '0' ;
    wait;
    end process;
    end architecture;

1 个答案:

答案 0 :(得分:1)

我希望s_dlyd成为&#39; 1&#39;在5 ns之后,之前是&#39; U&#39;

  

等于信号S的信号延迟了T个时间单位。的价值   S&#39; DELAYED(t)在时间Tn总是等于S的值   TN-T

在这种情况下,s的当前有效值将在5 ns后分配给s_dyld。 s(Now = 0 ns)的当前值是默认值(&#39; 1&#39;)。

由于等待语句(最后一个wait ;),您的进程只会被调用一次。

等效的顺序信号赋值语句是

 s_dyld <= transport s after 5 ns;

您可以将s_dyld分配给对s敏感的单独进程或作为并发信号赋值语句,或者使用更多等待和更多s_dyld赋值重构当前的等待语句。