如何理解电平敏感的透明锁存器概念

最近在学夏宇闻老师的《verilog数字系统 设计 教程》,在always电平敏感信号中提到了电平敏感的透明锁存器的概念,不甚理解,所以想请教下下论坛里的 朋友。这里,引用新浪博客一个网友的帖子。http://blog.sina.com.cn/s/blog_4cfafddd0100een4.html

文章中关于这个问题作了一些探讨。想与大家再交流下。谢谢!

附上帖子:(***帖子内容*** 非楼主原创)
      ***************************************************************

组合逻辑电路的设计,在谈到always电平敏感信号列表时,网上有的说:

   在赋值表达式右端参与赋值的所有信号都必须在always @(敏感电平列表)中列出,always中if语句的判断表达式必须在敏感电平列表中列出。如果在赋值表达式右端引用了敏感电平列表中没有列出的信号,在综合时将会为没有列出的信号隐含地产生一个透明锁存器。这是因为该信号的变化不会立刻引起所赋值的变化,而必须等到敏感电平列表中的某一个信号变化时,它的作用才表现出来,即相当于存在一个透明锁存器,把该信号的变化暂存起来,待敏感电平列表中的某一个信号变化时再起作用,纯组合逻辑电路不可能作到这一点。综合器会发出警告。

这句话是错的!而事实的真相应该是这段话:

敏感信号列表出现在always块中,其典型行为级的含义为:只要敏感信号列表内的信号发生电平变化,则always模块中的语句就执行一次,因此设计人员必须将所有的输入信号和条件判断信号都列在信号列表中。有时不完整的信号列表会造成不同的仿真和综合结果,因此需要保证敏感信号的完备性。在实际的PLD 器件开发中,EDA 工具都会默认将所有的输入信号和条件判断语句作为触发信号,增减敏感信号列表中的信号不会对最终的执行结果产生影响,因此如果期望在设计中通过修改敏感信号来得到不同的逻辑,那就大错特错了。当敏感信号不完备时,会使得仿真结果不一样,这是因为仿真器在工作时不会自动补充敏感信号表。如果缺少信号,则无法触发和该信号相关的仿真进程,也就得不到正确的仿真结果



必须将所有的输入信号和条件判断信号都列在信号列表中

有一种输入方式是:

always@(*)

  begin

       ....

  end

此时,综合工具和仿真工具会自动将所有的敏感信号自动加入敏感信号列表。


电平敏感的透明锁存器,其实就是D锁存器。D latch。当clk为高时,输出跟随输入D的变化而变化。


锁存器出现很多时候是这样,always@(。。。)  if(a)。。。, 我建议你如果是设计纯组合逻辑,就用always@(*),如果刻意设计锁存器,直接调用stdcell。


这里,大家谈到了两个问题:
1. 敏感列表
2. 锁存器
首先,目前的综合工具的确可以补全敏感列表,但是会造成前仿和后仿的不一致,那么到底是前仿是设计者想要的结果呢?还是后仿呢?
接着,锁存器是在电平触发的代码中,不完备的判断条件上,被综合工具映射出来的
最后,多谈一点,不管写什么代码,至少设计者自己需要明确其映射的逻辑单元,这是电路不是软件


  谢谢你的回答。另外,想请教一点,always @(a or b or c) ,响应abc的变化,高到低或者低到高,那么综合出来是怎么样的电路呢?这里既不是响应边沿always @(posedge ...)的触发器,也不是响应高电平或者低电平if(a) or if(!a)的锁存器,那么综合成的电路是如何的呢?是响应每个变量的两个边沿吗?

组合逻辑电路。电平触发。明白了,谢谢你的回答,我居然把一些基础的知识给忽略了。

您好,对于综合后的问题,还有个小疑问,希望能够请教您一下,麻烦您了!
这是书上的一个例子程序段:
   input a, b;
   reg e,d;
   always @(a or b)
     beign
        e = d & a & b;
     end

因为d没有在敏感电平列表中,所以d变化时,e不能立刻变化,要等到a或b变化时才体现出来。也就是说,实际上相当于存在一个电平敏感的透明锁存器在起作用,把d信号的变化锁存其中。这本是一个组合逻辑电路,却出现了一个不该有的锁存器,那么,综合后,对于锁存d信号的锁存器的ENA信号是什么呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值