当前课程知识点:IC设计与方法 > 3、Verilog语法 > c)逻辑电平及数据操作 > 讲课视频
讲完了端口的定义
下面我们要来看
Verilog语言里面的信号的电平
物理世界上的每一个信号
都是由它的各种各样的电平的
对于模拟信号
我们知道它的电平是从0到电源电压
大约是从0到电源电压
是连续的
对于逻辑电路
我们在本课里面讲过
逻辑电路的电平只有0或者是1
对吧
它跟物理世界的连接相当于是什么呢
0对应了地
0对应物理的这个零电平
逻辑的1对应的物理世界的电源电压
我们把物理世界的连续量离散化以后
就变成了逻辑的这个两个状态
实际的电路里边是不是这个样子呢
应该说
实际电路工作的理想情况也只存在于0和1
但是一个真实的物理器件
或者说一个真实电路
只用0或1来表示是不够的
为了表示实际真实的
这个物理世界里面的电平情况
在Verilog语言也好
VHDL语言也好
都定义了一个叫多电平的一个逻辑
以我们这个幻灯片为例
在Verilog语言里面
可以定义多值逻辑
包括有9值逻辑16值逻辑等等
最简单的是4值逻辑
方便大家这个使用和理解
电路执行的效率也会比较高
4值逻辑是什么
除了我们刚才提到的0和1之外
还定义了x和z
我们看一下这张幻灯片
幻灯片的左边非常好理解
就不多说了
是在电路产生0和1这两种情况
右上角是x的这种情况
我们来看一下
在右上角这个图里边
两个缓冲器的输出端被连到了一起
两个缓冲器的输入端分别被接到了地
或者说接到了电源
意味着两个缓冲器的输出
一个是0一个是1
在这种情况这根线上的值
到底是0还是1
还是其他情况
我们说我们不知道
这取决于实际物理世界里面
这两个器件的特性
我们都知道这两个缓冲器
缓冲器的内部的结构有点像CMOS的非门
是一个PMOS管和一个NMOS管
这个输出被连到了一起
当上面一个缓冲器输出1的时候
下面一个缓冲器输出0时候
理想情况
这个点的电平应该处于1/2的电源电压
也就是二分之vcc的这种情况
但实际上的话
在实际的物理世界里边
有可能上一个门的驱动能力强
这个点的电平就会更接近电源电压
也有可能下一个门的驱动能力强
这个点的电平就更接近地
所以这个点的电平到底是什么情况
我们不知道
如果这个点的电平更接近于电源电压的话
被后一级的电路就会认为是1
如果这个点的电平更接近于地的话
就会被后一个电路会认为是0
所以的话这个值我们在这种情况下
我们就不能武断的认为它到底是0还是1了
我们只能把它定义成是x
不确定
另一种情况就是右下角这张图
如果这是一个三态门
三态门的输出
根据三态门的定义
当三态门被打开的时候
输入的0或者是1被传递到这根线上
这时候这根线的状态是确定的
要么是0
要么是1
当三态门的始能端被关闭的时候
这时候三态门的输出处于一个高阻状态
高阻状态是针对三态门而言的
那针对物理上的这根线而言
它到底是什么
到底是0还是1呢
这时候我们又不知道了
但是这种不知道跟上面的x是不一样的
在这时候的话
实际的物理世界是什么样子呢
由于任何一根线
它都会有寄生的电容
大家可以理解这根线好像有一个电容到地
在这种情况下
如果三态门刚开始输出了一个1的话
这个电容就会让这根线保持在1
具备一定的保值功能
但是电容又是漏电的
也就是说
这个1
持续在电源电压上的1
它的电平会慢慢的慢慢的去降成0
是一个渐变的一个过程
所以这个地方的情况比较复杂
在这里面
我们把它定义成是Z
这Verilog所定义的4值逻辑
0 1 x z
它们可以比较准确的描述
电路上的任何一根连线
或者说任何一个节点所处的状态
刚才我们讲的是线路的状态
下面我再来看一下
Verilog的这个数的表示方式
Verilog表示一个数的时候
用的是这样一个形式
分为三部分来表示一个具体的一个数值大小
包括这个数的位宽是多少位的
这个数的base
或者说这个数的进制
到底是用8进制方式
十进制方式还是16进制方式去表示
最后一部分就是这个数的数值
我们来先看一下下面的一些例子
大家可以根据这些例子来
或者说根据这些例子
以及自己的使用习惯
来决定你到底用哪种方式去表示一个数
最常见的就是什么都不加
只是一个数值
那这种方式的话
是用十进制的方式来表示这个数
我们在这个例子里面虽然只是一个16
但实际上系统的话
默认会用一个32位的一个二进制数
来表示或者说来保存这个16
占用资源其实是比较大的
实际上为了保存一个16
我们可能用这个五位
或者是八位的二进制数就足够了
但如果你不表示位宽的话
系统默认会用32位来保存这个数
第二个例子是表示
这是一个8位位宽的10进制数的16
第三种方式
8位位宽的16进制方式的10
16进制的10对应的就是十进制的16
下一个方式是8位的二进制的这么一个方式
它表示的也是这个
表示的不是16了
表示的是另外一个值
对于有些情况
这个的话
我们很少会用到
但是要能够看明白
表示是一个32位的二进制方式的一个x
x表示不确定 对吧
x表示不确定
最下面一个表示二进制的两位的
位宽是两位的一个二进制数
一个问号
问号的值表示这个值有可能是0 1
或者是x
后面两个是比较特殊的情况
我们可以根据实际的例子来看
这里面的话
我们还要再强调一下
表示数值的x和z是不区分大小写的
x和z
它们分别表示了不确定以及高阻
所以我们又可以注意我们在写信号的时候
大家有时候会经常用x或者z来命名一个信号
在实际工程里面
为了区分这个信号的名字
以及信号的值x z的差异
所以我们在对信号起名字的时候
尽可能不要用x和z
-软件下载说明
-a) 集成电路的应用及市场
-a) 集成电路的应用及市场--作业
-b)集成电路的制造过程
-b)集成电路的制造过程--作业
-c)从CPU的发展看IC的进展
-c)从CPU的发展看IC的进展--作业
-d)从行业的发展看IC的进展
--Video
-d)从行业的发展看IC的进展--作业
-e)从ISSCC看IC的发展方向
--讲课视频
-e)从ISSCC看IC的发展方向--作业
-a)数字系统的实现方法 (ASSP/FPGA/ASIC的对比)
--讲课视频
-a)数字系统的实现方法 (ASSP/FPGA/ASIC的对比)
-b)组合逻辑电路
--Video
-2、数字集成电路设计方法--b)组合逻辑电路
-c)时序逻辑电路(1)
-d)时序逻辑电路(2)
-2、数字集成电路设计方法--d)时序逻辑电路(2)
-a)Verilog的历史和学习要点
--讲课视频
-b)端口、信号及数据类型
--讲课视频
-b)端口、信号及数据类型--作业
-c)逻辑电平及数据操作
--讲课视频
-3、Verilog语法--c)逻辑电平及数据操作
-d)Assign 语句
-e)Assign 举例
-f)Always
-f)Always--作业
-g)阻塞与非阻塞赋值
--Video
-3、Verilog语法--g)阻塞与非阻塞赋值
-h)D触发器的描述
--Video
-i)时序电路的设计
--Video
-i)时序电路的设计--作业
-j) 面向测试的Verilog语法(1)
-k) 面向测试的Verilog语法(2)
-k) 面向测试的Verilog语法(2)--作业
-a)电路设计实例1
--Video
-b)电路设计实例2
--讲课视频
-b)电路设计实例2--作业
-c)电路设计实例3
--讲课视频
-Modelsim仿真
-a)综合及相关基本概念
--Video
-a)综合及相关基本概念--作业
-b)综合及优化
--Video
-c)门级仿真
--门级仿真
-d)Quartus综合及分析(1)
--讲课视频
-e)Quartus综合及分析(2)
--讲课视频
-e)Quartus综合及分析(2)--作业
-f)Quartus综合及分析(3)
--Video
-g)Quartus综合及分析(4)
--Video
-g)Quartus综合及分析(4)--作业