繁体   English   中英

VHDL中的最小灵敏度列表

Minimal sensitivity list in VHDL

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有这个VHDL代码:

  entity Element is port(
   clk, D, E, F, G: in std_logic;
   Qout: out std_logic);
   end Element;

   architecture beh of Element is
   signal Qint: std_logic;
   begin

    process(...)
       variable sel: std_logic_vector(1 downto 0);
    begin
       if D='1' then
          Qint<= '0';
       elsif E='1' then
          Qint<= '1';
       elsif rising_edge(clk) then
          sel:=F&G;
          case sel is
            when "00"=> Qint<= not Qint;
            when "01"=> Qint<= not Qint;
            when "10"=> Qint<= '0';
            when "11"=> Qint<= Qint;
            when others=> null;
          end case;
       end if;
    end process;

   Qout<= Qint;

   end beh;

我的问题是:如果我想要最小灵敏度列表,那么必须在灵敏度列表中写入以下哪个信号?

2 个回复

您必须在灵敏度列表中包括所有已读取的信号,而不是过程的计时部分。

您异步读取D和E。 您将clk读作您的寄存器的一部分。 因此,您必须包括它们。

process (D, E, clk)
begin
end process;

注意:在VHDL-2008中,最低灵敏度列表为

process (all)
begin
end process;

编辑:一般来说,有关灵敏度列表的更多信息。

VHDL中的仿真以确定性周期完成。 对于每个信号分配,所有相关信号也必须进行更新,因为这就是硬件中发生的情况。

模拟器(例如,modelsim,isim)将逐步检查您的HDL,确定所有信号变化,然后确定哪些其他信号取决于这些变化。 然后模拟第二组变化,找到另一组相关信号,依此类推。 模拟一直进行到a)达到稳定状态或b)达到最大迭代次数为止。

现在,由于采用了大型设计,并且需要在每个信号分配上重新评估每个过程,因此复杂性激增了。 为了防止这种情况,只有在其灵敏度列表中的信号发生更改时,才重新评估每个过程。 过去,软件无法自动检测给定过程需要侦听(或忽略)的所有信号,因此用户必须通过灵敏度列表为工具提供提示。

如今,借助VHDL-2008,软件变得如此智能,CPU如此之快,以至于仿真软件可以简单地分析所有HDL并自行确定依赖性。

现在,为什么Qint 不在灵敏度列表中? 因为Qint变化要等到下一个clk上升沿才会传播到其他信号。 仅在clk的边缘进行采样。

因此, Qint仅用于该过程的计时部分,它本身可以确定另一个信号的状态。

这就是您期望注册的内容。 当时钟上升/下降时对输入进行采样,然后将其存储并传播到输出。 在时钟边沿之间,输入信号可以(并且经常会)改变,但很快会稳定为有效的逻辑状态。

Sigasi在编写代码时检查不完整的敏感性列表 它还提供了快速修复功能,可以自动将丢失的信号添加到列表中。 这样,您就不必再为此担心。

1 VHDL中的灵敏度列表

来自此处的代码: http : //esd.cs.ucr.edu/labs/tutorial/latch.vhd 为什么“ data_in”需要在灵敏度列表中? 我知道流程需要它进行分配,但是流程基于启用输入起作用。 谢谢 ...

2 灵敏度列表VHDL过程

我正在尝试使用Peter Ashenden的书“ VHDL设计师指南”来学习VHDL,但似乎并不能动摇我错过了与灵敏度列表相关的基本项目的感觉。 例如,一个问题是“编写一个代表简单ALU的模型,该模型具有整数输入和输出,以及位类型的函数选择输入。如果函数select为'0',则ALU输出应 ...

2015-01-04 08:52:03 1 1917   vhdl
3 VHDL流程与灵敏度列表的混淆

我正在通过在线阅读书籍(自由范围VHDL)来学习VHDL,并通过Xilinx ISE Webpack 14.7在我的Nexsys2上实现示例。 我正在重新阅读Free Range VHDL文本,目前正在讨论过程的这一章中。 我对流程是什么以及流程如何有深刻的了解,但是我实现了一个示例,但我不 ...

4 当敏感度列表没有改变时,VHDL 进程被激活

当没有变化时,进程 2 会一直被激活。 我有一块板来测试我的代码,当我翻转时钟时状态会改变(我将时钟设置为按钮)。 在我的代码中,只有当我翻转 Qin 时,状态才会改变。 所以它没有做我希望它做的事情,我花了很多时间试图找出导致它的原因,但我做不到。 请帮忙。 这是测试台图TESTBENCH GR ...

2017-04-27 02:06:21 2 383   vhdl
6 使用Sigasi编辑器的VHDL中的灵敏度列表不完整

当前,我尝试发展我的VHDL技能,因此我使用Sigasi Eclipse插件来编写一些VHDL代码。 Sigasi是一个很棒的工具,但是有一件事让我感到困扰。 不断地,Sigasi会在过程定义中抛出有关灵敏度列表不完整的警告,从我的观点来看,这是不合理的。 一个示例是具有相应体系结构的以下 ...

7 SystemC灵敏度列表

我最近开始学习SystemC,并且在“ SC_METHOD”中的灵敏度列表中出现错误。 我正在尝试实现一个fifo,并且该错误对应于代码的以下部分: 编译代码时出现错误,并且抱怨敏感性列表。 错误是 如果有人可以让我知道敏感度列表出了什么问题,我将不胜感激。 如何使“ bu ...

9 HDL合成抱怨灵敏度列表中缺少信号

您好,我有一个简单的VHDL流程(从MyHDL代码生成): 原始MyHDL代码: 在仿真中,它可以完美地运行(ISIM和MyHDL模拟器都可以),但是当我尝试将其综合到Spartan 6中时,会发出以下警告:clken应该在过程的灵敏度列表中sclidlevalue应该在过程的灵 ...

10 SystemVerilog中的灵敏度列表中的总线

当总线中的任何一位被切换(摆位)时,是否有可能在Always块中评估语句? 例如,如果我有: 我努力了 并且 但是模拟显示仅对a [0]的姿势进行了评估。 我无法使用“或”,因为宽度由参数确定。 先感谢您! ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM