马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 IC.Michael 于 2015-1-13 13:04 编辑
最近在学夏宇闻老师的《verilog数字系统设计教程》,在always电平敏感信号中提到了电平敏感的透明锁存器的概念,不甚理解,所以想请教下下论坛里的朋友。这里,引用新浪博客一个网友的帖子。http://blog.sina.com.cn/s/blog_4cfafddd0100een4.html
文章中关于这个问题作了一些探讨。想与大家再交流下。谢谢!
附上帖子:(***帖子内容*** 非楼主原创)
***************************************************************
组合逻辑电路的设计,在谈到always电平敏感信号列表时,网上有的说: “ 在赋值表达式右端参与赋值的所有信号都必须在always @(敏感电平列表)中列出,always中if语句的判断表达式必须在敏感电平列表中列出。如果在赋值表达式右端引用了敏感电平列表中没有列出的信号,在综合时将会为没有列出的信号隐含地产生一个透明锁存器。这是因为该信号的变化不会立刻引起所赋值的变化,而必须等到敏感电平列表中的某一个信号变化时,它的作用才表现出来,即相当于存在一个透明锁存器,把该信号的变化暂存起来,待敏感电平列表中的某一个信号变化时再起作用,纯组合逻辑电路不可能作到这一点。综合器会发出警告。 ” 这句话是错的!而事实的真相应该是这段话: “ 敏感信号列表出现在always块中,其典型行为级的含义为:只要敏感信号列表内的信号发生电平变化,则always模块中的语句就执行一次,因此设计人员必须将所有的输入信号和条件判断信号都列在信号列表中。有时不完整的信号列表会造成不同的仿真和综合结果,因此需要保证敏感信号的完备性。在实际的PLD 器件开发中,EDA 工具都会默认将所有的输入信号和条件判断语句作为触发信号,增减敏感信号列表中的信号不会对最终的执行结果产生影响,因此如果期望在设计中通过修改敏感信号来得到不同的逻辑,那就大错特错了。当敏感信号不完备时,会使得仿真结果不一样,这是因为仿真器在工作时不会自动补充敏感信号表。如果缺少信号,则无法触发和该信号相关的仿真进程,也就得不到正确的仿真结果。 ”
必须将所有的输入信号和条件判断信号都列在信号列表中 有一种输入方式是: always@(*) begin .... end 此时,综合工具和仿真工具会自动将所有的敏感信号自动加入敏感信号列表。 *************************************************************** |