明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 5332|回复: 0

【FPGA至简设计原理与应用】第一篇 第三章硬件描述语言Verilog第5节不定态

[复制链接]
发表于 2020-9-7 18:45:42 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本案例的编号为:001500000160,如果有疑问,请按编号在下面贴子查找答案:MDY案例交流【汇总贴】_FPGA-明德扬科教 (mdy-edu.com)
本文为明德扬原创及录用文章,转载请注明出处

大家好,近期我们会连载《FPGA至简设计原理与应用》一书,有兴趣的同学可以学习,也希望大家可以对我们的书提出宝贵的意见和建议。


FPGA至简设计原理与应用》书籍连载索引目录

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=989


读过的朋友可积极在贴后留言,书籍正式出版时,我们会从留言者中挑选20位幸运读者,幸运读者可获潘老师亲笔签名书籍一本。

注:手机浏览可能格式会乱,建议用电脑端进行浏览。




5.2.3不定态

本文档编号:001100000061
需要看对应的视频,请点击视频编号:001100000056
1.本节主要进行组合逻辑的介绍,包括:程序语句(assign语句、always语句),数字进制(二进制、不定态、高阻态),算数运算符(加、减、乘、除运算符),逻辑运算符(逻辑与、或、非运算符),按位逻辑运算符(单目按位与、或、非运算符,双目按位与、或、异或运算符),关系运算符,移位运算符(左移、右移运算符),条件运算符(三目运算符、if语句、case语句、选择语句等),拼接运算符;
2.ALTERA和VIVADO文档


前文中讲过数字电路只有高电平和低电平,分别表示10。但代码中经常能看到xz,如1’bx1’bz。那么这个xz是什么电平呢?答案是并没有实际的电平来对应两者。xz更多地是用来表示设计者的意图或者用于仿真目的,旨在告诉仿真器和综合器如何解释这段代码。
X态,称之为不定态,其常用于判断条件,从而告诉综合工具设计者不关心它的电平是多少,是0还是1都可以。

1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
always   @(posedge clk or negedge rst_n)begin
  
     if(rst_n==1'b0)begin
  
dout<= 0;
  
     end
  
     else if(din==4'b10x0)begin
  
dout<= 1;
  
     end
  
end

上面的例子中可以看出判断条件是din==4’b10x0,该条件等价于din==4’b1000||din==4’b1010,其中“||”是“或”符号。

1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
always   @(posedge clk or negedge rst_n)begin
  
     if(rst_n==1'b0)begin
  
dout<= 0;
  
     end
  
     else if(din==4'b1000|| din==4'b1010)begin
  
dout<= 1;
  
     end
  
end

然而笔者的观点是在设计中直接写成din==4’b1000||din==4’b1010要好于写成“din==4’b10x0”,因为这样的写法更加直接和简单明了。

在仿真的过程中有些信号产生了不定态,那么设计者就要认真分析这个不定态是不是合理的。如果真的不关心它是0还是1,那么可以不解决。但笔者建议所有信号都不应该处于不定态,写清楚其是0还是1,不要给设计添加“思考”的麻烦。





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2024-4-26 03:53 , Processed in 0.049071 second(s), 21 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表