You are on page 1of 2614

教学内容、要求及小结

本章目的
 说明数字信号的描述方式
 讨论数制和码制

本节主要内容:
 数字信号的描述方式
 实际数字波形的主要参数

学习本节后,你应该能
 了解数字信号的几种描述方式。
 了解数字信号的主要参数。

小结:
● 数字信号是离散的,用一组二进制数就可以表示各种各样的离散信息。
● 数字信号可以用用 0 和 1 来表示,也可以用高、低电平来表示,还可以用
波形图来表示。
● 用 0 和 1 可以组成二进制数表示数量的大小,也可以表示对立的两种逻
辑状态。
● 将高电平用逻辑 1 表示,低电平用逻辑 0 表示,这种表示方法称为正逻辑
体制。
数字逻辑概论

华中科技大学 罗杰
数字信号的描述方法
信号分类

 模拟信号举例:
u

O t

它的电压或电 u
流的幅值随时
间连续变化 O
t
信号分类

 数字信号举例:

它的电压或电 它的电压或电流
流的幅值随时 在幅值上和时间
间连续变化 上都是离散的
数字信号描述方法

1. 二值数字逻辑

0、1 数码

表示数量时称二进制数

表示事物状态时称二值逻辑
数字信号描述方法

2. 逻辑电平
+VDD

 数字信号还可以用高、低电平来表示。 逻辑1 高电平

 在数字电路中,高、低电平统称为逻辑电平。 VH(min )

未定义
• 低电平:电压值在(0 ~VL(max))范围内,
通常用逻辑0表示
VL(max)
逻辑0 低电平
• 高电平:电压值在VH(min) ~ +VDD 范围内,
通常用逻辑1表示。 0V

• 电压值在VL(max) ~ VH(min)范围内则没有定义,不能使用。
数字信号描述方法

 CMOS器件的电压值范围与
逻辑电平之间的对应关系:

电压 二值逻辑 电平
3.5V~5V 1 H(高电平)
0~1.5V 0 L(低电平)
数字信号描述方法

3. 数字波形:
----是信号逻辑电平对时间的图形表示。
通常在分析一个数字系统时,由于电路采用相同的逻辑电平标准,一
般可以不标出高、低电平的电压值。时间轴也可以不标。

v/V
逻辑 1
5

逻辑 0
0
50 100 150 200 t/ms

(a) 标明时间及幅值的数字波形 (b) 数字波形的常规表示


数字信号描述方法

3. 数字波形:

v/V

10

0
t/ms

三值逻辑波形

 在当今的数字电路中,一般采用具有两个
状态的二值数字逻辑。
数字信号描述方法

4. 实际脉冲波形及主要参数
理想的脉冲信号
数字信号描述方法

4. 实际脉冲波形及主要参数
非理想脉冲波形

v/V T
90%Vm
90%Vm
幅值 Vm 50%Vm tw 50%Vm 50%Vm
脉冲宽度
10%Vm 10%Vm

tr tf t/ms
上升 下降
时间 时间
数字信号描述方法

 几个主要参数:
 脉冲幅值——脉冲电压的最大变化幅度,即图中高电平的电
压值,单位为伏特(V)。

v/V T
90%Vm
90%Vm
幅值 Vm 50%Vm tw 50%Vm 50%Vm
脉冲宽度
10%Vm 10%Vm

tr tf t/ms
上升 下降
时间 时间
数字信号描述方法

 几个主要参数:
 上升时间 tr—— 指矩形脉冲上升沿从 10%Vm 上升到 90%Vm 时
所经历的时间 (单位为 ns )。
 下降时间 tf —— 指矩形脉冲下降沿从 90%Vm下降到 10%Vm 时
所经历的时间 (单位为 ns ) 。
90%Vm
90%Vm
幅值 Vm

10%Vm 10%Vm

tr tf
上升 下降
时间 时间
数字信号描述方法

 几个主要参数:
 周期 T —— 周期性重复的矩形脉冲中,两个相邻脉冲之间的
时间间隔。
1
 有时也用频率来表示,即 f 
T

50%Vm tw 50%Vm 50%Vm


脉冲宽度
数字信号描述方法

 几个主要参数:
 脉冲宽度 tw —— 从脉冲上升沿中间点( 50% Vm)起,到脉冲
下降沿中间点为止的一段时间。
 占空比 q —— 表示脉冲宽度占整个周期的百分比。
tw
q (%)  100%
T
T

50%Vm tw 50%Vm 50%Vm


脉冲宽度
数字信号描述方法

设周期性矩形脉冲波形的高电平持续时间为 6 ms,低电平

持续时间为 10 ms,求占空比 q 和频率 f 。

解: 脉冲宽度 tw=6 ms,


周期T = 6 ms+10 ms = 16 ms。

6 ms
q  100%  37.5%
16 ms
1 1
f   3
 62.5 Hz
T 16 10 s
再见!
教学内容、要求及小结

本节主要内容:
 几种常用的数制
 不同数制之间的相互转换

学习本节后,你应该能
 理解数制、基数、位权等基本概念
 掌握十进制数、二进制数、八进制数、十六进制数的组成及进位规则
 掌握不同数制之间相互转换的方法

小结:
● 在用数码表示数量的大小时,采用的各种计数进位制规则称为数制。
● 常用的数制有十进制、二进制、八进制、十六进制等,任意 R 进制数的表

达式为: N R =  K i  R i 。
i  

● 不同进制的数可以相互转换。
● 计算机和微处理器等数字系统通常采用二进制。
数字逻辑概论

华中科技大学 罗杰
数 制
( Number Systems )
数 制
数 制

数 制
• 即计数规则,通常用一串数字来表示数的大小。
• 我们把多位数码中每一位的构成方法以及从低位
向高位的进位规则就称为数制。

① 每一位的构成
② 从低位向高位的进位规则
十进制数

十进制数
十进制数

是以 10 为基数的计数体制。
十进制 采用0、1、 2、 3、 4、 5、 6、7、 8、 9十个
数码,其进位的规则是“逢十进一”。

例 55.316 = 5101 + 5100 + 3101 + 1102 + 6103

各位的“权”
十进制数

是以 10 为基数的计数体制。
十进制 采用 0、1、 2、 3、 4、 5、 6、7、 8、 9十个
数码,其进位的规则是“逢十进一”。

 位权
 一般表达式: ( N )D   i )
( K
i 
 10 i

系数

各位的权都是10的幂。
十进制数

是以 R 为基数的计数体制。
R 进制 采用 0 ~ R-1 个数码,其进位的规则是“逢R
进一”。

 位权
 一般表达式: ( N )R   i )
( K
i 
 R i

系数

各位的权都是R 的幂。
二进制数

二进制数
二进制数

是以 2 为基数的计数体制;
二进制 采用 0 和 1 两个数码,其进位规则是“逢二
进一”。
MSB LSB
(Most Significant Bit) (Least Significant Bit)

7 6 5 4 3 2 1 0
例 1001 1101
1 0 0 1 1 1 0 1

27 26 25 24 23 22 21 20

多位二进制数中的每一个数码称为 1 位(或 1 bit),


8 位二进制数称为一个字节(Byte)。
二进制数

是以 2 为基数的计数体制;
二进制 采用 0 和 1 两个数码,其进位规则是“逢二
进一”。
位权

 一般表达式: ( N )B   i )
( K
i 
 2 i

系数
各位的权都是2的幂。
八进制数

八进制数
八进制数

是以8为基数的计数体制;
八进制 采用 0, 1, 2, 3, 4, 5, 6, 7 八个数码,其进位的规
则是“逢八进一”。


 一般表达式 (N)O   ( K i  8 )
i

i =-

各位的权都是8的幂。
十六进制数

十六进制数
十六进制数

是以16为基数的计数体制;
十六进制 采用 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , A , B , C , D , E , F
十六个数码,进位规则是“逢十六进一”。


 一般表达式 (N)H   ( K i 16 ) i

i =-

各位的权都是16的幂。
数 制

各种不同进制数的特点对照表
数制 基数 数码 计数规则 一般表达式

十进制 10 0~9 逢十进一 ( N ) D   K i 10i
i =-

二进制 2 0、1 逢二进一 ( N ) B   K i  2i
i =-

八进制 8 0~7 逢八进一 ( N )O   K i  8i
i =-
0 ~ 9、A、B、 
十六进制 16
C、D、E、F
逢十六进一 ( N ) H   K i 16i
i =-

R 进制 R 0 ~(R-1) 逢 R 进一 ( N )R   Ki  Ri
i =-
数 制
不同进制数的对照表
十进制 二进制 八进制 十六进制
(Decimal) (Binary) (Octal) (Hexadecimal)
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
再见!
数字逻辑概论

华中科技大学 罗杰
二 — 十进制数之间的转换
数制转换

二进制数转换为十进制的方法

• 按照“按权展开”公式进行计算。即将每个
数码与相应位置上的权相乘,然后再求和。
数制转换

例 将二进制数(1001 1101)2转换为十进制数。

(1001 1101)2 = 127 + 026 + 025 + 124


+ 1 23 + 1 22 + 0 21 + 1 20

=128+16+8+4+1
= ( 157 )D
数制转换

例 将二进制小数( 0.1011)2转换为十进制数。

( 0.1011)2 = 12-1 + 02-2 + 12-3 + 12-4


=0.5+0.125+0.0625
= ( 0.6875 )D
数制转换

如何将一个十进制数转换成
二进制数呢?
数制转换

十进制整数的转换
数制转换

 十进制整数——二进制数转换

加权 重复除以 2
求和法 取出余数

所谓加权求和法:就是确定一组二进
制权使它们的和等于已知的十进制数。
二进制数
2n 与十进制数的对应关系
2n 十进制数 2n 十进制数
20 1 211 2,048
21 2 212 4,096
在计算机中,
22 4 213 8,192
• 210 被称为1K(kilo);
23 8 214 16,384
• 220 被称为1M(mega);
24 16 215 32,768
• 230 被称为1G(giga);
25 32 216 65,536
• 240 被称为1T(tera)。
26 64 217 131,072
27 128 218 262,144
28 256 219 524,288
29 512 220 1,048,576
210 1,024 221 2,097,152
数制转换

 加权求和法

例 ( 9 )D = 8 + 1

= 123 + 022 + 021 + 120

= (1001)B
数制转换

 加权求和法

例 82 = 64 + 16 + 2
= 1 26 + 0 25 + 1 24 + + 0 23 + 0 22 +1 21 + 0 20
= (101 0010)B

125 = 64 + 32 + 16 + 8 + 4 + 1
= 1 26 + 1 25 + 1 24 + 1 23 + 1 22 + 0 21+ 1 20
= (111 1101)B
数制转换

• 将十进制整数除以 2,取其余数,
• 所得之商再除以 2,再取其余数,
重复除以 2 • 如此重复,直到商为0。
取出余数法 • 每次得到的余数构成转换结果的对应位
数码;
• 第1个余数为最低位,最后一个余数为
最高位。
数制转换

 重复除以2取出余数法
2 45 余1

例 将十进制数 45 转换 2 22 余0
2 11 余1
为二进制数。 2 5 余1
2 2 余0
2 1 余1
0

(45)D=(1 0 110 1 )B
数制转换

十进制小数的转换
数制转换

 十进制小数——二进制数转换

加权 重复乘以 2
求和法 取出整数

所谓加权求和法:就是确定一组二进
制权使它们的和等于已知的十进制数。
数制转换

2-n与十进制值的对应关系表
2-n 十进制小数 例
2-1 0.5
( 0.625)D =0.5 + 0.125
2-2 0.25
2-3 0.125 = 2-1 +2-3
2-4 0.0625
= (0.101)B
2-5 0.03125
2-6 0.015625
数制转换

• 将十进制小数乘以 2,取出整数,
• 剩余的小数再乘以 2,再取出整数,
重复乘以 2 • 如此重复,直到小数部分为0或小数部分
取出整数法 的位数满足误差要求,进行“四舍五入”
为止。
• 每次得到的整数构成转换结果的对应位
数码。
数制转换

例 将十进制小数 (0.3125)D 转换为二进制数。

(0.3125)D=(0. 0101 )B

0.31252=0.625 取0

0.6252=1.25 取1

0.252=0.5 取0

0.52=1.0 取1
数制转换

例 将十进制小数 (0.562)D 转换为二进制数,要求转换


误差小于1%。
0.5622=1.124 取1
0.1242=0.248 取0 结果的小数部分
0.2482=0.496 取0 仍然不为 0,那到
0.4962=0.992 取0 什么时候停下来
0.9922=1.984 取1
呢?
0.9842=1.968 取1
0.9682=1.936 取1
数制转换

例 将十进制小数 (0.562)D 转换为二进制数,要求转换


误差小于1%。

分析: 2m ≤ 1%
2
m  6.64
lg 2

 m=7

只需要转换到小数点后面的第7位。
数制转换

例 (0.562)DD== ((0.1000 111))BB


(0.562)

0.5622=1.124 取1
0.1242=0.248 取0
0.2482=0.496 取0
0.4962=0.992 取0
0.9922=1.984 取1
0.9842=1.968 取1
0.9682=1.936 取1
数制转换

例 校核转换误差:

(0.1000111)B= 121 +125 +126 +127

≈(0.555) D

 转换误差为:
 =0.5620.555≈0.7% < 1%,满足要求。
再见!
数字逻辑概论

华中科技大学 罗杰
其它不同数制间的转换
二 — 十六进制数之间的转换
数制转换

 二进制数转换成十六进制数

 由于 4 位二进制数恰好有 16
个状态,把这 4 位二进制数看
作一个整体时,它的进位输出
又正好是逢十六进一,所以,
可以采用分组转换方法。
数制转换

 二进制数转换成十六进制数

分组转换方法

• 以二进制数的小数点为基准,对于整数部分,从右到
左每 4 位分成一组;
• 对于小数部分,从左到右每 4 位也分成一组;
• 不足 4 位的以 0 补足 4 位数;
• 将每组数以一位十六进制数代替。
数制转换

例 将二进制数 (1101 1001 1011 0011.01)B转换为十六进制数。

1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1. 0 1 二进制数
数制转换

例 将二进制数 (1101 1001 1011 0011.01)B转换为十六进制数。

1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1. 0 1 0 0 二进制数

D 9 B 3. 4 十六进制数

 (1101100110110011.01)B = (D9B3.4)H
数制转换

十六进制数转换成二进制数

• 把每一个十六进制数码改写成等值的4位二进
制数即可,且保持高、低位的次序不变。
数制转换

例 将十六进制数 (4E6.97C)H 转换为二进制数。

4 E 6 . 9 7 C

0100 1110 0110 . 1001 0111 1100

 (4E6.97C)H = (0100 1110 0110. 1001 0111 1100)B


数制转换

二进制数和八进制数之间
如何相互转换呢?

(自学)
十六— 十进制数之间的转换
数制转换

十六进制数转换为十进制的方法

• 只需要按照“按权展开”公式进行计算即可。
即将每个数码与相应位置上的权相乘,然后
再求和。
数制转换

例 将十六进制数 (3A.C)H 转换为十进制数。

(3A.C)H = 3161 + 10160+ 1216-1


= ( 58.75 )D
数制转换

如何将一个十进制数转换成 十六进制数呢?
数制转换

例 将十进制整数 (650)D 转换为十六进制数。

16 650 余A
16 40 余8
16 2 余2
0

(650)D=(28A)H
数制转换

例 将十进制数 0.75 转换为十六进制数。

(0.75)D=( 0. C )H

0.7516=12.00 取出整数12
数制转换

八进制数和十进制数之间
如何相互转换呢?
(自学)
再见!
教学内容、要求及小结

本节主要内容:
 无符号二进制数的算术运算
 有符号二进制数的表示(原码、反码和补码)
 补码的加减运算

学习本节后,你应该能
 了解无符号二进制数的加、减、乘、除四种运算规则。
 掌握有符号二进制数的原码、反码和补码表示。
 掌握补码的加减运算规则。

小结:
● 与十进制数类似,二进制数也有加、减、乘、除四种运算,加法是各种运
算的基础。
● 二进制机器数分为无符号数和有符号数两种类型。无符号数是指机器字长
的所有二进制位全部用来表示数值。而有符号数是指数的符号和数值部分均用二
进制编码所表示的数据。
● 有符号的机器数又细分为原码、反码和补码等不同的表示方法,在这三种
方法中,规定正号用 0 表示,负号用 1 表示。其中,补码是最重要的。
● 由于补码运算可以把减法转换为加法,规则简单,易于实现,大大简化了
加减运算的算法,所以现代计算机中均采用补码进行加减运算。
● 对于 n 位有符号二进制数的原码、反码和补码来说,其中有一位用来表示
符号,剩余的(n-1)位表示数值。因此,原码的表示范围为:(2n-1 1) ~ +(2n-1 1);
反码的表示范围与原码相同;补码的表示范围为:2n-1 ~ +(2n-1 1)。
● 在计算机中,通常采用补码来表示有符号的数。因此,我们必须掌握补码
的表示方法及其运算规则。
● 在补码系统的加减运算中,“溢出”仅发生在两个同符号的数(两个正数
或者两个负数)相加的情况下,如果相加后,结果的符号位与两个相加数的符号
位不同,则表明产生了溢出,结果是错误的。通常,如果两个正数相加的结果大
于机器所能表示的最大正数,就称为正溢出。如果两个负数相加的结果小于机器
所能表示的最小负数,就称为负溢出。
数字逻辑概论

华中科技大学 罗杰
二进制数的算术运算
二进制算术运算

算术运算

• 当两个二进制数表示两
个数量大小时,它们之
间可以进行数值运算,
这种运算称为算术运算。
二进制数加法

二进制数加法
二进制算术运算

 二进制数的加法运算规则和十进制数加法是类似的。
 十进制数相加时,其进位规则是“逢十进一”;
 二进制数相加时,其进位规则是“逢二进一”。
二进制加法
1位二进制数加法
 假设两个二进制数为 X、Y,低位来的进位用Cin表示,
用S 和 C 表示和与进位。

• 当 Cin = 0 时, X 0 0 1 1
+Y +0 +1 +0 +1
CS 00 01 01 10
逢二进一
二进制加法
1位二进制数加法
 假设两个二进制数为 X、Y,低位来的进位用Cin表示,
用S 和 C 表示和与进位。

• 当 Cin = 0 时, X 0 0 1 1
+Y +0 +1 +0 +1
CS 00 01 01 10
逢二进一
 在运算过程中,总是两个数相加。
假设多个数相加,则首先将第一个数和第二个数相加,
然后将第三个数与得到的结果相加,
如此继续下去,直到所有数都加完为止。
二进制加法
1位二进制数加法
 假设两个二进制数为 X、Y,低位来的进位用Cin表示,
用S 和 C 表示和与进位。

• 当 Cin = 0 时, X 0 0 1 1
+Y +0 +1 +0 +1
CS 00 01 01 10
逢二进一

• 当 Cin = 1 时, 1 1 1 1 1
X 0 0 1 1
+Y +0 +1 +0 +1
CS 01 10 10 11
二进制加法

多位二进制数加法

 从最低位(最右边)
开始; 被加数 1 0 1 0
加数 + 0 0 1 1
 每次取被加数和加数
的一位相加;同时还
要考虑低位来的进位。
二进制加法

多位二进制数加法

 从最低位(最右边) 进位 0 1 0
开始; 被加数 1 0 1 0 (10)
加数 + 0 0 1 1 (3)
 每次取被加数和加数
的一位相加;同时还 和 1 1 0 1 (13)

要考虑低位来的进位。
二进制数减法

二进制数减法
二进制减法

1位二进制数的减法运算

借一为二
二进制减法

二进制数的减法运算

 当两个 1 位二进制数相减时,如
果低位向本位的借位一直为1
本位的减法 低位向本
计算式
运算 位的借位
0–0 1 0 – 0 – 1 = -11
0–1 1 0 – 1 – 1 = -10
1–0 1 1 – 0 – 1 = 00
1–1 1 1 – 1 – 1 = -11
二进制减法

多位二进制数减法

 从最低位(最右边)
开始; 被减数 1 0 1 0
减数 - 0 0 1 1
 每次取被减数和减数
的一位相减;同时还
要考虑低位向本位的
借位。
二进制减法

多位二进制数减法

 从最低位(最右边) 借位 -1 -1 -1
开始; 被减数 1 0 1 0 (10)
减数 - 0 0 1 1 (3)
 每次取被减数和减数
差 0 1 1 1 (7)
的一位相减;同时还
要考虑低位向本位的
借位。
二进制减法

多位二进制数减法

 如果被减数小于减数,
就将减数与被减数交换
位置,用减数减去被减
数,在差的前面加上一
个负号。
二进制数乘法

二进制数乘法
二进制乘法

二进制数的乘法运算

乘法 0×0=0 0×1=0 1×0=0 1×1=1

 被乘数与乘数中某一位相乘的结果,称为部分积。
二进制乘法

例 计算两个 4 位二进制数1011和1001的积。
被乘数 1 0 1 1
乘数 × 1 0 0 1
部分积 1 0 1 1
部分积 0 0 0 0
部分积 0 0 0 0
部分积 1 0 1 1
积 1 1 0 0 0 1 1
 1011  1001=1100011
二进制乘法

二进制数的乘法运算

在大多数计算机中,
乘法运算是通过左移
被乘数与加法这两种
运算来完成的
二进制数除法

二进制数除法
二进制除法

二进制数的除法运算规则:

0÷1=0 1÷1=1

 注意:除数不能为0,否则无意义。
二进制除法

 除法运算的过程:
• 从被除数的最高位开始,
• 逐位向低位不断地减去除数,够减时商为 1,
不够减时商为 0,这样不断地减下去便可求
得商。
• 在二进制除法中,每位商的值为 1 或者 0.
二进制除法

例 计算两个4位二进制数 1010 和 111的商.


1. 0 1 1 商
除数 1 1 1 1 0 1 0 被除数
1 1 1
1 1 0 0
1 1 1
1 0 1 0
1 1 1
1 1 余数
二进制除法

除法运算是由右移
除数与减法运算组
成的
再见!
数字逻辑概论

华中科技大学 罗杰
有符号数的表示
(一)
有符号数表示

 人们在日常生活中,通常在一个数的前面用
“加(+)”号表示正数,用“减()”号
表示负数。
 数字系统只能识别和处理用 0、1表示的、二
进制形式的数据。

 在计算机内部如何表示正、负数呢?
有符号数表示

 通常采用的方法是把正、负
符号也用0、1来表示。即将
数的符号数值化。

符号位 数值位
有符号数表示

 将数的符号和数值部分均用
0、1进行编码所表示出来的
二进制数称为机器数或机器
码。
 机器数真正的值(即用正、
负符号所表示出来的十进制
数或者二进制数)称为真值。
有符号数表示

指机器字长的所 指数的符号和数
有二进制位全部 值均用二进制数
用来表示数值 码表示的数据。
有符号数表示

 假设某机器的字长为 8 位,  有符号数整数在机器中
无符号整数在机器中的表 的表示形式如下,即左
示形式如下,即 8 位全部 边的最高位作为符号位,
用来表示数值。 其余位为数值位。

7 …… 0 7 6 …… 0
数值位 符号位 数值位

8 位无符号整数表示 8 位有符号整数表示
有符号数表示

正号用0表示,负号用1表示
原 码

原 码
(Sign-Magnitude)
原 码

 原码的表示:
将正数的符号位用0表示,负数的符号位用1表示,数值用
其绝对值的二进制数形式表示。这种表示方法又称为符号-
数值表示法(Sign-Magnitude)。

X1 = +105 = +110 1001B X2 = 105 =  110 1001B

[X1]原 = 0110 1001B [X2]原 = 1110 1001B


原 码

原码中0的表示

• 真值0有两种不同的表示方式,即 +0 和 -0

[+0]原 = 0000 0000B


[0]原 = 1000 0000B
原 码

 在计算机中,位(bit)是二进制数据的最小单
位,1 位二进制数也称为 1 比特(bit)。
 通常将 8 位二进制数称为 1 字节(Byte);
 4 位二进制数称为半字节(Nibble)。
再见!
数字逻辑概论

华中科技大学 罗杰
有符号数的表示
(二)
有符号数表示

正号用0表示,负号用1表示
有符号数表示

 原码表示简单易懂,而且与真值的转换也很方便,但
实现加、减运算却比较麻烦。
 为了简化运算器的结构,把减法运算转换为加法运算,
于是引进了补码的概念。
 补码与反码之间有一定的运算关系,我们先介绍反码
的表示。
反 码

反 码
( 1’s Complement )
反 码

反码与原码的关系
• 正数的反码和原码相同;
• 负数的反码形式是其相应正数的反码,即符号
位为1,数值部分为其绝对值按位取反。

X1 = +105= +110 1001B X2 = 105 =  110 1001B


[X1]反 = 0110 1001B [X2]反 = 1001 0110B
反 码

反码中 0 的表示

• 真值 0 有两种不同的表示方式,即 +0 和 -0

[+0]反 = 0000 0000B


[0]反 = 1111 1111B

 有些教材,将反码称为“1的补码”(1’s Complement)。
补 码

补 码
( 2’s Complement)
补 码

 在有些教材中,将二进制

数的补码称为“2的补码”

(2’s Complement)。
补 码

10-5 = 5
12
11 1 10+7-12 = 5

10 2 舍弃进位

(10 – 5)减法运算可以用
9 3
(10 + 7)加法代替。 5 和 7

8 4 相加正好产生进位的模数 12,
所以称 7为-5对模12的补数,
7 5
6 也称为补码。
补 码

10-5 = 5
10+7-12 = 5 “模”是指一个系统的量程。

舍弃进位

 例如,时钟能够表示1~12,以12为一个计数循环,我们称
它的模为12。
4位二进制数能够表示0000~1111,我们称 4 位二进制数的模
为16;同理,8位二进制数的模为28=256。
补 码

10-5 = 5

10+7-12 = 5 “模”是指一个系统的量程。

舍弃进位

• 在舍弃进位的条件下,减去某个数
结论 可以用加上它的补码来代替。

 这个结论同样适用于二进制数的运算。
补 码
0000
1111 0001 1011-0111=0100(对应十
0
15 1
1110 0010 进制数是:11-7=4)减法,
14 2
在舍弃进位的条件下,可
1101 0011
13 3
以用1011+1001=0100(对
1100 12 4 0100 应十进制数是:11+9=4)
加法代替。
11 5
1011 0101
因为4位二进制数的模数
10 6 是16,所以9恰好是-7对
1010 0110
9 7
1001
8
0111
模16的补码。
1000
补 码

补码的表示
• 正数的补码和原码相同。
• 负数的补码形式是其相应正数的补数,即符
号位为1,数值部分为其绝对值按位取反,并
在最低位加1。(负数的补码为其反码加1)

X1 = +105 = +110 1001B X2 = 105 = 110 1001B


[X1]补 = 0110 1001B [X2]补 = 1001 0111B
反 码

 在补码中,
真值 0 的表示是唯一的。

[+0]补 = [0]补 = 00 …… 0 B
补 码

 求负数补数的简便方法:
从右边的最低位向左边的最高位扫描,保留直到第一个
“1”的所有位,以后各位按位取反,保留符号位不变。

例 使用8位二进制数,将 90 用补码表示出来。


[+90]原 = (0101 1010)B [–90] 原 = (1101 1010)B
[–90]原 = (1101 1010)B [–90] 反 = (1010 0101)B
+1
[–90]补 = (1010 0110)B [–90] 补 = (1010 0110)B
补 码

 求负数补数的简便方法:
从右边的最低位向左边的最高位扫描,保留直到第一个
“1”的所有位,以后各位按位取反,保留符号位不变。

例 使用8位二进制数,将 1 用补码表示出来。
[+1] 原 = (0000 0001)B
[–1] 原 = (1000 0001)B

[–1] 补 = (1111 1111)B


补 码

 如何将补码转换成原码和真值表示呢?

[[X]补]补= [X]原

例 求 [1010 1010]补的原码和真值。

[[1010 1010]补]补= [1101 0110]原


二进制数真值为: 101 0110 B
十进制数真值为:  ( 126 + 124 + 1 22 + 1 21 )
= 86
补 码

例 确定下列两个补数的十进制值。
(1)0101 0110 (2)1010 1010

7 6 5 4 3 2 1 0

解:(1) 0 1 0 1 0 1 1 0
27 26 25 24 23 22 21 20

 0101 0110 = 126 + 124 + 122 + 121


= 64 + 16 + 4 + 2
= +86
补 码

例 确定下列两个补数的十进制值。
(1)0101 0110 (2)1010 1010

7 6 5 4 3 2 1 0

解:(2) 1 0 1 0 1 0 1 0
27 26 25 24 23 22 21 20

 1010 1010 = 1 (-27) + 125 + 123 + 121

=  128 + 32 + 8 + 2
=  86
有符号数表示

 注意:在补码中,负数的符号位的权值被赋予负值。
 要求一个补码的十进制真值,可以把所有为 1 的位
(包括符号位)所对应的权值加起来即可,不需要考
虑那些为 0 的位,也不用考虑这个补码数是正数、还
是负数。
再见!
数字逻辑概论

华中科技大学 罗杰
补码的加减运算
补码的加减运算

 加减运算是计算机中最基本的运算。
 加减运算可以用原码、补码、BCD码等各种码制进
行。
 补码运算可以把减法转换为加法,现代计算机中均
采用补码进行加减运算。
补码的加减运算

 假设X和Y均为正数,则补码的运算规则如下:

 [ X ]补+ [ Y ]补 = [ X+Y ]补 (mod M)


两个数的补码之和等于两数之和的补码。

 [ X ]补 [ Y ]补 = [ X ]补+ [  Y ]补 = [ X  Y ]补 (mod M)


两个数的补码之差等于两数之差的补码。
补码的加减运算

 注意:
 参与运算的操作数均为补码,运算的结果仍然以
补码表示。

 运算时,符号位和数值位按同样的规则参加运算,
结果的符号位由运算得出。

 补码总是对确定的模而言,如果运算结果超过了
模,则应将模(即进位)丢掉才能得到正确结果。
补码的加减运算

 求 15 – 13 = ?(用补码) ∵ (15– 13)补= (15 )补– (13)补


= (15 )补+ (–13)补

直接做减法运算 转换为补码做加法运算
进位 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 (15) 0 0 0 0 1 1 1 1 (15)补
 0 0 0 0 1 1 0 1 (13) + 1 1 1 1 0 0 1 1 (-13)补
0 0 0 0 0 0 1 0 (2) 1 0 0 0 0 0 0 1 0 ( 2)补

舍弃进位
补码的加减运算

 注意:

 在进行二进制补码的加法运算时,被加数与加数
的位数要相等,即让两个二进制数补码的符号位
对齐。
 两个二进制数的补码要采用相同的位数表示。
补码的加减运算

 求 13 – 15 = ?(用补码)

∵ (13-15 )补 = (13 )补+ (–15)补

进位 0 0 0 0 0 0 1
0 0 0 0 1 1 0 1 (13)补
+ 1 1 1 1 0 0 0 1 (-15)补
1 1 1 1 1 1 1 0 (-2)补
补码的加减运算

 求 –13 – 15 = ?(用补码)

因为(-13-15 )补 = (-13 )补+ (–15)补

进位 1 1 1 0 0 1 1
1 1 1 1 0 0 1 1 (-13)补
+ 1 1 1 1 0 0 0 1 (-15)补
1 1 1 1 0 0 1 0 0 (-28)补

舍弃进位
补码的加减运算

 求 125+58 = ? (用补码)
错误原因是:
因为(125+58 )补 = (125)补+ (58)补  8位有符号数所能表示的补码

进位 1 1 1 1
数的最大值为127.
0 1 1 1 1 1 0 1 (125)补  这里,183 > 127,导致结果
+ 0 0 1 1 1 0 1 0 ( 58)补 错误。
1 0 1 1 0 1 1 1 (183)补  我们把超出表示范围的这种
情况称为溢出(Overflow)。
补码的加减运算

 求 -105-50 = ? (用补码)
错误原因是:
因为(-105-58 )补 = (-105)补+ (-50)补  8位有符号数所能表示的补码
数的最小值为-128.
进位 0 0 1 1 1 1
1 0 0 1 0 1 1 1 (-105)补  这里, -155< -128,也产生
+ 1 1 0 0 1 1 1 0 ( -50)补 了溢出。
1 0 1 1 0 0 1 0 1 (-155)补  发生溢出的原因是因为和的
位数是固定的。
舍弃进位
补码的加减运算

 溢出的判别对有符号数的运算是非常重要的,它表明
结果是否超出范围。

 “溢出”仅发生在两个同符号的数(两个正数或者两
个负数)相加的情况下。
• 如果两个正数相加的结果大于机器所能表示的最大正数,称
为正溢出。
• 如果两个负数相加的结果小于机器所能表示的最小负数,称
为负溢出。
补码的加减运算

 出现溢出后,机器将无法正确地表示运算结果,因此,
在计算机中,有专门的电路用来检测两个数相加时产
生的溢出。

 这个检测单元将通知计算机的控制单元发生了溢出,
运算结果是错误的。
补码的加减运算

 n 位有符号的二进制数的原码、反码和补码的数值范围

(2n-1 1) ~ +(2n-1 1) (2n-1 1) ~ +(2n-1 1) 2n-1 ~ +(2n-1 1)
补码的加减运算
4 位有符号二进制数的原码、反码、补码对照表

十进 二进制数 十进 二进制数
制数 原码 反码 补码 制数 原码 反码 补码
8   1000 +1 0001 0001 0001
7 1111 1000 1001 +2 0010 0010 0010
6 1110 1001 1010
+3 0011 0011 0011
5 1101 1010 1011
+4 0100 0100 0100
4 1100 1011 1100
+5 0101 0101 0101
3 1011 1100 1101
+6 0110 0110 0110
2 1010 1101 1110
1 1001 1110 1111 +7 0111 0111 0111

0 1000 1111 0000


+0 0000 0000 0000
再见!
教学内容、要求及小结

本节主要内容:
 几种常用的编码及其特点

学习本节后,你应该能
 掌握十进制数的 BCD 码表示方法
 了解格雷码的基本特点及构成方法
 了解 ASCII 码和奇偶校验码

小结:
● 在用数码表示不同的事物或状态时,这些数码已经没有数量大小的含义,
所以将它们称为代码。编制代码时所遵循的规则就称为码制。
● 在数字系统中,将若干个二进制数码(0 和 1)按一定规则排列起来表示
某种特定的信息,称为二进制代码,或称为二进制码。
● 常用的码制有 BCD 码、格雷码、ASCII 码和奇偶校验码。
● 常用的 BCD 码有 8421 码、2421 码、5421 码、余三码、余三码循环码等。
数字逻辑概论

华中科技大学 罗杰
二 — 十进制码
BCD 码

 码制: 编制代码所要遵循的规则。

 在数字系统中,将若干个二进制数码(0和1)按一定
规则排列起来表示某种特定的信息,称为二进制代码
( Binary Codes ),简称二进制码。
BCD 码

用 n 位二进制数可以表示 2n 个不同的信息,给每个信息
规定一个具体的二进制代码,这种过程叫编码(Encoding)。

若需要编码事件(或信息)的个数为M,则需要使用的
二进制代码的位数 n 应该满足以下关系:

2n-1< M ≤2n
BCD 码

 二 -十进制码(Binary-Coded-Decimal):
就是用二进制数来表示一位十进制数中的 0~9 这十个数码,
即用二进制编码表示的十进制数,简称 BCD 码。

 要表示 0~9 这十个数码,即待编码的信息有10项,

因 24 > 10,

 需要 4 位二进制数。
BCD 码

 4 位二进制数总共有16种组合
(0000~1111)。
 从中选择10 种来表示 0~9 个数
码的方案有很多种。
 每种方案产生一种 BCD 码。
BCD 码
0000 几种常用的BCD代码
0001
0010 十进制 余3循
8421码 2421 码 5421 码 余3码
0011
数码 环码

0100 0 0000 0000 0000 0011 0010


0101
1 0001 0001 0001 0100 0110
0110
2 0010 0010 0010 0101 0111
0111
1000 3 0011 0011 0011 0110 0101
1001 4 0100 0100 0100 0111 0100
1010 5 0101 1011 1000 1000 1100
1011 0110 1100 1001 1001 1101
6
1100
7 0111 1101 1010 1010 1111
1101
8 1000 1110 1011 1011 1110
1110
1111 9 1001 1111 1100 1100 1010
8421 码

8421 BCD 码
8421 码
0000 几种常用的BCD代码
0001
0010 十进制 余3循
8421码 2421 码 5421 码 余3码
0011
数码 环码

0100 0 0000 0000 0000 0011 0010


0101
1 0001 0001 0001 0100 0110
0110
2 0010 0010 0010 0101 0111
0111
1000 3 0011 0011 0011 0110 0101
1001 4 0100 0100 0100 0111 0100
1010 5 0101 1011 1000 1000 1100
1011 1100 1001 1001 1101
6 0110
1100
7 0111 1101 1010 1010 1111
1101
8 1000 1110 1011 1011 1110
1110
1111 9 1001 1111 1100 1100 1010
8421 码
0000 几种常用的BCD代码
0001
十进制
0010
数码
8421码 2421 码 5421 码 8421 BCD 码
0011
0100 0 0000 0000 0000
0101
1 0001 0001 0001 • 是一种常用的 BCD 码。
0110
0111
2 0010 0010 0010
• 取4 位自然二进制数的
1000 3 0011 0011 0011
1001 4 0100 0100 0100 前10种组合。后6个是
1010 5 0101 1011 1000
1011
无效码。
6 0110 1100 1001
1100
7 0111 1101 1010 • 8421码属于有权码。其
1101
8 1000 1110 1011
1110
9 1001 1111 1100
权值与二进制数相同。
1111
8421 码

 十进制数和 BCD 码之间如何进行转换呢?

 十进制数  BCD 码

将每个十进制数字用对应的 4 位二进制代码代替。

 BCD 码  十进制数
从右边的最低位开始,将 BCD 码分成 4 位一组,
然后写出每个组所对应的十进制数。
8421 码

 十进制数和 BCD 码之间如何进行转换呢?

( 97)D  (1001 0111)BCD

 
463.5 D   0100 0110 0011. 0101
  BCD
不能省略!
8421 码

不要混淆了“十进制数与二进制数的转换”和
注意:
“用BCD来表示十进制数”这两个不同的概念。

( 13)D  (1101)B, 这是转换!

( 13)D  (0001 0011)BCD,这是编码!

 通常,编码比转换需要的二进制数位数更多。
 一个 n 位的十进制数,其BCD码为 4n 位。
8421 码

不要混淆了“十进制数与二进制数的转换”和
注意:
“用BCD来表示十进制数”这两个不同的概念。

 BCD码是用二进制形式书写的十进制数。
 用BCD码表示的十进制数,每四位一组;
 仍然要遵循“逢十进一”的进位规则。
2421 码

2421 BCD 码
2421 码
0000 几种常用的BCD代码
0001
十进制
0010
数码
8421码 2421 码 5421 码 2421 BCD 码
0011
0100 0 0000 0000 0000
0101
1 0001 0001 0001 • 2421码也是有权码,从
0110
0111
2 0010 0010 0010 高位到低位的权值分别
1000 3 0011 0011 0011
1001 4 0100 0100 0100 是2、4、2、1。
1010 5 0101 1011 1000
1011
• 取 4 位自然二进制数的
6 0110 1100 1001
1100
7 0111 1101 1010 前 5 种组合和后 5 种组
1101
8 1000 1110 1011
1110 合。中间 6 个是无效码。
1111 9 1001 1111 1100
2421 码
0000 几种常用的BCD代码
0001
十进制
0010
数码
8421码 2421 码 5421 码 2421 BCD 码
0011
0100 0 0000 0000 0000
0101
1 0001 0001 0001 • 最高位的 0 和 1只改变
0110
0111
2 0010 0010 0010 一次;
1000 3 0011 0011 0011
1001 4 0100 0100 0100 • 若以最高位的0和1之间
1010 5 0101 1011 1000
1011
的交界为轴,则 4 和 5、
6 0110 1100 1001
1100
7 0111 1101 1010 3 和 6、2 和 7、1 和 8、
1101
8 1000 1110 1011
1110 0 和 9互为反码。
1111 9 1001 1111 1100
5421 码

5421 BCD 码
5421 码
0000 几种常用的BCD代码
0001
0010 十进制 余3循
8421码 2421 码 5421 码 余3码
0011
数码 环码

0100 0 0000 0000 0000 0011 0010


0101
1 0001 0001 0001 0100 0110
0110
2 0010 0010 0010 0101 0111
0111
1000 3 0011 0011 0011 0110 0101
1001 4 0100 0100 0100 0111 0100
1010 5 0101 1011 1000 1000 1100
1011 0110 1100 1001 1101
6 1001
1100
7 0111 1101 1010 1010 1111
1101
8 1000 1110 1011 1011 1110
1110
1111 9 1001 1111 1100 1100 1010
余3码

余 3 BCD 码
余3码
0000
0001 十进制 余3循 余3 BCD 码
余3码
0010 数码 环码
0011
0 0011 0010
0100
1 0100 0110 • 最高位的 0 和 1只改变一
0101
0111
0110 2 0101 次;
0111 3 0110 0101
1000 4 0111 0100 • 若以最高位的 0 和 1 之
1001 1100
5 1000
1010
1101
间的交界为轴,则 4 和 5、
6 1001
1011
1100
7 1010 1111 3 和 6、2 和 7、1 和 8、
1101 8 1011 1110
1110 9 1100 1010
0 和 9互为反码。
1111
余 3 循环码

余 3 循环 码
余 3 循环码
几种常用的BCD代码
十进制 余3循 余 3 循环码
8421码 2421 码 5421 码 余3码
数码 环码

0 0000 0000 0000 0011 0010 • 具有相邻性。任意两个


1 0001 0001 0001 0100 0110
相邻代码(包括首尾两
2 0010 0010 0010 0101 0111
3 0011 0011 0011 0110 0101 个代码)之间仅有一位
4 0100 0100 0100 0111 0100 取值不同。
5 0101 1011 1000 1000 1100
6 0110 1100 1001 1001 1101 • 例如, 4 和 5两个代码
7 0111 1101 1010 1010 1111
1000 1110 1011 1011
0100 和1100 仅左边的
8 1110
9 1001 1111 1100 1100 1010 最高位不同。
再见!
数字逻辑概论

华中科技大学 罗杰
格雷码
(Gray Code)
格雷 码
3 位二进制码与格雷码的对照表

格雷码是一种常见的无权码。 十进 二进制码 格雷码


制数 b2b1b0 G2G1G0
特点是:任何两个相邻代码之 0 000 000
间仅有一位取值不同。 1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100
格雷 码
3 位二进制码与格雷码的对照表

格雷码是一种常见的无权码。 十进 二进制码 格雷码


制数 b2b1b0 G2G1G0
特点是:任何两个相邻代码之 0 000 000
间仅有一位取值不同。 1 001 001
2 010 011
其首、尾两个代码之间也只有 3 011 010
一位不同,因此,格雷码又称 4 100 110
为循环码。 5 101 111
6 110 101
7 111 100
格雷 码
3 位二进制码与格雷码的对照表

 格雷码另一个特点: 十进 二进制码 格雷码


制数 b2b1b0 G2G1G0
最高位的0和1只改变一次; 0 000 000
若以最高位的0和1之间的交 1 001 001
2 010 011
界为轴,其他位的代码是上
3 011 010
下对称的。所以,格雷码又 4 100 110
是反射码。 5 101 111
6 110 101
7 111 100
格雷 码
3 位二进制码与格雷码的对照表

 格雷码另一个特点: 十进 二进制码 格雷码


制数 b2b1b0 G2G1G0
最高位的0和1只改变一次; 0 000 000
若以最高位的0和1之间的交 1 001 001
2 010 011
界为轴,其他位的代码是上
3 011 010
下对称的。所以,格雷码又 4 100 110
是反射码。 5 101 111
6 110 101
7 111 100
格雷 码

 构造格雷码的方法一:
• 一位格雷码有两个码字:0 和 1.

• (n+1)位格雷码中的前 2n个码字等
于 n位格雷码的码字,按顺序书写,
加前缀 0.

• (n+1)位格雷码中的后 2n个码字等
于n位格雷码的码字,但按逆序书写,
加前缀 1.
格雷 码
2 位格雷码
 构造格雷码的方法一:
0 0
• 一位格雷码有两个码字:0 和 1. 0 1
反射轴
• (n+1)位格雷码中的前 2n个码字等
1 1
1 0
于 n位格雷码的码字,按顺序书写,
加前缀 0.

• (n+1)位格雷码中的后 2n个码字等
于n位格雷码的码字,但按逆序书写,
加前缀 1.
格雷 码
3 位格雷码
 构造格雷码的方法一:
0 0 0
• 一位格雷码有两个码字:0 和 1. 0 0 1
反射轴
0 1 1
• (n+1)位格雷码中的前 2n个码字等
0 1 0
于 n位格雷码的码字,按顺序书写, 反射轴
加前缀 0. 1 1 0
1 1 1
• (n+1)位格雷码中的后 2n个码字等 1 0 1
于n位格雷码的码字,但按逆序书写, 1 0 0
加前缀 1.
格雷 码

 构造格雷码的方法二:

n 位二进制码

n 位格雷码
格雷 码

 构造格雷码的方法二:
• 格雷码的最高位(最左边)与二进制码的最高位相同。

• 从左到右,逐一将二进制码相邻的两位相加(舍去进位),作为
格雷码的下一位。

1—   1—   0—   1—   1 二进制码
    
1 0 1 1 0 格雷码
格雷 码

如何将格雷码转换成二进
制码呢?
(自学)
格雷 码

格雷码主要用于角度编码。

• 在圆盘的上面对应每个同心圆环
安装一对红外线发射器和接收器,
产生相应的3位编码;根据这 3 位
编码就能知道盘的旋转位置。

• 0表示有反射光,1表示没有反射
光。
格雷 码

使用自然二进制对角度编码。
• 当使用3位自然二进制排列时,红外
线接收器输出的码字变化顺序为
000,001,010,……,111,000。

• 当圆盘转至扇区过渡的边界上时,
就可能产生错误的输出结果。
例如,在 001和 010扇区之间边界上,红外线
接收器将输出什么值呢?
格雷 码

使用自然二进制对角度编码。
• 在边界上,001和010都是正确的,但
由于机械装配的偏差,最右边那个接
收器安装时可能稍微超前了一点点,
接收到了下一个扇区的光,输出0,结
果就会出现000编码,这就错了;当然,
如果两边的接收器是对齐的,中间的
那个接收器安装的靠前了一点点,就
会输出011,这也是错的。
格雷 码

使用自然二进制对角度编码。
• 可见,在这种类型的应用中,要保证红外线接收器接收到的
光完全同步实际上是很难的,因此,在扇区转换的过程中,
常常会出现错误的编码。
格雷 码

使用格雷码对角度编码。
• 0表示有反射光,1表示没有反射光。

• 当用3位格雷码时,红外线接收器输出
的码字变化顺序为000,001,011, 010, 110,
111, 101, 100。保证相邻扇区只有一位
不同。
• 接收器输出的编码要么表示边界的这一边,要么表示另外一边的
情况;因此,不会出现错误的编码。
再见!
数字逻辑概论

华中科技大学 罗杰
ASCII 码和奇偶校验码
ASCII 码
(American Standard Code for Information Interchange)
格雷 码

 ASCII 码采用 7 位二进制编


码,用来表示英文字母、数
字、标点符号以及其他特殊
符号的代码。

 总共有128种不同的字符。
ASCII码表
b6b5b4
b3b2b1b0
000 001 010 011 100 101 110 111
0000 NUL DLE SPACE 0 @ P ` p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 ‫״‬ 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB ’ 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS - = M ] m }
1110 SO RS . > N  n ~
1111 SI US / ? O — o DEL
 ASCII码表中头32个为控制字符。
b6b5b4
b3b2b1b0
000 001 010 011 100 101 110 111
0000 NUL DLE SPACE 0 @ P ` p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 ‫״‬ 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB ’ 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS - = M ] m }
1110 SO RS . > N  n ~
1111 SI US / ? O — o DEL
 ASCII码表中控制字符的含义:

NUL Null 空白 DC1 Device control 1 设备控制1


SOH Start of heading 标题开始 DC2 Device control 2 设备控制2
STX Start of text 文本开始 DC3 Device control 3 设备控制3
ETX End of text 文本结束 DC4 Device control 4 设备控制4
EOT End of transmission 传输结束 NAK Negative acknowledge 否认
ENQ Enquiry 询问 SYN Synchronous idle 同步空转
ACK Acknowledge 确认 ETB End of transmission block 块传输结束
BEL Bell 报警 CAN Cancel 取消
BS Backspace 退一格 EM End of medium 纸尽
HT Horizontal tab水平列表 SUB Substitute 替换
LF Line feed 换行 ESC Escape 脱离
VT Vertical tab 垂直列表 FS File separator 文件分隔符
FF Form feed 走纸 GS Group separator 组分隔符
CR Carriage return 回车 RS Record separator 记录分隔符
SO Shift out 移出 US Unit separator 单元分隔符
SI Shift in 移入 SP Space 空格
DLE Data link escape 数据链路换码 DEL Delete 删除
 ASCII码表中控制字符的含义:

b3b2b1b0 字符 含 意
b6b5b4
000 001 010 011 100 101 110 111
0000 NUL DLE Null 空白 0
NUL SPACE @ P ` p
0001 SOH SOH
DC1 Start
! of heading
1 标题开始
A Q a q
0010 STX STX
DC2 ‫״‬
Start 2 文本开始
of text B R b r
0011 ETX ETX
DC3 End
# of text 3 文本结束 C S c s
0100 EOT EOT
DC4 End
$ of transmission
4 D传输结束
T d t
0101 ENQ ENQ
NAK Enquiry 询问
% 5 E U e u
0110 ACK ACK
SYN Acknowledge
& 6 确认 F V f v
0111 BEL BEL
ETB Bell 报警 7
’ G W g w
1000 BS CANBS Backspace
( 8 退一格 H X h x
1001 HT EMHT Horizontal
) 9 tab 水平列表
I Y i y
1010 LF SUBLF Line
* feed :换行 J Z j z
1011 VT ESCVT Vertical
+ ; 垂直列表
tab K [ k {
1100 FF FSFF Form
, feed<走纸 L \ l |
1101 CR CR
GS Carriage
- return
= 回车
M ] m }
1110 SO RSSO Shift
. out 移出> N  n ~
1111 SI USSI Shift
/ in 移入 ? O — o DEL
 ASCII码表中控制字符的含义:
b6b5b4
b3b2b1b0
000 001 010 011 100 101 110 111
0000 NUL DLE SPACE 0 @ P ` p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 ‫״‬ 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB ’ 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS - = M ] m }
1110 SO RS . > N  n ~
1111 SI US / ? O — o DEL
格雷 码

有一组信息的ASCII码如下,它们代表的字符信息

是什么?

1001000 1000101 1001100 1001100 1001111


ASCII码表
b6b5b4
b3b2b1b0
000 001 010 011 100 101 110 111
0000 NUL DLE SPACE 0 @ P ` p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 ‫״‬ 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB ’ 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS - = M ] m }
1110 SO RS . > N  n ~
1111 SI US / ? O — o DEL
格雷 码

有一组信息的ASCII码如下,它们代表的字符信息

是什么?

1001000 1000101 1001100 1001100 1001111

H E L L O
奇偶检验码
( Parity Check Code )
奇偶检验码

 二进制信息传送示意图:

二进制信息
发送器 接收器
奇偶检验码

 奇偶检验用于检测接收数据和发送数据是否一致。

有效信息 检验位
(k位) (1位)

 信息位,即需要传递的信息本身。可以是位数不限的
任何一种二进制形式的数据代码,例如二进制数、
BCD码、ASCII码等;
奇偶检验码

 奇偶检验用于检测接收数据和发送数据是否一致。

有效信息 检验位
(k位) (1位)

 检验位,是附加的冗余位,仅有一位。
奇偶检验码

 奇偶检验用于检测接收数据和发送数据是否一致。

有效信息 检验位
(k位) (1位)

检验位 有效信息
(1位) (k位)
奇偶检验码

信息位和检验位 信息位和检验位
中“1”的个数之 中“1”的个数之
和为奇数 和为偶数
奇偶检验码

例 传送ASCII码中的“A”:

• 奇检验码: 1 100 0001

检验位 信息位
奇偶检验码

例 传送ASCII码中的“A”:

• 奇检验码: 1 100 0001

检验位 信息位

• 偶检验码: 0 100 0001

检验位 信息位
奇偶检验码

例 传送ASCII码中的“A”:

7 位 ASCII 码 + 1 位偶检验码
发送端 接收端
发送 ‘A’ = 01000001, 接收到 ‘A’ = 01000101

由编码器根据 通过检测器检
信息位编码产 查含“1”个数
生奇偶检验位 的奇偶
奇偶检验码

例 传送ASCII码中的“A”:

7 位 ASCII 码 + 1 位偶检验码
发送端 接收端
发送 ‘A’ = 01000001, 接收到 ‘A’ = 01000101

奇偶检验码只有检错能力,没有纠错能力。
奇偶检验码

 奇偶检验码只能发现单个
错误,不能发现双错;

 编码简单、容易实现、应
用广泛。
再见!
例题选讲
十进制数转换为二进制数

华中科技大学 谭力
例题选讲
十进制数转换为二进制数
转换方法

整数部分 除2取余,逆序排列
转换方法
小数部分 乘2取整,顺序排列

1. 小数部分转换时可能存在无限循环,因此需要根据转换
误差要求选择合适的位数
2. 保持小数点位置不变
例题选讲
将十进制数(106.347)D转换为二进制数,转换误差小于0.005
余数
2 1 0 6 0 整数部分转换结果
2 5 3 1 (106)D = (1101010)B
2 2 6 0
2 1 3 1

2 6 0

2 3 1
2 1 1
0 逆序排列
例题选讲
将十进制数(106.347)D转换为二进制数,转换误差小于0.005
根据转换误差小于0.005的要求
1 1 1 1
8
= <0.005< = 7
2 256 128 2

所以:
转换后的小数应至少取8位;
转换时应计算到第九位,再
根据结果进行“四舍五入”
例题选讲
将十进制数(106.347)D转换为二进制数,转换误差小于0.005
整数
0.347 * 2 = 0.694 0
0.694 * 2 = 1.388 1 (0.01011000)B
0.388 * 2 = 0.776 0 顺
0.776 * 2 = 1.552 1 序
“五入”

0.552 * 2 = 1.104 1 列
0.104 * 2 = 0.208 0
(0.01011001)B
0.208 * 2 = 0.416 0
0.416 * 2 = 0.832 0
0.832 * 2 = 1.664 1 “五入”
例题选讲
将十进制数(106.347)D转换为二进制数,转换误差小于0.005

0.34765625-0.347 =0.00065625<0.005

小数部分转换结果

(0.347)D = (0.01011001)B
例题选讲
将十进制数(106.347)D转换为二进制数,转换误差小于0.005

整数部分转换结果 小数部分转换结果

(106)D = (1101010)B (0.347)D = (0.01011001)B

转换结果

(106.347)D = (1101010.01011001)B
再见!
例题选讲
任意进制数转换为十进制数

华中科技大学 谭力
例题选讲
任意进制数转换为十进制数
转换方法
任意进制数的一般表达式为:

(N) r   i
K 
i 
r i

K i :系数 r :基 r :位权
i

1. 每个数位上的系数乘以所在数位的位权
2. 将各个乘积相加
例题选讲
将十二进制数(1A6.B42)12转换为十进制数

十二进制数的一般表达式为:
系数的取值范围(0,1,2,…,9,A,B)

(N)12   i
K 
i 
12 i
基为12 位权为 12i

(1A6.B42)12 =1 * 122 + A * 121 + 6 * 120 + B * 12-1 + 4 * 12-2 + 2 * 12-3


=1 * 144 + 10 * 12 + 6 * 1 + 11 * 0.083333
+ 4 * 0.006944 + 2 * 0.000579
=270.945597
再见!
教学内容、要求及小结

本章目的
 介绍逻辑代数的与、或、非三种基本运算及其复合运算。介绍集成逻辑门
的分类
 介绍逻辑代数的基本公式和规则
 介绍逻辑函数的几种表示方法以及逻辑函数表达式中常见的两种形式
 介绍逻辑函数变换与化简的代数法和卡诺图法两种方法
 说明逻辑门的等效符号及应用

本节主要内容:
 逻辑代数的提出及发展过程

学习本节后,你应该能
 了解逻辑代数与逻辑状态的关系

小结:
● 逻辑代数又称为布尔代数,是分析和设计数字电路的数学工具
逻辑代数基础

华中科技大学 罗杰
逻辑代数简介
逻辑代数简介

逻辑代数是分析和设计数字电路的数学工具。

它是英国数学家乔治.布尔(George Boole)

提出来的,所以又称为布尔代数。

George Boole
(1815.11~1864.12)
逻辑代数简介

1815年,布尔出生于英国。
1847年,他出版了《逻辑的数学分析》
(The Mathematical Analysis of Logic)。
1849年,出版了著名著作《思维规律的研究》
( An Investigation of The Laws of Thought ),
书中介绍了布尔代数。同年,他被爱尔兰科克

George Boole 皇后学院聘为数学教授。此后,在该校进行教


(1815.11~1864.12) 学和科研工作。
逻辑代数简介

 1864年逝世,终年49岁,死于肺炎。

位于爱尔兰科克的布尔之墓
逻辑代数简介

克劳德·香农是美国数学家、电气工程师
和密码学家,被称为“信息论之父”。
1937年,他完成硕士学位论文——《继
电器和开关电路的符号分析》(A Symbolic
Analysis of Relay and Switching Circuits),
1938年发表了该论文。
香农发现布尔代数是分析和描述继电器电
Claude E. Shannon 路的有效方法。
(1916.4 ~ 2001.2)
逻辑代数简介

 继电器的触点有“断开”和“接通”两

种状态,可以用 0 和 1 来表示。

 0 和 1 表示两种对立的逻辑状态。

 只有两种对立逻辑状态的逻辑关系称为

二值逻辑。
逻辑代数简介

逻辑代数
 “逻辑”是指事件产生的条件和结果之间的因果关系。
 逻辑代数是指按一定逻辑规律进行运算的代数,主要研究
逻辑函数和逻辑变量之间的因果关系,而不是数量之间的
运算。
 逻辑变量常用大写字母 A、B、C…表示。每个逻辑变量的
取值只有 0 和 1两种可能,0 和 1称为逻辑常量。
逻辑代数简介

逻辑运算
 在数字电路中,往往将事件的条件作为输入信号,而结果
作为输出信号。
 条件和结果的状态分别用逻辑“1”和“0”表示,它们之间
可以按照一定的规则进行推理运算。我们将这种运算称为
逻辑运算。
逻辑代数简介

 逻辑运算有哪一些呢?

 逻辑运算如何表示呢?

 逻辑运算如何实现呢?

 逻辑运算有哪些基本定律和规则呢?
再见!
教学内容、要求及小结

本节主要内容:
 逻辑代数的基本运算有与、或、非三种及其复合运算
 实现逻辑运算的集成逻辑门电路简介

学习本节后,你应该能
 掌握基本逻辑运算和常用的复合逻辑运算,能够写出逻辑表达式和真值表
 掌握常见逻辑门的图形符号
 了解几种常用的集成逻辑门

小结:
● 与、或、非是逻辑运算中的三种基本运算,其他逻辑运算都可以由这三种
基本运算构成。
● 逻辑运算都可以用集成电路实现。任何数字逻辑电路都可以由逻辑门实现。
逻辑代数基础

华中科技大学 罗杰
基本逻辑运算
逻辑与运算

逻辑与运算
逻辑与运算
电路功能表
条件

开关A 开关B 灯L
结果
A B
断 断 灭
断 合 灭
E L
合 断 灭
合 合 亮

逻辑与运算
• 只有当决定某一事件的条件全部具备时,
事件的结果才会发生。
逻辑与运算

电路功能表  与逻辑真值表
开关A 开关B 灯L 开关 A、B: A B L
断开-0
断 断 灭 闭合-1 0 0 0
断 合 灭 0 1 0
灯 L:
合 断 灭 灭-0 1 0 0
合 合 亮 亮-1 1 1 1

 与逻辑表达式:

L = A B = AB

L = A  B  C···
逻辑与运算

0 0 1 1

1 1
逻辑与运算

与门的逻辑符号

A
L
B
特定外形符号

A &
L
与门电路 B
矩形符号
• 实现与逻辑运算(即满足与逻辑
真值表)的电子电路,简称与门。
逻辑与运算

A
L
B

逻辑 1

A 逻辑 0

t1
逻辑或运算

逻辑或运算
逻辑或运算
电路功能表
条件
条 A
开关A 开关B 灯L
结果
B 断 断 灭
断 合 亮
灯L 合 断 亮
合 合 亮

逻辑或运算

• 在决定某一事件的各种条件中,只要有一个或几
个条件具备时,结果就会发生。
逻辑或运算

电路功能表 或逻辑真值表
开关A 开关B 灯L 开关 A、B: A B L
断开-0
断 断 灭 闭合-1 0 0 0
断 合 亮 0 1 1
合 断 亮 灯 L:
灭-0 1 0 1
合 合 亮 亮-1 1 1 1

或逻辑表达式:
L = A +B
L = A+B+C+ ···
逻辑或运算

或门电路
• 实现逻辑或运算的电子电路,简称或门。

或逻辑符号

A A ≥1
L B L
B
特定外形符号 矩形符号
逻辑或运算

A
L
B

逻辑 1

A 逻辑 0

t1
逻辑非运算

逻辑非运算
逻辑非运算

条件 电路功能表
R
结果 开关A 灯L
E L
A 断 亮
合 灭

逻辑非运算

• 事件发生的条件具备时,结果不会发生;
而发生的条件不具备时,结果一定发生。
逻辑非运算

电路功能表 开关 A: 非逻辑真值表
断开-0
开关A 灯L 闭合-1 A L
断 亮 灯 L: 0 1
合 灭 灭-0 1 0
亮-1

非逻辑表达式:
L=A
逻辑非运算
小圆圈
表示取非
非门的逻辑符号 L A
A 1
A L A

特定外形符号 矩形符号

非门的波形图
逻辑 1

A 逻辑 0

L
再见!
逻辑代数基础

华中科技大学 罗杰
复合逻辑运算
逻辑代数简介

常用逻辑运算

与 与非

基本逻 复合逻
同或 辑运算 或非
辑运算

非 或
异或
与非逻辑运算

与非逻辑运算
与非逻辑运算

与非运算是与运算和非运算的组合。  与非逻辑真值表

A B L
A 0 0 1
L
B 0 1 1
1 0 1
1 1 0
 与非逻辑符号

A A
L
&
L  与非逻辑表达式
B B
L = A ·B
或非逻辑运算

或非逻辑运算
或非逻辑运算

或非运算是或运算和非运算的组合。  或非逻辑真值表

A B L
A 0 0 1
L
B 0 1 0
1 0 0
1 1 0
 或非逻辑符号

A A
L
≥1
L  或非逻辑表达式
B B
L= A+B
异或逻辑运算

异或逻辑运算
异或逻辑运算

 异或逻辑符号 异或逻辑真值表
A B L
A L  A B A =1 L  A B 0 0 0
B B 0 1 1
1 0 1
1 1 0
异或逻辑关系
 异或逻辑表达式
• 当输入 A、B 相同时,输出 L 为 0;
L  AB  AB
当输入 A、B 不同时,输出 L 为 1。
 A B
异或逻辑运算

 异或逻辑表达式
L  AB  AB

 由与、或、非构成的异或逻辑运算

A
A AB

B
B
AB
同或逻辑运算

同或逻辑运算
同或逻辑运算

 同或逻辑符号 同或逻辑真值表
A B L
L=AB L=AB
A A = 0 0 1
B B 0 1 0
1 0 0
1 1 1
同或逻辑关系
 同或逻辑表达式
• 当输入 A、B 相同时,输出 L 为 1;
L  A B  A B
当输入 A、B 不同时,输出 L 为 0。
A B
再见!
逻辑代数基础

华中科技大学 罗杰
三态输出门电路
三态输出门电路

 前面学过的各种逻辑门,其输出状态可能是: 0、1
EN
 三态门有三种可能的输出: 0、 1、 Z
A L
 Z 是指输出为高阻态
 Z 意味着输出与输入之间是断开的 三态门逻辑符号

 三态门的输出与输入像一个开关断开一样
真值表
 输入 EN 控制着输出与输入 使能 输入 输出
EN A L
 EN 是控制信号(也称为使能信号)
1 0 0
 如果 EN = 1,则 L = A
1 1 1
 如果 EN = 0,则 L = Z 0  高阻 Z
三态输出门电路

 输入控制 EN 和输出 L 可以是反相的,表示反相的圆圈会出现在相应端口。

EN EN EN
L L L
A A A

三态门真值表 三态门真值表 三态门真值表


EN A L EN A L EN A L
0 0 0 0 0 1 1 0 1
0 1 1 0 1 0 1 1 0
1 × 高阻 Z 1 × 高阻 Z 0 × 高阻 Z
再见!
逻辑代数基础

华中科技大学 罗杰
集成逻辑门简介
集成逻辑门简介

实际芯片外形图
发展历史

 集成电路(Integrated Circuit)简称IC,是一种微型电子器
件或部件。

 是指通过一系列特定的加工工艺,将电路中的有源元件(二
极管、晶体管等)、无源器件(电阻和电容等)以及它们之
间的相互连接线等一起制作在半导体衬底上,并将它封装在
一个外壳内,形成一块独立的不可分割的整体电路。
发展历史

 集成电路的各个引出端(又称为管脚)就是该电路的输入、输出、
电源和地等的接线端。
 集成电路的封装外壳有圆壳式、双列直插式、扁平式或球形栅格
阵列式等多种形式,这样提高了电路可靠性,减小了体积。
集成电路分类

 按照器件结构类型和工艺技术分类:
集成电路分类

 单极型IC采用场效应晶体管;

 双极型IC(也称为TTL)采用双极型晶体管;

 混合型(BiCMOS)芯片内部同时包括场效应晶体管
和双极型晶体管。
集成电路分类

•根据MOS晶体管沟道导电类型的不同,MOS集成电路又
可以分为NMOS、PMOS 和CMOS集成电路。
• CMOS集成电路是将P沟道和N沟道MOS晶体管组合成一
个电路单元的互补MOS集成电路,其优点是功耗低、集成
度高。
•目前,CMOS已成为集成电路的主流。
集成电路分类

MOS集成电路发展的历程:

4000 HC/HCT AHC/AHCT LVC

VDD =3~18V 典型 VDD =5V 典型 VDD =5V 典型VDD =3.3V


速度慢 速度快 速度是HC两倍 速度 比AHC快
与TTL不兼容 与TTL兼容 与TTL兼容 功耗比AHC低
集成电路分类

CMOS逻辑系列分类表
CMOS系列 说 明

4000 最早出现的CMOS,供电电源为3~18V
74HC 与TTL芯片的引脚兼容、编号相同的高速CMOS ,供电电源为2~6V
74HCT 类似于74HC,并能与TTL直接相连,供电电源为4.5~5.5V
74AC 增强型CMOS,供电电源为3.0~5.5V
74ACT 类似于74AC,并能与TTL直接相连,供电电源为4.5~5.5V
74AHC 增强型高速CMOS,供电电源为2.0~5.5V
74AHCT 类似于74AHC,并能与TTL直接相连,供电电源为4.5~5.5V
74FCT 具有TTL输入电平的快速CMOS,供电电源为4.75~5.25V
74LVC 低电源电压型,供电电源为2.0~3.6V
集成电路分类

•双极型集成电路的典型代表有54/74两个逻辑系列。
•54系列为军用型产品,而74系列为商用型产品。两个系列
相应型号的功能一样,但性能不同。
集成电路分类

TTL逻辑系列分类表

TTL系列 说 明 缩写字母注释

74 标准TTL (出现得最早)
74L 低功耗型 Low-power
74S 肖特基型 Schottky
74LS 低功耗肖特基型(应用广泛) Low-power Schottky
74AS 增强型肖特基型 Advanced Schottky
74ALS 增强型低功耗肖特基型 Advanced low-power Schottky
74F 快速型 Fast
74H 高速型 High-speed
74LV 低电源电压型 Low-voltage
集成逻辑门简介
集成逻辑门简介

传输延迟
• 是指输出信号滞后于输入信号的时间。
• 任何一个实际的逻辑电路都会存在传输延迟。

50% 50%
A
A
A L
L L
50% 50%

(a)非门 tPHL tPLH


tPLH
tPHL
(b)理想的传输延迟波形图 (c)实际的传输延迟波形图
集成逻辑门简介

传输延迟
• 当输出电压从高到低变化时,输出与输入之间的延迟,
记作tpHL。
• 当输出电压从低到高变化时,输出与输入之间的延迟,
记作tpLH。
• 通常用平均传输延迟时间tpd来衡量一个逻辑门的工作速
度,即
tpHL  tpLH
tpd 
2
再见!
教学内容、要求及小结

本节主要内容:
 介绍逻辑代数的基本公式
 介绍逻辑代数的三种规则

学习本节后,你应该能
 掌握逻辑代数的基本公式
 熟悉代入规则、反演规则和对偶规则

小结:
● 逻辑代数是分析和设计数字电路的数学工具,它有一系列基本公式、常用
公式和基本规则,它们可以用于对逻辑函数进行变换和化简。
逻辑代数基础

华中科技大学 罗杰
逻辑代数的基本定律
逻辑代数的基本定律

 逻辑代数有一系列的定律和规则,用于对表达式进行处理,以便我们
能对逻辑电路进行化简、变换、分析和设计。

逻辑表达式 化简

逻辑
设计 变换
电路

分析
逻辑代数的基本定律

A ·0 = 0 A+0=A
0、1律 A ·1 = A A+1=1

重叠律 A ·A = A A +A = A

互补律 A A0 A  A 1

还原律 AA
逻辑代数的基本定律

交换律 A B  B  A A+B = B+A

结合律  A B C  A B C  (A+B)+C=A+ (B+C )

分配律 A(B+C)=AB+AC A+BC=(A+B)(A+C)


逻辑代数的基本定律

反演律 A B  A  B A  B  A B

摩根定理的证明
A B A B AB A+ B A+B A B
列出等式左、右边函数的 1
0 0 1 1 0·0 = 1 0+0=1 1
真值表。
0 1 1 0 0·1 = 1 1 0+1=0 0
可见,上面每个等式两边 1 0 0 1 1·0 = 1 1 1+0=0 0
的真值表相同,故等式成
1 1 0 0 1·1 = 0 0 1+1=0 0
立。
逻辑代数的基本定律

序号 公式a 公式b 名称

1 A0=0 A+1=1

2 A1=A A+0=A 同一律

3 AA=A A+A=A 重叠律

4 A A  0 A A 1 互补律

5 AB=BA A+B=B+A 交换律

6 A  (B  C ) = (A  B)C A + ( B + C)= (A + B) +C 结合律

7 A  (B + C ) = A  B + AC A + B  C= (A + B) (A + C) 分配律

8 A  B  C =A  B  C   A  B  C =A  B  C  反演律

9 A A 还原律
逻辑代数的常用公式

逻辑代数的常用公式
逻辑代数的常用公式

吸收律 A  A B  A A ·(A+B) = A

A  AB  A  B
AB  AC  BC  AB  AC
重要公式
AB+ AC+BCD=AB + AC
逻辑代数的常用公式
 方法二:
证明: A  A  B=A  B 列出等式左、右边 表达式 的真值表

 方法一:
A B A AB A  AB A+B
左边  A  A  B (分配律) 0 0 1 0 0+0=0 0
 ( A  A)( A  B) 0 1 1 1 0+1=1 1
 1(
 A  B) (互补律) 1 0 0 0 1+0=1 1
 A B 1 1 0 0 1+0=1 1
 右边
左边=右边
逻辑代数的常用公式

证明: AB  AC  BC  AB  AC

 证: 利用基本公式进行证明。

左边  AB  A C  BC ( A  A)
 AB  AC  ABC  ABC
 AB(1  C )  AC (1  B )
 AB  AC
 右边
再见!
逻辑代数基础

华中科技大学 罗杰
逻辑代数的基本规则
逻辑代数的基本规则

1 •代入规则

2 •反演规则

3 •对偶规则
逻辑代数的基本规则

代入规则

在任何一个包含变量 A 的逻辑等式中,如果用另
一个逻辑式代入式中所有 A 的位置,则等式仍然
成立。这一规则称为代入规则。
逻辑代数的基本规则

例 代入规则可以扩展所有基本公式或定律的应用范围

对逻辑等式 A  B =A  B , 应用代入规则: 用 B·
C 代替 B,得
左边 = A(BC )
右边 = A  BC  A  B  C

A  B  C =A  B  C (3变量反演定理)

 反演定理: 还可以继续扩展到 4 变量、5 变量、6 变量……


逻辑代数的基本规则

反演规则

• 对于任意一个逻辑表达式 L,若将其中所有的与(• )换
成或(+)、或(+)换成与(•);原变量换成反变量,
反变量换成原变量;将1换成0,0换成1;则得到的表达式
就是原函数的反函数。

注意:  保持原来的运算优先级,即先进行与运算,后进行或运算。注意
优先考虑括号内的运算。
 (2) 对于反变量以外的非号应保留不变。
逻辑代数的基本规则

例 已知 L  A  B  C  D ,求 L

解1:用反演规则, 可得 括号的作用:保持
运算顺序不变。
 
L   A  B C  D

  A  B  C  D 

解2:用摩根定律, 可得

L  A B  C  D  A B C  D

  A  B C  D 
逻辑代数的基本规则

例 试求 L  A  BC  D  E 的非函数 L

解:由反演规则,可得 注意:保留反变量
以外的非号不变。

L  A  (B  C)  D E
逻辑代数的基本规则

对偶规则

• 对于任何一个逻辑表达式 L,若将其中的
“与、或互换,0、1互换”;那么,所得
的新的表达式就是L的对偶式,记作 L 。

• 对偶规则:若两个逻辑式相等,则它们的
对偶式也相等。
逻辑代数的基本规则

例 已知逻辑函数
L  ( A  B )( A  C ),
求 L 的对偶式。

解:由对偶规则,可得

L  AB  AC
逻辑代数的基本规则

例 利用对偶规则,可从已知公式中得到更多的运算公式

 对逻辑等式 A  (B + C ) = A  B + A C ,
 应用对偶规则,可得
对偶式

A + BC = (A + B)(A + C )

这实际上是分配律的两个公式。
再见!
教学内容、要求及小结

本节主要内容:
 根据逻辑图写出逻辑表达式,列出真值表
 介绍逻辑函数的真值表、逻辑函数表达式、逻辑图和波形图等表示逻辑函
数的方法

学习本节后,你应该能
 根据逻辑图,能够写出逻辑表达式,列出真值表
 用真值表、逻辑函数表达式、逻辑图和波形图等方式表示逻辑函数

小结:
● 逻辑函数可以通过真值表、逻辑函数表达式、逻辑图和波形图等方式表示。
● 逻辑图可以根据表达式画出,是最接近工程实现的一种表达方式,根据逻
辑电路就可以连接成实际的逻辑电路。
逻辑代数基础

华中科技大学 罗杰
逻辑函数及其表示方法
逻辑函数及其表示方法

逻辑函数
• 在逻辑代数中,如果将表示事件条件的变量作为
输入,将表示运算结果的变量作为输出,那么当
输入变量的取值确定后,输出值便随之确定。因
此输出与输入之间是一种函数关系,这种关系称
为逻辑函数(Logic Function),写作
• L = f (A, B, C, )
• 由于变量是只取0或1的二值逻辑变量,因此逻辑
函数也是二值逻辑函数。
逻辑函数及其表示方法

逻辑函数的表示方法
• 逻辑真值表
• 逻辑函数表达式(简称逻辑表达式 或 函数式)
• 逻辑图
• 波形图
• 卡诺图
• 硬件描述语言
逻辑函数及其表示方法

例 一个控制楼梯照明灯的电路示意图如图所示。

单刀双掷开关A装在楼下,B装在楼上。上
楼道灯和开关示意图
楼时,在楼下开灯后,可在楼上关灯;下楼
时,可在楼上开灯,而在楼下关灯。要求:
a b
A B
(1)列出灯的状态和开关位置之间逻辑关
系的真值表; c d

(2)写出逻辑表达式; ~

(3)画出逻辑图和波形图。
逻辑函数及其表示方法

解 (1)逻辑真值表。

 灯的状态和开关位置之间的功能表。

电路功能表
开关 A 开关 B 灯 a b
下 下 亮 A B
下 上 灭
c d
上 下 灭

上 上 亮
楼道灯和开关示意图
逻辑函数及其表示方法

 进行逻辑抽象,列出真值表
确定输入变量、输出变量名称,规定0、1 的含义,并给变量赋值

电路功能表 逻辑真值表
开关 A 开关 B 灯 开关 A、B:
A B L
上-1
下 下 亮
下-0 0 0 1
下 上 灭
灯 L:
0 1 0
上 下 灭
灭-0 1 0 0
上 上 亮 亮-1 1 1 1
逻辑函数及其表示方法

(2)逻辑函数表达式 逻辑真值表
A B L
 把每个输出为1的一组输入变量组合写
0 0 1 AB
成乘积项的形式。 1 0
0
 在乘积项中,逻辑值1用原变量表示, 1 0 0
1 1 1 AB
逻辑值0用反变量表示。

 最后将所有的这些乘积项进行逻辑加,
即得逻辑函数的与-或表达式。 L  A B  AB
逻辑函数及其表示方法

(3)根据逻辑表达式,画出逻 A

辑图。 B L

L  A B  AB
(a) 由与、或 、非逻辑符号构成的逻辑图
方法是:

 用图形符号代替逻辑表达式中 A
相应的代数运算符号。 B L

(b) 由同或逻辑符号构成的逻辑图
逻辑函数及其表示方法

(4)根据真值表,画出波形图。
将真值表中输入变量和函数的对应值分别用高、低电平表示。

真值表
A B L 0 1 0 0 1 0
A
0 0 1
B 0 1 1 0 0 0
0 1 0
1 0 0 L
1 1 0 1 0 1
1 1 1
t1 t2 t3 t4 t5 t6
逻辑函数及其表示方法

由与门、或门和非门组合起来构成的逻辑电路如图
例 所示。要求:
(1)写出逻辑表达式; S
(2)列出真值表。
L1  S  D0
解: (1)根据逻辑图,写出各个 D0 L1

门输出端的逻辑表达式。 L
D1
L2
L  L1  L2
L2  S  D1
 S  D0  S  D1
逻辑函数及其表示方法

(2)列出逻辑真值表。 输出
输入信号
将输入变量取值的所有组合逐一代 信号 说 明
入逻辑式,求出函数值,列成表。 S D1 D0 L
L  S  D0  S  D1 0 0 0 0
0 0 1 1
分析真值表,得到: L与D0相同
0 1 0 0
 当 S = 0时,L与D0相同。 0 1 1 1
 当 S = 1时,L与D1相同。 1 0 0 0
1 0 1 0
 该电路能够从两路输入信号中选取 L与D1相同
一路作为输出。通常将该电路称为 1 1 0 1

2选1数据选择器。 1 1 1 1
逻辑函数及其表示方法

(2)列出逻辑真值表。
将输入变量取值的所有组合逐一代
入逻辑式,求出函数值,列成表。
简化的真值表
L  S  D0  S  D1
选择输入 输出
分析真值表,得到: S Y
 当 S = 0时,L与D0相同。 0 D0
 当 S = 1时,L与D1相同。 1 D1
 该电路能够从两路输入信号中选取
一路作为输出。通常将该电路称为
2选1数据选择器。
逻辑函数及其表示方法

逻辑函数的表示方法
真值表
逻辑表达式
逻辑图
波形图
逻辑函数及其表示方法

试列出以下开关电路的逻辑真值表,
练习
并写出逻辑表达式。

B
A

C 灯
电源 L
再见!
教学内容、要求及小结

本节主要内容:
 介绍逻辑函数常见的“与-或” 表达式和“或-与”表达式
 说明逻辑函数的“最小项之和”表达式和“最大项之积”表达式
 逻辑函数的常见表达形式
 逻辑函数的代数化简法和变换

学习本节后,你应该能
 能够写出逻辑函数的“与-或” 表达式和“或-与”表达式
 理解最小项、最大项的定义及性质
 掌握最小项与最大项之间的关系
 理解逻辑函数式的代数化简方法和变换

小结:
●逻辑函数的“与-或” 表达式和“或-与”表达式是两种常见的形式。
●逻辑函数最小项和最大项表达式是逻辑表达式的两种标准形式,任一个逻
辑函数经过变换,都能得到唯一的最小项表达式或者是最大项表达式。
●逻辑函数的常见形式有与-或、与非-与非、或-与、或非-或非、与-或非表达
式。
●逻辑函数的代数法化简是运用逻辑代数中的定理、恒等式或规则对逻辑函
数进行化简。
逻辑代数基础

华中科技大学 罗杰
逻辑函数表达式的形式
逻辑函数及其表示方法

试列出以下开关电路的逻辑真值表,
练习
并写出逻辑表达式。

B
A

C 灯
电源 L
逻辑函数及其表示方法

 列出逻辑真值表 输出
输入信号
信号
• 假设 0表示开关断开,1表示开关闭合;
A B C L
• 假设输出为 L,以 0 表示灯不亮,以 1 表
0 0 0 0
示灯亮。
0 0 1 0
• 列出真值表。根据电路功能,在 A 为 1 0 1 0 0
(开关合上)时,B 和 C 中至少有一个为 0 1 1 0
1 0 0 0
1,L 才会为 1(灯亮)。
1 0 1 1
1 1 0 1
1 1 1 1
逻辑函数及其表示方法

 列出逻辑真值表
输出
输入信号
• 假设 0表示开关断开,1表示开关闭合; 信号
A B C L
• 假设输出为 L,以 0 表示灯不亮,以 1 表
0 0 0 0
示灯亮。
0 0 1 0
• 列出真值表。根据电路功能,在 A 为 1 0 1 0 0
(开关合上)时,B 和 C 中至少有一个为 0 1 1 0

1,L 才会为 1(灯亮)。 1 0 0 0


1 0 1 1
 写出逻辑表达式
1 1 0 1
L  A B C  A B C  A B C 1 1 1 1
逻辑函数及其表示方法

 逻辑表达式 L  A B C  A B C  A B C

A B C

A
L
A B C
B

C
A B C
逻辑函数及其表示方法

 化简逻辑表达式 A
L
L  A B C  A B C  A B C B
C
 ABC  AB(C  C ) ( A  A  1)
 ABC  AB
 A( BC  B) ( A  AB  A  B)
 A( B  C )
逻辑函数表达式的形式

逻辑函数表达式的形式
逻辑函数表达式的形式
逻辑函数表达式的形式

与-或表达式
• 由若干与项进行逻辑或运算构成的表达式。
• 或者称为 乘积项之和,简称“积之和 (Sum of Products,
SOP)”表达式。

例 L  AC  C D
与项
(乘积项)
逻辑函数表达式的形式

或-与表达式

• 由若干或项进行逻辑与运算构成的表达式。
• 或者称为 逻辑和之乘积,简称“和之积 (Products of Sum,
POS)”表达式。

例 L  ( A  C )  (C  D)

或项
逻辑函数表达式的形式

逻辑函数表达式的常见形式

L  AC  C  D “与-或” 表达式

= AC C  D “与非-与非”表达式

 ( A  C )  (C  D) “或-与”表达式

 ( A  C )  (C+D) “或非-或非” 表达式

 AC  C  D “与-或-非”表达式
再见!
逻辑代数基础

华中科技大学 罗杰
逻辑函数的代数化简法
逻辑函数的代数化简法

逻辑函数式的最简标准(与-或表达式)

• 包含的与项个数最少(使用的与门的个数少),
• 每个与项中变量数最少(与门的输入端个数少).
逻辑函数的代数化简法

化简的主要方法:

公式法(代数法) 图解法(卡诺图法)
• 运用逻辑代数的基本 • 利用图形来表示逻辑
定律和常用公式进行 函数,并在图形上进
化简的方法。 行操作实现逻辑化简
的方法。
逻辑函数的代数化简法

并项

配项 常用 吸收
法 方法 法

消去

逻辑函数的代数化简法

并项法

A+ A =1

L = A  B C + A  B C

= A  B  (C + C )
= A B
逻辑函数的代数化简法

吸收法
• A + AB = A

L = A B + A BCD ( E + F )
= AB
逻辑函数的代数化简法

消去法

A + AB = A + B
L = AB + A C + B C
= AB + ( A + B )C ( A + B = A B )

= AB + ABC ( A + AB = A + B )
= AB + C
逻辑函数的代数化简法

配项法
• 先利用 A = A( B + B ) ,增加必要的乘积项;
• 再用并项或吸收的办法使项数减少。

L = AB + A C + BC = AB + A C + ( A + A ) BC
=AB + A C + ABC + A BC
= ( AB + ABC ) + ( A C + A C B)
=AB + A C
逻辑函数的代数化简法

例 试化简下列逻辑函数 L=(A + B)(A + B)

L = AA + AB + BA + BB (分配律 )
= 0 + AB + BA + B ( A  A = 0, A  A = A)
= AB + BA + B ( A + 0 = A)
= B ( A + A + 1) [ AB + AC = A( B + C )]
= B 1 = B ( A + 1 = 1, A 1 = A)
再见!
逻辑代数基础

华中科技大学 罗杰
逻辑函数式的变换
逻辑函数式的变换

 逻辑表达式

L  A B C  A B C  A B C
 A( B  C )

A
L
B
C
逻辑函数式的变换

 逻辑表达式

L  A B C  A B C  A B C
 A( B  C )

A
L
B
C
逻辑函数式的变换

 变换逻辑表达式
L  A(C  B)  AB  AC
 AB  AC
 AB  AC

L
A

C
逻辑函数式的变换

例 已知逻辑函数表达式为:
L  ABD  A B D  ABD  A B CD  A BCD
要求:(1)求最简与-或式,并画出相应的逻辑图;
(2)画出仅用与非门实现的电路。
解: (1)化简逻辑表达式:
L  AB ( D  D )  ABD  ABD (C  C )
= AB  ABD  ABD
 AB  AB (D  D)
 AB  AB (与-或表达式)
逻辑函数式的变换

例 已知逻辑函数表达式为:
L  ABD  A B D  ABD  A B CD  A BCD
要求:(1)求最简与-或式,并画出相应的逻辑图;
(2)画出仅用与非门实现的电路。
解: (2)变换逻辑表达式:

L  AB  AB (与-或表达式)

 AB  AB
 AB  AB (与非-与非表达式)
逻辑函数式的变换

化简和变换的目的:

降低电路实现的成本,以较少的门实现电路。

适应器件(芯片)的情况

通常在一个集成电路芯片中只有一种门电路,为了减少
门电路的种类,需要对逻辑函数表达式进行变换。
逻辑函数式的变换

例 试用或非门实现逻辑函数:L  A B C  AB C

解: 要将与-或式转换为或非-或非式,步骤如下:
 将每个与项取非两次后,用摩根定律:

L  A B C  AB C
 A B  C  A B  C
 再求反两次。

L  A B C  A B C
逻辑函数式的变换

例 试用或非门实现逻辑函数:L  A B C  AB C

L  A B C  A B C

A A+B+C
B

C
A+B+C
逻辑函数式的变换

 非门、与门、或门仅用与非门构成

L A L= A
非 A A

A L=AB A L=AB
与 B B AB

A A
A L=A+B
或 B
AB=A+B

B B
逻辑函数式的变换

 非门、与门、或门仅用或非门构成

L A L =A
非 A A

A A
L=AB
A L=A+B=A B
与 B
B B

A L=A+B A A+B
或 B
L=A+B
B
再见!
教学内容、要求及小结

本节主要内容:
 逻辑函数的卡诺图表示
 卡诺图化简逻辑函数的依据和化简步骤

学习本节后,你应该能
 掌握用卡诺图表示逻辑函数的方法
 掌握用卡诺图化简逻辑函数的方法

小结:
●用卡诺图法化简逻辑函数,利用了最小项的逻辑相邻和方格图几何相邻的
一致性原理。由于二维方格图形的局限性,卡诺图法只适用于五变量以下的逻辑
函数的化简
●合理利用无关项,可以使逻辑函数得到进一步简化。
逻辑代数基础

华中科技大学 罗杰
7
逻辑函数的最小项表达式
逻辑函数表达式的形式

每一个与项 每一个或项
都是最小项 都是最大项
最小项和最小项表达式

最小项和与最小项表达式
最小项和最小项表达式

最小项的定义

• 在 n 变量逻辑函数中,若一个乘积项包含了全部的n 个变
量,每个变量都以它的原变量或非变量的形式在乘积项中
出现,且仅出现一次,则称该乘积项为最小项(minterm)。
• 一般 n 个变量的最小项应有 2n 个。
最小项和最小项表达式

例如,三个变量A、B、C 的最小项有八个

ABC m0 AB C m4
AB 不
最 ABC m1 AB C m5 是
小 ABCA 最
项 小
A BC m2 ABC m6
A( B  C ) 项

A BC m3 ABC m7
最小项和最小项表达式

最小项的编号

• 通常用mi表示最小项,m 表示最小项,下标 I 为最小项编号,


用十进制数表示。
• 将最小项中的原变量用1表示,非变量用0表示,可得到最
小项的编号。

例如,以三个变量乘积项 A B C 为例,它的二进制取值为000,
对应十进制数 0,所以把最小项记作m0;
乘积项 A B C 的二进制取值为001,对应十进制数 1,所以把最小
项记作m1。
最小项和最小项表达式

三个变量的所有最小项的真值表

m0 m1 m2 m3 m4 m5 m6 m7
A B C A B C A B C A BC A BC AB C AB C ABC ABC
0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0
0 1 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 0 0 1 0 0
1 1 0 0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1
最小项和最小项表达式
最小项的性质:
• 对于任意一个最小项,只有一组变量取值使得它的值为1;
• 不同的最小项,使它的值为1的那一组变量取值也不同;
• 对于变量的任一组取值,任意两个最小项的乘积为0;
• 对于变量的任一组取值,全体最小项之和为1。

A B C A B C A B C A BC A BC AB C AB C ABC ABC
0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0
0 1 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 0 0 1 0 0
1 1 0 0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1
最小项和最小项表达式

最小项表达式:
• 由若干最小项相或构成的表达式,也称为标准与
-或式。

最小项表达式
为“与或”逻辑表达式;

在“与或”式中的每个乘积项都是最小项。
最小项和最小项表达式

例 将 L( A, B, C )  AB  AC
化成最小项表达式。

解: 这是一个 3 变量逻辑函数。

AB 中缺少变量因子C,
 AB
(C  C ) ABC  ABC

AC 中缺少变量因子B,
 AC
(B  B ) ABC  ABC
最小项和最小项表达式

例 将 L( A, B, C )  AB  AC
化成最小项表达式。

解: 这是一个 3 变量逻辑函数。
L( A, B, C )  AB(C  C )  A( B  B)C
 ABC  ABC  ABC  ABC
= m7+m6+m3+m1
  m (7, 6, 3,1)
最小项和最小项表达式

例 将 L( A, B, C )  (AB  AB  C ) AB 化成最小项表达式。

解: a.去掉非号 L (A, B,C )  (AB  AB  C )  AB


 ( AB  AB  C )  AB
 ( A  B )(A  B)C  AB
b.去括号  ABC  ABC  AB
 ABC  ABC  AB(C  C )
 ABC  ABC  ABC  ABC
 m3  m5  m7  m6
  m(3,5, 6, 7)
再见!
逻辑代数基础

华中科技大学 罗杰
逻辑函数的最大项表达式
逻辑函数表达式的形式
最大项和最大项表达式

最大项和最大项表达式
最大项和最大项表达式

最大项的定义

• 对于有n个变量的函数来说,若一个或项包含了全部的 n 个变
量,每个变量都以它的原变量或非变量的形式在或项中出现,
且仅出现一次。则称该或项为最大项(maxterm)。
• 一般 n 个变量的最大项应有 2n 个。

最大项的编号
• 通常,用 Mi 表示最大项,M 表示最大项,下标 i 为最大项编号。
最大项和最大项表达式

对于最大项: A B C

 当 A=1、B=1、C=0 时,A  B  C  0

而 110 对应的十进制数为 6,

记作
 A B C M6
最大项和最大项表达式

三变量逻辑函数有八个最大项

A B C M0 A BC M4


最 A B C M1 A BC M5


A B C M2 A B C M6

A B C M3 A B C M7
最大项和最大项表达式

三个变量的8个最大项的真值表
M0 M1 M2 M3 M4 M5 M6 M7
A B C A B C A B C A B C A B C A B C A B C A B C A B C
0 0 0 0 1 1 1 1 1 1 1
0 0 1 1 0 1 1 1 1 1 1
0 1 0 1 1 0 1 1 1 1 1
0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 1 1 1 0 1 1 1
1 0 1 1 1 1 1 1 0 1 1
1 1 0 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 0
最大项和最大项表达式

最大项的性质

• 对于任意一个最大项,只有一组变量取值使得它的值为0;
• 对于变量的任一组取值,任意两个最大项之和为1;
• 对于变量的任一组取值,全体最大项之积为0。

最小项与最大项的关系

• 两者之间为互补关系: mi = Mi ,或者 Mi = mi。


• 例如, m2  ABC ,则 m2  ABC  A  B  C  M 2 。
最大项和最大项表达式

最大项表达式:
• 由若干最大项 相与构成的表达式,也称为标准
或-与式。

最大项表达式
为“或-与”逻辑表达式;

在“或-与”式中的每个或项都是最大项。
最大项和最大项表达式

例 某电路的真值表如下,试写出最小项和最大项表达式。

解:  最小项表达式:将L=1的各个最小项相加
A B C L
0 0 0 0
L( A, B, C )=m3  m5  m6 0 0 1 0

  m(3,5, 6)
0 1 0 0
0 1 1 1 m3

 A B  C  A B C  A B C 1 0 0 0
1 0 1 1 m5

 最大项表达式:将L=0的各个最大项相乘
1 1 0 1 m6
1 1 1 0
L( A, B, C ) =M 0  M1  M 2  M 4  M 7
  M (0,1, 2, 4, 7)
 ( A  B  C)  ( A  B  C)  ( A  B  C)  ( A  B  C )  ( A  B  C )
再见!
逻辑代数基础

华中科技大学 罗杰
卡诺图的引出
逻辑函数的卡诺图表示法

什么是卡  如何用卡诺图  如何用卡诺


诺图? 来表示逻辑函 图化简逻辑
数? 函数?
卡诺图的引出

卡诺图
• 是用来表示逻辑函数的、由小方格构成的一种特定图形;
• 在这种图形中,每个小方格对应着一个最小项,并且要
求将逻辑上的相邻最小项让它在几何位置上也相邻地排
列起来。此方格图是工程师卡诺(M. Karnaugh)首先
提出来的,因此称为卡诺图。

如何将最小项填入方格图呢?

——先了解“相邻最小项”的概念。
卡诺图的引出

逻辑相邻的最小项
• 如果两个最小项仅有一个变量互为反变量,其
余变量都相同,则称这两个最小项在逻辑上相
邻,简称相邻项。

如三变量最小项 m6=ABC 和 m7 =ABC 在逻辑上是相邻项。

思考:三变量最小项 m6 有几个逻辑相邻的最小项?
m6  ABC m7  ABC m4  AB C m2  ABC
卡诺图的引出

填写卡诺图的规则

• 将逻辑上相邻的最小项让它在几何位置上也相邻
地排列起来,做到逻辑相邻和几何位置相邻一致。
卡诺图的引出

 一变量的逻辑函数只有 2 个最小项。
 假设变量为 D,则两个最小项是:
一变量卡诺图
m0  D, m1  D
 用两个相邻的方格表示这两个最小项。

L D D L D L D
m0 m1 m0 m1 0 1
(a) (b) (c)
卡诺图的引出

 两变量的逻辑函数有4个最小项,用 4个相邻
的方格表示。
两变量卡诺图  假设变量为 C、D,则最小项是:
m0  C  D, m1  C  D, m2  C  D, m3  C  D

2 L C
3
0 1 0 1 3 2

(a) D
(b)
卡诺图的引出

“折叠展开”法则

新增加的方格按展开方向应标以新变量。

新方格内最小项编号应为展开前对应方格编号
加上 2n-1。
卡诺图的引出

 三变量的逻辑函数有8个最小项,用 8个相邻
的方格表示。
三变量卡诺图  假设变量为 B、C、D,则最小项是:
m0  B  C  D, m1  B  C  D, m2  B  C  D, m3  B  C  D
m4  B  C  D, m5  B  C  D, m6  B  C  D, m7  B  C  D

C L
C
4 0 1 3 2 0 1 3 2

B 4 5 7 6
D
(a) D
(b)
卡诺图的引出

 四变量的逻辑函数有16个最小项,用 16个相邻
的方格表示。
四变量卡诺图
 假设变量为 A、B、C、D,则逻辑函数
L(A,B,C,D)的卡诺图如下:

CD
L C AB 00 01 11 10
8 9 0 1 3 2 0 1 3 2 00 m0 m1 m3 m2
12 4 5 7 6 4 5 7 6
B
01 m4 m5 m7 m6
12 13 15 14
A
8 9 11 10
11 m12 m13 m15 m14
(a)
D 10 m8 m9 m11 m10
(b)
卡诺图的引出

四变量卡诺图 卡诺图的循环相邻性

L C 任何一行两端的最小项仅有一个变量
0
ABC D
1
ABC D
3
A B CD
2
A B CD 不同。
4
A BC D
5
A BC D
7
A BCD
6
A BCD 例如,m4  A  B  C  D 和 m6  A  B  C  D
12 13 15ABCD 14 B
ABC D ABC D ABCD 任何一列两端的最小项也仅有一个变
A 8 9 11 10
AB C D AB C D AB CD AB CD 量不同。
D
例如,m3  A  B  C  D 和 m11  A  B  C  D
卡诺图的引出

两变量卡诺图 四变量卡诺图

CD CD
00 01 11 10 AB 00 01 11 10
m0 m1 m3 m2 00 m0 m1 m3 m2
01 m4 m5 m7 m6
三变量卡诺图 11 m12 m13 m15 m14
10 m8 m9 m11 m10
B CD 00 01 11 10

0 m0 m1 m3 m2
1 m4 m5 m7 m6
再见!
逻辑代数基础

华中科技大学 罗杰
逻辑函数的卡诺图表示法
逻辑函数的卡诺图表示法

 什么是卡诺  如何用卡诺图  如何用卡诺


图? 来表示逻辑函 图化简逻辑
数? 函数?
用卡诺图表示逻辑函数

用卡诺图表示逻辑函数
用卡诺图表示逻辑函数

画出逻辑函数

L(A, B, C, D)=  m (0, 1, 2, 3, 4, 8, 10, 11, 14, 15)的卡诺图。

L
AB CD 00 01 11 10

00 m0 m1 m3 m2
01 m4 m5 m7 m6
11 m12 m13 m15 m14
10 m8 m9 m11 m10
用卡诺图表示逻辑函数

画出逻辑函数

L(A, B, C, D)=  m (0, 1, 2, 3, 4, 8, 10, 11, 14, 15)的卡诺图。

L CD
AB 00 01 11 10

00 1 1 1 1
01 1 m5 m7 m6
11 m12 m13 1 1
10 1 m9 1 1
用卡诺图表示逻辑函数

画出逻辑函数

L(A, B, C, D)=  m (0, 1, 2, 3, 4, 8, 10, 11, 14, 15)的卡诺图。

L CD
AB 00 01 11 10

00 1 1 1 1
01 1 0 0 0
11 0 0 1 1
10 1 0 1 1
用卡诺图表示逻辑函数

例 已知逻辑函数真值表,试画其卡诺图。 逻辑函数真值表
A BC L
解: 逻辑函数表达式如下: m0 0 0 0 0
L  A  BC  ABC  AB  C  ABC  ABC m1 0 0 1 1
 m1  m3  m4  m5  m7 m2 0 1 0 0
m3 0 1 1 1
逻辑函数的卡诺图
m4 1 0 0 1
L
A BC 00 01 11 10 m5 1 0 1 1
0 m00 m11 m13 m02 m6 1 1 0 0
1 m14 m15 m17 m06 m7 1 1 1 1
用卡诺图表示逻辑函数

画出下式的卡诺图
例 L ( A, B, C , D)  ( A  B  C  D)( A  B  C  D)( A  B  C  D)
( A  B  C  D)( A  B  C  D)
解:  将逻辑函数化为最小项表达式
L
L  ABCD  ABCD  ABCD AB
CD 00 01 11 10
 ABCD  ABCD m00 m11 m13 m12
00
  m(15,13,10,6,0) 01 m14 m15 m17 m06
 填写卡诺图 11 m112 m013 m015 m114
10 m18 m19 m111 m010
用卡诺图表示逻辑函数

已知逻辑函数,画卡诺图的步骤:

• 首先把逻辑函数转换为最小项表达式;
• 然后根据函数 L 最小项表达式,填写卡诺图。
 对于 L 中列出来的最小项,在卡诺图相应方格内填入1,
 对于 L 中不存在的最小项,在卡诺图相应的方格内填入0(有时也可用
空格表示)。
• 任何逻辑函数都等于其卡诺图中为1的方格所对应的最小项之和。
用卡诺图表示逻辑函数

已知逻辑函数 L 的卡诺图如图所示,
例 试写出该函数的逻辑表达式。

L
A BC 00 01 11 10

0 0 1 0 1
1 1 0 1 0

解: 逻辑函数表达式如下:
L  m1  m2  m4  m7
 A  BC  ABC  AB  C  ABC
再见!
逻辑代数基础

华中科技大学 罗杰
逻辑函数的卡诺图化简法
卡诺图化简法

 什么是卡诺  如何用卡诺图 如何用卡


图? 来表示逻辑函 诺图化简
数? 逻辑函数?
卡诺图化简法

 如何用卡诺图化简逻辑函数呢?

包含以下内容:
• 化简逻辑函数的依据是什么?
• 化简的步骤是什么?
卡诺图化简的依据

卡诺图化简的依据
卡诺图化简的依据

ABCD 00 01 11 10
ABC D  ABCD  ABD
00 m0 m1 m3 m2
ABC D  ABCD  ABD

01 m4 m5 m7 m6 A BD  ABD  AD

ABD  ABD  AD
11 m12 m13 m15 m14
AD  AD  D
10 m8 m9 m11 m10
卡诺图化简的依据

利用卡诺图化简的依据是:

• 具有相邻性的最小项可以合并,并消去不同的因子。

• 由于卡诺图具有循环相邻的特性,且几何位置相邻的最小

项在逻辑上也必然是相邻的,从卡诺图上能直观地找出那

些具有相邻性的最小项并将其合并化简。
卡诺图化简法的步骤

卡诺图化简法的步骤
卡诺图化简法的步骤

按最小项表达式填卡
诺图,凡式中存在的 将所有包围圈
最小项,其对应方格 对应的乘积项
填1,其余方格填0。 相加。

1 2 3 4

将逻辑函数写 合并最小项,即找出最小项为
成最小项表达 1的相邻项,并画一个包围圈
式 (每个包围圈含2n个方格),
写出每个包围圈的乘积项。
卡诺图化简法的步骤

同一方格可以被不
同的包围圈重复包
围多次,但新增的
包围圈中一定要有
新的方格。
卡诺图化简法的步骤

CD 00 01 11 10 上下底
AB
相邻
00 m0 m1 m3 m2
左右
边相
01 m4 m5 m7 m6 邻.

11 m12 m13 m15 m14


四角
相邻
10 m8 m9 m11 m10
卡诺图化简法

用卡诺图法化简下列逻辑函数
例1
L( A, B , C , D )   m (0,2,5,7,8,10,13,15)

CD 00 01 11 10
AB
解:(1) 画出卡诺图;
00 1 0 0 1
(2)找出1的相邻项, BD
画包围圈;
01 0 1 1 0 BD
(3)合并最小项,得
最简与-或表达式:
11 0 1 1 0
L  BD  B D
10 1 0 0 1
卡诺图化简法

11 10
例2 用卡诺图法化简下列逻辑函数 A BC 00 01

0 0 1 1 1
L( A, B, C )  AC  AC  BC  BC
1 1 1 0 1
解:(1)画出卡诺图;
(2)画包围圈,合并最小项; AB AC BC
(3)最简与-或表达式:
11 10
L  AB  AC  BC A BC 00 01

0 0 1 1 1
包围圈另一种画法,得:
L  BC  AB  AC 1 1 1 0 1

可见,逻辑函数的化简结果不一定是唯一的。 BC AB AC
再见!
逻辑代数基础

华中科技大学 罗杰
含无关项的逻辑函数化简
有无关项的逻辑函数化简

无关项:
• 在实际数字系统中,当逻辑变量被赋予特定含义时,有一些变量
的取值组合根本就不会出现,或者对应于变量的某些取值,其函
数值可以是任意的(它的值可以取0或取1),我们将变量取这些
值所对应的最小项称为无关项或任意项。

无关项的处理:
• 在含有无关项的逻辑函数中,化简时,无关项的值可以取0或取1,
具体取什么值,可以根据使函数尽量得到简化而定。
有无关项的逻辑函数化简

设计一个逻辑电路,能够判断一位十进制数是奇数 ABCD L
例4 还是偶数。当十进制数为奇数时,电路输出为 1,
0000 0
0001 1
当十进制数为偶数时,电路输出为 0。 0010 0
0011 1
解: (1) 列出真值表 0100 0
CD 00 01 11 10
AB 0101 1
(2) 画出卡诺图 00 0 1 1 0 0110 0
0111 1
(3) 卡诺图化简 01 0 1 1 0 1000 0
1001 1
L D 11 X X X X
1010 
10 0 1 X X 1011 
若不利用无关项,则 1100 
D 1101 
L  AD  BCD 1110 
1111 
有无关项的逻辑函数化简

例5 化简下列含有无关项的逻辑函数。

L( A, B, C , D)   m(5, 6, 7,8,9)   d (10,11,12,13,14,15)

CD 00 01 11 10
解: (1) 画出卡诺图 AB
00 0 0 0 0 BD
(2) 画包围圈,合并最小项
01 0 1 1 1 BC
L  A+BC+BD 11 X X X X
10 1 1 X X
A
多输出逻辑函数的化简

多输出逻辑函数的化简
多输出逻辑函数的化简

多输出逻辑函数:
• 含有两个或者两个以上的输出端。
• 化简时,不能单纯地追求各个单一函数的最简,而是应该统一考
虑,尽可能地共享那些公共乘积项,从而降低整体电路的总成本。

A L1
逻辑 L2
B


电路
C Lm
多输出逻辑函数的化简

化简下列多输出逻辑函数,画出逻辑图,
例 L1
并与各函数单独化简的结果进行对比。 BC
A 00 01 11 10

L1 ( A, B, C )   m(0, 4, 5, 6, 7) 0 1 0 0 0

L2 ( A, B, C )   m(0, 6, 7) 1 1 1 1 1

(a)
解:考虑共享乘积项 A B C
L2
BC
00 01 11 10
L1  A  A B C
A
0 1 0 0 0
L2  AB  A B C 1 0 0 1 1

(b)
多输出逻辑函数的化简

不考虑共享乘积项,各自单独化简

L1  A  B C
L2  AB  A B C

L1 L2
BC BC
A 00 01 11 10 A 00 01 11 10

0 1 0 0 0 0 1 0 0 0

1 1 1 1 1 1 0 0 1 1

(a) (b)
多输出逻辑函数的化简

画出逻辑图

L1  A  A B C L1  A  B C
L2  AB  A B C L2  AB  A B C
A
A L1 L1
B
C
A
B A
C B
L2
C L2
A
A
B
B

考虑共享乘积项 不考虑共享乘积项
再见!
教学内容、要求及小结

本节主要内容:
 用摩根定理对各种逻辑符号进行变换,可以得到等效符号。

学习本节后,你应该能
 理解逻辑门等效符号的意义
 了解与门、或门、与非门、或非门的等效图形符号

小结:
●基本逻辑门的反演符号是在同一逻辑体系下的另一种表达方式,它们可更
清楚地表达低电平有效信号及其逻辑关系。
逻辑代数基础

华中科技大学 罗杰
逻辑门的替代符号
逻辑门的替代符号
L=AB A L  A  B  AB
A
与 B B

A L=A+B A
L  A B  A  B
或 B B

A
L  A B A L  A B
与非
B B

L A B L  A B
或非 A A
B B

L A L A
非 A A

标准符号 替代符号
逻辑门的替代符号

关于逻辑符号等效的说明

 等效逻辑符号可以推广到具有更多输入端的门电路。
 标准符号的输入端是没有小圆圈的,但所有替代符号的输
入端都有小圆圈。
 每一种门的标准符号和替代符号都代表相同的实际电路。
 与非门和或非门是反相的门,因此每一种标准符号和替代符号
不是输入端有小圆圈、就是输出端有小圆圈。
与门和或门是不反相的门,每一种替代符号的输入、输出端均
有小圆圈。
逻辑符号的等效变换

有效逻辑电平
• 当逻辑电路符号的输入或输出线上没有小圆圈时,
称这条线是高电平有效;
• 当输入或输出线上有小圆圈时,称这条线是低电
平有效。
逻辑门的替代符号

对逻辑符号的说明:
L  A B A L  A B
A
与非 B
B

高电平是 低电平是 低电平是 高电平是


有效状态 有效状态 有效状态 有效状态

仅当全部输入是高电平时, 当任一个输入是低电平时,
输出才变为低电平。 输出变成高电平。
逻辑门的替代符号

对逻辑符号的说明:

A L=A+B A
L  A B  A  B

B B
高电平是 高电平是 低电平是 低电平是
有效状态 有效状态 有效状态 有效状态

当任意一个输入是高电平 仅当全部输入是低电平时,
时,输出就变为高电平。 输出才变成低电平。
逻辑门的替代符号

替代符号的应用

• 利用逻辑门的替代符号,可实现对逻辑电路进行变
换,以简化电路,能减少实现电路所用门的种类。
• 在逻辑图中,适当地使用替代符号,可以使电路的
逻辑功能更清楚。
逻辑门的替代符号

逻辑电路如图所示,试用替代符号对电路进行变换,使之用一种门电路

(单个芯片)实现。

解:  在图(a)中间连线的两端各加一个圆圈,相当于进行两次非运算,
但并不改变电路的功能,得到图 (b)所示电路。
 再将图 (b)中后面的门用标准符号替代,得到图(c)。

A A A
B L B L B L
C C C
D D D
(a) (b) (c)
L L
逻辑门的替代符号

用逻辑门替代符号强调低电平有效

D0 Y0
D1
D2
IC Y1
Y2 当 AL  0, 同时RE  1 时
D3 Y3
D4
D5
Y4
Y5 则 L  0,
D6 Y6
D7 Y7
EN
即 EN  0, 允许IC传输数据。
AL L
G2
RE
G1
G2 :或门

控制电路
逻辑门的替代符号
如果要求RE、AL都为高电平有效,EN 仍为低电平有效,则

AL L
RE
G2

如果要求RE、AL都为低电平有效,EN为高电平有效,则
AL L
RE
G2

如果要求RE、AL都为高电平有效,EN为高电平有效,则

A L
L
RE
G2
逻辑门的替代符号

对一个控制信号有两个有效状态的标记:

 用两个信号名称来标记同一根信号线,中间用斜
线连接。例如,RD / WR
当 RD / WR  1 时,完成读操作;
当 RD / WR  0 时,完成写操作。
再见!
例题选讲
—卡诺图化简

华中科技大学 谭力
例题选讲
利用卡诺图
化简逻辑函数
化简方法

1、写出最小项表达式

化 2、填卡诺图

3、根据规则画圈

骤 4、写出每个圈对应的与项

5、将所有与项相加
画圈的规则

1、包围圈内的方格数一定是2n个,且包围圈必须呈矩形。


2、循环相邻特性包括上下底相邻,左右边相邻和四角相邻。

规 3、同一方格可以被不同的包围圈重复包围多次,但新增的

则 包围圈中一定要有原有包围圈未曾包围的方格。

4、一个包围圈的方格数要尽可能多,包围圈的数目要可能少。
例题选讲

将逻辑函数 L  ABD  AB  BCD  ABD  ABC 化简为最简与或表达式。

CD 00 01 11 10
AB AD
00 1 1 1 1 AC
01 1 1 1 ABC
AB
11 ABD
10 1 1 BD
ABD
BCD
L  AD  BD  AC
再见!
例题选讲
—卡诺图化简

华中科技大学 谭力
例题选讲
利用卡诺图对包含无关
项的逻辑函数化简
无关项的概念

什么叫无关项:

• 在真值表内对应于变量的某些取值下,函数的值可以是任
意的,或者这些变量的取值根本不会出现,这些变量取值
所对应的最小项称为无关项或任意项。
无关项的概念

无关项的处理:

• 在含有无关项逻辑函数的卡诺图化简中,它的值可以取0
或取1,具体取什么值,可以根据使函数尽量得到简化而
定。
例题选讲

将逻辑函数 L   m(1, 2,5,6,9)  d (10,11,12,13,14,15) 化为最简与或表达式。

CD 00 01 11 10
AB
00 1 1 CD

01 1 1
11 d d d d
CD
10 1 d d

L  CD  CD
再见!
教学内容、要求及小结

本章目的
 介绍组合逻辑电路的定义和结构特征
 阐述组合逻辑电路的分析方法和设计方法
 介绍常用组合逻辑电路的功能、原理及应用
 说明竞争冒险现象及消除的方法

本节主要内容:
 组合逻辑电路的定义、结构特点和功能特征
 分析组合逻辑电路的目的
 分析组合逻辑电路的一般步骤

学习本节后,你应该能
 理解组合逻辑电路的结构特点和功能特征
 熟练掌握组合逻辑电路的分析方法

小结:
● 组合逻辑电路在任何时刻的输出状态只取决于同一时刻的输入状态,而与
电路原来的状态无关。它一般由逻辑门电路或可编程器件组成。
● 分析组合逻辑电路的目的是确定已知电路的逻辑功能
● 分析步骤一般是:写出各输出端的逻辑表达式化简和变换逻辑表达式
列出真值表确定功能。
组合逻辑电路的分析

华中科技大学 秦臻
组合逻辑电路的特点
组合逻辑电路的特点

A Z
B
L
C

A1 L1
A2 L2






组合逻辑电路
An Lm

组合逻辑电路的一般框图

Li = f (A1, A2 , …, An ) (i=1, 2, …, m)
组合逻辑电路的特点

输出、输入之间没
1 有反馈延迟通路

不含记忆单元 2

结构特征
组合逻辑电路的特点

在任何时刻,电路
的输出状态只取决
工作 于同一时刻的输入
特征
状态而与电路原来
的状态无关。
组合逻辑电路的分析方法
组合逻辑电路的分析方法

根据已知逻辑电路,
经分析确定电路的
逻辑功能。
组合逻辑电路的分析方法

1 由逻辑图写出各输
出端的逻辑表达式

化简和变换逻 2
辑表达式

3 列出真值表

根据真值表或逻辑 4
表达式,经分析最
后确定其功能
组合逻辑电路的分析方法

例题选讲 分析如图所示逻辑电路的功能。
A Z
B
解:1.根据逻辑图写出输出函数的逻辑表达式 C
L

L  Z C
 ( A  B)  C A B C Z  A B L  (A B  C)
 A B C 0 0 0 0 0
2. 列写真值表。 0 0 1 0 1
0 1 0 1 1
3. 确定逻辑功能 0 1 1 1 0
1 0 0 1 1
1 0 1 1 0
1 1 0 0 0
如要实现偶校验,电路应做何改变? 1 1 1 0 1
组合逻辑电路的分析方法

例题选讲 试分析下图所示组合逻辑电路的逻辑功能。
解:1、根据逻辑电路写出各输出端的逻辑表达式,并进行
化简和变换。

A X X=A
AB
B Y

AB  A B Y  AB  A B  AB  A B
AB
C
Z
Z  AC  A C  AC  A C
组合逻辑电路的分析方法

2、列写真值表 真值表
A B C X Y Z
0 0 0 0 0 0
X=A 0 0 1 0 0 1
Y  AB  A B 0 1 0 0 1 0
0 1 1 0 1 1
Z  AC  A C 1 0 0 1 1 1
1 0 1 1 1 0
1 1 0 1 0 1
1 1 1 1 0 0
组合逻辑电路的分析方法

3、确定电路逻辑功能
真值表
A B C X Y Z
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 0
0 1 1 0 1 1
1 0 0 1 1 1
1 0 1 1 1 0
1 1 0 1 0 1
1 1 1 1 0 0
小结
组合逻辑电路的特点

结构特点

动作特点

组合逻辑电路的分析方法
列写输出端的逻辑表达式

化简和变换

列真值表

确定逻辑功能
再见!
教学内容、要求及小结

本节主要内容:
 设计组合逻辑电路的任务
 设计组合逻辑电路的一般步骤
 组合逻辑电路的优化实现

学习本节后,你应该能
 熟练掌握组合逻辑电路的设计方法
 了解组合逻辑电路优化实现的一些基本策略

小结:
● 组合逻辑电路设计是根据实际问题,设计出符合要求的逻辑电路
● 用门电路设计组合逻辑电路的步骤是:逻辑抽象→列出真值表→写出逻辑
表达式→根据器件要求变换和化简逻辑式→画出逻辑图
组合逻辑电路的设计

华中科技大学 秦臻
组合逻辑电路的设计过程
组合逻辑电路的设计过程

根据实际逻辑问题,
求出所要求逻辑功能
的最简单逻辑电路
组合逻辑电路的设计过程

4
3 简化和变换逻辑
表达式,画出逻
2 由真值表写出逻 辑图。
辑表达式;
1 根据逻辑描述列
逻辑抽象:根据 出真值表;
实际逻辑问题的
因果关系确定输
入、输出变量,
并定义逻辑状态
的含义;
组合逻辑电路的设计过程

例题选讲 某火车站有特快、直快和慢
车三种类型的客运列车进出,试设计一个指示
列车等待进站的逻辑电路,当有两种或以上的
列车等待进站时,要求发出信号,提示工作人
员安排进站事宜。
组合逻辑电路的设计过程

解:(1) 逻辑抽象。

输入信号: 输出信号:
• A:特快 • L:表示进站状况
• B:直快 • 有两种以上的车进站为1,否
• C:慢车 则为0
• 有进站请求时为1,没有请求
时为0。
组合逻辑电路的设计过程

(2)根据题意列出真值表

输 入 输 出
A B C L
(3) 写出输出逻辑表达式并化简。
0 0 0 0
0 0 1 0
0 1 0 0 L  ABC  ABC  ABC  ABC
0 1 1 1
1 0 0 0 L= AB+AC+BC
1 0 1 1
1 1 0 1
1 1 1 1
组合逻辑电路的设计过程

(4) 根据逻辑表达式画出逻辑图。

L= AB+AC+BC
表达式为最简与或式,用与门和或门实
现两级“与-或”结构的最简电路如图。

L
B

C
组合逻辑电路的设计过程

例题选讲
试设计一个码转换电路,将4位
格雷码转换为自然二进制码。可以采用任何逻辑
门电路来实现。
解:(1) 明确逻辑功能,列出真值表。

设输入变量G3、G2、G1、G0为格雷码,

输出变量B3、B2、B1和B0为自然二进制码。
G3 B3
G2 B2
码转换电路
G1 B1
G0 B0
组合逻辑电路的设计过程
当输入格雷码按照从0到15递增排序时,
可列出逻辑电路真值表

输 入 输 出 输 入 输 出
G3 G2 G1 G0 B3 B2 B1 B0 G3 G2 G1 G0 B3 B2 B1 B0
0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0
0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1
0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 0
0 0 1 0 0 0 1 1 1 1 1 0 1 0 1 1
0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0
0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1
0 1 0 1 0 1 1 0 1 0 0 1 1 1 1 0
0 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1
组合逻辑电路的设计过程

(2) 画出各输出函数的卡诺图,并化简和变换。

B3 G1 B2 G1

G2 G2
G3 G3

G0 G0
组合逻辑电路的设计过程

(2) 画出各输出函数的卡诺图,并化简和变换。

B3 G1 B2 G1
0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1
G2 G2
1 1 1 1 0 0 0 0
G3 G3
1 1 1 1 1 1 1 1
G0 G0
组合逻辑电路的设计过程

(2) 画出各输出函数的卡诺图,并化简和变换。

B3 G1 B2 G1
0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1
G2 G2
1 1 1 1 0 0 0 0
G3 G3
1 1 1 1 1 1 1 1
G0 G0

B3 G3 B2  G3 G2  G3 G2  G3  G2
组合逻辑电路的设计过程
B1 G1 B0 G1
0 0 1 1 0 1 0 1
1 1 0 0 1 0 1 0
G2 G2
0 0 1 1 0 1 0 1
G3 G3
1 1 0 0 1 0 1 0
B0 G0

B1  G3 G2 G1  G3 G2 G1  G3 G2 G1  G G G
3 2 1
( G3 G2  G G ) G  (G G  G G ) G
3 2 1 3 2 3 2 1
 G3  G2  G1
 B2  G1
B0  G3  G2  G1  G0  B1  G0
组合逻辑电路的设计过程

(3) 根据逻辑表达式,画出逻辑图 B3 G3


B2  G3 ⊕ G2
B1  B2⊕ G1
B0  B1 G0
用异或门代替与门和或
门能使逻辑电路比较简 G3 B3
单。考虑相同乘积项 可 G2 B2
以减少门电路数目,降
B1
低实现电路的成本。 G1

G0 B0
小结

什么是组合逻辑电路的设计

组合逻辑电路的设计步骤
逻辑抽象

列真值表

写逻辑表达式

画逻辑图
再见!
组合逻辑电路的设计

华中科技大学 秦臻
组合逻辑电路的优化实现
人像
组合逻辑电路的优化实现

用指定芯片
中特定资源实现
逻辑函数,使电
路的成本低并且
工作速度快。
需要对逻辑
表达式进行变换,
以减少芯片资源
的数目和连线。
单输出电路
单输出电路

L  AB  CD  AB  CD
A A
B L B L
C C
D D

(a)与-或结构 (b)与非门结构
单输出电路
Y
Y  AB
+VDD
+5V
+VDD +5V
L  AB  CD  AB  CD TP

T P2 T P1 Y Y
A A
B L B A
L T N1
C C
D TN
D
B T N2
(a)与-或结构 (b)与非门结构

相同输入端的与非门比与门或者或门所用晶体管少,速度快。图(b)电路最优
多输出电路
多输出电路

输出多个逻辑函数时需要考虑共享相同乘积项,减少逻辑门数目。

L1  AB  AC  BD L2  AB  AC  ABD
A
B

A L1
B
C
D
B (a) 如 果 分 别 实 A
L1 (b) 如 果 考 虑 相
D
A
现两个逻辑函数, B 同乘积项,需要
B 需要6个与门和 A
C
4个与门两个或
A L2 两个或门。 A
L2
门,如图。
C B
A D
B
D
多级逻辑电路
多级逻辑电路
多级逻辑电路

① 提取公因子

L  ABCD  ABC E  ABD F

用与门和或门实现时,
限定逻辑门的扇入数为3,
需要变换成:

L  AB(CD  C E  D F )
多级逻辑电路

① 提取公因子

A A L
B B
C
D
A D
B L C
C
E E
A
B D
D
F F
(a) (b)

图(a)电路为2级, 图(b)为3级,但电路连线减少了。
图(a)16根连线, 图(b)13根。
多级逻辑电路

② 函数分解

L  ABC  ABC  ABD  ABD

用与门和或门实现时,限定逻辑门的扇入数为3,需要变换成:

L  ( AB  AB)C  ( AB  AB) D  ( AB  AB)C  ( AB  AB)D


多级逻辑电路

② 函数分解
A
B
C C
A
B A
C B L
A L
B A
D
B
A D
B
D

图(a)电路为2级, 图(b)为5级。

上述变换方法只适合手工化简,当变量数很多时,优
化策略写入程序由计算机完成。
小结

组合逻辑电路的优化实现

单输出电路

多输出电路

多级逻辑电路
再见!
教学内容、要求及小结

本节主要内容:
 组合逻辑电路竞争-冒险现象及产生的原因
 消除竞争-冒险的方法

学习本节后,你应该能
 了解组合逻辑电路竞争-冒险产生的原因
 了解消除竞争-冒险的方法

小结:
● 当一个逻辑门的两个输入端的信号同时向相反方向变化,而变化的时间有
差异的现象称为竞争。
● 两个输入端的信号取值的变化方向相反时,如门电路输出端的逻辑表达式
简化成两个互补信号相乘或者相加,由竞争而可能产生输出干扰脉冲的现象。
● 消除竞争-冒险的方法:发现并消除互补乘积项,增加冗余项避免互补项
相加,输出端并联电容
组合逻辑电路中的竞争冒险

华中科技大学 秦臻
产生竞争冒险的原因
产生竞争冒险的原因
A L A L
B B

不考虑门的延时时间,且B=A
L  AB  0 L  A B 1
考虑门的延时时间,且用非门实现B=A时

A A

B B

L
L
产生竞争冒险的原因
C
G2
A=1 AC C
G4
G1 L=C+ C
AC
C G3
BC
B=1
BC L

竞争:当一个逻辑门的两个输入端的信号同时向相反方向变化,而变化的
时间有差异的现象。
冒险:两个输入端的信号取值的变化方向相反时,如门电路输出端的逻辑
表达式简化成两个互补信号相乘或者相加,由竞争而可能产生输出干扰脉
冲的现象。
消除竞争冒险的方法
消除竞争冒险的方法

1. 发现并消除互补项
A
L  ( A  B )( A  C ) B L

B = C = 0时
C
L  AA
可能出现竞争冒险。
消除竞争冒险的方法

1. 发现并消除互补项 A

L  ( A  B )( A  C ) L
B

B = C = 0时

L  AA
C

可能出现竞争冒险。

为消掉AA,变换逻辑函数式为

L  AC  AB  BC
消除竞争冒险的方法

2. 增加乘积项以避免互补项相加
G2

L  AC  BC
A=1 AC
G1
G4
L C C
当A=B=1时 L  C C C G3

可能出现竞争冒险。 B=1
BC

为消掉C+C,变换逻辑函数式为
L BC
00 01 11 10
L  AC  BC  AB A
0 0 0 0 1
当A=B=1时 L  C  C 1 1 0 1 1 1
AB
消除竞争冒险的方法
G2
A
2. 增加乘积项以避免互补项相加

L  AC  BC G1 G3 G4
L
C
当A=B=1时 L  C C G5
可能出现竞争冒险。
B

为消掉C+C,变换逻辑函数式为
L BC
00 01 11 10
L  AC  BC  AB A
0 0 0 0 1
当A=B=1时 L  C  C 1 1 0 1 m7
1 m6
1
消除竞争冒险的方法
G2
A
2. 增加乘积项以避免互补项相加

L  AC  BC G1 G3 G4
L
C
当A=B=1时 L  C C G5
可能出现竞争冒险。
B

为消掉C+C,变换逻辑函数式为
L BC
00 01 11 10
L  AC  BC  AB A
0 0 0 0 1
当A=B=1时 L  C  C 1 1 0 1 1 1
AB
消除竞争冒险的方法

3. 输出端并联电容

对于工作速度不高的逻辑电路,可以在输出端并联一电容器,对窄脉
冲起到平波的作用,以消去竞争冒险。

C
G2
A=1 AC C
G4 Ro L
L′
G1 AC
C G3
C BC
B=1
BC 4~20pF L′
L=1
小结
产生竞争冒险的原因

消除竞争冒险的方法
消除互补乘积项

增加乘积项以避免互补项相加

输出端并联电容
再见!
教学内容、要求及小结

本节主要内容:
 普通编码器和优先编码器的概念、工作原理和设计方法;
 中规模集成电路编码器的功能表及使用方法。

学习本节后,你应该能
 解释编码器的逻辑功能;
 解释编码器优先级的概念;
 掌握优先编码器的设计方法;
 阅读集成电路编码器的功能表,并能正确运用于电路的分析和设计;
 对集成编码器进行级联扩展,以便处理更多的输入。

小结:
● 编码器是一种常用的多输入、多输出组合逻辑电路,用于检测某一有效的
输入信号并转换成二进制码输出。常用于将键盘的输入转换成二进制码。
● 对于多个输入同时有效的情况,常使用优先编码器,它只响应优先权最高
的有效输入。
● 器件的功能表是正确使用中规模组合逻辑器件分析、设计电路的基础。
组合逻辑电路

华中科技大学 罗杰
编 码 器
编 码 器

 编码: 赋予二进制代码特定含义的过程。

• 8421 BCD 码: 用1000表示数字8。

• ASCII 码: 用100 0001表示字母A。

 编码器: 能够实现编码功能的逻辑电路。
编 码 器

任何时候只允 允许多个输入信
许输入一个有 号同时有效,仅
效的编码信号 对优先级别高的
输入进行编码。
编 码 器

二进制编码器的结构框图

I0 Y0
I1 Y1
2n个 二进制 n 位二进
输入 编码器 制码输出
I n-
Y n-1
2 1
普通编码器

普通编码器
普通编码器

(1) 4线─2线普通编码器

逻辑功能表
I0 I1 I2 I3 Y 1 Y0
1 0 0 0 0 0 I0 二
4
Y0 进
0 1 0 0 0 1
I1 制
输 I2 Y1 码
0 0 1 0 1 0 入 输
I3

0 0 0 1 1 1

编码器的输入为高电平有效
普通编码器

(1) 4线─2线普通编码器

逻辑功能表  将输入的其它12种组合对应的
输出看成 0,则表达式为
I0 I1 I2 I3 Y 1 Y0
1 0 0 0 0 0
0 1 0 0 0 1
Y1  I 0 I 1 I 2 I 3  I 0 I 1 I 2 I 3
0 0 1 0 1 0 Y0  I 0 I 1 I 2 I 3  I 0 I 1 I 2 I 3
0 0 0 1 1 1

编码器的输入为高电平有效
普通编码器

(1) 4线─2线普通编码器

逻辑功能表  任何时刻只有一个输入为1,
将输入的其它12种组合对应的
I0 I1 I2 I3 Y 1 Y0
输出看成 x,则表达式为
1 0 0 0 0 0
0 1 0 0 0 1 Y1  I 2  I 3
0 0 1 0 1 0
Y0  I 1  I 3
0 0 0 1 1 1

编码器的输入为高电平有效
普通编码器

(1) 4线─2线普通编码器

Y1  I 2  I 3
Y0  I 1  I 3
I0
I1
Y0

I2
Y1
I3
普通编码器

(1) 4线─2线普通编码器 若有2个以上的输入为有效信号,


输出编码是什么呢?
Y1  I 2  I 3
Y0  I 1  I 3 • 例如,I1= I2 = 1 时,
Y1Y0 = ? Y1Y0 = 11
I0
I1
Y0

I2
• 但只有I3为1时,Y1Y0 = 11
Y1
I3
输出编码重叠。
优先编码器

优先编码器
优先编码器

 优先编码器

• 根据事情的轻重缓急,事先规定好这些输入信号的
先后次序(即优先级别)。
• 当多个输入同时有效时,只对优先级别高的输入进
行编码。
• 能够识别请求信号的优先级别并进行编码的逻辑电
路称为优先编码器。
优先编码器

(2) 4线─2线优先编码器

逻辑功能表
I0 I1 I2 I3 Y 1 Y0
1 0 0 0 0 0
× 1 0 0 0 1
× × 1 0 1 0
× × × 1 1 1

编码器的输入为高电平有效
优先编码器

(2) 4线─2线优先编码器

逻辑功能表  逻辑表达式
I0 I1 I2 I3 Y1 Y0
1 0 0 0 0 0 Y1 = I2 + I 3
× 1 0 0 0 1
× × 1 0 1 0 Y0 = I1 I 2 + I 3
× × × 1 1 1

I0 低 I3 高
优先编码器

Y1 = I2 + I 3

Y0 = I1 I 2 + I 3

I0
I1
Y0

I2
Y1
I3
优先编码器

Y1 = I2 + I 3  若所有的输入均为0时,
输出编码是什么呢?
Y0 = I1 I 2 + I 3
Y1Y0 = 00
I0
I1  若仅有I0的输入有效时,
Y0
Y1Y0 = 00
I2
Y1
I3
输出编码重叠。
BCD码编码器

BCD码编码器
BCD码编码器

VCC
1kΩ×10 使能标志
S0
0
S1 GS
1
S2
2
S3
3 D
S4
4
S5
待编码的输入 5 C
S6
6
S7 B
7
S8
8
A
S9
9
代码输出
BCD码编码器
8421 BCD码 编码器功能表
输 入 输 出  该编码器为输入
S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 A B C D GS 低电平有效,输
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 出高电平有效,
1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 GS为标志位。
1 1 1 1 1 1 1 1 0 1 1 0 0 0 1
1 1 1 1 1 1 1 0 1 1 0 1 1 1 1
1 1 1 1 1 1 0 1 1 1 0 1 1 0 1
1 1 1 1 1 0 1 1 1 1 0 1 0 1 1
1 1 1 1 0 1 1 1 1 1 0 1 0 0 1
1 1 1 0 1 1 1 1 1 1 0 0 1 1 1
1 1 0 1 1 1 1 1 1 1 0 0 1 0 1
1 0 1 1 1 1 1 1 1 1 0 0 0 1 1
0 1 1 1 1 1 1 1 1 1 0 0 0 0 1
BCD码编码器
8421 BCD码 编码器功能表
输 入 输 出  该编码器为输入
S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 A B C D GS 低电平有效,输
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 出高电平有效,
1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 GS为标志位。
1 1 1 1 1 1 1 1 0 1 1 0 0 0 1  按下任意一个键,
1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 即输入信号中有
1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 一个为低电平时,
1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 GS = 1
1 1 1 1 0 1 1 1 1 1 0 1 0 0 1
1 1 1 0 1 1 1 1 1 1 0 0 1 1 1
1 1 0 1 1 1 1 1 1 1 0 0 1 0 1
1 0 1 1 1 1 1 1 1 1 0 0 0 1 1
0 1 1 1 1 1 1 1 1 1 0 0 0 0 1
BCD码编码器
8421 BCD码 编码器功能表
输 入 输 出  该编码器为输入
S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 A B C D GS 低电平有效,输
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 出高电平有效,
1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 GS为标志位。
1 1 1 1 1 1 1 1 0 1 1 0 0 0 1  按下任意一个键,
1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 即输入信号中有
1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 一个为低电平时,
1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 GS = 1
1 1 1 1 0 1 1 1 1 1 0 1 0 0 1  没有键被按下,
1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 即输入信号无效
1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 时,GS = 0。
1 0 1 1 1 1 1 1 1 1 0 0 0 1 1
0 1 1 1 1 1 1 1 1 1 0 0 0 0 1
再见!
组合逻辑电路

华中科技大学 罗杰
集成编码器的使用
集成电路优先编码器
集成电路优先编码器

I0 EO I4 1 16 VCC
I1 I5 2 15 EO
I2 GS I6 3 14 GS
I3 I7 13 I3
I4 CD4532 4
I5 EI 5 12 I2
Y0
I6 Y2 6 11 I1
I7 Y1 Y1 7 10 I0
EI Y2 GND 8 9 Y0

逻辑符号 引脚图
集成电路优先编码器

CD4532 功能表
输 入 输 出
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO
0 × × × × × × × × 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 × × × × × × × 1 1 1 1 0
1 0 1 × × × × × × 1 1 0 1 0
1 0 0 1 × × × × × 1 0 1 1 0
1 0 0 0 1 × × × × 1 0 0 1 0
1 0 0 0 0 1 × × × 0 1 1 1 0
1 0 0 0 0 0 1 × × 0 1 0 1 0
1 0 0 0 0 0 0 1 × 0 0 1 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0
集成电路优先编码器

CD4532 功能表
输 入 输 出
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO
0 × × × × × × × × 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 × × × × × × × 1 1 1 1 0
1 0 1 × × × × × × 1 1 0 1 0
1 0 0 1 × × × × × 1 0 1 1 0
1 0 0 0 1 × × × × 1 0 0 1 0
1 0 0 0 0 1 × × × 0 1 1 1 0
1 0 0 0 0 0 1 × × 0 1 0 1 0
1 0 0 0 0 0 0 1 × 0 0 1 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0
集成电路优先编码器

CD4532 功能表
输 入 输 出
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO
0 × × × × × × × × 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 × × × × × × × 1 1 1 1 0
1 0 1 × × × × × × 1 1 0 1 0
1 0 0 1 × × × × × 1 0 1 1 0
1 0 0 0 1 × × × × 1 0 0 1 0
1 0 0 0 0 1 × × × 0 1 1 1 0
1 0 0 0 0 0 1 × × 0 1 0 1 0
1 0 0 0 0 0 0 1 × 0 0 1 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0
集成电路优先编码器

CD4532 功能表
输 入 输 出
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO
0 × × × × × × × × 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 × × × × × × × 1 1 1 1 0
1 0 1 × × × × × × 1 1 0 1 0
1 0 0 1 × × × × × 1 0 1 1 0
1 0 0 0 1 × × × × 1 0 0 1 0
1 0 0 0 0 1 × × × 0 1 1 1 0
1 0 0 0 0 0 1 × × 0 1 0 1 0
1 0 0 0 0 0 0 1 × 0 0 1 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0
集成电路优先编码器

CD4532 功能表
输 入 输 出
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO
0 × × × × × × × × 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 × × × × × × × 1 1 1 1 0
1 0 1 × × × × × × 1 1 0 1 0
1 0 0 1 × × × × × 1 0 1 1 0
1 0 0 0 1 × × × × 1 0 0 1 0
1 0 0 0 0 1 × × × 0 1 1 1 0
1 0 0 0 0 0 1 × × 0 1 0 1 0
1 0 0 0 0 0 0 1 × 0 0 1 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0
集成电路优先编码器

CD4532 功能表
输 入 输 出
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO
0 × × × × × × × × 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 × × × × × × × 1 1 1 1 0
1 0 1 × × × × × × 1 1 0 1 0
1 0 0 1 × × × × × 1 0 1 1 0
1 0 0 0 1 × × × × 1 0 0 1 0
1 0 0 0 0 1 × × × 0 1 1 1 0
1 0 0 0 0 0 1 × × 0 1 0 1 0
1 0 0 0 0 0 0 1 × 0 0 1 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0
集成电路优先编码器

CD4532 功能表
输 入 输 出
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO
0 × × × × × × × × 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 × × × × × × × 1 1 1 1 0
1 0 1 × × × × × × 1 1 0 1 0 为什么要设计
1 0 0 1 × × × × × 1 0 1 1 0 GS、EO输出
1 0 0 0 1 × × × × 1 0 0 1 0 信号?
1 0 0 0 0 1 × × × 0 1 1 1 0
1 0 0 0 0 0 1 × × 0 1 0 1 0
1 0 0 0 0 0 0 1 × 0 0 1 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0
集成电路优先编码器

CD4532 功能表
输 入 输 出
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO
0 × × × × × × × × 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 × × × × × × × 1 1 1 1 0
1 0 1 × × × × × × 1 1 0 1 0 为什么要设计
1 0 0 1 × × × × × 1 0 1 1 0 GS、EO输出
1 0 0 0 1 × × × × 1 0 0 1 0 信号?
1 0 0 0 0 1 × × × 0 1 1 1 0
1 0 0 0 0 0 1 × × 0 1 0 1 0
1 0 0 0 0 0 0 1 × 0 0 1 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0
集成电路优先编码器

I0 EO 附加信号的状态及含义
I1
I2 GS EI GS EO 状 态
I3 0 0 0 不工作
I4 CD4532
I5 Y0 1 0 1 工作,但无有效输入
I6 1 1 0 正常工作
I7 Y1
EI Y2 1 1 1 不可能出现
编码器的应用

编码器的应用
集成电路优先编码器

 用两片8线-3线的 CD4532

16线- 4线优先编码器?
集成电路优先编码器

A15A14A13A12 A11A10 A9 A8 A 7 A 6 A5 A 4 A3 A 2 A 1 A 0

I7 I6 I5 I4 I3 I2 I1 I0 I7 I6 I5 I4 I3 I2 I1 I0
EI2 EO2 EI1 EO1
禁止
EI CD4532(II) EO 0 禁止
EI CD4532(I) EO 0
EI2= 0 GS Y2 Y1 Y0 GS Y2 Y1 Y0
GS2 0 0 0 0 GS1 0 0 0 0

待设计模块

GS L3 L2 L1 L0
集成电路优先编码器
0 1
A15A14A13A12 A11A10 A9 A8 A 7 A 6 A5 A 4 A3 A 2 A 1 A 0

I7 I6 I5 I4 I3 I2 I1 I0 I7 I6 I5 I4 I3 I2 I1 I0
EI2 EO2 EI1 EO1
EI CD4532(II) EO 禁止
EI CD4532(I) EO
0
EI2= 1 GS Y2 Y1 Y0 GS Y2 Y1 Y0 0
GS2 1 1 1 0 GS1 0 0 0 0
待设计模块

GS L3 L2 L1 L0
集成电路优先编码器
0 …… 0 0 1
A15A14A13A12 A11A10 A9 A8 A 7 A 6 A5 A 4 A3 A 2 A 1 A 0

I7 I6 I5 I4 I3 I2 I1 I0 I7 I6 I5 I4 I3 I2 I1 I0
EI2 EO2 EI1 EO1
EI CD4532(II) EO EI CD4532(I) EO
1
EI2= 1 GS Y2 Y1 Y0 GS Y2 Y1 Y0 0
GS2 0 0 0 0 GS1 1 1 1 0
待设计模块

GS L3 L2 L1 L0
集成电路优先编码器
0 …… 0 0 1
A15A14A13A12 A11A10 A9 A8 A 7 A 6 A5 A 4 A3 A 2 A 1 A 0

I7 I6 I5 I4 I3 I2 I1 I0 I7 I6 I5 I4 I3 I2 I1 I0
EI2 EO2 EI1 EO1
EI CD4532(II) EO EI CD4532(I) EO
1 GS Y2 Y1 Y0 0
EI2= 1 GS Y2 Y1 Y0
GS2 0 0 0 0 GS1 1 1 1 0

待设计 G2 G1 G0

GS L3 L2 L1 L0
集成电路优先编码器
0 …… 0 0 1
A15A14A13A12 A11A10 A9 A8 A 7 A 6 A5 A 4 A3 A 2 A 1 A 0

I7 I6 I5 I4 I3 I2 I1 I0 I7 I6 I5 I4 I3 I2 I1 I0
EI2 EO2 EI1 EO1
EI CD4532(II) EO EI CD4532(I) EO
1 GS Y2 Y1 Y0 0
EI2= 1 GS Y2 Y1 Y0
GS2 0 0 0 0 GS1 1 1 1 0

G3 G2 G1 G0

GS L3 L2 L1 L0
再见!
教学内容、要求及小结

本节主要内容:
 二进制译码器、二-十进制译码器和七段显示译码器的概念、工作原理和
设计方法;
 中规模集成电路译码器的功能表及使用方法。

学习本节后,你应该能
 给出译码器的定义;
 掌握二进制译码器的逻辑功能以及设计方法。
 理解二-十进制译码器的工作原理。
 掌握七段显示译码器的逻辑功能以及使用方法。
 阅读集成电路译码器的功能表,并能正确运用于电路的分析和设计
 了解用译码器实现逻辑函数的方法

小结:
● 二进制译码器用于检测输入端的二进制码,并在相应的一端输出,常称为
“n 中取 1 码”,即对应于输入的一组二进制码,只有与之相对应的某一个端子
输出有效电平,其余端子均输出无效电平。大部分二进制译码器集成电路都含有
一个或多个输入使能端,用于电路的扩展。
● 二进制译码器也可以用于实现逻辑函数。
● 七段显示译码器与数码管结合就能够组成数字显示电路。注意,七段显示
译码器有两种:一种是输出低电平有效的译码器,用于驱动共阴极数码管;另一
种是输出高电平有效的译码器,用于驱动共阳极数码管。
● 读懂器件功能表是正确使用中规模组合逻辑器件分析、设计电路的基础。
组合逻辑电路

华中科技大学 罗杰
二进制译码器
译 码 器

 编码:将输入的每一个高、低电平信号变换成一个对
应的二进制的代码输出。

 译码:将输入的每一个二进制代码转换成对应的高、
低电平信号或者另一个代码输出。
译 码 器

译码器 具有译码功能的逻辑电路。
二进制译码器

二进制译码器
二进制译码器

n A0 Y0

A1 Y1 2n

进 个
二进制 输
制 译码器 出

入 An-1 Y2n-1
E

使能输入

 常用于计算机中对存储器单元地址的译码。
二进制译码器

 2线 - 4线译码器  逻辑表达式:

输入信号 输出信号
Y0  E  A1 A0
E A1 A0 Y0 Y1 Y2 Y3

0 × × 0 0 0 0
Y1  E  A1 A0
1 0 0 1 0 0 0
Y2  E  A1 A0
1 0 1 0 1 0 0
1 1 0 0 0 1 0 Y3  E  A1 A0
1 1 1 0 0 0 1
二进制译码器

 2线 - 4线译码器  逻辑表达式:

Y0  E  A1 A0
Y1  E  A1 A0
Y2  E  A1 A0
Y3  E  A1 A0
二进制译码器

 2线 - 4线译码器  逻辑表达式:

E Y0 Y0  E  A1 A0

A1 Y1
Y1  E  A1 A0

Y2
Y2  E  A1 A0
A0
Y3  E  A1 A0
Y3

逻辑图
二进制译码器

 2线 - 4线译码器  逻辑表达式:

E Y0 Y0  E  A1 A0  E  m0

A1 Y1
Y1  E  A1 A0  E  m1

Y2
Y2  E  A1 A0  E  m2
A0
Y3  E  A1 A0  E  m3
Y3

或者, Yi = E  mi
逻辑图
二进制译码器

 2线 - 4线译码器

E Y0
2 Y0
A0 4
A1 Y1 个
Y1 个

入 A1 Y2 输
Y2 Y3 出
A0 E
使能输入
Y3

逻辑图 逻辑符号
集成电路译码器

集成电路译码器
集成电路译码器

 2线 - 4线译码器: 74139

1E 1Y0 低电平是 低电平是


1Y1 有效状态 有效状态
1A0 1Y2 1/2 74x139
1A1 1Y3 E E Y0 Y0
2E 2Y0
Y1 Y1
A0 A0 Y2
2Y1 Y2
2A0 2Y2 A1 A1
Y3 Y3
2A1 2Y3

逻辑符号(a) 逻辑符号(b)
集成电路译码器

 2线 - 4线译码器: 74  139

输入信号 输出信号

E A1 A0 Y0 Y1 Y2 Y3

1 × × 1 1 1 1
0 0 0 0 1 1 1
0 0 1 1 0 1 1
0 1 0 1 1 0 1
0 1 1 1 1 1 0
集成电路译码器

 2线 - 4线译码器: 74  139

输入信号 输出信号

E A1 A0 Y0 Y1 Y2 Y3

1 × × 1 1 1 1
0 0 0 0 1 1 1
0 0 1 1 0 1 1
0 1 0 1 1 0 1
0 1 1 1 1 1 0
集成电路译码器

 2线 - 4线译码器: 74  139

输入信号 输出信号

E A1 A0 Y0 Y1 Y2 Y3

1 × × 1 1 1 1
0 0 0 0 1 1 1
0 0 1 1 0 1 1
0 1 0 1 1 0 1
0 1 1 1 1 1 0
再见!
组合逻辑电路

华中科技大学 罗杰
二进制译码器的应用
集成电路译码器

集成电路译码器
集成电路译码器

 3线 - 8线译码器: 74HC138
使能输入
Y0

Y1 E3 Y0
E1
E2 Y1
E Y2
E2
E1 Y2
输出为
74HC138 Y3
E3
Y3 低电平
3 Y4 有效
E  E3 E 2 E 1 A0 Y5
Y4 个

1
A1 Y6
A0 Y5 入 A2 Y7
A1 Y6
逻辑符号
Y7
A2
集成电路译码器

 3线 - 8线译码器: 74HC138
Y0
 当E3=1,且 E1 = E2 = 0时,
Y1 输出逻辑表达式:
E1
E Y2
Y 0  A2  A1  A0  m 0
E2
E3
Y3

E  E3 E 2 E 1 Y4 Y 1  m1
1

A0 Y5

A1 Y6
Y 7  m7
Y7
A2
集成电路译码器

 3线 - 8线译码器: 74HC138
输 入 输 出

E3 E2 E1 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
× 1 × × × × 1 1 1 1 1 1 1 1
× × 1 × × × 1 1 1 1 1 1 1 1
0 × × × × × 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 0 1 1 0 1 1 1 1 1 1
1 0 0 0 1 0 1 1 0 1 1 1 1 1
1 0 0 0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1 0 1 1 1
1 0 0 1 0 1 1 1 1 1 1 0 1 1
1 0 0 1 1 0 1 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 1 1 1 1 0
集成电路译码器

 3线 - 8线译码器: 74HC138
输 入 输 出

E3 E2 E1 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
× 1 × × × × 1 1 1 1 1 1 1 1
× × 1 × × × 1 1 1 1 1 1 1 1
0 × × × × × 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 0 1 1 0 1 1 1 1 1 1
1 0 0 0 1 0 1 1 0 1 1 1 1 1
1 0 0 0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1 0 1 1 1
1 0 0 1 0 1 1 1 1 1 1 0 1 1
1 0 0 1 1 0 1 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 1 1 1 1 0
集成电路译码器

 3线 - 8线译码器: 74HC138
输 入 输 出

E3 E2 E1 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
× 1 × × × × 1 1 1 1 1 1 1 1
× × 1 × × × 1 1 1 1 1 1 1 1
0 × × × × × 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 0 1 1 0 1 1 1 1 1 1
1 0 0 0 1 0 1 1 0 1 1 1 1 1
1 0 0 0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1 0 1 1 1
1 0 0 1 0 1 1 1 1 1 1 0 1 1
1 0 0 1 1 0 1 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 1 1 1 1 0
译码器的应用

译码器的应用
译码器的应用

用两片3线-8线
译码器 74HC138

4线- 16线译码器?
译码器的应用

E1 Y0 L0
E2 Y1
+5V E3 Y2
Y3
74HC138 Y4


B0 待 A0 U1 Y5


B1 A1 Y6
B2 A2 Y7 L7


E1 Y0 L8
E2 Y1


B3 E3 Y2
Y3


74HC138 Y4
A0 U2 Y5
A1 Y6
A2 Y7 L15
译码器的应用

E1 Y0 L0
E2 Y1
E3 Y2
Y3
74HC138 Y4


B0 A0 U1 Y5
B1 A1 Y6
B2 A2 Y7 L7

E1 Y0 L8
E2 Y1
B3 E3 Y2
Y3


74HC138 Y4
A0 U2 Y5
A1 Y6
A2 Y7 L15
译码器的应用

E1 Y0 L0
E2 Y1
+5V E3 Y2
Y3
74HC138 Y4


B0 A0 U1 Y5
B1 A1 Y6
B2 A2 Y7 L7

E1 Y0 L8
E2 Y1
B3 E3 Y2
Y3


74HC138 Y4
A0 U2 Y5
A1 Y6
A2 Y7 L15
译码器的应用

用两个带使能端
的4线-16线译码器

5线- 32线译码器 ?
译码器的应用
+5V E3 Y0 L0
E2 Y1
E1 Y2
Y3


74HC138Y4
B0 A0 (0) Y5
B1 A1 Y6
B2 A2 Y7 L7

E3 Y0 L8
E2 Y1
E1 Y2
Y3


1/2 74HC139 74HC138Y4
A0 (1) Y5
E Y0 A1 Y6
Y1 A2 Y7 L15
B3 A0 Y2
B4 A1

Y3

E3 Y0 L 24
E2 Y1
E1 Y2


Y3
74HC138Y4
A0 (3) Y5
A1 Y6
A2 Y7 L31
再见!
组合逻辑电路

华中科技大学 罗杰
二-十进制译码器
译 码 器
二-十进制译码器

二-十进制译码器
二-十进制译码器

 功能:将8421 BCD码译成为10个状态输出。

Y0
B A0
C Y1
10
D A1
二-十进制 个
码 输
输 A2 译码器 出

A3
Y9
二-十进制译码器

BCD输入 输 出
十进
制数 A3 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9

0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 对于BCD代
1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 码以外伪码
2 0 0 1 0 1 1 0 1 1 1 1 1 1 1
3 0 0 1 1 1 1 1 0 1 1 1 1 1 1 (1010~1111
4 0 1 0 0 1 1 1 1 0 1 1 1 1 1
这6个代码),
5 0 1 0 1 1 1 1 1 1 0 1 1 1 1
6 0 1 1 0 1 1 1 1 1 1 0 1 1 1 Y0 ~Y9 均为
7 0 1 1 1 1 1 1 1 1 1 1 0 1 1
8 1 0 0 0 1 1 1 1 1 1 1 1 0 1 高电平。
9 1 0 0 1 1 1 1 1 1 1 1 1 1 0
二-十进制译码器

Y 0  A3 A2 A1 A0 Y 1  A3 A2 A1 A0
Y 2  A3 A2 A1 A0 Y 3  A3 A2 A1 A0
Y 4  A3 A2 A1 A0 Y 5  A3 A2 A1 A0
Y 6  A3 A2 A1 A0 Y 7  A3 A2 A1 A0
Y 8  A3 A2 A1 A0 Y 9  A3 A2 A1 A0
二-十进制译码器

0
Y0 1
Y1
2
Y2
0 A0 3
Y3
1 A1 Y4 4
输入 BCD 码 二-十进制 Y5
1 A2 5
译码器 Y6
0 A3 6
Y7
Y8 7

Y9 8
9
再见!
组合逻辑电路

华中科技大学 罗杰
译 码 器
七段显示译码器
译 码 器
七段显示器

七段显示器
七段显示器
 共阴极结构
1 1 1
a b c d e f g

f b  共阳极结构
g
+VCC

e c
a b c d e f g
d 0 0 0
显示译码器

显示译码器
显示译码器

 功能:将输入的4位BCD码翻译成“七段码”送给数码管,
以便数码管能够显示各个BCD码所对应的十进制数字。
数字显示电路

 74HC4511与七段数码管的连接

(200~1k)7
LE a a e
BL b b f
+5V LT c c g
74HC4511 d d
D3 D3 e
D2 D2 f
D1 D1 g
D0 D0
显示译码器

CMOS 74HC4511 功能表


输 入 输 出
十进制
字形
或功能 a b c d e f g
LE BL LT D3 D2 D1 D0

0 0 1 1 0 0 0 0 1 1 1 1 1 1 0
1 0 1 1 0 0 0 1 0 1 1 0 0 0 0
2 0 1 1 0 0 1 0 1 1 0 1 1 0 1
3 0 1 1 0 0 1 1 1 1 1 1 0 0 1
4 0 1 1 0 1 0 0 0 1 1 0 0 1 1
5 0 1 1 0 1 0 1 1 0 1 1 0 1 1
6 0 1 1 0 1 1 0 0 0 1 1 1 1 1
7 0 1 1 0 1 1 1 1 1 1 0 0 0 0
8 0 1 1 1 0 0 0 1 1 1 1 1 1 1
9 0 1 1 1 0 0 1 1 1 1 1 0 1 1
显示译码器
七段数码显示器显示(0~9)的情况:
D3 D2 D1 D0 a b c d e f g
0 0 0 0 1 1 1 1 1 1 0
a
0 0 0 1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1 f b
g
0 0 1 1 1 1 1 1 0 0 1
0 1 0 0 0 1 1 0 0 1 1
e c
0 1 0 1 1 0 1 1 0 1 1 d
0 1 1 0 0 0 1 1 1 1 1
0 1 1 1 1 1 1 0 0 0 0 共阴数码管
1 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 0 0 1 1
显示译码器
CMOS 74HC4511 功能表(续)
输 入 输 出
十进制
或功能 D3 D2 D1 D0 a b c d e f g 字形
LE BL LT

10 0 1 1 1 0 1 0 0 0 0 0 0 0 0 熄灭

11 0 1 1 1 0 1 1 0 0 0 0 0 0 0 熄灭

12 0 1 1 1 1 0 0 0 0 0 0 0 0 0 熄灭

13 0 1 1 1 1 0 1 0 0 0 0 0 0 0 熄灭

14 0 1 1 1 1 1 0 0 0 0 0 0 0 0 熄灭

15 0 1 1 1 1 1 1 0 0 0 0 0 0 0 熄灭

灯测试 × × 0 × × × × 1 1 1 1 1 1 1
灭 灯 × 0 1 × × × × 0 0 0 0 0 0 0 熄灭
锁 存 1 1 1 × × × × * *
显示译码器
CMOS 74HC4511 功能表(续)
输 入 输 出
十进制
或功能 D3 D2 D1 D0 a b c d e f g 字形
LE BL LT

10 0 1 1 1 0 1 0 0 0 0 0 0 0 0 熄灭

11 0 1 1 1 0 1 1 0 0 0 0 0 0 0 熄灭

12 0 1 1 1 1 0 0 0 0 0 0 0 0 0 熄灭

13 0 1 1 1 1 0 1 0 0 0 0 0 0 0 熄灭

14 0 1 1 1 1 1 0 0 0 0 0 0 0 0 熄灭

15 0 1 1 1 1 1 1 0 0 0 0 0 0 0 熄灭

灯测试 × × 0 × × × × 1 1 1 1 1 1 1
灭 灯 × 0 1 × × × × 0 0 0 0 0 0 0 熄灭
锁 存 1 1 1 × × × × * *
显示译码器
七段数码显示器显示(0~9)的情况:
 a 段的卡诺图:
D3 D2 D1 D0 a b c d e f g
a D1
0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0 1 1 1
0 0 1 0 1 1 0 1 1 0 1 1 1
D2
0 0 1 1 1 1 1 1 0 0 1
D3
0 1 0 0 0 1 1 0 0 1 1 1 1

0 1 0 1 1 0 1 1 0 1 1 D0

0 1 1 0 0 0 1 1 1 1 1
a  D3 D2 D1  D3 D2 D1  D3 D2 D0  D3 D2 D0
0 1 1 1 1 1 1 0 0 0 0
1 0 0 0 1 1 1 1 1 1 1 a  ( D3 D2 D1  D3 D2 D1  D3 D2 D0  D3 D2 D0 ) BL  LT

1 0 0 1 1 1 1 0 0 1 1
再见!
组合逻辑电路

华中科技大学 罗杰
数字显示电路
数字显示电路
数字显示电路

静态显示电路:一个显示译码器与一个数码管的连接

(200~1k)7
LE a a e
BL b b f
+5V LT c c g
74HC4511 d d
D3 D3 e
D2 D2 f
D1 D1 g
D0 D0
数字显示电路

动态扫描显示电路:一个显示译码器与多个数码管的连接
LE
BL (3) (2) (1) (0)
+5V LT a
显示器4



74HC4511
显 D3 D3 g
示 D2 D2
数 D1 D1
据 D0 D0
Y3 Y2 Y1 Y0

74HC139

E A1 A0

A1 A0
位选择信号
数字显示电路

工作原理

 将要显示的数据分时送到74HC4511的输入端D3D2D1D0上,
并控制74HC139的输入A1A0,使 Y0 ~ Y3 依次输出低电平,
让4个显示器轮流显示数字。
数字显示电路

LE
BL (3) (2) (1) (0)
+5V LT a
显示器4



74HC4511
1 g
显 D3 D3
示 D2 0 D2
数 D1 0 D1 1 1 1 0
据 D0 0 D0
Y3 Y2 Y1 Y0

74HC139

E A1 A0

0 0
A1 A0
位选择信号
数字显示电路

LE
BL (3) (2) (1) (0)
+5V LT a
显示器4



74HC4511
0 g
显 D3 D3
示 D2 1 D2
数 D1 1 D1 1 1 0 1
据 D0 1 D0
Y3 Y2 Y1 Y0

74HC139

E A1 A0

0 1
A1 A0
位选择信号
数字显示电路

LE
BL (3) (2) (1) (0)
+5V LT a
显示器4



74HC4511
0 g
显 D3 D3
示 D2 1 D2
数 D1 1 D1 1 0 1 1
据 D0 0 D0
Y3 Y2 Y1 Y0

74HC139

E A1 A0

1 0
A1 A0
位选择信号
数字显示电路

LE
BL (3) (2) (1) (0)
+5V LT a
显示器4



74HC4511
0 g
显 D3 D3
示 D2 1 D2
数 D1 0 D1 0 1 1 1
据 D0 1 D0
Y3 Y2 Y1 Y0

74HC139

E A1 A0

1 1
A1 A0
位选择信号
数字显示电路

LE
BL (3) (2) (1) (0)
+5V LT a
显示器4



74HC4511
显 D3 D3 g
示 D2 D2
数 D1 D1
据 D0 D0
Y3 Y2 Y1 Y0

74HC139

E A1 A0

A1 A0
位选择信号
数字显示电路

注意事项

 以一定频率周而复始地重复每个数字的显示,能够看到显示
稳定的数字。

 工作频率太高时,会看不清楚显示的数码。

 工作频率太低时,会看到 4 个数码轮流显示。

 通常每位数码管变化的频率范围为: 25Hz  f C  100Hz


数字显示电路

工作原理

 我们把74HC139输出的4个信号 Y0 ~ Y3 称为位选择信号,
用于选择4个显示器中的哪一个显示数码。

 把74HC4511输出的7个信号 a~g 称为段信号,供数码管显示


不同的数字。
数字显示电路
再见!
教学内容、要求及小结

本节主要内容:
 数据分配器和数据选择器的概念、工作原理和设计方法;
 中规模集成电路选择器的功能表及使用方法。

学习本节后,你应该能
 解释数据分配器、数据选择器的基本工作原理;
 掌握数据选择器的逻辑功能以及设计方法;
 阅读集成数据选择器的功能表,并能正确运用于电路的分析和设计;
 对集成数据选择器进行扩展,以便处理更多的数据输入;
 了解用选择器实现逻辑函数的方法。

小结:
● 数据分配器是将一根公共输入线路上的数据分配到几条输出线路上,它可
以将串行数据转换成并行数据。
● 没有专门的数据分配器芯片,使用译码器芯片就能完成数据分配的功能,
这是通过将串行数据送到译码器的使能输入端来完成的。
● 数据选择器用来选择多个输入端送来的数据,并将其中一个通道的输入数
据送到输出端,常用于将并行数据转换成串行数据,实现分时共享数据总线的功
能。
● 数据选择器芯片除了选择端和数据输入端外,一般都有一个使能输入端,
用于将多个芯片级联起来,扩展电路的功能。
● 数据选择器是 FPGA 内部查找表(LUT)的组成单元。
● 数据选择器也可以用于实现逻辑函数。
组合逻辑电路

华中科技大学 罗杰
数据分配器
数据分配器

 数据分配:
就是将公共数据线上的
数据根据需要送到不同
的通道上去。
数据分配器

 数据分配:
就是将公共数据线上的
数据根据需要送到不同
Y0

的通道上去。 数据输入
Y1


 数据分配器: Y2n 1

实现数据分配功能的逻
n 通道选择信号
辑电路。
数据分配器

 数据分配器如何实现呢?
数据分配器

 用译码器实现数据分配器

Y0
Y 2  ( E3  E 2  E 1 )  A2  A1  A0
+5V E3
D E2 E2 Y1
E1 Y2 Y2  E 2  m2
E1 Y3
74HC138 Y4 = D  m2
0 A0 Y5
1 A1 Y6 当A2A1A0 = 010 时,
0 A2 Y7
Y2 = D
数据分配器

 用译码器实现数据分配器

Y0
Y 5  ( E3  E 2  E 1 )  A2  A1  A0
+5V E3
D E2 E2 Y1
E1 Y2 Y2  E 2  m5
E1 Y3
74HC138 Y4 = D  m5
1 A0 Y5
0 A1 Y6 当A2A1A0 = 101 时,
1 A2 Y7
Y5 = D
数据分配器
74HC138译码器作为数据分配器时的功能表
输 入 输 出
E3 E2 E1 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
0  0    1 1 1 1 1 1 1 1
1 D 0 0 0 0 D 1 1 1 1 1 1 1
1 D 0 0 0 1 1 D 1 1 1 1 1 1
1 D 0 0 1 0 1 1 D 1 1 1 1 1
1 D 0 0 1 1 1 1 1 D 1 1 1 1
1 D 0 1 0 0 1 1 1 1 D 1 1 1
1 D 0 1 0 1 1 1 1 1 1 D 1 1
1 D 0 1 1 0 1 1 1 1 1 1 D 1
1 D 0 1 1 1 1 1 1 1 1 1 1 D
数据分配器

S1 S0

C3
Y3
G3

C2
Y2
G2

C1
Y1
G1

C0
Y0
G0
E

In
数据分配器

Y3
C3 G3

Y2
C2 G2

Y1
C1 G1

Y0
C0 G0

In
数据分配器

 三态门由C0~C3控制:
• 当控制信号为 1 时,
Y3
C3
三态门使能,输出
G3

Y2
C2 G2
与输入相同;
Y1
C1 G1 • 当控制信号为 0 时,
C0 G0
Y0
三态门不使能,输

In 出高阻态 z。
数据分配器

S1 S0  三态门控制端的逻辑表达式:

C0  E  S1  S 0
Y3
C3 G3

Y2
C1  E  S1  S 0
C2 G2

Y1 C2  E  S1  S 0
C1 G1

C0 G0
Y0 C3  E  S1  S 0
E

In
数据分配器

 三态门控制端的逻辑表达式:

输 入 输 出 C0  E  S1  S 0
E S1 S0 C3 C2 C1 C0
1 x x 0 0 0 0 C1  E  S1  S 0
0 0 0 0 0 0 1
0 0 1 0 0 1 0 C2  E  S1  S 0
0 1 0 0 1 0 0
0 1 1 1 0 0 0 C3  E  S1  S 0
数据分配器

电路的真值表:

输 入 输 出
E S1 S0 Y3 Y2 Y1 Y0
1 x x z z z z
0 0 0 z z z In
0 0 1 z z In z
0 1 0 z In z z
0 1 1 In z z z
数据分配器

电路的真值表:

输 入 输 出  在使能信号有效情况下:
E S1 S0 Y3 Y2 Y1 Y0
• 当 S1S0= 00时,Y0= In;
1 x x z z z z
0 0 0 z z z In
0 0 1 z z In z
0 1 0 z In z z
0 1 1 In z z z
数据分配器

电路的真值表:

输 入 输 出  在使能信号有效情况下:
E S1 S0 Y3 Y2 Y1 Y0
• 当 S1S0= 00时,Y0= In;
1 x x z z z z
0 0 0 z z z In • 当 S1S0= 01时,Y1= In;
0 0 1 z z In z • 当 S1S0= 10时,Y2= In;
0 1 0 z In z z
0 1 1 In z z z
• 当 S1S0= 11时,Y3= In;
再见!
组合逻辑电路

华中科技大学 罗杰
数据选择器
数据选择器

 当有多个摄像头时,如何在监视器上查看某个摄像头的实时视频呢?
通常利用控制器将需要查看的那一路视频信号切换到监视器上。
数据选 择 器

 数据选择器:
是一种数据开关,用于从多个数据源中选择其中
一路传送到公共的数据线上,能够实现这种功能
的逻辑电路称为数据选择器。
数据选 择 器

 数据选择器:
是一种数据开关,用于 输入通道
D0
从多个数据源中选择其 D1

中一路传送到公共的数
数据输出
据线上,能够实现这种 D2 n 1
功能的逻辑电路称为数 n
通道选择信号
据选择器。
数据选 择 器

 数据选择器:
即在通道选择信号的 输入通道
D0
控制下,将多个通道 D1

的数据分时传送到公
数据输出
共的数据通道上去。 D2 n 1
n
通道选择信号
数据选 择 器

 数据选择器如何实现呢?
2 选 1 数据选 择 器

2 选 1 数据选择器
2 选 1 数据选 择 器

选择信号输入端
S


D0

Y

入 D1 1路数据
端 输出端
2 选 1 数据选 择 器

选择信号输入端
S

S

D0 D0 0
据 Y
Y
输 D1 1
入 D1 1路数据
端 输出端
逻辑符号
2 选 1 数据选 择 器

选择信号输入端 • 逻辑表达式:
S

Y  S D0  SD1

D0

Y

入 D1 1路数据
端 输出端
2 选 1 数据选 择 器

选择信号输入端 • 真值表
S
选择输入 输 出
S Y
数 0 D0
D0


Y 1 D1
入 D1 1路数据
端 输出端
4 选 1 数据选 择 器

4 选 1 数据选择器
4 选 1 数据选 择 器

S1 S0

D0

D1
Y

D2

D3
4 选 1 数据选 择 器

S1 S0

S0
D0 S1
D0 00
D1
Y D1 Y
01
D2 D2 10
D3 11
D3
逻辑符号
4 选 1 数据选 择 器

S1 S0
• 逻辑表达式:

Y  D0 S1 S 0  D1 S1S 0
D0  D2 S1 S 0  D3 S1S 0
D1
Y
Y  D0 m0  D1m1
D2
 D2 m2  D3 m3
D3
4 选 1 数据选 择 器

• 真值表
S0
选择输入 输 出
S1
S1 S0 Y
D0 00
Y
0 0 D0
D1 01
D2
0 1 D1
10
D3 11 1 0 D2
1 1 D3
数据选 择 器

例 分析该电路的逻辑功能。
S1 • 逻辑表达式:
S0
Y0  S 0  D0  S 0  D1
D0 0 Y0
D1 1 Y1  S 0  D2  S 0  D3
0 Y
Y  S1  Y0  S1  Y1
1

D2 0 Y  D0 S1 S 0  D1 S1S 0
 D2 S1 S 0  D3 S1S 0
D3 1 Y1
数据选 择 器

例 分析该电路的逻辑功能。
S1
S0
S0
D0 0 Y0
S1
D1 1
D0 00
0 Y Y
D1 01
1 D2 10
D3 11
D2 0
D3 1 Y1 逻辑符号
数据选 择 器

 8选1 数据选择器:
S0
S1 • 逻辑表达式:
D0 00
7
Y   mi Di
D1 01 Y0
D2 10
D3 11 i 0
0 Y
1
D4 00
D5 01 Y1
D6 10
D7 11

S2
数据选 择 器

例 数据选择器、数据分配器与总线的连接

多路复用器 多路分配器
P0 I0 Y0

P1 I1 Y1

Pi P1 P0


Pi P1 P0
I 2m 1 总线
Pi Y2 n 1

m 个通道选择信号 n 个通道选择信号
再见!
组合逻辑电路

华中科技大学 罗杰
数据选择器的应用
集成数据选 择 器

常用的集成电路数据选择器

型 号 说 明
74157 芯片上有四个2选1数据选择器

74153 双4选1数据选择器
74253 双4选1数据选择器(带有三态输出)

74151 8选1数据选择器
74251 8选1数据选择器(带有三态输出)
集成数据选 择 器

 8选1数据选择器74HC151

D7
D6
D5
D4 Y
D3 74HC151
D2 Y
D1 Y
D0
E
E

S2 S1 S0

逻辑符号 引脚图
集成数据选 择 器

 8选1数据选择器74HC151 输 入 输 出
使 能 选 择
E S2 S1 S0
Y Y
D7
D6 1    0 1
D5
D4 Y 0 0 0 0 D0 D0
D3 74HC151 0 0 0 1 D1 D1
D2 Y
D1 0 0 1 0 D2 D2
D0 0 0 1 1 D3 D3
E D4
0 1 0 0 D4
0 1 0 1 D5 D5
S2 S1 S0
0 1 1 0 D6 D6
逻辑符号 0 1 1 1 D7 D7
集成数据选 择 器

 8选1数据选择器74HC151 输 入 输 出
使 能 选 择
E S2 S1 S0
Y Y
• 当 E =1 时,Y = 0 。 1    0 1
0 0 0 0 D0 D0
• 当 E = 0 时, 0 0 0 1 D1 D1
0 0 1 0 D2 D2
7
Y  Di m i 0 0 1 1 D3 D3
i 0
0 1 0 0 D4 D4
0 1 0 1 D5 D5
0 1 1 0 D6 D6
0 1 1 1 D7 D7
数据选 择 器的应用

数据选择器的应用
数据选 择 器的应用
 用两片74151组成二位八选一的数据选择器

E E
S2 S2
S1 S1
S0 D00 S0 Y Y0
D0
D01 D174HC151
D02 D2
D03 D3 (0) Y0
D04 D4 Y
D05 D5
D06 D6
D07 D7

E
S2
S1
D10 S0 Y Y1
D0
D11 D174HC151
D12 D2 (1)
D13 D3 Y1
D14 D4 Y
D15 D5
D16 D6
D17 D7
数据选 择 器的应用
 用两片74151组成一个16选1的数据选择器
D E
C S2
B S1
A S0 Y
D0 D0
D1 D1 74HC151
D2 D2
D3 D3 (0)
D4 Y
D4
D5 D5
D6 D6 Y
D7 D7

E
S2 Y
S1
S0 Y
D8 D0
D9 D1 74HC151
D10 D2
D11 D3 (1) Y
D12 D4
D13 D5
D14 D6
D15 D7
数据选 择 器的应用
 用两片74151组成一个16选1的数据选择器
D 0 E
C S2
B S1
A S0 Y
D0 D0
D1 D1 74HC151
D2 D2
D3 D3 (0)
D4 Y
D4
D5 D5
D6 D6 Y
D7 D7

1 E
S2 Y
S1
S0 Y
D8 D0
D9 D1 74HC151
D10 D2
D11 D3 (1) Y
D12 D4
D13 D5
D14 D6
D15 D7
数据选 择 器的应用
 用两片74151组成一个16选1的数据选择器
D 1 E
C S2
B S1
A S0 Y
D0 D0
D1 D1 74HC151
D2 D2
D3 D3 (0)
D4 Y
D4
D5 D5
D6 D6 Y
D7 D7

0 E
S2 Y
S1
S0 Y
D8 D0
D9 D1 74HC151
D10 D2
D11 D3 (1) Y
D12 D4
D13 D5
D14 D6
D15 D7
数据选 择 器的应用

 8选1数据选择器74HC151
•当 E = 0 时,
D7
D6 7
D5
Y
Y  Di m i
D4 i 0
D3 74HC151
D2 Y
D1 如果 Di=1,则
D0 7
E Y   mi
i 0
S2 S1 S0

逻辑符号
集成数据选 择 器

 如何用74HC151实现 4 变量
逻辑函数呢?
集成数据选 择 器

例 试用 74HC151 实现逻辑函数 L  AC  BC  BD  ABC D

A BC D L A BC D L
 用真值表降维法. 0 0 0 0 0 1 0 0 0 0
• 将4个变量的真值表降维 0 0 0 1 1 1 0 0 1 1
0 0 1 0 1 1 0 1 0 1
成为3变量的真值表.
0 0 1 1 1 1 0 1 1 1
• 关键是找出输出L 与输入
0 1 0 0 0 1 1 0 0 1
D 这两者之间的关系。
0 1 0 1 0 1 1 0 1 0
0 1 1 0 1 1 1 1 0 0
0 1 1 1 1 1 1 1 1 0
集成数据选 择 器

例 试用 74HC151 实现逻辑函数 L  AC  BC  BD  ABC D


A BC L A BC D L A BC D L
0 0 0 D 0 0 0 0 0 1 0 0 0 0
0 0 1 1 0 0 0 1 1 1 0 0 1 1
0 1 0 0 0 0 1 0 1 1 0 1 0 1
0 1 1 1 0 0 1 1 1 1 0 1 1 1

1 0 0 D 0 1 0 0 0 1 1 0 0 1
1 0 1 1 0 1 0 1 0 1 1 0 1 0
1 1 0 D 0 1 1 0 1 1 1 1 0 0
1 1 1 0 0 1 1 1 1 1 1 1 1 0
集成数据选 择 器

例 试用 74HC151 实现逻辑函数 L  AC  BC  BD  ABC D


A BC L
L = m0D + m11 + m2 0 + m3 1
0 0 0 D
0 0 1 1 + m4 D + m51 + m6 D + m7 0
0 1 0 0
让 D0=D4=D, D6=D,
0 1 1 1
D1=D3=D5=1, D2=D7=0,
1 0 0 D
1 0 1 1
 让数据选择器处于使能状态,
1 1 0 D
且 S2=A,S1=B,S0= C
1 1 1 0
集成数据选 择 器

例 试用 74HC151 实现逻辑函数 L  AC  BC  BD  ABC D

D L = m0D + m11 + m2 0 + m3 1
1 + m4 D + m51 + m6 D + m7 0
0
D0 D1 D2 D3 D4 D5 D6 D7 让 D0=D4=D, D6=D,
A S2
B S1 74HC151 D1=D3=D5=1, D2=D7=0,
C S0
E Y
 让数据选择器处于使能状态,
L 且 S2=A,S1=B,S0= C
集成数据选 择 器

 变量数=选通端数,用数据选择器实现函数的步骤:

• 将函数变换成最小项表达式 ;

• 让数据选择器处于使能状态,并将函数的输入变量与地址
信号 S2、 S1 、 S0 相连接 ;

• 将数据输入 D0~D7 接相应逻辑电平。即在逻辑表达式中有


的mi ,则相应Di =1,其他的数据输入端均为 0。

 变量数选通端数,要将某些变量接入数据端。
再见!
教学内容、要求及小结

本节主要内容:
 数值比较器
 一位二进制数的半加器与全加器
 多位二进制数的加法器
 中规模集成电路的功能表及使用方法。

学习本节后,你应该能
 描述数值比较器、加法器的逻辑功能;
 画出一位数值比较器、半加器、全加器的逻辑图;
 用集成电路比较器比较两个 4 位二进制数的数值大小;用级联方式将比较
器扩展到 8 位或者更多位。
 解释串行进位与超前进位加法器之间的差别
 阅读集成电路的功能表,并能正确运用于电路的分析和设计。

小结:
● 数值比较器用于两个二进制数的比较,确定其值是否相等。如果不相等,
则能够区分出哪个更大。
● 一位二进制数的加法器包括两种类型:半加器和全加器。全加器可以由两
个半加器及一个或门级联来构成。在将两个一位二进制数相加时,如果只考虑这
两个数本身相加,而不考虑来自低位的进位,这种加法运算称为半加。如果考虑
低位来的进位,就称为全加。
● 多位二进制数的加法器有串行进位和超前进位两种不同的方式。
组合逻辑电路

华中科技大学 罗杰
数值比较器
数值比较器

 数值比较器:
对两个二进制数 A、B 进行比较的逻辑电路,
比较结果有 A>B、A<B 以及 A=B 三种情况。
数值比较器
1 位数值比较器

1 位数值比较器
1 位数值比较器

 1位数值比较器真值表
A B FA>B FA<B FA=B
0 0 0 0 1
0 1 0 1 0
1 0 1 0 0
1 1 0 0 1
1 位数值比较器

 1位数值比较器真值表  逻辑表达式:
A B FA>B FA<B FA=B FA > B = A B
0 0 0 0 1
0 1 0 1 0 FA< B = A B
1 0 1 0 0
1 1 0 0 1
FA= B = A B + AB

= A B + AB
= A B + AB
1 位数值比较器

 逻辑图:  逻辑表达式:

B
FA>B
FA > B = A B
FA=B FA< B = A B
FA<B
A FA= B = A B + AB

= A B + AB
A FA>B
1位数值 = A B + AB
FA<B
比较器
B FA=B
两位数值比较器

两位数值比较器
两位数值比较器

 如何设计两位数值比较器 ?
两位数值比较器

当高位(A1、B1)不相等时,
无需比较低位(A0、B0),高
位比较的结果就是两个数的比
较结果。

设计多位数值比较器的原则

当高位相等时,两数的比较
结果由低位比较的结果决定。
两位数值比较器

 两位数值比较器真值表  逻辑表达式:

A1 B1 A0 B0 FA>B FA<B FA=B


FA B  A1 B1  ( A1 B1  A1 B1 ) A0 B 0
A1 > B1 × 1 0 0
 FA1  B1  FA1  B1  FA0  B0
A1 < B1 × 0 1 0
A1 = B1 A0 > B0 1 0 0
A1 = B1 A0 < B0 0 1 0 FA B  A1 B1  ( A1 B1  A1 B1 ) A 0 B0
A1 = B1 A0 = B0 0 0 1  FA1  B1  FA1  B1  FA0  B0

FA B  FA1  B1  FA0  B0


两位数值比较器

 逻辑图:  逻辑表达式:

FA1  B1
FA B  A1 B1  ( A1 B1  A1 B1 ) A0 B 0
A1
1 位数值 F
A1  B1  FA1  B1  FA1  B1  FA0  B0
B1 比较器 FA1  B1

A0 1 位数值
FA0  B0
FA B  A1 B1  ( A1 B1  A1 B1 ) A 0 B0
FA0 B0

B0
比较器 FA0  B0  FA1  B1  FA1  B1  FA0  B0

FA B  FA1  B1  FA0  B0


两位数值比较器

 逻辑图:  逻辑表达式:

FA1  B1 G4 FA B  A1 B1  ( A1 B1  A1 B1 ) A0 B 0
A1
1 位数值 F
A11  B1
G1 FAA>>BB  FA1  B1  FA1  B1  FA0  B0
B1 比较器 FA1  B1

G5
A0
FA0 B0
1 位数值 F G22 FAA<<BB
F
FA B  A1 B1  ( A1 B1  A1 B1 ) A 0 B0
FAA00BB00

B00
比较器 F
A0  B0  FA1  B1  FA1  B1  FA0  B0
G33
FA=B
FA B  FA1  B1  FA0  B0
再见!
组合逻辑电路

华中科技大学 罗杰
多位数值比较器

多位数值比较器
多位数值比较器

 74HC85是四位数值比较器 ,其工作原理和两位数
值比较器相同。

A0 B0 A1 B1 A2 B2 A3 B3
IA>B
IA<B 74HC85
IA=B FA=B FA<B FA>B

逻辑符号
输 入 输 出
A3 B3 A2 B2 A1 B1 A0 B0 IA>B IA<B IA=B FA>B FA<B FA=B
 74HC85

A3 > B3 × × × × × × 1 0 0
A3 < B3 × × × × × × 0 1 0
A3 = B3 A2 > B2 × × × × × 1 0 0
A3 = B3 A2 < B2 × × × × × 0 1 0
的 A3 = B3 A2 = B2 A1 > B1 × × × × 1 0 0
功 A3 = B3 A2 = B2 A1 < B1 × × × × 0 1 0
能 A3 = B3 A2 = B2 A1 = B1 A0 > B0 × × × 1 0 0
表 A3 = B3 A2 = B2 A1 = B1 A0 < B0 × × × 0 1 0
A3 = B3 A2 = B2 A1 = B1 A0 = B0 1 0 0 1 0 0
A3 = B3 A2 = B2 A1 = B1 A0 = B0 0 1 0 0 1 0
A3 = B3 A2 = B2 A1 = B1 A0 = B0 × × 1 0 0 1
A3 = B3 A2 = B2 A1 = B1 A0 = B0 1 1 0 0 0 0
A3 = B3 A2 = B2 A1 = B1 A0 = B0 0 0 0 1 1 0
多位数值比较器

 集成数值比较器的位数扩展(串联扩展方式)

B3A3 ~ B0A0 B7A7 ~ B4A4


A0 B0 A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 A6 B6 A7 B7

A0 B0 A1 B1 A2 B2 A3 B3 A0 B0 A1 B1 A2 B2 A3 B3
0 IA>B IA>B

0 IA<B 低位片C0 IA<B 高位片C1


1 IA=B FA=B FA<B IA=B FA=B FA<B
FA>B FA>B

FA=B FA<B FA>B


输出
多位数值比较器

 用74HC85组成16位数值比较器(串联扩展方式)

B3A3 ~ B0A0 B7A7 ~ B4A4 B11A11 ~ B8A8 B15A15 ~ B12A12

A 0 B0 A 1 B1 A 2 B2 A 3 B3 A 0 B0 A 1 B1 A 2 B2 A 3 B3 A 0 B0 A 1 B1 A 2 B2 A 3 B3 A 0 B0 A 1 B1 A 2 B2 A 3 B3
0 IA>B IA>B IA>B IA>B
0 IA<B C0 IA<B C1 IA<B C2 IA<B C3
低位片 高位片
1 IA=B F IA=B F IA=B F IA=B F
A=B FA<B FA>B A=B FA<B FA>B A=B FA<B FA>B A=B FA<B FA>B

FA=B FA<B FA>B

输出

如果每一片延迟时间为10 ns,16位串行比较器延迟时间?
多位数值比较器
 用74HC85组成16位数值比较器(并联扩展方式)
B15A15 ~ B12A12 B11A11 ~ B8A8 B7A7 ~ B4A4 B3A3 ~ B0A0

B3 A 3 B2 A 2 B1 A 1 B0 A 0 B3 A 3 B2 A 2 B1 A 1 B0 A 0 B3 A 3 B2 A 2 B1 A 1 B0 A 0 B3 A 3 B2 A 2 B1 A 1 B0 A 0
0 IA>B 0 0 0
IA>B IA>B IA>B
C3 IA<B C2 IA<B C1 IA<B C0 IA<B
0 0 0 0
FA<B FA>B IA=B 1 FA<B FA>B IA=B 1 FA<B FA>B IA=B 1 FA<B FA>B IA=B 1

B3 A 3 B2 A 2 B1 A 1 B0 A 0
IA>B 0
C4 IA<B
0
IA=B
FA=B FA<B FA>B 1

FA=B FA<B FA>B 输出

如果每一片延迟时间为10 ns,16位并行比较器延迟时间?
再见!
组合逻辑电路

华中科技大学 罗杰
一位数加法器
加 法 器
1 位加法器

 1 位加法器分两种:半加器和全加器

两个1位二进制数相加 两个1位二进制数相
时,不考虑低位来的 加时,考虑低位来的
进位 进位
1 位半加器

1 位半加器
1 位半加器

 半加器真值表  逻辑图
A B C S
A S = A B
0 0 0 0 B
0 1 0 1
1 0 0 1
C=AB
1 1 1 0

 逻辑表达式  逻辑符号

S = AB + A B A S

B CO C
C = AB
1 位全加器

1 位全加器
1 位全加器

 在将两个多位二进制数相加时,除了最低位以外,
每一位的加法运算都要考虑来自低位的进位。

 能够将被加数、加数和来自低位的进位这3个数加
起来的运算电路称为全加器。
1 位全加器

 全加器真值表  卡诺图

A B Ci S CO S B

0 0 0 0 0 0 1 0 1
0 0 1 1 0
A 1 0 1 0
0 1 0 1 0
0 1 1 0 1 Ci

1 0 0 1 0 CO B
1 0 1 0 1
0 0 1 0
1 1 0 0 1
1 1 A 0 1 1 1
1 1 1
Ci
1 位全加器

 全加器真值表 逻辑表达式

A B Ci S CO S = A B Ci + A BCi + AB Ci + ABCi
0 0 0 0 0
= A  B  Ci
0 0 1 1 0
0 1 0 1 0 CO = AB + AB Ci + A BCi
0 1
0 1 1 = AB + ( A  B)Ci
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
1 位全加器

逻辑图 S = A  B  Ci
CO = AB + ( A  B)Ci

A B A  B  Ci
A   S A  S
AB ( A  B)Ci
B CO CO B
Ci Ci CI CO CO
CO

( a ) 逻辑图 ( b ) 逻辑符号
多位数加法器

 如何实现两个四位二进制数
相加?
A 3 A 2 A 1 A 0 + B3 B2 B1 B0 = ?
再见!
组合逻辑电路

华中科技大学 罗杰
多位数加法器
加 法 器
多位数加法器

 如何实现两个四位二进制数
相加?
A3 A 2 A1 A0 + B 3 B 2 B 1 B 0 = ?
多位数加法器

 串行进位加法器

A3 B3 A2 B2 A1 B1 A0 B0

CC3 3  C2  C1 CO  C0 CO  CI C-1
CO CI CO CI CI 0

S3 S2 S1 S0

 低位的进位信号送给邻近高位作为输入信号;
 任何 1 位的加法运算必须在相邻低位的运算完成之后才
能进行,这种进位方式称为串行进位。
多位数加法器

 如何提高多位数加法器
的运算速度呢?
多位数加法器

 超前进位加法器
多位数加法器

 以4位二进制数的加法
运算为例:

3位 2位 1位 0位

A3 A2 A1 A0
+ B3 B2 B1 B0
C3 S3 S2 S1 S0
多位数加法器

 以4位二进制数的加法
 各位的加法运算可以
运算为例:
表示为:
3位 2位 1位 0位
Si  Ai  Bi  Ci 1
A3 A2 A1 A0
+ B3 B2 B1 B0 Ci  Ai Bi  ( Ai  Bi )Ci 1

C3 S3 S2 S1 S0
多位数加法器

 各位的加法运算可以
表示为:

Si  Ai  Bi  Ci 1

Ci  Ai Bi  ( Ai  Bi )Ci 1
多位数加法器

Gi  Ai Bi
 假设  各位的加法运算可以
Pi  Ai  Bi
表示为:
则有:
Si = Pi  Ci-1 Si  Ai  Bi  Ci 1

Ci = Gi + Pi Ci-1 Ci  Ai Bi  ( Ai  Bi )Ci 1
多位数加法器

Gi  Ai Bi
 假设 • 当Ai =Bi=1时,Gi=1,Pi=0,
Pi  Ai  Bi
则 Ci=1。
则有:
• 不论进位Ci-1为何值,都会
Si = Pi  Ci-1
向高位输出进位信号,所以
Ci = Gi + Pi Ci-1
Gi 称为产生变量。
多位数加法器

Gi  Ai Bi
 假设 • 当Ai =0,Bi =1,或Ai =1,
Pi  Ai  Bi
Bi =0时,Pi =1,Gi =0,
则有:
则 Ci = Ci1。
Si = Pi  Ci-1
• 从低位来的进位能传送到高
Ci = Gi + Pi Ci-1 位的进位输出端,故 Pi 称
为传输变量。
多位数加法器

 根据 Ci = Gi + Pi Ci-1 , 得到 4 位全加器进位信号:

C0= G0+P0 C-1


C1= G1+P1 C0 = G1+P1 G0+ P1P0 C-1
C2= G2+P2 C1
= G2+P2 G1+ P2 P1 G0+ P2 P1 P0C-1
C3= G3+P3 C2
=G3+P3 G2+P3P2 G1+ P3P2 P1 (G0+ P0C-1)

进位信号只由被加数、加数和 C-1决定,而与其它低位的进位无关。
多位数加法器

 超前进位产生电路:
C3
C3
P3
P3
C2
G3 G3

P2
C1
C2
G2 超前进位
P2 产生电路
P1
G2 C0
G1
C1
P1 P0
G1
G0
P0
C0 C1
G0
C-1
多位数加法器
C3
 根据 Si = Pi  Ci-1 ,
CO
B3 P3 P3
A3 S3
得到 4 位全加器的各个和数:
C2
G3

B2 P2
S0= P0  C-1
P2
A2 C1 S2
G2 超前进位
S1= P1  C0 产生电路 P1
B1 P1
S2= P2  C1 A1 C0 S1
G1

S3= P3  C2 B0 P0 P0
A0 S0

 超前进位加法器的逻辑图: G0
C1 C1
多位数加法器

 集成4位超前进位加法器

A3 B3 A2 B2 A1 B1 A0 B0

CO 74HC283 C–1

S3 S2 S1 S0

74HC283逻辑符号
多位数加法器

例 用两片 74LS283 构成一个8位二进制数加法器。

A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 A0 B0

A3 B3 A2 B2 A1 B1 A0 B0 A3 B3 A2 B2 A1 B1 A0 B0

CO 74HC283(2) C–1 CO 74HC283(1) C–1 0


S3 S2 S1 S0 S3 S2 S1 S0

C7 S7 S6 S5 S4 S3 S2 S1 S0

在片内是超前进位,而片与片之间是串行进位。
多位数加法器
 超前进位加法器的层次化结构
B15~B12 A15~A12 B11~B8 A11~A8 B7~B4 A7~A4 B3~B0 A3~A0
~B3 ~B3 ~B3 ~B3 ~B3 ~B3 ~B3 ~B3

4 位加法器 4 位加法器 4 位加法器 4 位加法器 C-1


(3) (2) (1) (0)

g3 p3 g2 p2 g1 p1 g0 p0
S15~S12 S11~S8 S7~S4 S3~S0

~B3 ~B3 ~B3 ~B3


多位数加法器
 超前进位加法器的层次化结构
B15~B12 A15~A12 B11~B8 A11~A8 B7~B4 A7~A4 B3~B0 A3~A0
~B3 ~B3 ~B3 ~B3 ~B3 ~B3 ~B3 ~B3

4 位加法器 4 位加法器 4 位加法器 4 位加法器 C-1


(3) (2) (1) (0)

g3 p3 g2 p2 g1 p1 g0 p0
S15~S12 S11~S8 S7~S4 S3~S0

~B3 ~B3 ~B3 ~B3

进位产生 进位产生 进位产生 进位产生


C15 (3) C11 (2) C7 (1) C3 (0)
再见!
数字电路与逻辑设计
Digital Circuit and Logic Design

组合电路分析例题选讲

杨铀
电子信息与通信学院
概念与规则
 概念:组合电路分析  基础:逻辑4种表达方式间的转换

电路语言 逻辑图/电路图
逻辑图/电路图

逻辑转换

波形图 逻辑表达式

总结规律

真值表/卡诺图
人类语言 电路功能描述

2
例题分析 1
逻辑图/电路图
 试分析下图所示组合逻辑电路的逻辑功能

波形图 逻辑表达式

真值表/卡诺图

解:

L=(AB)(CD) 可以总结规律吗?

3
例题分析 1
L=(AB)(CD) 逻辑图/电路图

A B C D L 波形图 逻辑表达式
0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 0 真值表/卡诺图
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1 现象 功能
1 0 0 0 1
1 0 0 1 0 当输入信号中1的个数
1 0 1 0 0 是奇数时,输出为1
1 0 1 1 1 总结 奇偶校验电路
1 1 0 0 0
当输入信号中1的个数
1 1 0 1 1
是偶数时,输出为0
1 1 1 0 1
1 1 1 1 0 4
例题分析 2
逻辑图/电路图
 试分析下图所示组合逻辑电路的逻辑功能

A 波形图 逻辑表达式

F 真值表/卡诺图
S3
S2

S1
解:
S0 F=S3AB+S2ABS1B+S0B+A

S3~S0 具有使能的功能,AB的取值需谨慎
5
例题分析 2
逻辑图/电路图
F=S3AB+S2ABS1B+S0B+A

S3 S2 S1 S0 F 波形图 逻辑表达式
0 0 0 0 A
0 0 0 1 A+B
0 0 1 0 A+B
0 0 1 1 1 真值表/卡诺图
0 1 0 0 AB
0 1 0 1 B
0 1 1 0 A B
0 1 1 1 A+B 现象 功能
1 0 0 0 AB
1 0 0 1 AB
1 0 1 0 B S3~S0取不同值的时候,
1 0 1 1 AB 分别使能了不同的函 总结 多功能函数发生器
1 1 0 0 0
数组合
1 1 0 1 AB
1 1 1 0 A+B
1 1 1 1 A 6
小结
 强化概念:我给你的是电路图,你给我的是功能描述

 强化方法:

再见! 7
练习题选讲——组合逻辑电路分析

华中科技大学 左冬红
组合逻辑电路分析

根据已知组合逻辑电路,经分析确定电路的逻辑功能

分析一般步骤:
由电路结构分析数据
由逻辑图写出各输出端的逻辑表达式 通路和控制信号构成

门电路 化简和变换逻辑表达式 典型集成芯片 查阅集成芯片功能表

列出真值表
列出电路功能表

根据真值表找规律,经分析最后确定其功能 经分析最后确定其功能
组合逻辑电路分析
电路如图所示, A、B为两组四位二进制数,74HC85为四位比较器,74HC157为
四位二选一数据选择器。试分析电路的工作原理。
A 3 A 2 A 1 A 0 B3 B2 B1 B0

A 3 A 2 A 1 A 0 B3 B2 B1 B0 A 3 B3 A 2 B2 A 1 B1 A 0 B0
0 IA>B
0 IA<B 74HC85 74HC157 G
1 IA=B FA>B FA<B FA=B S
Y3 Y2 Y1 Y0

Y 3 Y2 Y1 Y0
Z

(1) 当Z = 1时,输出四位二进制数Y = ? 当Z = 0时,输出Y = ?


(2) 指出电路的功能。
组合逻辑电路分析
(1) 当Z = 1时,输出四位二进制数Y = ? 当Z = 0时,输出Y = ?
A3A2A1A0 B3B2B1B0

A A AA B B B B A3B3A2B2A1B1A0B0
0 IA>B3 2 1 0 3 2 1 0
0 IA<B 74HC85 S
74HC157 G
1 IA=B FA>B FA<B FA=B Y 3 Y 2Y 1 Y 0
Z=0,Y=A; Z=1,Y=B
Y 3Y 2 Y 1 Y 0
Z 74HC157功能表
输入 输出
数据通路 𝐺 S Y3 Y2 Y1 Y0
1 x 0 0 0 0
0 0 A3 A2 A1 A0
0 1 B3 B2 B1 B0
组合逻辑电路分析
74HC85功能表
(2) 指出电路的功能。
A 3 B3 A 2 B2 A 1 B1 A 0 B0 IA>B IA<B IA=B FA>B FA<B FA=B
A3A2A1A0 B3B2B1B0 > x x x x x x 1 0 0
< x x x x x x 0 1 0
= > x x x x x 1 0 0
A A AA B B B B A B A B ABA B
0 IA>B3 2 1 0 3 2 1 0 = 3 3 <2 2 1 1 x 0 0 x x x x 0 1 0
0 IA<B 74HC85 74HC157 G
1 IA=B FA>B FA<B FA=B =S = >
Y 3 Y 2Y 1 Y 0 x x x x 1 0 0
= = < x x x x 0 1 0
= =Y3Y2Y1Y= 0 > x x x 1 0 0
Z = = = < x x x 0 1 0

控制信号 = = = = 1 0 0 1 0 0
= = = = 0 1 0 0 1 0
A<B时,Z=1 = = = = x x 1 0 0 1

A≥B时,Z=0 = = = = 1 1 0 0 0 0
= = = = 0 0 0 1 1 0
组合逻辑电路分析
(2) 指出电路的功能。

A 3 A 2 A 1 A 0 B3 B2 B1 B0

A A A A B B B B A 3 B 3 A 2 B2 A 1 B1 A 0 B0
0 IA>B 3 2 1 0 3 2 1 0
0 IA<B 74HC85 74HC157 G
1 IA=B FA>B FA<B FA=B S
Y3 Y2 Y1 Y0

Y 3 Y2 Y1 Y0
Z
A≥B时,Z=0 Z=0,Y=A;
A<B时,Z=1 Z=1,Y=B

Y=MAX(A,B)
再见!

华中科技大学 左冬红
数字电路与逻辑设计
Digital Circuit and Logic Design

组合电路设计例题选讲

杨铀
电子信息与通信学院
概念与规则
 概念:组合电路设计  基础:逻辑4种表达方式间的转换

人类语言 电路功能描述
真值表/卡诺图

逻辑抽象

波形图 逻辑表达式

逻辑转换

逻辑图/电路图
电路语言 逻辑图/电路图

2
例题讲解 1
真值表/卡诺图
 试根据下面的波形图设计一个电路

波形图 逻辑表达式

逻辑图/电路图

解:
A B L
0 0 1
0 1 0 可以建立逻辑图了吗?
1 0 0
1 1 1
3
例题讲解 1
A B L 真值表/卡诺图

0 0 1
0 1 0
波形图 逻辑表达式
1 0 0
1 1 1

逻辑图/电路图

L=AB+AB

4
例题讲解 2
某雷达站有A、B、C三部雷达,其中A和B消耗功率相等,C的消耗功率是A的2倍。
这些雷达由两台发电机X和Y供电,发电机X的最大输出功率等于雷达A的功率消耗
,发电机Y的最大输出功率是X的3倍。
(1) 用与、或、非门设计一个逻辑电路,利用各雷达的起动和关闭信号,以最节约电
能的方式起、停发电机;
(2) 用74HC138实现(1)的功能

解: 逻辑抽象

A、B、C是事件产生的原因,应定为输入变量;两台发电机 X 和 Y 是事件
产生的结果,定为输出变量。

设输入变量A、B、C为1表示雷达起动,为0雷达关闭。输出变量X、Y为1,
表示发电机起动;为0,表示发电机停止。
5
例题讲解 2
A B C X Y 真值表/卡诺图
0 0 0 0 0
0 0 1 0 1
0 1 0 1 0 波形图 逻辑表达式

0 1 1 0 1
1 0 0 1 0
逻辑图/电路图
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

X=ABC+ABC+ABC
Y=ABC+ABC+ABC+ABC+ABC

6
例题讲解 2
X=ABC+ABC+ABC 真值表/卡诺图

Y=ABC+ABC+ABC+ABC+ABC

波形图 逻辑表达式
Y B
X B

1 1 1
逻辑图/电路图
A 1 1 A 1 1 1

C C

B
X  A BC  AB C  ABC
X

Y  AB  C C
Y
7
例题讲解 2
2 4 7
X=ABC+ABC+ABC X  ABC  ABC  ABC
Y=ABC+ABC+ABC+ABC+ABC
1 3 5 6 7
Y  ABC  ABC  ABC  ABC  ABC

0
0 X
1

Y
C
B
A

8
小结
 强化概念:我给你的是功能描述,你给我的是逻辑图

 强化方法:

再见! 9
练习题选讲——组合逻辑电路设计

华中科技大学 左冬红
组合逻辑电路设计
根据实际逻辑问题,设计出所要求逻辑功能的最简单逻辑电路。
一般步骤:
根据实际逻辑问题的因果关系确定输入、输
逻辑抽象 出变量,并定义逻辑状态的含义

根据逻辑描述列出真值表 无关项

由真值表写出逻辑表达式 与或式 或与式

简化和变换逻辑表达式,画出逻辑图 代数化简 卡诺图化简 逻辑规则

使用最少的器件(数量、种类)、 使用限定器件
最少的输入端
组合逻辑电路设计
设X、Z均为三位二进制数并分别用X2 X1 X0和Z2 Z1 Z0表示,X为输入,Z
为输出,要求二者之间有如下关系:
当 2≤X ≤4 时 Z = X + 3
X<2时 Z =0
X>4时 Z=1
(1) 列出实现上述要求的逻辑函数的真值表。
(2)写出输出逻辑函数的最小项之和表达式。
(3) 试用一片三线—八线译码器74HC138和必要的门电路
构成实现上述要求的逻辑电路。要求标出74HC138各控制
信号的有效电平 (规定A2,A1,A0依次分别接X2,X1,X0)
组合逻辑电路设计
设X、Z均为三位二进制数并分别用X2 X1 X0和Z2 Z1 Z0表示,X为输入,Z
为输出,要求二者之间有如下关系:
输入 输出
当 2≤X ≤4 时 Z = X + 3
X2 X1 X0 Z2 Z1 Z0
X<2时 Z =0
0 0 0 0 0 0
X>4时 Z=1
0 0 1 0 0 0
(1) 列出实现上述要求的逻辑函数的真值表。 0 1 0 1 0 1
0 1 1 1 1 0
X(三位二进制) X(十进制) Z(十进制) Z(三位二进制)
1 0 0 1 1 1
010 2 5 101
1 0 1 0 0 1
011 3 6 110
1 1 0 0 0 1
100 4 7 111
1 1 1 0 0 1
组合逻辑电路设计
设X、Z均为三位二进制数并分别用X2 X1 X0和Z2 Z1 Z0表示,X为输入,Z
为输出,要求二者之间有如下关系:
输入 输出
当 2≤X ≤4 时 Z = X + 3
X2 X1 X0 Z2 Z1 Z0
X<2时 Z =0
m0 0 0 0 0 0 0
X>4时 Z=1
m1 0 0 1 0 0 0
(2)写出输出逻辑函数的最小项之和表达式。 m2 0 1 0 1 0 1
m3 0 1 1 1 1 0
𝒁𝟐 = 𝒎(𝟐, 𝟑, 𝟒) m4 1 0 0 1 1 1
m5 1 0 1 0 0 1
𝒁𝟏 = 𝒎(𝟑, 𝟒) m6 1 1 0 0 0 1
m7 1 1 1 0 0 1

𝒁𝟎 = 𝒎(𝟐, 𝟒, 𝟓, 𝟔, 𝟕)
组合逻辑电路设计
设X、Z均为三位二进制数并分别用X2 X1 X0和Z2 Z1 Z0表示,X为输入,Z
为输出,要求二者之间有如下关系:
当 2≤X ≤4 时 Z = X + 3 𝒁𝟐 = 𝒎(𝟐, 𝟑, 𝟒)
X<2时 Z =0
X>4时 Z=1 𝒁𝟏 = 𝒎(𝟑, 𝟒)
(3) 试用一片三线—八线译码器74HC138和必要的门电路
构成实现上述要求的逻辑电路。要求标出74HC138各控制 𝒁 = 𝒎(𝟐, 𝟒, 𝟓, 𝟔, 𝟕)
𝟎
信号的有效电平 (规定A2,A1,A0依次分别接X2,X1,X0)

1 E3 Y0 当E3 =1 ,𝐄𝟐 = 𝐄𝟏 = 0时 𝒎𝟎 = 𝒀𝟎
0 E2 Y1
0 Y2 𝒎𝟏 = 𝒀𝟏
E1
74HC138 Y3
Y 0  A2  A1  A0 𝒀𝟏 =𝑨𝟐 ∙ 𝑨𝟏 ∙ 𝑨𝟎
X0 A0
Y4
Y5  m0 = 𝒎𝟏
X1 A1 Y6 𝒎𝟕 = 𝒀𝟕
X2
A2 Y7 𝒀𝟐 = 𝒎𝟐 。。。 𝒀𝟕 = 𝒎𝟕
组合逻辑电路设计
设X、Z均为三位二进制数并分别用X2 X1 X0和Z2 Z1 Z0表示,X为输入,Z
为输出,要求二者之间有如下关系:
当 2≤X ≤4 时 Z = X + 3
X<2时 Z =0
X>4时 Z=1
(3) 试用一片三线—八线译码器74HC138和必要的 1 E3 Y0
0 E2 Y1
门电路构成实现上述要求的逻辑电路。要求标出 0 Y2
E1
74HC138各控制信号的有效电平 (规定A2,A1,A0 74HC138 Y3 Z2
依次分别接X2,X1,X0) Y4
X0 A0 Y5
X1 A1 Y6
𝒁𝟐 = 𝒎 𝟐, 𝟑, 𝟒 = 𝒀𝟐 +𝒀𝟑 +𝒀𝟒 X2 A2 Y7
组合逻辑电路设计
设X、Z均为三位二进制数并分别用X2 X1 X0和Z2 Z1 Z0表示,X为输入,Z
为输出,要求二者之间有如下关系:
当 2≤X ≤4 时 Z = X + 3
X<2时 Z =0
X>4时 Z=1
(3) 试用一片三线—八线译码器74HC138和必要的 1 E3 Y0
Z2
门电路构成实现上述要求的逻辑电路。要求标出 0 E2 Y1
0 E1 Y2
74HC138各控制信号的有效电平 (规定A2,A1,A0
74HC138 Y3 Z1
依次分别接X2,X1,X0) Y4
X0 A0 Y5
𝒁𝟐 = 𝒎 𝟐, 𝟑, 𝟒 = 𝒀𝟐 +𝒀𝟑 +𝒀𝟒 = 𝒀𝟐 ∙ 𝒀𝟑 ∙ 𝒀𝟒 X1 A1 Y6 Z0
X2 A2 Y7
𝒁𝟏 = 𝒎(𝟑, 𝟒) = 𝒀𝟑 ∙ 𝒀𝟒

𝒁𝟎 = 𝒎(𝟐, 𝟒, 𝟓, 𝟔, 𝟕) = 𝒀𝟐 ∙ 𝒀𝟒 ∙ 𝒀𝟓 ∙ 𝒀𝟔 ∙ 𝒀𝟕
再见!

华中科技大学 左冬红
教学内容、要求及小结

本章目的
使用 HDL 设计数字电路系统是当今的一种趋势。本章主要介绍 Verilog HDL
的基础知识、模块的基本结构以及建模方法;同时,还介绍了仿真测试代码的编
写方法、逻辑功能仿真流程、常用的系统任务和系统函数。主要内容包括:
 解释逻辑仿真与逻辑综合的含义
 介绍 Verilog HDL 模块的基本结构和语法规则
 说明 Verilog HDL 三种建模方法——结构级建模、数据流建模和行为级建

 解释模块的实例引用,说明实例引用时模块端口的连接方法和连接规则
 介绍仿真测试代码的编写方法和逻辑功能仿真流程
 说明常用的系统任务和系统函数

本节主要内容:
 硬件描述语言简介
 逻辑仿真与逻辑综合的含义
 Verilog HDL 模块的基本结构及描述方法

学习本节后,你应该能
 理解逻辑仿真与逻辑综合的含义
 掌握 Verilog HDL 模块的基本组成,例如,模块名、端口列表、变量声明、
描述逻辑功能的方法等

小结:
● HDL 是一种以文本形式来描述数字系统硬件电路的结构和行为的语言,用
它可以表示逻辑电路图、逻辑表达式,还可以表示更复杂的数字逻辑系统所完成
的逻辑功能(即行为)。
• 结构级建模、数据流建模和行为级建模是用 HDL 描述数字逻辑电路时的
三种不同描述风格。对组合逻辑电路可以使用任何一种建模方式,对时序逻辑电
路或复杂的逻辑电路通常使用行为级建模更方便。
● 对一个电路建模后,就可以进行逻辑仿真和逻辑综合。逻辑仿真是指用计
算机仿真软件对数字逻辑电路的结构和行为(功能)进行预测。逻辑综合是指从
HDL 描述的数字逻辑电路模型中导出电路元件表以及元件之间的连接关系(常
称为门级网表)的过程。
● 在 HDL 语言中,只有一部分语句描述的电路通过逻辑综合,可以得到具
体的硬件电路,我们将这样的语句称为可综合的语句。另一部分语句则专门用于
仿真分析,不能进行逻辑综合。
Verilog HDL语言概述

华中科技大学 左冬红
数字电路功能描述方式

逻辑真值表
A
A B L
A L
B L
0 0 1
B
0 1 0
1 0 0
1 1 1

A 1 0 0 1

B 1 1 0 0

1 0 1 0 L  A B  AB
L
t1 t2 t3 t4
01 Ve r i l o g H D L 语 言 概 述

System C
System Verilog
OO-VHDL
DE-VHDL
Verilog HDL
VHDL
ABEL
IEEE标准

几种常见的硬件描述语言
01 Ve r i l o g H D L 语 言 概 述
1. HDL基本概念

硬件描述语言HDL(Hardware Description Language )

逻辑电路图

逻辑表达式
文本形式描述
数字系统硬件
的结构和行为 复杂数字逻辑系统的逻辑功能

编写设计说明文档
01 Ve r i l o g H D L 语 言 概 述
1. HDL基本概念

HDL是高层次
自动化设计的
起点和基础。
01 Ve r i l o g H D L 语 言 概 述
2. HDL工具功能

计算机对HDL的处理包括

逻辑仿真 逻辑综合
01 Ve r i l o g H D L 语 言 概 述
2. HDL工具功能
 对数字逻辑电路的结构和行为进行预测

 以文本形式或时序波形图形式给出电路的输出
01 Ve r i l o g H D L 语 言 概 述
2. HDL工具功能
电路基本元件列表

从HDL描述的数字逻辑电路模型 导出
元件之间的连接关系

sel
a
out

b
01 Ve r i l o g H D L 语 言 概 述
3. HDL设计流程
子功能模块1


模 子功能模块2

1
子功能模块2仿真

顶 功能模块1仿真


块 子功能模块3

整体仿真 功



2
01 Ve r i l o g H D L 语 言 概 述
VHDL Verilog

系统级 系统级

算法级 算法级

RTL级 RTL级

逻辑级 逻辑级

门级 门级

版图级 版图级

能力 能力
01 Ve r i l o g H D L 语 言 概 述

VHDL
是一种数据类型性极强的语言。支持用户定义的数据类型。严格规定
只有类型、字位相同的数据才能进行传递和作用。能利用数据类型检
查编程的错误。可以使用抽象(比如枚举)类型为系统建模。

Verilog
数据类型简单。只能由语言本身定义,不能由用户定义。适于硬件结
构的建模,不适于抽象的硬件行为建模。

数据类型(data type)
01 Ve r i l o g H D L 语 言 概 述
易学性(easy to learn)
是一种数据类型很强的语言,欠直观。加之同一种
电路有多种建模方法,通常需要一定的时间和经验, VHDL
才能高效的完成设计。

由于Verilog HDL数据类型较简单,语法很直观,故
Verilog更易理解和好学。Verilog更像C,约有50%
Verilog 的结构来自C,其余部分来自ADA。在一般的应用
设计中,设计者使用任何一种语言都能完成任务,
本书仅介绍Verilog HDL。
再见!
Verilog HDL程序的基本结构

华中科技大学 左冬红
02 Ve r i l o g H D L 程 序 的 基 本 结 构
模块定义的一般语法结构
module 模块名(端口名1, 端口名2, 端口名3,…);

端口类型说明(input, output, inout);


参数定义(可选) ; 说明部分
数据类型定义(wire, reg等) ;
结构描述 实例化低层模块和基本门级元件 ;

数据流描述 连续赋值语句(assign)

逻辑功能描述部分 顺序任意

/*……*/ 语句块注释
行为描述 过程块结构(initial和always)
注释
行为描述语句 ; //…… 行注释
endmodule
01 Ve r i l o g H D L 程 序 的 基 本 结 构

/* 半加器的门级电路描述*/ 模块名
module HalfAdder_GL(A, B, Sum, Carry);
input A ,B ; //输入端口声明
端口类型说明
output Sum, Carry ; //输出端口声明
wire A ,B , Sum ,Carry ;
数据类型说明
xor X1 (Sum, A, B );
and A1 (Carry, A, B);
endmodule A
门级电路结构描述 B Sum
HalfAdder_GL

Carry
01 Ve r i l o g H D L 程 序 的 基 本 结 构
/* 半加器的数据流描述*/
module HalfAdder_DF(A, B, Sum, Carry);
input A, B ;
A
output Sum, Carry ; Sum = A⨁B
B
wire A, B, Sum, Carry ;
assign Sum = A ^ B; //用数据流赋值语句描述逻辑功能 Carry=AB
assign Carry = A & B;
endmodule

/* 半加器的行为描述*/
module HalfAdder_BH(A, B, Sum, Carry);
input A, B ;
output Sum, Carry ;
reg Sum, Carry ; //声明端口数据类型为寄存器
always @(A or B) begin
Sum = A ^ B; //用过程赋值语句描述逻辑功能
Carry = A & B;
end
endmodule
01 Ve r i l o g H D L 程 序 的 基 本 结 构 module HalfAdder_GL(A, B, Sum, Carry);
input A, B ;
output Sum, Carry ;
wire A, B, Sum, Carry ;

xor X1 (Sum, A, B );
and A1 (Carry, A, B);
endmodule

module HalfAdder_DF(A, B, Sum, Carry);


input A, B ;
output Sum, Carry ;
wire A, B, Sum, Carry ;
assign Sum = A ^ B;
assign Carry = A & B;
endmodule

module HalfAdder_BH(A, B, Sum, Carry);


input A, B ;
output Sum, Carry ;
reg Sum, Carry
always @(A or B) begin
Sum = A ^ B;
Carry = A & B;
end
endmodule
再见!
教学内容、要求及小结

本节主要内容:
 Verilog HDL 的词法规定
 四种逻辑值的集合
 常量及其表示方法
 变量的数据类型及其表示方法

学习本节后,你应该能
 了解间隔符、标识符、注释以及逻辑值集合的规定
 理解整数、实数、字符串、参数的语法规则
 掌握数据类型(线网型、寄存器型)的声明方法

小结:
● 编写 Verilog HDL 程序模块必须遵守它的词法规定、语法规则。
● 变量的数据类型分为线网型、寄存器型两大类。其中,wire 和 reg 是两种
常用的数据类型。
● 带基数格式的整数表示法是 Verilog HDL 特有的,一般表示方法如下:
<+/-> <size>'<signed> <base format> <number>
● 常用参数(parameter)语句声明一个标识符代表一个常量,称为符号常量。
Verilog HDL的基本语法规则

华中科技大学 左冬红
03 Ve r i l o g H D L 的 基 本 语 法 规 则

词法规

逻辑值
……
集合
基本语
法规则

数据类 常量及
型 其表示
03 Ve r i l o g H D L 的 基 本 语 法 规 则

词法规定

标识符 关键词

注释符

间隔符
03 Ve r i l o g H D L 的 基 本 语 法 规 则

间隔符

空格符 TAB 键 换行符


换页符
(\b) (\t) (\n)
03 Ve r i l o g H D L 的 基 本 语 法 规 则

注释符

多行注释符(用于写多行注释): /* --- */

单行注释符 :以//开始到行尾结束为注释文字
03 Ve r i l o g H D L 的 基 本 语 法 规 则

标识符
 由英文字母、数字、$符和下划线组成
• 给对象(如模块名、电路的输  以英文字母或下划线开始
入与输出端口、变量等)取名
 不能以数字或$符开头
所用的字符串。

A ≠ a

clk counter8 _net bus_A … √


2cp $latch a*b … ×
03 Ve r i l o g H D L 的 基 本 语 法 规 则
关键词
• 是Verilog语言本身规定的特殊字符串,用来定义语言
的结构。关键词一般都是小写,关键词不能作为标识
符使用 。

module endmodule input output

wire reg and …


03 Ve r i l o g H D L 的 基 本 语 法 规 则

逻辑值集合
0 逻辑0、逻辑假

1 逻辑1、逻辑真
x或X 不确定的值(未知状态)
z或Z 高阻态
03 Ve r i l o g H D L 的 基 本 语 法 规 则

常量及其表示

整数型
常量

实数型
常量

字符串
型常量
03 Ve r i l o g H D L 的 基 本 语 法 规 则

整数型常量 <+/-> <size>'<signed><base format><number>

十进制数形式 带基数形式 十 b或B


s

制 d或D
S

h或H
o或O

16 -15 …
3’b101 4’shf 5’o37 8’he3

8’b1001_0011 12’h13x

× 4’d-8 3 ’b101 (3+2)’b11010 4af


03 Ve r i l o g H D L 的 基 本 语 法 规 则

实数型常量

十进制计数法 科学计数法

5E-4 23_5.1e2
0.1 2.0 6.67 …
0.0005 23510.0

e与E相同
03 Ve r i l o g H D L 的 基 本 语 法 规 则

字符串常量

• 字符串是用双撇号括起来的字符序列,它必须包含在同
一行中,不能分成多行书写

“this is a string” “hello world!”


03 Ve r i l o g H D L 的 基 本 语 法 规 则

reg [1:8*12] message;


字符串常量 initial
begin
message = “hello world!”;
end

特殊字符表示 含 义
\n 表示换行符
\t 表示制表符(Tab键)
\\ 表示反斜杠字符(\)
本身
\'' 表示双撇号字符('')
\ddd 3位八进制数表示的
ASCII值
03 Ve r i l o g H D L 的 基 本 语 法 规 则

符号常量

• Verilog 用参数定义语句定义一个标识符代表
一个常量,称为符号常量

parameter 参数名1=常量表达式1,参数名2=常量表达式2……

parameter BIT=1, BYTE=8, PI=3.14;


03 Ve r i l o g H D L 的 基 本 语 法 规 则

符号常量

parameter <name> = <value>;

‘define <name> <string>


03 Ve r i l o g H D L 的 基 本 语 法 规 则
数据类型
变量的数据类型

线网型

寄存器型
03 Ve r i l o g H D L 的 基 本 语 法 规 则

线网型变量
表示硬件电路中元件之间实际存在的物理连线.

线网类型<signed> <[msb: lsb]>变量名1,变量名2,…… ,变量名n;

常 缺 缺
用 省 省
的 是 值
类 无 为

1
型 符 位
是 号
wire 数
03 Ve r i l o g H D L 的 基 本 语 法 规 则
线网类型及其含义
线网类型 功能说明
wire, tri 表示元件之间的连线,wire为一般连线;tri描述由多个信号源驱动的线网。
wor, trior 具有线或特性的线网
wand, triand 具有线与特性的线网
trireg 具有电荷保持特性的线网类型,用于开关级建模
tri1 上拉电阻,用于开关级建模
tri0 下拉电阻,用于开关级建模
supply1 用于对电源建模,高电平1
supply0 用于对地建模,低电平0
03 Ve r i l o g H D L 的 基 本 语 法 规 则

线网变量 wire [7:0] Databus;


wand [2:0] Haddr;
parameter DATA_W = 16;
wire signed [DATA_W - 1 : 0] PWdata, PRdata;
supply0 Logic_0, VSS;
supply1 Logic_1, VDD;

A L
B
G1
03 Ve r i l o g H D L 的 基 本 语 法 规 则
“多重驱动”

A
B L
C
03 Ve r i l o g H D L 的 基 本 语 法 规 则
数据类型
变量的数据类型

线网型

寄存器型

表示一个抽象的数据存储单元
03 Ve r i l o g H D L 的 基 本 语 法 规 则

寄存器变量类型及其含义

寄存器类型 含义
reg 寄存器型变量,默认值为x
integer 32位带符号的整数型变量,默认值为x
real/realtime 64位带符号的实数型变量,默认值为0
time 64位无符号的时间型变量,默认值为x

reg clock; //一个1位寄存器变量的声明


reg [3:0] counter; //一个4位寄存器变量的声明
再见!
教学内容、要求及小结

本节主要内容:
 Verilog HDL 内部预定义的 12 个逻辑门原语(Primitive)
 门级建模方法

学习本节后,你应该能
 实例引用 Verilog HDL 提供的逻辑门原语(Primitive)
 掌握实例引用逻辑门的一般格式
 用结构级建模方式对逻辑图进行描述

小结:
● 门级建模就是引用 Verilog HDL 提供的逻辑门原语(Primitive) 对逻辑图
进行描述,它是 Verilog HDL 结构级建模的一种基本形式。而引用自定义的子模
块进行逻辑设计,则是结构建模的另一种形式,将在分层次的电路设计中进行介
绍。
● 十二个逻辑门原语分别为 and、nand、or、nor、xor、xnor、buf、not、bufif1、
bufif0、notif1 和 notif0。实例引用这些逻辑门时,输出端口放在最左边,后面是
输入端口,或者控制端口。引用名可以省略不写。
Verilog HDL结构级建模

华中科技大学 左冬红
04 Ve r i l o g H D L 结 构 级 建 模

数据流建

结构级建 行为级建
模 模

逻辑功
能描述
04 Ve r i l o g H D L 结 构 级 建 模

结构级建模
• 根据逻辑电路的结构(逻辑图),实例引用Verilog HDL中
内置的基本门级元件、用户定义的元件或其他模块,来描
述电路结构图中的元件以及元件之间的连接关系。

门级建模

• 内置12个基本门级元件(Primitive,“原语”)模型,引
用这些基本门级元件对逻辑图进行描述,也称为门级建模。
04 Ve r i l o g H D L 结 构 级 建 模

Verilog HDL 基本门级元件


(Primitive : 原语)

多输出门

多输入门 三态门

门级元

04 Ve r i l o g H D L 结 构 级 建 模

多输入门

• 只有单个输出,1个或多个输入

and nand or

nor xor xnor


04 Ve r i l o g H D L 结 构 级 建 模
原语名称 图形符号 逻辑表达式
A
and(与门) B
L L = A & B

A
nand(与非门) B
L L = ~(A & B)
A
or(或门) B
L L = A | B
A
nor(或非门) B
L L =~( A | B)
A
xor(异或门) B
L L = A ^ B
A
xnor(同或门) B
L L = A ~^ B

gate_name <instance> (outputA, input1, input2,…, inputN);


输 输
出 入
04 Ve r i l o g H D L 结 构 级 建 模
真值表举例

and真值表 nand真值表
输入1 输入1
and nand
0 1 x z 0 1 x z
0 0 0 0 0 0 1 1 1 1
输 1 0 1 x x 输 1 1 0 x x
入 入
2 x 0 x x x 2 x 1 x x x
z 0 x x x z 1 x x x
04 Ve r i l o g H D L 结 构 级 建 模

多输出门

• 允许有多个输出,但只有一个输入

buf not

out1 out1
out2 out2
in in


outN outN

buf B1(out1,out2,…,
in ); not N1(out1,out2,…,in );
04 Ve r i l o g H D L 结 构 级 建 模

buf真值表

输入
buf
0 1 x z
输出 0 1 x x

not真值表

输入
not
0 1 x z
输出 1 0 x x
04 Ve r i l o g H D L 结 构 级 建 模
三态门
• 有一个输出,一个数据输入和一个控制输入

如果输入控制信号无效,则三态门的输出为高阻态z。
in out in out

ctrl bufif0 notif0 ctrl

三态门
in out
in out
bufif1 notif1
ctrl ctrl
04 Ve r i l o g H D L 结 构 级 建 模

三态门

bufif1 B1(out, in, ctrl);


bufif0 B0(out, in, ctrl);
notif1 N1(out, in, ctrl);
notif0 N0(out, in, ctrl);
04 Ve r i l o g H D L 结 构 级 建 模

三态门

bufif1真值表

控制输入
bufif1
0 1 x z
0 z 0 0/z 0/z

据 1 z 1 1/z 1/z
输 x z x x x

z z x x x
04 Ve r i l o g H D L 结 构 级 建 模

三态门

bufif0真值表
控制输入
bufif0
0 1 x z
0 0 z 0/z 0/z

据 1 1 z 1/z 1/z
输 x x z x x

z x z x x
04 Ve r i l o g H D L 结 构 级 建 模

三态门

notif1真值表

控制输入
notif1
0 1 x z
0 z 1 1/z 1/z

据 1 z 0 0/z 0/z
输 x z x x x

z z x x x
04 Ve r i l o g H D L 结 构 级 建 模

三态门

notif0真值表
控制输入
notif0
0 1 x z
0 1 z 1/z 1/z

据 1 0 z 0/z 0/z
输 x x z x x

z x z x x
04 Ve r i l o g H D L 结 构 级 建 模
门级建模举例- 2选1数据选择器
module _2to1muxtri (a,b,sel,out);
input a,b,sel;
output out; b out
tri out;
a
bufif1 (out,b,sel);
bufif0 (out,a,sel); sel

endmodule

小结:门级建模就是列出电路图结构中的元件,并按网表连接 。
04 Ve r i l o g H D L 结 构 级 建 模
门级建模举例- 1位全加器 u0

u1

module addbit(a, b, ci, sum, co); u3


input a, b, ci;
output sum, co; u2
wire a, b, ci, sum, co, n1, n2, n3;
xor u0(n1, a, b,),
u1(sum, n1, ci);
and u2(n2, a, b),
u3(n3, n1, ci);
or (co, n2, n3); •同一个基本门在当前模块中被调用多
endmodule 次,可在一条调用语句中加以说明,
中间以逗号相隔。
04 Ve r i l o g H D L 结 构 级 建 模
a n1
u0
b
sum
u1
ci

module addbit(a, b, ci, sum, co); u3 n3


input a, b, ci; co
n2 u4
u2
output sum, co;
wire a, b, ci, sum, co, n1, n2, n3; addbit
xor u0(n1, a, b,),
u1(sum, n1, ci);
and u2(n2, a, b),
u3(n3, n1, ci);
or u4(co, n2, n3);
endmodule
再见!
教学内容、要求及小结

本节主要内容:
 Verilog HDL 的九类运算符的符号及运算规则
 数据流建模方法

学习本节后,你应该能
 理解所有九类运算符的符号及运算规则
 了解逻辑相等运算符与条件全等运算符、位运算符与缩位运算符之间的差

 使用数据流建模方式描述逻辑表达式

小结:
● 数据流建模就是使用逻辑方程对电路逻辑功能进行描述的一种方式。在组
合逻辑建模中经常使用。
● 数据流建模使用的连续赋值语句,由关键词 assign 开始,后面跟着由操作
数和运算符等组成的逻辑表达式。
● Verilog HDL 定义了九类运算符,可对一个、两个或三个操作数进行运算。
● Verilog HDL 将根据运算符之间的优先级对表达式进行计算。不同的运算
符,其运算的优先级别是不同的。加上圆括号,可以改变运算的优先级顺序。
Verilog HDL数据流建模

华中科技大学 左冬红
05 Ve r i l o g H D L 数 据 流 级 建 模

assign 变量名 =表达式;

wire
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类) 运算符分类 所含运算符
+, -, *, /, %, **
算术运算符
关系运算符 <, >, <=, >=

相等运算符 ==, !=, ===, !==


逻辑运算符 !, &&, ||

按位运算符 ~, &, |, ^, ^~ or~^

缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^

移位运算符 <<, >>, <<<, >>>

条件运算符 ?:
拼接和复制运算符 { }, { {,} }
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类)

运算符分类 所含运算符
+, -, *, /, %, ** 'b101x+'b0111 'bxxxx
算术运算符
关系运算符 <, >, <=, >= 线网

相等运算符 ==, !=, ===, !== 无符号数 reg

逻辑运算符 !, &&, || 无s的基数格式整数

按位运算符 ~, &, |, ^, ^~ or~^


integer
缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^
有符号的reg
移位运算符 <<, >>, <<<, >>> 符号数
有符号的线网
条件运算符 ?:
有s的基数格式整数
拼接和复制运算符 { }, { {,} }
负数:二进制补码
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类)

运算符分类 所含运算符
算术运算符 +, -, *, /, %, **
真(值为 1)或者假(值为 0)
关系运算符 <, >, <=, >=
操作数中有一位为x或z ,则结果为 x
相等运算符 ==, !=, ===, !==
将位数较小操作数的位数补齐
逻辑运算符 !, &&, ||
有一个操作数为无符号数,则该表达式的其
按位运算符 ~, &, |, ^, ^~ or~^
余操作数均被当作无符号数处理
缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^

移位运算符 <<, >>, <<<, >>>

条件运算符 ?:
拼接和复制运算符 { }, { {,} }
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类)

运算符分类 所含运算符
算术运算符 +, -, *, /, %, **
相等(值为 1)或者不等(值为 0)
关系运算符 <, >, <=, >=
操作数中有一位为x或z ,则结果为 x
相等运算符 ==, !=, ===, !==
对应位(含X或Z)全一致(值为 1)
逻辑运算符 !, &&, || 或者不一致(值为 0)

按位运算符 ~, &, |, ^, ^~ or~^

缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^ c、d同为4’b10x0


移位运算符 <<, >>, <<<, >>>
c= =d c!=d c= = =d c!= =d
条件运算符 ?:
x x 1 0
拼接和复制运算符 { }, { {,} }
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类)

运算符分类 所含运算符
算术运算符 +, -, *, /, %, **

关系运算符 <, >, <=, >=


逻辑运算的结果为1位
相等运算符 ==, !=, ===, !==
逻辑运算符 !, &&, || 1位数,1表示逻辑真,0表示逻辑假

按位运算符 ~, &, |, ^, ^~ or~^ 多位数,非零的数作为逻辑真,


全0的数作为逻辑假
缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^

移位运算符 <<, >>, <<<, >>> 操作数中有一位为x或z,则运算结果为x,


仿真器一般作为假处理
条件运算符 ?:
拼接和复制运算符 { }, { {,} }
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类)

运算符分类 所含运算符
算术运算符 +, -, *, /, %, **

关系运算符 <, >, <=, >=

相等运算符 ==, !=, ===, !==


逻辑运算符 !, &&, || 运算结果与操作数位宽一致

按位运算符 ~, &, |, ^, ^~ or~^ 短操作数的左端高位部分以0补足

缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^ 短的操作数最高位是x,则扩展得到的高位也是x

移位运算符 <<, >>, <<<, >>>

条件运算符 ?:
拼接和复制运算符 { }, { {,} }
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类)

运算符分类 所含运算符
算术运算符 +, -, *, /, %, **
仅对一个操作数进行运算
关系运算符 <, >, <=, >=
按照从右到左的顺序依次对所有位进行运算
相等运算符 ==, !=, ===, !==
操作数的某一位为x,则结果为1位的不定态x
逻辑运算符 !, &&, ||

按位运算符 ~, &, |, ^, ^~ or~^


A:4’b1010 B:4’b1111
缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^

移位运算符 <<, >>, <<<, >>> A&B=1010

条件运算符 ?:
&A=1&0&1&0=0
拼接和复制运算符 { }, { {,} }
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类)

运算符分类 所含运算符
算术运算符 +, -, *, /, %, **

关系运算符 <, >, <=, >=


相等运算符 ==, !=, ===, !==
逻辑运算符 !, &&, ||

按位运算符 ~, &, |, ^, ^~ or~^


逻辑移位运算,所产生的空余位总是使用 0填充
缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^

移位运算符 <<, >>, <<<, >>> 向左移动时,所产生的空余位总是使用 0填充


条件运算符 ?:
向右移动时,则产生的空位总是填符号位
拼接和复制运算符 { }, { {,} }
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类)

运算符分类 所含运算符
算术运算符 +, -, *, /, %, **

关系运算符 <, >, <=, >=

相等运算符 ==, !=, ===, !==


逻辑运算符 !, &&, || x/z

按位运算符 ~, &, |, ^, ^~ or~^ 0

缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^ 1

移位运算符 <<, >>, <<<, >>>


condition_expr ?true_expr :
false_expr;
条件运算符 ?:
拼接和复制运算符 { }, { {,} }
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符 (9类) {信号1的某几位,信号2的某几位,……,信号n的某几位}

运算符分类 所含运算符
算术运算符 +, -, *, /, %, **

关系运算符 <, >, <=, >= A=1’b1,B=2’b10,C=2’b00

相等运算符 ==, !=, ===, !==


{B,C}=4’b1000
逻辑运算符 !, &&, ||
{A,B[1],C[0]}=3’b110
按位运算符 ~, &, |, ^, ^~ or~^ {A,B,C,3’b101}=8’b11000101。

缩位运算符 &, ~&, |, ~|, ^, ^~ or ~^


{4{A}}=4’b1111
移位运算符 <<, >>, <<<, >>>

条件运算符 ?: {2{A}, 2{B}, C}=8'b1110_1000

拼接和复制运算符 { }, { {,} }
{n{A}}
05 Ve r i l o g H D L 数 据 流 级 建 模
运算符的优先级
运算符号 优先级别
+(正)-(负) ! ~ 最高
**(指数)
* / %
+(二元加) -(二元减)
<< >> <<< >>>
< <= > >=
= = != = = = != =
& ~&
^ ^~ ~^
| ~|
&&
||
? : 最低
05 Ve r i l o g H D L 数 据 流 级 建 模
示例1 数据流描述模型 Y  D0  S  D1  S
& ~ | &

module mux2to1_dataflow(D0, D1, S, Y );


input D0, D1, S;
output Y;
wire Y ;
assign Y = D0&~S|D1&S;
endmodule
05 Ve r i l o g H D L 数 据 流 级 建 模
示例2 2选1数据选择器 S

module mux2x1_df (D0,D1,S,L); U1


input D0,D1,S;
output Y; D0 U2 A
Y
wire Y ; Snot U4
assign Y = S ? D1 : D0; D1
U3 B
endmodule
如果S=1,Y=D1;否则Y=D0。
05 Ve r i l o g H D L 数 据 流 级 建 模
E
示例3 2线-4线译码器
Y0

Y1

A0
module decoder_df (A1,A0,E,Y); Y2
input A1,A0,E;
A1
output [3:0] Y; Y3
assign Y[0] = ~(~A1 & ~A0 & ~E);
assign Y[1] = ~(~A1 & A0 & ~E);
assign Y[2] = ~(A1 & ~A0 & ~E); 𝒀𝟎 = 𝑨𝟎 ∙ 𝑨𝟏 ∙ 𝑬
assign Y[3] = ~(A1 & A0 & ~E);
𝒀𝟏 = 𝑨𝟎 ∙ 𝑨𝟏 ∙ 𝑬
endmodule
𝒀𝟐 = 𝑨𝟎 ∙ 𝑨𝟏 ∙ 𝑬
𝒀𝟑 = 𝑨𝟎 ∙ 𝑨𝟏 ∙ 𝑬
05 Ve r i l o g H D L 数 据 流 级 建 模
A
示例4 4位全加器 Sum

B 全加器

Cin Cout

module Binary_adder (A,B,Cin,Sum,Cout);


input [3:0] A,B;
input Cin;
output [3:0] Sum;
output Cout;
assign {Cout,Sum} = A + B + Cin;
endmodule
再见!
教学内容、要求及小结

本节主要内容:
 组合逻辑电路(行为)级建模方式
 always 语句的结构
 条件语句、分支语句、for 循环等语句的用法

学习本节后,你应该能
 掌握 always 语句的结构
 掌握条件语句、分支语句、for 循环等语句的用法
 使用行为级建模方式描述组合逻辑电路的功能

小结:
● 行为级建模主要使用由关键词 initial 或 always 定义的两种结构类型的描
述语句。组合逻辑和时序逻辑都可以使用行为级建模方式。本节重点讨论组合逻
辑的行为级建模方式。
● 一个模块的内部可以包含多个 initial 或 always 语句。initial 语句主要用于
仿真;而 always 语句既可以用于仿真,也可以描述可综合的逻辑电路。
● 在 always 语句内部有一系列过程性赋值语句,用来描述电路的功能(行
为)。过程性赋值语句包括在 always 内部使用的逻辑表达式、条件语句(if-else)

多路分支语句(case-endcase)和循环语句等。
● 用 always 语句描述硬件电路的逻辑功能时,always 后面紧跟着“事件控
制表达式”。在组合逻辑电路中,输入信号电平的变化通常会导致输出信号变化,
在 Verilog HDL 中,将这种输入信号的电平变化称为电平敏感事件。
硬件描述语言
Verilog HDL

华中科技大学 左冬红
组合逻辑电路的行为级建模
06 Ve r i l o g H D L 行 为 级 建 模

行为级建模

• 描述数字逻辑电路的功能和算法。

always

initial
06 Ve r i l o g H D L 行 为 级 建 模

Always内部过程性赋值语句

逻辑表达式

条件语句(if-else)

多路分支语句(case-endcase)

for循环语句(例如 for等)
06 Ve r i l o g H D L 行 为 级 建 模 always @( A or En)

always结构型语句 敏感事件表 always @( A,En)


always @(*)
always @ ( 事件控制表达式 )
有名块 begin:块名
块内局部变量的定义;
过程赋值语句1;
. ; 赋值语句左边
顺序语句块 . ; 必须为reg型
. ; 变量
过程赋值语句n;
end
06 Ve r i l o g H D L 行 为 级 建 模
if (condition_expr)
条件语句( if语句) true_statement;
else
false_ statement;

condition_expr = 0、x或z,“假”

condition_expr = 1, “真”

if (condition_expr1) true_statement1;
else if (condition_expr2) true_statement2;
else if (condition_expr3) true_statement3;
……
else default_statement;
06 Ve r i l o g H D L 行 为 级 建 模

Verilog语言中有3种形式的if语句:

if (condition_expr) if (condition_expr1)
true_statement; true_statement1;
else if (condition_expr2)
true_statement2;
else if (condition_expr3)
if (condition_expr) true_statement3;
true_statement; ……
else else
false_ statement; default_statement;
06 Ve r i l o g H D L 行 为 级 建 模
使用if-else语句对4选1数据选择器的行为进行描述
示例1
module mux4to1_bh(D, S, Y);
input [3:0] D; //输入端口
S1 input [1:0] S; //输入端口
S0
output reg Y;
D0 0 Y0
always @(D, S)
D1 1
0 Y if (S == 2’b00) Y = D[0];
1 else if (S== 2’b01) Y = D[1];
D2 0 else if (S== 2’b10) Y = D[2];
D3 1 Y1 else Y = D[3];
endmodule
06 Ve r i l o g H D L 行 为 级 建 模
case
casez(case_expr)
casex
item_expr1: statement1;
多路分支语句(case语句) Begin
赋值语句1;
z . ;
赋值语句n;
x end
item_expr2: statement2;

……
无关位 default: default_statement;
//default语句可以省略
endcase

无关值可以用“?”表示
06 Ve r i l o g H D L 行 为 级 建 模
4选1数据选择器。当En=0时,数据选择
示例2
器工作,En=1时,禁止工作,输出为0。
module mux4to1_bh (D, S, Y,En);
input [3:0] D,[1:0] S;
input En;
output reg Y;
always @(D, S, En) //2001, 2005 syntax
begin
if (En==1) Y = 0; //En=1时,输出为0
else //En=0时,选择器工作
case (S)
2’d0: Y = D[0];
2’d1: Y = D[1];
2’d2: Y = D[2];
2’d3: Y = D[3];
endcase
end
endmodule
再见!
教学内容、要求及小结

本节主要内容:
 自顶向下、自底向上的设计方法
 模块实例引用的规则
 分模块、分层次的电路建模方法

学习本节后,你应该能
 理解自顶向下、自底向上的设计方法
 掌握模块实例引用时端口的位置关联法和名称关联法
 了解实例引用时模块端口的连接规则
 使用分模块、分层次的方法对电路进行建模

小结:
● 分层次的电路设计通常有自顶向下(top-down)和自底向上(bottom-up)
两种设计方法。
● 分层次建模就是将一个比较复杂数字电路划分为多个组成模块,分别对每
个模块建模,然后将这些模块组合成一个总模块,完成所需的功能。
● 当一个模块被其他模块实例引用时,就形成了层次化结构。这种层次表明
了引用模块与被引用模块之间的关系,引用模块称为父模块,被引用的模块称为
子模块。
● 父模块与子模块之间端口信号的关联方式,通常有位置关联法和名称关联
法。位置关联法是指父模块与子模块的端口信号按照端口位置排列次序对应连接
的方式。名称关联法则是直接通过名称建立父模块和子模块之间端口的连接关系,
不需要考虑端口的排列次序。
硬件描述语言
Verilog HDL

华中科技大学 罗杰
分层次的电路设计
分层次的电路设计

实例引用基本门 关键字为assign, 关键字为 always,


元件或者子模块 对电路的布尔方 对电路的功能和算
程进行描述 法进行描述
分层次的电路设计

如何将多个子模块组合起来,
描述比较复杂的设计呢?
分层次的电路设计

 电路设计的两种方法:

 自顶向下(top-down)

 自底向上(bottom-up)
分层次的电路设计

 自顶向下的层次结构图:
顶层模块
(最终设计目标)

子模块 1 子模块 2 子模块 2 子模块 4

基本 基本 基本 基本 基本 基本 基本 基本
元件 元件 元件 元件 元件 元件 元件 元件
分层次的电路设计

 电路设计的两种方法:

 自顶向下(top-down)
先将最终设计目标定义成顶层模块,再按一定方法将顶
层模块划分成各个子模块,然后对子模块进行逻辑设计。
分层次的电路设计

 电路设计的两种方法:

 自顶向下(top-down)
先将最终设计目标定义成顶层模块,再按一定方法将顶
层模块划分成各个子模块,然后对子模块进行逻辑设计。
 自底向上(bottom-up)
由基本元件构成的各个子模块首先被确定下来,然后将
这些子模块组合起来构成顶层模块,最后得到满足设计
要求的电路。
分层次的电路设计

 半加器与全加器:

A B A  B  Ci
A S  A B A   S
B
AB ( A  B)Ci
B CO CO
C=AB
Ci CO

A  S
A  S
B
B CO C CI CO CO
Ci
分层次的电路设计

 4位二进制数加法器: A3 A2 A1 A0 + B3 B2 B1 B0 = ?

A3 B3 A2 B2 A1 B1 A0 B0

CC3 3  C2  C1 CO  C0 CO  CI C-1
CO CI CO CI CI 0

S3 S2 S1 S0
分层次的电路设计

 4位二进制数加法器设计:

//******* 一位半加器 ********


A S  A B
module halfadder (S,C,A,B); B
input A,B; //输入端口
output S,C; //输出端口 C=AB

xor (S,A,B); //实例引用逻辑门原语


and (C,A,B);
endmodule
分层次的电路设计

 4位二进制数加法器设计:
//******* 一位全加器 ********
module fulladder ( HA1 HA2
S1
Sum,Cout,A,B,Cin); A   Sum
input A,B,Cin; D1 D2
B CO CO
output Sum,Cout; C in g1 Cout
wire S1,D1,D2; //内部节点

//实例引用子模块halfadder,端口采用名称关联
halfadder HA1 (.A(A),.B(B),.S(S1),.C(D1));
halfadder HA2 (.A(S1),.B(Cin),.S(Sum),.C(D2));
or g1(Cout,D2,D1);

endmodule
分层次的电路设计

 4位二进制数加法器设计:
//******* 一位全加器 ********
module fulladder ( HA1 HA2
S1
Sum,Cout,A,B,Cin); A   Sum
input A,B,Cin; D1 D2
B CO CO
output Sum,Cout; C in g1 Cout
wire S1,D1,D2; //内部节点

//实例引用子模块halfadder,端口采用名称关联
halfadder HA1 (.A(A),.B(B),.S(S1),.C(D1));
halfadder HA2 (.A(S1),.B(Cin),.S(Sum),.C(D2));
or g1(Cout,D2,D1);

endmodule
分层次的电路设计

 4位二进制数加法器: A3 A2 A1 A0 + B3 B2 B1 B0 = ?

A3 B3 A2 B2 A1 B1 A0 B0

CC3 3  C2  C1 CO  C0 CO  CI C-1
CO CI CO CI CI 0

S3 S2 S1 S0
分层次的电路设计

//************ 四位全加器 ************


module _4bit_adder (S,C3,A,B,C_1);
input [3:0] A,B;
input C_1;
output [3:0] S;
output C3;
wire C0,C1,C2; //声明模块内部的连接线

fulladder U0_FA (S[0],C0,A[0],B[0],C_1);//实例引用模块


fulladder U1_FA (S[1],C1,A[1],B[1],C0); //端口位置关联
fulladder U2_FA (S[2],C2,A[2],B[2],C1);
fulladder U3_FA (S[3],C3,A[3],B[3],C2);

endmodule
分层次的电路设计

 4位二进制数加法器设计:
分层次的电路设计

 模块实例引用语句的格式:
module_name instance_name(port_associations);

子模块名 实例引用名 父、子模块端口的关联方式

位置关联法: 父模块与子模块的端口按照位置(即端口排
列次序)对应关联;

名称关联法:父模块与子模块之间的端口直接通过名称建立
连接关系,不需要考虑端口的排列次序。
分层次的电路设计

//************ 四位全加器 ************


module _4bit_adder (S,C3,A,B,C_1);
input [3:0] A,B;
input C_1;
output [3:0] S;
output C3;
wire C0,C1,C2; //声明模块内部的连接线

fulladder U0_FA (S[0],C0,A[0],B[0],C_1);//实例引用模块


fulladder U1_FA (S[1],C1,A[1],B[1],C0); //端口位置关联
fulladder U2_FA (S[2],C2,A[2],B[2],C1);
fulladder U3_FA (S[3],C3,A[3],B[3],C2);

endmodule
分层次的电路设计

//module fulladder (Sum,Co,A,B,Ci); //子模块声明语句

fulladder U0_FA (S[0],C0,A[0],B[0],C_1);//实例引用模块


分层次的电路设计

//******* 一位全加器 ********


module fulladder (
HA1 HA2
Sum,Cout,A,B,Cin); S1
A   Sum
input A,B,Cin;
output Sum,Cout; D1 D2
B CO CO
wire S1,D1,D2; //内部节点 C in g1 Cout

//实例引用子模块halfadder
halfadder HA1 (.A(A),.B(B),.S(S1),.C(D1));
halfadder HA2 (.A(S1),.B(Cin),.S(Sum),.C(D2));
or g1(Cout,D2,D1);

endmodule
分层次的电路设计

//module halfadder (S,C,A,B); //子模块声明语句

//实例引用子模块
halfadder HA2( 父模块
.A( S1 ), 端口名称
.B( Cin ),
.S( Sum ),
子模块 .C( D2 )
端口名称 );
分层次的电路设计

 引用模块时的注意事项:
• 模块只能以实例引用的方式嵌套在其他模块内,嵌套的层次
是没有限制的。
• 不能在一个模块内部使用关键词module和endmodule去定
义另一个模块,也不能以循环方式嵌套模块,即不能在
always语句内部引用子模块。
• 实例引用的子模块可以是一个Verilog HDL设计文件,也可
以是用别的HDL语言设计的元件,或者是 IP核模块。
(IP:Intellectual Property,知识产权)
分层次的电路设计

 引用模块时的注意事项:
• 在一条实例引用子模块的语句中,不能一部分端口用位置关
联,另一部分端口用名称关联,即不能混合使用这两种方式
建立端口之间的连接。

• 在 Verilog HDL中允许父模块、子模块的端口宽度不同,
但仿真器会给出警告信息,以便提醒用户注意。
分层次的电路设计

 有关模块端口数据类型的规定:

wire
wire inout

input output
reg 或wire wire reg 或wire wire
子模块

父模块
再见!
教学内容、要求及小结

本节主要内容:
 时序逻辑电路(行为)级建模方式基础
 always 语句的结构及边沿敏感事件的描述方法
 阻塞赋值语句与非阻塞赋值语句
 D 触发器与寄存器的行为级建模

学习本节后,你应该能
 理解阻塞赋值符与非阻塞赋值符
 掌握 always 语句的结构及边沿敏感事件的描述方法
 理解行为级模型中边沿敏感事件和电平敏感事件之间的区别
 使用行为级建模方式描述触发器、数据寄存器和移位寄存器的逻辑功能

小结:
● 行为级建模主要使用由关键词 initial 或 always 定义的两种结构类型的描
述语句。本节重点讨论时序逻辑的行为级建模方式。
● 用 always 语句描述时序电路的逻辑功能时,always 后面紧跟着“边沿敏
感事件表达式”。在同步时序逻辑电路中,触发器状态的变化仅仅发生在时钟脉
冲的上升沿或下降沿,我们将这种事件称为边沿触发事件。
● 在 always 或 initial 内部的赋值语句,我们称为过程赋值语句。其特征是:
只有当事件控制表达式满足条件时,赋值语句才会被执行,并将一个逻辑值赋给
一个变量。
● 阻塞型赋值使用 “=”号, 阻塞型赋值语句顺序执行,执行的顺序与语
句的位置有关;而非阻塞型赋值使用“<=”号。非阻塞型赋值语句执行的顺序与
语句的位置无关。它是先计算右边表达式的值,但并不马上给左边赋值,直到所
有表达式都计算完了,再一起赋值。一条非阻塞型赋值语句的执行,并不会影响
块中其它语句的执行。
● 对时序逻辑电路建模时,建议使用非阻塞赋值语句。
硬件描述语言
Verilog HDL

华中科技大学 罗杰
D 触发器的行为级建模
行为级建模基础

实例引用基本门 关键字为assign, 关键字为 always,


元件或者子模块 对电路的布尔方 对电路的功能和算
程进行描述 法进行描述
行为级建模基础

always 语句的一般用法: 也称为敏感信号列表.

always @(事件控制表达式) 敏感事件有两种类型:


begin:块名
 电平敏感事件
块内局部变量的定义;
一条或多条过程赋值语句;  边沿触发事件
end
行为级建模基础

 电平敏感事件
在组合逻辑电路和锁存器中,输入信号电平的变化通常会导致输
出信号变化,我们将这种输入信号的电平变化称为电平敏感事件。

 边沿触发事件
在同步时序逻辑电路中,触发器状态的变化仅仅发生在时钟脉冲
的上升沿或下降沿,我们将这种事件称为边沿触发事件。
行为级建模基础

如何说明时钟信号的
上升沿、下降沿呢?
通常用下列关键词:
posedge(上升沿)、
negedge(下降沿)
行为级建模基础

//Verilog 1995标准
always @(posedge CP or negedge CR)

或者,
//Verilog2001,2005标准
always @(posedge CP, negedge CR)

只有当CP信号的上升沿到来或者清零信号CR跳变为低电平时,
后面的过程语句才能被执行。
行为级建模基础

注意:

always @(posedge CP or ~CR)

电平敏感事件和边沿敏感事件不能同时
出现在敏感信号列表中。
行为级建模基础

例 module Dff (Q,CP,Data);


Data Q
1D
input CP,Data;
CP C1
output Q; reg Q;
always @(posedge CP) 时钟下降沿:
begin @(negedge CP)
Q = Data;
过程赋值语句
end
endmodule
行为级建模基础

例 module Dff (Q,CP,Data);


Data Q
1D
input CP,Data;
CP C1
output Q; reg Q;
always @(posedge CP) 时钟下降沿:
begin @(negedge CP)
Q = Data;
过程赋值语句
end
endmodule
行为级建模基础

always 语句的一般用法:

always @(事件控制表达式)
begin:块名
块内局部变量的定义;
一条或多条过程赋值语句;
end
行为级建模基础

 连续赋值语句:
assign Y= (~S & D0) | (S & D1) ;

无论何时,只要右边表达式中任何一个变量的值发生变化,就
会计算表达式的值,并立即赋给等号左边的变量,这种赋值称
为连续赋值。

 过程赋值语句:

在 always 或 initial 内部的赋值语句,我们称为过程赋值语句。


只有当“事件控制表达式”满足条件时,赋值语句才会被执行,
并将一个逻辑值赋给一个变量。
行为级建模基础

 过程赋值语句有两种类型:
• 阻塞型赋值语句
(Blocking Assignment Statement)

• 非阻塞型赋值语句
(Non-Blocking Assignment Statement)
行为级建模基础

 两种过程赋值语句的区别:

• 阻塞型赋值,使用 “=”号
前一条语句没有完成赋值过程之前,后面的语句不可能被执行。

• 非阻塞型赋值,使用 “”号
执行的顺序与语句的位置无关。
一条非阻塞型赋值语句的执行,并不会影响块中其它语句的执行。
行为级建模基础

//Blocking (=) //Nonblocking (<=)


initial initial
begin begin
#5 a = b; #5 a <= b;
#10 c = d; #10 c <= d;
end end

a<=b c<=d

时间 时间
行为级建模基础

例1 module Dff1(Q,Data,CLR,CP);
output reg Q;
input Data,CLR,CP;
Data Q
1D
always @(negedge CLR or posedge CP)
if (!CLR) Q<=0; CP C1
else Q<=Data; CLR
endmodule

结论:具有异步清 0 功能的 D 触发器。


行为级建模基础

例2 module Dff2(Q,Data,CLR,CP);
output reg Q;
input Data,CLR,CP;

always @(posedge CP) Data


1 1D
Q
if (!CLR) 0

Q <= 0; CLR

else Q <= Data; CP C1

endmodule

结论:具有同步清 0 功能的 D 触发器。


再见!
硬件描述语言
Verilog HDL

华中科技大学 罗杰
寄存器的行为级建模
行为级建模基础

always 语句的一般用法:

always @(事件控制表达式)
begin:块名
块内局部变量的定义;
一条或多条过程赋值语句;
end
行为级建模基础

//Verilog 1995标准
always @(posedge CP or negedge CR)

或者,
//Verilog2001,2005标准
always @(posedge CP, negedge CR)
行为级建模基础

 过程赋值语句有两种类型:

• 阻塞型赋值语句(Blocking Assignment Statement)


使用 “=”号赋值,前一条语句没有完成赋值过程之前,后面的语句
不可能被执行。

• 非阻塞型赋值语句(Non-Blocking Assignment Statement)


使用 “”号赋值,执行的顺序与语句的位置无关。

一条非阻塞型赋值语句的执行,并不会影响块中其它语句的执行。
行为级建模基础

(1) (2)
module Circuit_A ( module Circuit_B (
output reg f, g, output reg f, g,
input A, B, C, CP input A, B, C, CP
); );
always @(posedge CP) always @(posedge CP)
begin begin
f = A & B; f <= A & B;
g = f | C; g <= f | C;
end end
endmodule endmodule
行为级建模基础

(1)
module Circuit_A (
output reg f, g,
input A, B, C, CP B
); A
always @(posedge CP)
begin
f = A & B;
D f
g = f | C;
end
endmodule CP >
行为级建模基础

(1)
module Circuit_A (
output reg f, g, C
input A, B, C, CP B D g
); A
always @(posedge CP) >
begin
f = A & B; D f
g = f | C;
end CP >
endmodule
行为级建模基础

(2)
module Circuit_B (
output reg f, g, C
D g
input A, B, C, CP
); >
always @(posedge CP)
begin B
D f
A
f <= A & B;
g <= f | C; CP >
end
endmodule
行为级建模基础

(1) (2)
module Circuit_A ( module Circuit_B (
output reg f, g, output reg f, g,
input A, B, C, CP input A, B, C, CP
); );
always @(posedge CP) always @(posedge CP)
begin begin
g = f | C; g <= f | C;
f = A & B; f <= A & B;
end end
Endmodule Endmodule
行为级建模基础

(1)
module Circuit_A ( C
output reg f, g, D g
input A, B, C, CP
); >
always @(posedge CP)
begin B
D f
g = f | C; A
f = A & B;
end CP >
endmodule
行为级建模基础

 结论:

• 阻塞赋值对语句的顺序具有依
赖性,所以,对时序逻辑电路
建模时,建议使用非阻塞赋值
语句。
寄存器的行为级建模

寄存器的行为级建模
寄存器的行为级建模
寄存器的行为级建模

 n 位数据寄存器:
module RegN(D, CP, CLR,Q);
parameter n=16;
input [n-1:0]D;
input CP, CLR;
output reg[n-1:0]Q;

always @(posedge CP, negedge CLR)


if(!CLR)
Q <= 0;
else
Q <= D;
endmodule
寄存器的行为级建模

如何调用(实例引用)带有参数的子
模块,并修改模块内部的参数值呢?

有两种方法:

• 直接修改参数的引用方式
• 参数重定义(defparam)的引用方式
寄存器的行为级建模

 32 位数据寄存器:直接修改参数的引用方式

module Reg32(Din, CLK, CLR,Q);


input [31:0]Din;
input CLK, CLR;
output reg[31:0]Q;

//调用子模块,同时修改原模块RegN中的参数值
RegN #(32) U0(Din, CLK, CLR,Q);

endmodule
寄存器的行为级建模

 32 位数据寄存器:参数重定义(defparam)的引用方式

module Reg32(Din, CLK, CLR,Q);


input [31:0]Din;
input CLK, CLR;
output [31:0]Q;

RegN U1(Din, CLK, CLR,Q); //调用子模块


defparam U1.n = 32; //修改原模块中的参数值

Endmodule
寄存器的行为级建模
 注意:这里“右移”的顺序按照
 4 位向右移动的移位寄存器: 信号自然排序:
Q[3]-> Q[2] -> Q[1] -> Q[0];
module Shift4(Data,Load,CP,Dsr,Q);
与教材上74HC194的顺序不一致
input [3:0]Data;
input Load, CP, Dsr;
output reg[3:0]Q;
always @(posedge CP) • 所有的行为发生在时钟上升沿;
if(Load) Q <= Data; • 当 Load=1 时,寄存器并行载
else begin 入Data输入端的4位数据。
Q[3] <= Dsr;
Q[2] <= Q[3];
Q[1] <= Q[2];
Q[0] <= Q[1];
end
endmodule
寄存器的行为级建模
 注意:这里“右移”的顺序按照
 4 位向右移动的移位寄存器: 信号自然排序:
Q[3]-> Q[2] -> Q[1] -> Q[0];
module Shift4(Data,Load,CP,Dsr,Q); 与教材上74HC194的顺序不一致
input [3:0]Data;
input Load, CP, Dsr;
output reg[3:0]Q;
always @(posedge CP) • 所有的行为发生在时钟上升沿;
if(Load) Q <= Data; • 当 Load=1 时,寄存器并行载
else begin 入Data输入端的4位数据。
Q[3] <= Dsr; • 当 Load=0 时,寄存器的内容
Q[2] <= Q[3]; 向右移动。
Q[1] <= Q[2];
Q[0] <= Q[1]; Dsr的值  Q[3]  Q[2] 
end Q[1]  Q[0]
endmodule
寄存器的行为级建模
 注意:这里“右移”的顺序按照
 4 位向右移动的移位寄存器: 信号自然排序:
Q[3]-> Q[2] -> Q[1] -> Q[0];
module Shift4(Data,Load,CP,Dsr,Q);与教材上74HC194的顺序不一致
input [3:0]Data;
input Load, CP, Dsr;
output reg[3:0]Q;
always @(posedge CP)
if(Load) Q <= Data;
else begin
Q[3] <= Dsr;
Q[2] <= Q[3];
Q[1] <= Q[2]; Q <= {Dsr,Q[3:1]};
Q[0] <= Q[1];
end
endmodule
寄存器的行为级建模

 小结:
• 事件控制表达式的写法;
• 阻塞型赋值和非阻塞型赋值的区别。在时序逻辑电路建模
中,尽量采用非阻塞型赋值。
• 并行数据寄存器和移位寄存器的行为级建模。
• 在调用带参数的子模块时,采用下列任意一种方法:
• 直接修改参数的调用方式
• 参数重定义(defparam)的调用方式
再见!
教学内容、要求及小结

本节主要内容:
 带参数的二进制计数器、变模计数器与分频器的行为级建模
 有限状态机的概念与行为级建模
 修改子模块中参数的两种方法

学习本节后,你应该能
 对二进制计数器、变模计数器与分频器等时序电路进行建模
 说明 Mealy 型状态机和 Moore 型状态机之间的区别
 描述有限状态机的逻辑功能
 使用两种方法修改子模块中参数

小结:
● 二进制可逆计数器、变模计数器和分频器是典型的时序逻辑电路,其行为
级建模是我们必须掌握的。
● 通常,引用带参数的子模块有下列两种方法:直接修改参数的引用方式和
参数重定义(defparam)的引用方式。
● 状态机中所有触发器的时钟输入端被连接到一个公共时钟脉冲源上,其状
态的转换是在同一时钟源的同一脉冲边沿同步进行的,所以也称为时钟同步状态
机。根据电路的输出是否与电路的输入有关,有限状态机可以分为两种类型:一
类是 Mealy 型状态机,另一类是 Moore 型状态机。
● 在确定好有限状态机电路的输入、输出端口名称,并利用参数语句指定状
态名称和状态编码后,通常用三个 always 语句对状态机进行建模:第一个 always
语句用来描述时钟控制的同步时序逻辑部分,实现电路状态存储。第二个 always
语句用来描述电路的组合逻辑部分,实现状态从现态到次态的转换逻辑。第三个
always 语句描述电路的输出逻辑。对于输出逻辑比较简单的电路,经常将后面两
个 always 语句合并写在一起。
硬件描述语言
Verilog HDL

华中科技大学 罗杰
计数器的行为级建模
计数器行为级建模
➢ 试说明下列程序所完成的逻辑功能:
module Updowncount
#( parameter n = 4 ) if (Load)
( input Load,Up_down,En,CP, Q <= D; //同步置数
input [n-1:0] D, else if (En)
output reg [n-1:0] Q Q <= Q + direction;
); else
integer direction; Q <= Q; //输出保持不变
end
always @(posedge CP)
begin endmodule
if (Up_down)
direction <= 1;
else
direction <= -1;
计数器行为级建模
➢ 试说明下列程序所完成的逻辑功能:
module Updowncount
#( parameter n = 4 ) D[n-1:0] Q[n-1:0]
( input Load,Up_down,En,CP, Load
input [n-1:0] D, Updowncount
Up_down
output reg [n-1:0] Q
En
);
integer direction;
CP
计数器行为级建模
➢ 试说明下列程序所完成的逻辑功能:
module Updowncount
#( parameter n = 4 ) D[n-1:0] Q[n-1:0]
( input Load,Up_down,En,CP, Load
input [n-1:0] D, Updowncount
Up_down
output reg [n-1:0] Q
En
);
integer direction;
CP
always @(posedge CP)
begin
if (Up_down)
direction <= 1;
else
direction <= -1;
计数器行为级建模
➢ 试说明下列程序所完成的逻辑功能:
module Updowncount
#( parameter n = 4 )
( input Load,Up_down,En,CP,
input [n-1:0] D,
output reg [n-1:0] Q
);
integer direction;

always @(posedge CP)


begin
if (Up_down)
direction <= 1;
else
direction <= -1;
计数器行为级建模
➢ 试说明下列程序所完成的逻辑功能:
module Updowncount
#( parameter n = 4 ) if (Load)
( input Load,Up_down,En,CP, Q <= D; //同步置数
input [n-1:0] D, else if (En)
output reg [n-1:0] Q Q <= Q + direction;
); else
integer direction; Q <= Q; //输出保持不变
end
always @(posedge CP)
begin endmodule
if (Up_down)
direction <= 1;
else
direction <= -1;
计数器行为级建模
➢ 程序所完成的逻辑功能:

具有同步置数功能的 n 位可逆
计数器,并且还有保持计数值
不变的功能。

D[n-1:0] Q[n-1:0]

Load
Updowncount
Up_down
En

CP
计数器行为级建模

如何调用(实例引用)带有参数的
子模块呢?

通常有下列两种方法:
• 直接修改参数的引用方式
• 参数重定义(defparam)的引用方式
计数器行为级建模

➢ 4位、8位二进制可逆计数器
module Mcount (
input Load,Up_down,En,CP,
input [3:0]Da, output [3:0]Qa,
input [7:0]Db, output [7:0]Qb
);
//直接修改参数的引用方式
Updowncount #(4) U0(Load,Up_down,En,CP, Da, Qa);

endmodule
计数器行为级建模

➢ 4位、8位二进制可逆计数器
module Mcount (
input Load,Up_down,En,CP,
input [3:0]Da, output [3:0]Qa,
input [7:0]Db, output [7:0]Qb
);
//直接修改参数的引用方式
Updowncount #(4) U0(Load,Up_down,En,CP, Da, Qa);

//参数重定义的引用方式
Updowncount U1(Load,Up_down,En,CP, Db, Qb);
defparam U1.n=8;

endmodule
变模计数器的建模

变模计数器的建模
变模计数器的建模

module VarModCnt (CP,CLR,En,Q,Carry_out);


parameter n = 4, MOD=16; //位宽、模数
input CP,CLR,En;
output reg [n-1:0] Q; output Carry_out;
always @(posedge CP or negedge CLR)
begin
if (!CLR) Q <= ‘d0;
else if (!En) Q <= Q;
else begin
if (Q==MOD-1) Q <= ‘d0;
else Q <= Q + 1;
end
end
assign Carry_out = (Q==MOD-1);
endmodule
变模计数器的建模

module VarModCnt (CP,CLR,En,Q,Carry_out);


parameter n = 4, MOD=16; //位宽、模数
input CP,CLR,En;
output reg [n-1:0] Q; output Carry_out;

endmodule
变模计数器的建模

module VarModCnt (CP,CLR,En,Q,Carry_out);


parameter n = 4, MOD=16; //位宽、模数
input CP,CLR,En;
output reg [n-1:0] Q; output Carry_out;
always @(posedge CP or negedge CLR)
begin
if (!CLR) Q <= ‘d0;//异步清零
else if (!En) Q <= Q; //输出保持不变

end
变模计数器的建模

module VarModCnt (CP,CLR,En,Q,Carry_out);


parameter n = 4, MOD=16; //位宽、模数
input CP,CLR,En;
output reg [n-1:0] Q; output Carry_out;
always @(posedge CP or negedge CLR)
begin
if (!CLR) Q <= ‘d0; //异步清零
else if (!En) Q <= Q; //输出保持不变
else begin //计数
if (Q==MOD-1) Q <= ‘d0;
else Q <= Q + 1;
end
end
变模计数器的建模

module VarModCnt (CP,CLR,En,Q,Carry_out);


parameter n = 4, MOD=16; //位宽、模数
input CP,CLR,En;
output reg [n-1:0] Q; output Carry_out;
always @(posedge CP or negedge CLR)
begin
if (!CLR) Q <= ‘d0; //异步清零
else if (!En) Q <= Q; //输出保持不变
else begin //计数
if (Q==MOD-1) Q <= ‘d0;
else Q <= Q + 1;
end
end
assign Carry_out = (Q==MOD-1);
endmodule
变模计数器的建模

这个模块带有两个参数,实例引用时,
如何修改参数呢?

通常有下列两种方法:
• 直接修改参数的引用方式
• 参数重定义(defparam)的引用方式
计数器行为级建模
➢ BCD 60进制计数器
module BCDM60 (CP,CLR,En,Qa,Qb,Cout);
input CP,CLR,En;
output [3:0]Qa; //个位计数器输出
output [2:0]Qb; //十位计数器输出

//10进制计数器:直接修改参数的引用方式
VarModCnt #(4,10) M10(CP,CLR,En,Qa,Co1);

endmodule
计数器行为级建模
➢ BCD 60进制计数器
module BCDM60 (CP,CLR,En,Qa,Qb,Cout);
input CP,CLR,En;
output [3:0]Qa; //个位计数器输出
output [2:0]Qb; //十位计数器输出

//10进制计数器:直接修改参数的引用方式
VarModCnt #(4,10) M10(CP,CLR,En,Qa,Co1);

//6进制计数器:参数重定义的引用方式
VarModCnt M6(CP,CLR,Co1,Qb,Cout);
defparam M6.n=3;
defparam M6.MOD=6;
endmodule
分频器的行为级建模

分频器的行为级建模
分频器行为级建模

假设有一个50 MHz 脉冲信号源,试用Verilog HDL 设



计一个分频电路。要求:输出信号频率为1Hz,占空比
为 50%.

解: 基本思路是:

设计一个模数为 25×106 的二进制递增计数器,其


计数范围是 0~24999999。每当计数器计到最大值时,
输出信号翻转一次,即可产生频率为 1Hz、占空比为
50%的方波。
分频器行为级建模

module Divider50MHz(CLR,CLK_50M, CLK_1HzOut);


input CLR,CLK_50M;
output reg CLK_1HzOut;
reg [24:0] Count_DIV; //内部节点
分频器行为级建模

module Divider50MHz(CLR,CLK_50M, CLK_1HzOut);


input CLR,CLK_50M;
output reg CLK_1HzOut;
reg [24:0] Count_DIV; //内部节点

parameter CLK_Freq = 50000000, OUT_Freq = 1;


分频器行为级建模

always @(posedge CLK_50M or negedge CLR)


begin
if (!CLR)
begin CLK_1HzOut <= 0; Count_DIV <= 0; end
else

end
endmodule
分频器行为级建模

always @(posedge CLK_50M or negedge CLR)


begin
if (!CLR)
begin CLK_1HzOut <= 0; Count_DIV <= 0; end
else
begin
if( Count_DIV < (CLK_Freq/(2*OUT_Freq)-1) )
Count_DIV <= Count_DIV+1'b1;
else

end
end
endmodule
分频器行为级建模

always @(posedge CLK_50M or negedge CLR)


begin
if (!CLR)
begin CLK_1HzOut <= 0; Count_DIV <= 0; end
else
begin
if( Count_DIV < (CLK_Freq/(2*OUT_Freq)-1) )
Count_DIV <= Count_DIV+1'b1;
else begin
Count_DIV <= 0;
CLK_1HzOut <= ~CLK_1HzOut;
end
end
end
endmodule
计数器行为级建模
再见!
硬件描述语言
Verilog HDL

华中科技大学 罗杰
有限状态机的建模
有限状态机的建模

 有限状态机的组成
有限状态机的建模

 有限状态机的组成
 一般情况下,触发器的数量是有限的,其状态数也是
有限的,故称为有限状态机(Finite State Machine,
简称为FSM)。
 状态机中所有触发器的时钟输入端被连接到一个公共
时钟脉冲源上,其状态的转换是在同一时钟源的同一
脉冲边沿同步进行的,所以也称为时钟同步状态机。
有限状态机的建模

电路的输出与
当前状态和输
入均有关
有限状态机的建模

 有限状态机的组成
有限状态机的建模

电路的输出与 电路的输出只与
当前状态和输 当前状态有关
入均有关
有限状态机的建模

 Moore 型状态机

Q1Q0 A CLR
Y 0 0
00 1 01
0 0

1 1

0 11 10 0
1 1 0
有限状态机的建模

 确定电路的输入、输出端口
Q1Q0 A CLR
module Moore_Model ( Y 0 0
input A, CP, CLR, //输入端口 00 1 01
0 0
output Y //输出端口
); 1 1
reg [1:0] state; //中间变量
0 11 10 0
1 1 0
//用参数定义状态
parameter S0=2’b00, S1=2’b01;
parameter S2=2’b10, S3=2’b11;
有限状态机的建模

 描述同步时钟控制的状态转换及次态逻辑
Q1Q0 A CLR
always @( posedge CP, negedge CLR) Y 0 0
begin 00 1 01
0 0
if (!CLR) state <=S0; //复位
else case(state) 1 1
S0: begin state = (A==1)? S1: S0; end
11 10
S1: begin state = (A==1)? S2: S1; end 0
1 1 0
0
S2: begin state = (A==1)? S3: S2; end
S3: begin state = (A==1)? S0: S3; end
endcase
end
assign Y = (state ==S3);
endmodule
有限状态机的建模

 Mealy 型状态机

0/0
CLR

Q1Q0 A/Y 00
1/0
0/1
0/0
11 01
1/0
1/0
有限状态机的建模

 确定电路的输入、输出端口
0/0
CLR
module Mealy_Model ( A, CLR, CP, Y);
input A, CP, CLR; //输入端口 Q1Q0 A/Y 00
output reg Y; //输出端口
1/0
0/1
0/0
//中间变量
reg [1:0] current_state, next_state; 11 01
1/0
1/0
//用参数定义状态
parameter S0=2’b00, S1=2’b01, S2=2’b11;
有限状态机的建模

 描述时序逻辑

//触发器状态转换
always @(negedge CP,negedge CLR)
begin
if (!CLR)
current_state <=S0; //复位
else
current_state <= next_state; //状态转换
end
有限状态机的建模

 描述组合逻辑:输出逻辑和次态逻辑
always @(current_state,A) 0/0
CLR
begin
case(current_state) Q1Q0 A/Y 00
Y = 0; //电路输出
1/0
S0: begin next_state = (A==1)? S1: S0; end 0/1
0/0
S1: begin next_state = (A==1)? S2: S0; end
S2: if (A==1) 11 01
begin next_state = S2; end 1/0
else 1/0
begin Y = 1; next_state = S0; end
default: begin next_state =S0; end
endcase
end
endmodule
有限状态机的建模

 描述综合后的电路结构
有限状态机的建模

 小结:
• 首先声明电路的输入、输出端口。利用参数定义语句描述状态
机中各个状态的名称,并指定状态编码。
• 使用always 描述同步时序逻辑,实现电路状态存储。
• 使用always 描述组合逻辑,实现状态从现态到次态转换逻辑。
• 使用always 描述电路的输出逻辑。
(最后两步可以合并,写成一个always 语句块)
再见!
教学内容、要求及小结

本节主要内容:
 四位共阳极显示器动态扫描控制电路的工作原理及 Verilog HDL 建模

学习本节后,你应该能
 说明四位共阳极显示器动态扫描控制电路的工作原理
 用 Verilog HDL 描述四位共阳极显示器动态扫描控制电路

小结:
● 多个显示器共用一个七段显示译码器,为了使多个显示器显示不同的数码,
就要由扫描电路控制各个显示器分时进行显示,即每个显示器按不同的时间片轮
流使用这个七段显示译码器,这种显示方式被称为动态扫描显示电路。
● 通常将整个显示器的刷新频率设定为 60Hz ~1kHz。如果更新显示或“刷
新”的频率降至某一特定点(约 45 Hz),那么大多数人会开始看到闪烁。如果
“刷新”频率太快,会使显示的数码产生余辉,结果造成显示不够清晰。因此,
要合理选择刷新频率。
硬件描述语言
Verilog HDL

华中科技大学 罗杰
四位显示器的
动态扫描控制电路设计
动态扫描控制电路
+3.3V
2.2 k

SG3 SG2 SG1 SG0

g~a
AN3
AN2
AN1
AN0

Digit3 Digit0
7 Segout[6:0]

2-4 线 4 七段显示译码器
En
译码器
S1 4 InDigit [3:0]
S0
数据 选择器
分频器
4 4 4 4

CLR CLK_50 BCD3 BCD2 BCD1 BCD0


M
动态扫描控制电路
+3.3V
2.2 k

SG3 SG2 SG1 SG0

g~a
AN3
AN2
AN1
AN0

Digit3 Digit0
7 Segout[6:0]

2-4 线 4 七段显示译码器
En
译码器
S1 4 InDigit [3:0]
S0
数据 选择器
分频器
4 4 4 4

CLR CLK_50 BCD3 BCD2 BCD1 BCD0


M
动态扫描控制电路
+3.3V
2.2 k  工作原理:
• 当基极为 0 时,三极管饱和导
SG3 SG2 SG1 SG0 通,相应的显示器显示数码。

• 显示数码由七段显示译码器输
g~a
AN3
AN2
AN1
AN0

Digit3 Digit0
7 Segout[6:0] 出的七段码决定。
2-4 线
译码器
4
En 七段显示译码器 • 4个显示器分时显示不同的数码。
S1 4 InDigit [3:0]
S0
数据 选择器
分频器
4 4 4 4

CLR CLK_50 BCD3 BCD2 BCD1 BCD0


M
动态扫描控制电路
+3.3V
2.2 k  工作原理:
• 将 4 个待显示的 BCD 码送到
SG3 SG2 SG1 SG0 数据选择器的输入端。

• 分频器产生4个节拍,每个节拍
g~a
AN3
AN2
AN1
AN0

Digit3 Digit0
7 Segout[6:0] 选择器将一个4位 BCD 码送到
2-4 线 4
En 七段显示译码器 七段显示译码器进行译码,得
译码器
S1 4 InDigit [3:0]
到的七段码同时送4个显示器。
S0
数据 选择器
• 由位选择信号(SG0~SG3)
分频器
4 4 4 4
决定哪个显示器显示数码。
CLR CLK_50 BCD3 BCD2 BCD1 BCD0
M
动态扫描控制电路
+3.3V
2.2 k  数码显示时序图:

SG3 SG2 SG1 SG0

g~a
AN3
AN2
AN1
AN0

Digit3 Digit0
7 Segout[6:0]

2-4 线 4 七段显示译码器
En
译码器
S1 4 InDigit [3:0]
S0
数据 选择器
分频器
4 4 4 4

CLR CLK_50 BCD3 BCD2 BCD1 BCD0


M
动态扫描控制电路
的逻辑设计
动态扫描控制电路
+3.3V
2.2 k  确定输入、输出端口:
• 输入端口:
SG3 SG2 SG1 SG0 清零信号CLR、
时钟输入CLK_50M、
BCD码输入BCD3~BCD0
g~a
AN3
AN2
AN1
AN0

Digit3 Digit0
7 Segout[6:0] • 输出端口:
2-4 线 4
En 七段显示译码器 2-4线译码器输出AN3~AN0
译码器
七段显示译码器输出Segout[6:0]
S1 4 InDigit [3:0]
S0
数据 选择器 • 内部信号
分频器
4 4 4 4

CLR CLK_50M BCD3 BCD2 BCD1 BCD0


动态扫描控制电路

 输入、输出端口的声明
module RippleDisp (CLK_50M, CLR, BCD, Segout, AN);
input CLK_50M; //50MHz clock
input CLR;
input [15:0] BCD; //BCD code input
output reg [6:0] Segout; //7-segment code output
output reg [3:0]AN; //AN3-AN0 select LED

wire S1, S0; //Select signal


wire [3:0] En;
reg [3:0] InDigit;
reg [19:0] Count; //internal 20-bit counter
动态扫描控制电路

 分频器模块
// ===== 时钟分频器 =====
always @(posedge CLK_50M or posedge CLR)
begin
if (CLR==1'b1)
Count <= 0;
else Count <= Count + 1;
end

assign {S1,S0} = Count[19:18];


//整个刷新周期 T=20.97 ms,T/4=5.24 ms
动态扫描控制电路

 四位 4 选 1 数据选择器模块

// =====四位4选1数据选择器 =====
always @( * )
begin
case ({S1,S0})
2'b00: InDigit= BCD[3:0]; //select BCD0
2'b01: InDigit= BCD[7:4]; //select BCD1
2'b10: InDigit= BCD[11:8]; //select BCD2
2'b11: InDigit= BCD[15:12]; //select BCD3
endcase
end
动态扫描控制电路

 七段显示译码器模块
//===== BCD code => 7 Segment Code (a~g) =======
always @(InDigit)
case (InDigit) //---gfedcba---
0: Segout=7'b1000000; //display 0(40H)
1: Segout=7'b1111001; //display 1(79H)
……
9: Segout=7'b0010000; //display 9(10H)
'hA: Segout=7'b0001000; //display A(08H)
'hB: Segout=7'b0000011; //display b(03H)
……
'hF: Segout=7'b0001110; //display F(0EH)
default: Segout=7'b0100011; //display o(23H )
endcase
动态扫描控制电路

 2-4线译码器模块
// ===== 2-4线译码器 =====
assign En[3]= BCD[15] | BCD[14] | BCD[13] | BCD[12];
assign En[2]= | BCD[15:8]; //显示器最左边2位数为0
assign En[1]= | BCD[15:4]; //显示器最左边3位数为0
assign En[0]= 1; //显示器最低位不灭0

always @( * )
begin
AN = 4‘b1111; //4位显示器均不显示
if( En[{S1,S0}]==1 )
AN[{S1,S0}]= 0; //某一位显示器显示数码
end
endmodule
再见!
教学内容、要求及小结

本节主要内容:
 编写组合电路的测试代码
 基于 ModelSim 软件的功能仿真简介
 编写时序电路的测试代码

学习本节后,你应该能
 编写测试代码
 用 ModelSim 软件对电路的逻辑功能进行仿真

小结:
● 逻辑仿真是指用计算机仿真软件对数字逻辑电路的结构和功能进行预测。
在实现电路之前,设计人员根据仿真结果可以初步判断电路的逻辑功能是否正确。
在仿真期间,如果发现设计中存在错误,可以对 HDL 描述进行修改,直至满足
设计要求为止。
● 在进行逻辑仿真之前,要用 Verilog HDL 编写一个设计模块用来描述电路
的逻辑功能。还要编写一个专门的测试模块,这个测试模块也称为测试平台(test
bench)。在测试模块中,要给电路的输入信号赋各种不同的组合值(即输入激励
或称为测试向量),还要写一些专门的语句,用来检查电路的输出是否与我们设
计的期望值一致。
● 仿真分成功能仿真和时序仿真。在集成电路设计中,功能仿真也称为前仿
真。它的主要目的是测试电路的逻辑功能是否正确,并不考虑硬件实现的技术细
节。时序仿真需要使用逻辑综合工具,并根据使用的工艺库,将 HDL 描述转换
成最终能够实现的门级网表文件,这个门级网表文件中含有电路实现时元器件及
连线的延迟信息,对它进行仿真,就能检查电路的时序是否满足要求。所以,时
序仿真也称为门级仿真。
● 在测试模块中,将会用到系统任务和系统函数。
硬件描述语言
Verilog HDL

华中科技大学 罗杰
编写组合电路的测试代码
行为级建模基础

实例引用基本门 关键字为assign, 关键字为 always,


元件或者子模块 对电路的布尔方 对电路的功能和算
程进行描述 法进行描述
编写测试代码并仿真

如何对设计模块进行仿真测试呢?

• 编写测试平台(test bench)
• 使用计算机仿真软件(简称仿真器)
编写测试代码并仿真

 功能仿真:
也称为前仿真。它的主要目的是测试电路的逻辑功能是否正确,
并不考虑硬件实现的技术细节。

 时序仿真:
也称为门级仿真。需要使用逻辑综合工具,并根据使用的工艺
库,将HDL描述转换成最终能够实现的门级网表文件,这个门
级网表文件中含有电路实现时元器件及连线的延迟信息,对它
进行仿真,就能检查电路的时序是否满足要求。
编写测试代码并仿真

 测试模块的基本功能:

测试模块

产生 待测的 监测
激励 设计模块 响应
编写测试代码并仿真

 测试模块的基本写法:
module 测试模块名();
reg 输入信号名;

wire 输出信号名;

实例引用设计模块;
initial begin
… //在这里添加激励(可以有多个这样的结构)
end
always begin
… //在这里添加时钟信号
end
initial begin
… //在这里添加输出语句(在屏幕上显示仿真结果)
end
endmodule
编写测试代码并仿真

 测试模块的基本写法:
module 测试模块名();
reg 输入信号名;

wire 输出信号名;

实例引用设计模块;
initial begin
… //在这里添加激励(可以有多个这样的结构)
end
always begin
… //在这里添加时钟信号
end
initial begin
… //在这里添加输出语句(在屏幕上显示仿真结果)
end
endmodule
编写测试代码并仿真

 测试模块的基本写法:
module 测试模块名();
reg 输入信号名;

wire 输出信号名;

实例引用设计模块;
initial begin
… //在这里添加激励(可以有多个这样的结构)
end
always begin
… //在这里添加时钟信号
end
initial begin
… //在这里添加输出语句(在屏幕上显示仿真结果)
end
endmodule
编写测试代码并仿真

 设计块:4位二进制加法器的数据流描述

module Fadder4(A, B, Cin, Sum, Cout);


input[3:0] A,B; //输入端口声明
input Cin;
output[3:0] Sum; //输出端口声明
output Cout;

assign {Cout,Sum} = A + B + Cin; //完成加法运算

endmodule
编写测试代码并仿真

 测试模块(激励块):
//文件名:Test_Fadder4.v

`timescale 10ns/1ns

module Test_Fadder4;
reg Cin; //声明输入信号
reg [3:0] A,B;
wire[3:0] Sum;//声明输出信号
wire Cout;

//实例引用设计块
Fadder4 U0(A,B,Cin,Sum,Cout);
编写测试代码并仿真

 测试模块(激励块):
//文件名:Test_Fadder4.v

`timescale 10ns/1ns

module Test_Fadder4;
reg Cin; //声明输入信号
reg [3:0] A,B;
wire[3:0] Sum;//声明输出信号
wire Cout;

//实例引用设计块
Fadder4 U0(A,B,Cin,Sum,Cout);
编写测试代码并仿真

 测试模块(激励块):
//文件名:Test_Fadder4.v initial begin //生成输入信号的数据
Cin=0; A=7; B=3;
`timescale 10ns/1ns #5 A=9;B=6;
#5 A=9;B=7;
module Test_Fadder4; #5 Cin=1; A=7; B=3;
reg Cin; //声明输入信号 #5 A=9;B=6;
reg [3:0] A,B; #5 A=9;B=7;
wire[3:0] Sum;//声明输出信号 #5 $stop; //暂停模拟仿真
wire Cout; end

//实例引用设计块 // 将结果输出到屏幕上
Fadder4 U0(A,B,Cin,Sum,Cout); initial //监视系统任务
$monitor($time,":\tA=%b,B=%b,Sum=%b,
Cout=%b\n",A,B,Sum,Cout);
endmodule
编写测试代码并仿真

 测试模块(激励块):
//文件名:Test_Fadder4.v initial begin //生成输入信号的数据
Cin=0; A=7; B=3;
`timescale 10ns/1ns #5 A=9;B=6;
#5 A=9;B=7;
module Test_Fadder4; #5 Cin=1; A=7; B=3;
reg Cin; //声明输入信号 #5 A=9;B=6;
reg [3:0] A,B; #5 A=9;B=7;
wire[3:0] Sum;//声明输出信号 #5 $stop; //暂停模拟仿真
wire Cout; end

//实例引用设计块 // 将结果输出到屏幕上
Fadder4 U0(A,B,Cin,Sum,Cout); initial //监视系统任务
$monitor($time,":\tA=%b,B=%b,Sum=%b,
Cout=%b\n",A,B,Sum,Cout);
endmodule
再见!
硬件描述语言
Verilog HDL

华中科技大学 罗杰
基于ModelSim 功能仿真
ModelSim 功能仿真

 启动软件,
进入主界面

Windows桌面
 程序
 ModelSim软件
ModelSim 功能仿真

 创建一个工作目录

File  Change Directory


 新建文件夹  确定
ModelSim 功能仿真

 输入源文件

FileNew
Source
Verilog

注意:
该按钮开关,可以
独立/还原 窗口。
ModelSim 功能仿真

 输入源文件(续)

FileNew
Source
Verilog
ModelSim 功能仿真

 建立工作库

FileNew
Library
ModelSim 功能仿真

 编译设计的源文件

• Compile  Compile

• 按住键盘上的Shift键,
选中多个源文件 
Compile  Done
ModelSim 功能仿真

 查看编译结果

• 单击左边窗口 work
库图标左边的“+”号,
展开work库。
• 多个源文件已经添加
到work库中。
ModelSim 功能仿真

 装入设计文件到仿真器,
打开相关窗口
• Simulate
 Start Simulation
ModelSim 功能仿真
ModelSim 功能仿真

 添加待观察信号到 Wave 波形窗口的两种方法:

• 选中左边 Sim 窗口相应设计实例,再执行 Add  To Wave


 All items in region ,将该实例中的所有信号添加到
Wave 窗口中。

• 选中 Sim 窗口相应设计实例,在 Objects 窗口中,在相应节


点信号名称上单击鼠标右键,选择右键菜单中Add Wave命令,
将单个信号添加到Wave窗口中。
ModelSim 功能仿真

 运行仿真器,
观察结果

• Simulate
 Run
 Run-All
ModelSim 功能仿真

 运行仿真器,
观察结果

• Simulate
 Run
 Run-All
ModelSim 功能仿真

 仿真器的交互命令

• 继续执行的命令: Simulate  Run ……


• 复位仿真器命令: Simulate  Restart…
• 退出仿真器命令: Simulate  End Simulation
ModelSim 功能仿真

 系统任务
$monitor
显示的结果
ModelSim 功能仿真
 基于工作库仿真的基本流程

创建工作目录

编译设计文件
输入设计源文件
装入设计文件,
运行仿真
创建仿真工作库

调试结果

 教程: 选择主菜单 Help  PDF Documentation  Tutorial。


再见!
硬件描述语言
Verilog HDL

华中科技大学 罗杰
编写时序电路测试代码
编写时序电路测试代码

如何编写时序逻辑电路
的测试代码呢?
编写时序电路测试代码

 设计块:4位二进制计数器
module Counter(CP, CLR, Q);
input CP, CLR;
output reg [3:0] Q;

always @(negedge CP or posedge CLR)


begin
if (CLR)
Q <= 4‘d0; //异步清零
else
Q <= Q + 1'b1; //递增计数
end
endmodule
编写时序电路测试代码

 测试模块:时序图
CP ……

CLR

Q[3:0] 0 1 2 3 4 15 0 1 2 0 1

周期数 0 2 18 21

 CP:总共22个周期;假设周期为10 ns,则需 220 ns。


 CLR:0~15,195~205 这两段时间,CLR=1。
编写时序电路测试代码

 测试模块代码:
`timescale 10ns/1ns
module Test_Counter ;
reg CP,CLR; //Clock and Clear
wire[3:0] Q; //Register output

Counter U0(CP,CLR,Q); //实例引用设计块

//产生时钟信号CP,周期为10个时间单位
initial
CP = 1’b0; //将CP初值设为0
always //每隔5个时间单位,时钟翻转一次
#5 CP = ~CP;
编写时序电路测试代码

 测试模块代码(续):
initial begin //产生清零信号
CLR = 1’b1; //在0~15期间为高电平
#15 CLR = 1’b0;
#180 CLR = 1’b1; //在195~205期间为高电平
#10 CLR = 1’b0;
#15 $stop; //暂停仿真
end

initial //输出结果到屏幕上
$monitor($time,": Output Q= %d\n",Q);

endmodule
编写时序电路测试代码

 仿真波形图:
编写时序电路测试代码

 Transcript 窗口的仿真结果:
编写时序电路测试代码

 Transcript 窗口的仿真结果(续):
编写时序电路测试代码

 产生时钟信号: module Test_CP1;


reg CP1; //Clock
always
begin
#5 CP1 = 0;
#5 CP1 = 1;
end
endmodule
编写时序电路测试代码
module Test_CP2;
 产生时钟信号 reg CP2; //Clock
initial
(续): begin
CP2 = 0;
forever #5 CP2 = ~CP2;
end
endmodule
编写时序电路测试代码

module Test_CP2;
reg CP2; //Clock
initial
forever
begin
begin
CP2 = 0;
#5 CP2 = 1;
forever #5 CP2 = ~CP2;
#5 CP2 = 0;
end
end
endmodule
编写时序电路测试代码

 产生时钟信号 module Test_CP3;


reg CP3; //Clock
(续): parameter PERIOD = 10;
initial CP3 = 1'b0;
always
begin
#(PERIOD-PERIOD/5) CP3 = 1;
#(PERIOD/5) CP3 = 0;
end
endmodule
编写时序电路测试代码

 例: module Test_ClkReset ;
reg CLR; //Clear
reg CP; //Clock
//产生时钟信号CP,周期为10个时间单位
initial CP = 1'b0;
always #5 CP = ~CP;
//产生清零信号CLR
initial
begin
CLR = 1'b0;
wait (CP == 1'b1);
@(negedge CP);
CLR <= 1'b1;
repeat(2) @(negedge CP);
CLR <= 1'b0;
end
endmodule
编写时序电路测试代码

 例: module Test_ClkReset ;
reg CLR; //Clear
reg CP; //Clock
//产生时钟信号CP,周期为10个时间单位
initial CP = 1’b0;
always #5 CP = ~CP;
//产生清零信号CLR
initial
begin
CLR = 1’b0;
wait (CP == 1’b1);
@(negedge CP);
CLR <= 1’b1;
repeat(2) @(negedge CP);
CLR <= 1’b0;
end
endmodule
编写时序电路测试代码

 仿真波形图:
编写时序电路测试代码

 例: module Test_ClkReset ;
reg CLR; //Clear
reg CP; //Clock
//产生时钟信号CP,周期为10个时间单位
initial CP = 1'b0;
always #5 CP = ~CP;
//产生清零信号CLR
initial
begin
CLR = 1'b0;
wait (CP == 1'b1);
@(negedge CP);
CLR <= 1'b1;
repeat(2) @(negedge CP);
CLR <= 1'b0;
end
endmodule
编写测试代码并仿真

 测试模块的基本写法:
module 测试模块名();
reg 输入信号名;

wire 输出信号名;

实例引用设计模块;
initial begin
… //在这里添加激励(可以有多个这样的结构)
end
always begin
… //在这里添加时钟信号
end
initial begin
… //在这里添加输出语句(在屏幕上显示仿真结果)
end
endmodule
再见!
教学内容、要求及小结

本节主要内容:
 常用的系统任务
 常用的系统函数

学习本节后,你应该能
 解释常用的系统任务
 解释常用的系统函数

小结:
● 常用的系统任务和系统函数,它们都以“$开始,后面跟<关键词>”的形
式表示。
● Verilog 的系统任务(System Tasks),主要用来完成仿真过程中的一些常规
操作。调用系统任务时,只完成某项任务,没有返回值。而系统函数(System
Function),主要由系统内部完成某种功能的运算。调用系统函数时,会返回一个
值。这是它们之间的主要区别。
● 常用的系统任务包括监视任务($monitor)、显示任务($display)、控制仿
真的系统任务($Stop 和 $finish)、从文件中读取数据的系统任务($readmemb 和
$readmemh)等。
●常用的系统函数包括仿真时间函数($time 和$realtime)、产生整型随机数的
函数($random( seed ))等。
硬件描述语言
Verilog HDL

华中科技大学 罗杰
系统任务和系统函数
系统任务和系统函数

 常用的系统任务:  常用的系统函数:
 $monitor  $time
 $display $realtime
 $Stop  $random
 $finish
 $readmemb
$readmemh
系统任务和系统函数

 系统任务和系统函数的区别:
• 系统任务(System Task):
主要用来完成仿真过程中的一些常规操作。
调用系统任务时,只完成某项任务,没有返回值。
• 系统函数(System Function):
主要由系统内部完成某种功能的运算。
调用时,会返回一个函数值。
系统任务和系统函数

 $monitor:
• 在仿真时,用来持续监视一个或者多个变量的值发生改变的
情况。
• 如果被监视的某个变量的值发生变化,仿真器就会打印这些
指定值。
系统任务和系统函数

 用法:
$monitor(显示格式说明,变量名列表,……);

显示格式说明符
格式符 说 明 格式符 说 明
%d 或 %D 用十进制数显示变量 %t 或 %T 显示目前时间格式
%b 或 %B 用二进制显示变量 %v 或 %V 显示线网型信号的强度
%o 或 %O 用八进制显示变量 %m 或 %M 显示层次名(不需参数)
%h 或 %H 用十六进显示变量 %e 或 %E 用科学记数方式显示实数(例如3e10)
%s 或 %S 显示字符串 %f 或 %F 用十进制方式显示实数(例如2.13)

%c 或 %C 显示ASCII 字符 %g 或 %G 选择科学记数和十进制方式中较短的来
显示实数
系统任务和系统函数

initial
$monitor(''At %t,d=%d, clk=%d'',$time, d, clk,
''and q is %b'',q);

输出样本:

At 24,d=x, clk=x and q is 0


At 25,d=x, clk=x and q is 1
At 30,d=0, clk=x and q is 1
At 35,d=0, clk=1 and q is 1
At 37,d=0, clk=0 and q is 1
At 43,d=1, clk=0 and q is 1
系统任务和系统函数

 注意事项:
• 任何时刻只能有一个监控任务处于活动(active)状态。
• 如果在仿真中有多条$monitor语句,则只有最后一条语句处
于活动状态,前面的$monitor语句将不起作用。
• 可以通过下面两个系统任务来启动和关闭监控任务。
$monitoroff;//关闭激活的监控任务
$monitoron; //启动最近关闭的监控任务
系统任务和系统函数

 $display:
• 用于将指定信息(被引用的字符串、变量值或者表达式)以
及结束符显示到标准输出设备上。

 用法:
$display(显示格式说明,变量名列表,……);
系统任务和系统函数

 $stop:
• 暂停仿真,进入交互模式。
• 设计者可以进行调试,并不退出仿真器。

 $finish:
• 用于仿真完成后,退出仿真软件。
• 将控制权返回给操作系统。
系统任务和系统函数

 从文件中读取数据的系统任务:$readmemb,$readmemh

 $readmemb 的用法:
• $readmemb(“文件名”,存储器名);
• $readmemb(“文件名”,存储器名,起始地址);
• $readmemb(“文件名”,存储器名,起始地址,结束地址);

 $readmemh 的用法:与上面的类似。
系统任务和系统函数

 $readmemb 和 $readmemh 的区别:


• $readmemb:
要求文本文件中的数据以二进制格式存放。
• $readmemh:
要求文本文件中的数据以十六进制格式存放。
系统任务和系统函数

 注意事项:
• 各个数据之间要求用空格隔开,每个数据位允许出现逻辑值
的四种状态(0、1、x、z),也允许包含下划线。
• 文本文件中允许包含地址说明,形式为@hhhh,@为地址说
明标识符,h表示地址必须以十六进制形式给出。
系统任务和系统函数

module Test_Memory;
reg [3:0] mem [0:7]; //声明一个8×4位的存储器
integer i; //声明循环变量

initial
begin
//从文件init.dat读取数据存放到存储器中
$readmemb("init.dat",mem);

//显示初始化后的存储器内容
for(i=0;i<8;i=i+1)
$display("Mem[%0d] = %b",i,mem[i]);
end
endmodule
系统任务和系统函数

 假设 init.dat 的内容:  执行结果如下:

@002
1111 0101
0000 1010

@006
11zz 0011
系统任务和系统函数

 常用的系统任务:  常用的系统函数:
 $monitor  $time
 $display $realtime
 $Stop  $random
 $finish
 $readmemb
$readmemh
系统任务和系统函数

 仿真时间函数:

 $time:
按照所在模块的时间单位,返回的仿真时间是一个整型数,
用64位二进制表示。
 $realtime:
按照所在模块的时间单位,返回的仿真时间是一个实型数。
系统任务和系统函数

 产生整型随机数的函数:
• $random ;
• $random( seed );

 注意:
• seed必须是reg 型、integer 型或者 time类型的变量。
• 在调用$random( seed )之前,应该为这个变量赋值。
• 不同的<seed>值,将生成不同的随机数。
• $random 函数使用的算法不是标准化的。
系统任务和系统函数

 设计块:4位二进制加法器的数据流描述

module Fadder4(A, B, Cin, Sum, Cout);


input[3:0] A,B; //输入端口声明
input Cin;
output[3:0] Sum; //输出端口声明
output Cout;

assign {Cout,Sum} = A + B + Cin; //完成加法运算

endmodule
系统任务和系统函数

 测试模块(激励块):
//文件名:Test_Fadder4.v initial begin //生成输入信号的数据
Cin=0; A=7; B=3;
`timescale 10ns/1ns #5 A=9;B=6;
#5 A=9;B=7;
module Test_Fadder4; #5 Cin=1; A=7; B=3;
reg Cin; //声明输入信号 #5 A=9;B=6;
reg [3:0] A,B; #5 A=9;B=7;
wire[3:0] Sum;//声明输出信号 #5 $stop; //暂停模拟仿真
wire Cout; end

//实例引用设计块 // 将结果输出到屏幕上
Fadder4 U0(A,B,Cin,Sum,Cout); initial //监视系统任务
$monitor($time,":\tA=%b,B=%b,Sum=%b,
Cout=%b\n",A,B,Sum,Cout);
endmodule
系统任务和系统函数
 产生加法器测试向量的程序
module Test_Random ;
reg [3:0] A,B; reg Cin; //Input
integer seed1,seed2,seed3;
initial begin
seed1 =1; seed2 =2; seed3 =3;//种子初始化
end

always begin //每隔10个时间单位生成一组随机值


#10 A=($random(seed1)/16);
B=($random(seed2)/16);
Cin=($random(seed3)/2);
end
endmodule
系统任务和系统函数
 ModelSim仿真波形图

为何 A、B 的值只有4 位呢?


系统任务和系统函数
 产生加法器测试向量的程序
module Test_Random ;
reg [3:0] A,B; reg Cin; //Input
integer seed1,seed2,seed3;
initial begin
seed1 =1; seed2 =2; seed3 =3;//种子初始化
end

always begin //每隔10个时间单位生成一组随机值


#10 A=($random(seed1)/16);
B=($random(seed2)/16);
Cin=($random(seed3)/2);
end
endmodule
再见!
第一讲 ModelSim 仿真流程

学习目标:

通过对 2 选 1 数据选择器和 3/8 译码器进行仿真,学习使用 ModelSim 仿真


工具,熟悉 ModelSim 仿真流程。

1. ModelSim 简介

ModelSim 分几种不同的版本:SE、PE、LE 和 OEM,其中 SE 是最高级的


版本。而集成在 Altera、Xilinx、Actel、Atmel 以及 Lattice 等 FPGA 厂商设计工
具中的均是其 OEM 版本。
ModelSim SE 是主要版本号,也是功能最强大的版本,支持对 Verilog 和
VHDL 语言的混合仿真。除了主要版本外,Mentor 公司还为各大 FPGA 厂商提
供 OEM 版本: XE 是为 Xilinx 公司提供的 OEM 版,包括 Xilinx 公司的库文
件;AE 是为 Altera 公司提供的 OEM 版,包含 Altera 公司的库文件;在用特定
公司的 OEM 版进行仿真时不需要编译该公司的库文件,但是仿真速度等性能指
标都要落后于 SE 的版本。
本文档编译和仿真均使用 ModelSim - Intel FPGA Starter Edition 10.5b
(Quartus Prime 17.1)软件(为了书写简便,之后仿真编译所称的 ModelSim 均是
指该 ModelSim 版本)。这是为 Altera 公司提供的 OEM 版本,不需要许可证,可
以免费使用。
可以直接单独使用 ModelSim 进行编译仿真,也可以使用 Quartus 软件调用
ModelSim 进行仿真。
Altera-ModelSim 软件官网下载网址:
http://fpgasoftware.intel.com/17.1/?edition=pro&platform=windows&download_man
ager=dlm3
2. 逻辑功能的仿真验证过程

2.1 2 选 1 数据选择器

图 2.1 是一个常见的 2 选 1 数据选择器电路。该电路的输出逻辑表达式为

Y  S D0  SD1

D0,D1 是输入的两个串行数据,S 是输入的选择信号,Y 是输出信号。当 S

为“1”时,选择 D1 输出,当 S 为“0”时,选择 D0 输出。

U1

D0 U2 A
Y
Snot U4
D1
U3 B

图 2.1 2 选 1 数据选择器逻辑图
下面是 2 选 1 数据选择器的 Verilog 设计代码:
//file name: mux2to1.v
module mux2to1(
input D0, //输入信号 D0
input D1, //输入信号 D1
input S, //输入选择信号 S
output reg Y //输出信号 Y
);

/*电路功能描述
1.(*)表示 always 块中所有输入信号都是敏感信号
2.Y 必须定义成 reg 型
*/
//Y:2 选 1 数据选择器输出数据
always @(*)begin
if(S == 1'b1)//or: if (S) Y = D1;
Y = D1;
else
Y = D0;
end

endmodule
2.2 激励块

在对一个设计模块进行仿真时,我们需要准备一个供测试用的激励模块,

该模块同样用 Verilog HDL来描述。由于测试模块的主要任务是给设计块提

供激励信号,所以我们将测试模块称为激励块或者测试平台(Test Bench)。

编写 testbench 的主要目的是为了对使用硬件描述语言(HDL)设计的电路
进行仿真验证,测试设计电路的功能、部分性能是否与预期的目标相符。
编写 testbench 进行测试的过程如下:
1) 产生模拟激励(波形);
2) 将产生的激励加入到被测试模块并观察其输出响应;
3) 将输出响应与期望进行比较,从而判断设计的正确性。
下面是 2 选 1 数据选择器激励模块代码,文件名为 tb_mux2to1.v。
(`timescale 1ns/1ns)是编译器指令,该指令将激励块中所有延迟的单位设

置成1ns,时间精度(指延迟值的最小分辨度)设置为1ns,例如,下面模块中

的#1 代表延迟1ns。

在激励模块中,可以使用一套新的信号名称,也可以与设计块使用
相同的名称,但声明信号时,激励信号的数据类型要求为 reg,以便保
持激励值不变,直至执行到下一条激励语句为止。输出信号的数据类
型要求为 wire,以便能随时跟踪激励信号的变化。
//file name:tb_mux2to1.v
`timescale 1ns/1ns //时间单位为 1ns,精确度为 1ns
module tb_mux2to1; //激励模块(顶层模块)没有端口列表

reg D0, D1, S; //声明输入信号


wire Y; //声明输出信号

initial begin
//初始化
S = 0; D1 = 0; D0 = 0;
#1
S = 0; D1 = 0; D0 = 1;
#1
S = 0; D1 = 1; D0 = 0;
#1
S = 0; D1 = 1; D0 = 1;
#1
S = 1; D1 = 0; D0 = 0;
#1
S = 1; D1 = 0; D0 = 1;
#1
S = 1; D1 = 1; D0 = 0;
#1
S = 1; D1 = 1; D0 = 1;
#1
S = 0; D1 = 0; D0 = 0;
#1
$stop;
end

//2选1数据选择器模块例化
mux2to1 mux2to1_inst(
.D0(D0),
.D1(D1),
.S(S),
.Y(Y)
);

endmodule
2.3 仿真过程简介

我们以上面的2选1数据选择器为例,简要介绍使用ModelSim进行仿真验

证的大致过程,详细操作步骤将在第3节介绍。

(1)首先,创建新工程,然后添加设计文件和激励文件。在ModelSim

中,所有的设计文件被编译成一个库,库的默认名称为“work”,也可以使用其

他名称。

(2)将设计文件和激励文件编译到工作库中。

(3)运行仿真。仿真器通过调用 Verilog HDL 的顶层模块,将设计载入

到仿真器中。

(4)查看仿真波形,进行调试。
3. ModelSim 仿真软件的使用

我们以上面的 2 选 1 数据选择器为例,详细介绍使用软件 Modelsim 进行

仿真验证的具体步骤。

3.1 创建工作目录

在F盘(或者其它盘)根目录下新建modelsim_workspace文件夹,用来

存放所有的仿真工程,然后在modelsim_workspace文件夹中创建

tb_mux2to1文件夹,在tb_mux2to1中创建prj(project简称)子文件夹

和src(source简称)子文件夹,prj用来存放2选1数据选择器仿真工程,

src用来存放与设计相关的文件,将mux2to1.v和tb_mux2to1.v复制放入

src文件夹中(代码文件见2.1节和2.2节)如图 3.1所示。(注意,路径中不

能出现中文字符)。

图 3.1 创建工作目录

3.2 运行 ModelSim 软件

双击运行 ModelSim 软件,软件页面如图 3.2 所示。


图 3.2 ModelSim 软件页面

3.3 创建新工程并添加现有文件

单击菜单栏 File->New->Project…,如图 3.3 所示。

图 3.3
接 着 点 击 Browse 选 择 工 程 存 放 的 目 录
F:\modelsim_workspace\tb_mux2to1\prj ( 根 据 自 己 创 建 的工 作 目录 设 置 ),
Project Name 设置为 tb_mux2to1(可自己设置),其他默认,最后点击 OK。如
图 3.4 所示。
图 3.4
然后会弹出图 3.5 所示窗口,点击 Add Existing File 添加代码文件到工程中。

图 3.5
然后会弹出图 3.6 所示窗口,点击 Browse。

图 3.6
将目录选择到 F:\modelsim_workspace\tb_mux2to1\src(根据自己代码文件存放
位置设置)
,选择设计文件 mux2to1.v 和激励文件 tb_mux2to1.v,点击打开(按
住 Ctrl 键鼠标左键点击文件可以一次性打开多个文件),最后在 Add file to Project
窗口中点击 OK 即可将代码文件加入到工程。如图 3.7 所示。
图 3.7
也可以右键点击 Project 窗口空白处,Add to Project->Existing File 添加代
码文件,如图 3.8 所示。

图 3.8
添加完代码文件后,在 Project 窗口中,就可以看到所添加的两个文件,此
时文件 Status 显示为“?”,这是因为文件还没编译。
3.4 编译文件

鼠标右键任意一个文件,点击 Complie->Complie All 即可编译所有文件,如


图 3.9 所示。

图 3.9
如果编译成功,则在 Transcript 窗口中显示如图 3.10 所示编译成功的内容,
同时代码文件 Status 显示为绿色的“√”。如果编译出错,需要根据错误提示修
改代码,然后再重新编译,直到没有编译错误。

图 3.10
3.5 开始仿真

编译成功以后,就可以进行仿真。点击 Library,进入 Library 窗口,点击


work 前面的“+”,右键点击 tb_mux2to1,点击 Simulate。如图 3.11 所示。

图 3.11
此时会弹出来一个 sim 窗口(显示设计结构的层次化视图),显示如图 3.12
所示。

图 3.12
3.6 添加仿真波形

在 sim 界面中,右键 tb_mux2to1,点击 Add Wave 添加波形。如图 3.13 所示。

图 3.13
此时会弹出一个新的 Wave 界面。但是没有波形,如图 3.14。为了便于区分
两个界面,称之前的界面为主界面。

图 3.14

3.7 运行仿真

在主界面的 Transcript 窗口中,输入”run 20ns”命令,会开始运行仿真。如


图 3.15 所示。
图 3.15
同时在 Wave 界面中,会显示仿真波形。如图 3.16 所示。
(为了让波形显示
更清楚,可以按“i”键放大,按“o”键缩小)

图 3.16
根据波形图,我们可以很清楚的看到,当选择信号 PS=0 时,输出 PY=PD0,
当选择信号 PS=1 时,输出 PY=PD1。
如果仿真结果与预期结果不一致,那么我们可以根据仿真结果来找出设计文
件中一些错误。
4. 3/8 线译码器功能仿真

4.1 功能分析

3/8 线译码器的真值表如 4-1 所示:


表 4-1
en a[2] a[1] a[0] Y[7] Y[6] Y[5] Y[4] Y[3] Y[2] Y[1] Y[0]
1 0 0 0 1 1 1 1 1 1 1 0
1 0 0 1 1 1 1 1 1 1 0 1

1 0 1 0 1 1 1 1 1 0 1 1
1 0 1 1 1 1 1 1 0 1 1 1
1 1 0 0 1 1 1 0 1 1 1 1
1 1 0 1 1 1 0 1 1 1 1 1
1 1 1 0 1 0 1 1 1 1 1 1
1 1 1 1 0 1 1 1 1 1 1 1

0 x x x 1 1 1 1 1 1 1 1

当 en(使能信号)为 1 时,输出根据输入对应的二进制转换成十进制进行译
码。当输入 a[2:0]为十进制数 d(0~7)时,则 Y[7:0]对应第 d 位输出为 0,其他
位输出为 1(这只是一种输出形式,也可以使对应位输出为 1,其他位输出为 0)。
当 en 为 0 时,则输出恒为 8’b1111_1111。

4.2 设计文件代码

3/8 译码器设计文件代码如下:
//flie name: decoder3_8.v
module decoder3_8(
input [ 2: 0] a, //input 3 bits signal
input en, //enable signal
output reg [ 7: 0] Y //output 8 bits signal
);

/* always @(*)语句的意思是 always 模块中的任何一个输入信号或电平发生变化时,


该语句下方的模块将被执行,即所有输入信号都被视为敏感信号。
*/

//Y: 3/8 译码器译码输出


always @(*)begin
if(en)begin
case(a[2:0])//decoder3_8
3'b000: Y = 8'b1111_1110;
3'b001: Y = 8'b1111_1101;
3'b010: Y = 8'b1111_1011;
3'b011: Y = 8'b1111_0111;
3'b100: Y = 8'b1110_1111;
3'b101: Y = 8'b1101_1111;
3'b110: Y = 8'b1011_1111;
3'b111: Y = 8'b0111_1111;
default:Y = 8'b1111_1111;
endcase
end
else begin//en = 0 时,输出恒为 8'b1111_1111
Y = 8'b1111_1111;
end
end

endmodule

4.3 激励文件代码

激励文件代码如下:
//tb_decoder3_8.v
`timescale 1ns/1ns //时间单位为 1 ns,精确度为 1ns
module tb_decoder3_8;

reg [ 2: 0] a; //input 3 bits signal


reg en; //enable signal
wire [ 7: 0] Y; //output 8 bits signal
//
initial begin
//初始化
a <= 3'b000;
en <= 1'b0;
#2
en <= 1'b1;
#2
a <= 3'b001;
#2
a <= 3'b010;
#2
a <= 3'b011;
#2
a <= 3'b100;
#2
a <= 3'b101;
#2
a <= 3'b110;
#2
a <= 3'b111;
#2
en <= 1'b0;
#10
$stop;
end

//3/8 译码模块例化
decoder3_8 decoder3_8_inst(
.a(a), //connect a
.en(en),//connect en
.Y(Y) //connect Y
);

endmodule
4.4 进行仿真

在 modelsim_workspace 目录下创建 tb_decoder3_8 文件夹,在 tb_decoder3_8


文件夹中创建 prj 和 src 两个文件夹。将 decoder3_8.v 和 tb_decoder3_8.v 文件放
入 src 文件夹中。
创建工程、加入代码文件、运行仿真等过程见第 3 节。
仿真结果如图 4.1 所示:

图 4.1 可以更改显示数据格式(2 进制,8 进制或者 16 进制等)以便更好的


查看仿真波形。右键对应信号,选择 Radix,然后选择对应格式。如图 4.2 所示:

图 4.2
由仿真结果可知,当 en=0 时,译码输出恒为 8’b1111_1111,当 en=1 时,
译码输出 Y[7::0]根据 a[2:0]的十进制数对应位为 0,其余位为 1,即实现了 3/8
译码器功能。
教学内容、要求及小结

本章目的
本章讨论的锁存器和触发器是时序逻辑电路的基本单元。主要内容包括:
 解释锁存器与触发器之间的差别
 指出如何使用逻辑门构建基本的锁存器和触发器
 分析 S-R 锁存器与 D 锁存器的工作原理
 分析主从 D 触发器和一种边沿 D 触发器的工作原理和逻辑功能
 介绍其他几种触发器(JK、T 和 T′触发器)的逻辑功能
 解释锁存器器的几个时间参数(建立时间、保持时间、传输延迟时间、脉
冲宽度等)
 解释触发器的几个时间参数(建立时间、保持时间、传输延迟时间、最高
时钟脉冲频率、最小的时钟脉冲宽度等)

本节主要内容:
 双稳态电路的基本特性

学习本节后,你应该能
 理解锁存器和触发器的现态与次态的定义
 了解锁存器和触发器的区别

小结:
● 时序电路的基本逻辑单元电路是锁存器和触发器,它们都具有存储功能。
每个锁存器或触发器都能存储 1 位二值信息,所以又称为存储单元或记忆单元。
● 触发器有一个时钟输入端,只有时钟脉冲到来时,触发器的状态才能改变。
而锁存器没有时钟输入,其状态的改变直接由数据输入端控制。
锁存器和触发器

华中科技大学 罗杰
概 述
问题的引出
问题的引出

组合电路设计的一般步骤:

逻辑 列出 逻辑 画出
抽象 真值表 表达式 逻辑电路

化简和
变换

• 译码器、编码器、数据选择器、
加法器、表决器、……
问题的引出

设计题
+VCC
用一个按钮开关控制一个LED灯的亮灭。 K
A 待设计 F
要求:按一次,灯亮;再按一次,灯灭; 电路
如此循环,……

 分析:

 电路只有一个输入A、一个输出 F
 使用前面学过的知识,能够设计出来吗?

显然,有困难!
问题的引出

设计题
+VCC
用一个按钮开关控制一个LED灯的亮灭。 K
A 待设计 F
要求:按一次,灯亮;再按一次,灯灭; 电路
如此循环,……
 遇到的难题?
 输出 F 与状态(state)相关
 输入A为一个脉冲电平信号 (或者称为事件,event),而不是一个固定的
电平值 (0或1)
 该电路应该如何设计呢?
问题的引出

电路的基本组成

 存储电路: 保存电路当前的状态。
 组合逻辑电路: 进行逻辑运算。

Inputs Outputs
组 合
逻辑电路 存储电路 现态

反馈
时序逻辑电路的基本结构
问题的引出

 时序逻辑电路的特点:  组合逻辑电路的特点:
电路在任一时刻的输出不仅取决 电路在任一时刻的输出仅仅由
于当前的输入,而且与电路原来 当时的输入信号所决定,与电
的状态相关。 路原来的状态是没有关系的。
问题的引出

时序电路的状态

时序电路的状态(state)是一个状态变量(state variable)集合,
这些状态变量在任意时刻的值包含了过去的所有信息,以便解释电路未来的
行为。

——来自于John F. Wakerly的《数字设计 原理与实践》


锁存器和触发器

锁存器和触发器
锁存器和触发器
是具有存储功能的单元电路,也是构成时序逻辑电路的基本部件。
我们要讨论:

 电路结构
 工作原理
 逻辑功能
锁存器和触发器

01 基本双稳态电路 02 SR 锁存器

03 D 锁存器 04 触发器电路结构
和工作原理

05 触发器的逻辑功能
基本双稳态电路
基本双稳态电路
正反馈
电路的组成及原理

0 vO1 1 0 v
vI
假设刚上电时, vO= 0, G1 G2 O

01
则vi = 0, vO1 = 1, vO = 0

假设刚上电时, vO= 1,
02 1 vO1 0 1
则vi = 1, vO1 = 0, vO = 1 vI G1 G2 vO

结论:该电路一旦进入某一种逻辑状态,就能长期保持该状态不变。
基本双稳态电路

双稳态电路的定义

将具有0、1两种逻辑状态,且一旦进入某一种
逻辑状态,就能长期保持该状态不变的电路,
称为双稳态存储电路,简称双稳态电路。
基本双稳态电路

改变一下电路的画法,并用 Q、Q 作为两个


非门的输出。
vO1 电路在正常工作时,两个输出端的状态通常是
vI G1 G2 vO
相反的(也称为互补的)。
输出端 Q 称为常态输出,Q 称为反态输出。

习惯上, 用输出端 Q 的状态来表示双稳态


vI vO1
Q 电路的状态。
G1

定义Q = 0、Q = 1时为电路的 0状态;


vO 定义Q = 1、Q = 0时为电路的 1状态。
G2 Q
基本双稳态电路

小 结
由非门构成的双稳态电路,具有存储1位二进制数据的功能。
但功能极不完备。

在接通电源时,它可能会随机地进入0状态或1状态,因为没有
输入控制端,在工作时无法改变或控制它的状态,因此不能作
为存储电路使用。

如何改进呢?
将在下一个知识点为大家讲解。
再见!
教学内容、要求及小结

本节主要内容:
 基本 SR 锁存器的电路结构和工作原理
 门控 SR 锁存器的电路结构和工作原理

学习本节后,你应该能
 理解基本 SR 锁存器和门控 SR 锁存器的工作原理
 掌握锁存器的特性表和特性方程,并能指出输入信号的约束条件

小结:
● 锁存器是对脉冲电平敏感的存储电路,在一定的电平作用下改变状态。
● 基本 SR 锁存器由输入信号电平直接控制其状态,其输入信号会受到约束
条件的限制;由或非门构成的基本 SR 锁存器对输入的高电平有效,有与非门构

成的基本 S R 锁存器对输入的低电平有效。
● 门控 SR 锁存器在使能信号有效的条件下由输入信号决定其状态,其输入
信号应该遵守一定的约束条件。
锁存器和触发器

华中科技大学 罗杰
用或非门组成的 SR 锁存器
用或非门构成的基本SR 锁存器

vO1
G1 Q 如何改进非门构成的基本双稳态电路呢?

用或非门来替换掉非门,构成基本SR锁
G2
vO
Q 存器。

R Q

S Q
用或非门构成的基本SR 锁存器

功能分析 S=0,R=0 状态保持不变

0 0 0 0 1 1
R R G1 Q
G1 Q

G2 Q S G2 Q
S 0
0 1 0
假设初态 Q = 0 假设初态 Q = 1

 当 S=0,R=0时,锁存器保持原来的状态不变。

 SR 锁存器对输入的低电平信号不起作用。
用或非门构成的基本SR 锁存器

功能分析 S=0,R=1 复位(Reset)

1 0 1 0
0 0 R 1 0
R G1 Q G1 Q

G2 Q S G2 Q
S 1
0 1 0
假设初态 Q = 0 假设初态 Q = 1

 无论初态为0或1,锁存器的次态均为0态。
 输入信号消失后,新的状态将被记忆下来。
用或非门构成的基本SR 锁存器

功能分析 S=1,R=0 置位(Set)

0 0 1 1
R 0 1 R
G1 Q G1 Q

G2 Q S G2 Q
S 0
1 0 0 1 0
假设初态 Q = 0 假设初态 Q = 1

 无论初态为0或1,锁存器的次态均为1态。
 输入信号消失后新的状态将被记忆下来。
用或非门构成的基本SR 锁存器

功能分析 S=1,R=1 状态不确定

1 0  锁存器的输出既不是0态,也不是1态。
R 0
G1 Q 即状态不确定。

 当 S、R 同时回到0时,无法确定锁存器
S G2 Q
0 的最终稳定状态为 1 还是 0 。
1 0
初态 Q = 0 或 1
 因此,不允许输入出现 S=R=1 的情况。

 无论初态为0或1,锁存器的两 换言之,输入信号要满足条件:

个输出端均为0。 S R = 0(约束条件)
用或非门构成的基本SR 锁存器

小结 基本 SR 锁存器的功能表

S R Q Q 功 能
R G1 Q
0 0 不变 不变 保持 (No change)

0 1 0 1 置 0 (RESET)
S G2 Q 置 1 (SET)
1 0 1 0
逻辑图 1 1 0 0 非定义状态

 一个存储单元最基本的逻辑功能是:数据保持、置0和置1
用或非门构成的基本SR 锁存器

假设 SR 锁存器的初态 Q = 0,输入波形如图所示,试
波形图 画出 Q 和 Q 波形。

基本 SR 锁存器的功能表 保持
S 置1 置1
S R Q Q 功 能
R 置0 保持
0 0 不变 不变 保持 (No change)
0 1 0 1 置 0 (RESET)
Q
1 0 1 0 置 1 (SET)
非定义状态 Q
1 1 0 0
用或非门构成的基本SR 锁存器
R G1 Q
 符号(a)是当前最流行的一种符号。

G2 Q  符号(b)是历史上曾经使用过的一种
S
逻辑图 符号。

逻辑符号  符号(c)是错误的。

S S Q S Q S S Q

R R Q R Q R R Q


(a) (b) (c)
用或非门构成的基本SR 锁存器

假设或非门构成的SR 锁存器初始状态为 1, S端、R 端的输入波形



如图所示,试画出输出 Q 和 Q 波形。

无效情况 无效情况 无效情况


S
S S Q
R

R R Q Q
逻辑符号 不确定
Q

0 1 2 3 4 5 6 7 8 9 10 11
用或非门构成的基本SR 锁存器

基本 SR 锁存器的动态特性  传输延迟时间 tpLH 和 tpHL :

 tpLH为输出由低到高时,相对于输

S 入的延迟时间。

 tpHL为输出由高到低时,相对于输
R 入的延迟时间。

 tpLH和tpHL一般不相等。
Q
tpLH tpHL
用或非门构成的基本SR 锁存器

基本 SR 锁存器的动态特性  脉冲宽度 tW:


窄脉冲
 tW是保证锁存器正常翻转时,输入
tW tW

S
高电平脉冲宽度的最小值。
tW1
tW3
tW  如果输入脉冲宽度< tW ,Q 端电压

R 值未越过逻辑阈值电平时,输入的
tW2
高电平被撤出,就会导致输出状态

Q 不稳定。
tpLH tpHL
不确定
再见!
锁存器和触发器

华中科技大学 罗杰
用与非门组成的 SR 锁存器
用与非门构成的基本SR 锁存器

G1 Q 用与非门替换掉基本双稳态电路中的
非门,构成基本SR 锁存器。
由于与非门对输入的低电平敏感,所以
G2
vO
Q
用 S、R 表示低电平起作用的输入信号。

该电路又是如何工作的呢?

S G1 Q

G2 Q
R

(a)逻辑图
用与非门构成的基本SR 锁存器

功能分析 S=1,R=1 状态保持不变

1 0 0 1 1 1
S G1
S G1 Q
Q

G2 Q R G2 Q
R 0
1 1 1
假设初态 Q = 0 假设初态 Q = 1

 当 S=1,R=1时,锁存器保持原来的状态不变。

 S R 锁存器对输入的高电平信号不起作用。
用与非门构成的基本SR 锁存器

功能分析 S=1,R=0 复位(Reset)

1 0 0 1 1 0
S S G1 Q
G1 Q

G2 Q R G2 Q
R 1
0 1 0
假设初态 Q = 0 假设初态 Q = 1

 无论初态为0或1,锁存器的次态均为 0 态。
 输入信号消失后新的状态将被记忆下来。
用与非门构成的基本SR 锁存器

功能分析 S=0,R=1 置位(Set)

0 1 0 1
0 1 1 1
S G1 Q S G1 Q

G2 Q R G2 Q
R 0
1 0 1
假设初态 Q = 0 假设初态 Q = 1

 无论初态为0或1,锁存器的次态均为 1 态。
 输入信号消失后,新的状态将被记忆下来。
用与非门构成的基本SR 锁存器

功能分析 S=0,R=0 状态不确定

0 1  锁存器的输出既不是0态,也不是1态。
1
S G1 Q 即状态不确定。

R G2 Q
?  当 S、R 同时回到1时,无法确定锁存器

0 1
1 的最终稳定状态为 1 还是 0 。
初态 Q = 0 或 1
 因此,不允许输入出现 S=R=0 的情况。

 无论初态为0或1,锁存器的两 换言之,输入信号要满足条件:

个输出端均为1。 S  R  1 ( 约束条件 )
用与非门构成的基本SR 锁存器

小结 基本 SR 锁存器的功能表

S R Q Q 功 能
S G1 Q 1 1 不变 不变 保持 (No change)

1 0 0 1 置 0 (RESET)
G2 Q 0 1 1 0 置 1 (SET)
R
逻辑图 0 0 1 1 非定义状态

 基本 SR 锁存器具有 数据保持、置0和置1 的逻辑功能。


用与非门构成的基本SR 锁存器

波形图 假设 SR 锁存器的初态 Q = 0

基本 SR 锁存器的功能表
S 置1 置1 保持
S R Q Q 功 能
1 1 不变 不变 保持 (No change)
R 置0 保持

1 0 0 1 置 0 (RESET)
Q
0 1 1 0 置 1 (SET)
0 0 1 1 非定义状态 Q
用与非门构成的基本SR 锁存器

逻辑符号 小圆圈表示输
入低电平有效

S G1 Q
S G1 Q
S S Q

R R Q
G2 Q G2 Q
R R

(a)逻辑图 (b)等效逻辑图 (c)常用逻辑符号

 方框外侧输入端的小圆圈和信号名称上面的小横线均表
示输入信号是低电平有效的。
用与非门构成的基本SR 锁存器

例 运用基本 SR 锁存器,消除机械开关触点抖动引起的脉冲输出。
+5V

 由于机械开关接通或断开瞬间的弹性振 R

颤,触点会在短时间内多次接通和断开,
出现如图所示的“抖动”现象,使 vO t0
vO

的逻辑电平多次在0和1之间跳变。 t1

 机械开关触点振颤的延续时间从数毫秒
到上百毫秒不等。 vO/V

5
 如何消除vO 上出现的多次跳变呢?
O t0 t1 t
用与非门构成的基本SR 锁存器

解决机械开关抖动现象的一种硬件方案如图所示。
解:
它利用基本 SR 锁存器的存储作用,消除了开关触点
振动所产生的影响,称为去抖动电路。
+5V
1
100k 74HCT00
2
S 0
1 Q
A S
S
R
B
0
R Q
100k

+5V
再见!
锁存器和触发器

华中科技大学 罗杰
门控 SR 锁存器
门控 SR 锁存器

S S
G3
G1 Q

E
G2 Q
G4
R
R
控制门 基本 SR 锁存器

 在基本 SR 锁存器输入端增加了一对与非门
G3、G4,用使能信号 E 控制锁存器在某一
指定时刻,根据 S、R 输入信号确定输出状
态,这种锁存器称为门控 SR 锁存器。
门控 SR 锁存器

电路工作原理 基本 SR 锁存器的功能表

1 S S R Q Q 功 能
S G3
G1 Q 保持 (No change)
1 1 不变 不变
0
E 1 0 0 1 置 0 (RESET)
1 G2
G4
Q 0 1 1 0 置 1 (SET)
R
R
0 0 1 1 非定义状态

当 E = 0 时, S = R = 1,
01
锁存器状态不变
门控 SR 锁存器

电路工作原理 门控 SR 锁存器的功能表(E=1时)

S R Q Q 功 能
S S
G3
G1 0 0 不变 不变 保持 (No change)
Q
1 0 1 0 1 置 0 (RESET)
E
1 0 1 0 置 1 (SET)
G2 Q
G4
R 非定义状态
R 1 1 1 1

当 E = 1 时,  门控 SR 锁存器输入信号要满足条件:
02 则S、R端的信号被传送到基本
锁存器的输入端,使输出状态 S  R  0 ( 约束条件 )
发生变化。
门控 SR 锁存器

电路工作原理 门控 SR 锁存器的功能表

E S R Q Q 功 能
S S
G3
G1 Q 0   不变 不变 保持 (No change)

E 1 0 0 不变 不变 保持 (No change)
G2 Q 1 0 1 0 1 置 0 (RESET)
G4
R
R 1 0 1 0 置 1 (SET)
1
1 1 1 1 1 非定义状态
门控 SR 锁存器

逻辑符号

S S R
G3 1R Q
G1 Q
E C1
E
G2 Q S 1S Q
G4
R
R
逻辑符号

 逻辑符号方框内用 C1 和 1R、1S 表达内部逻辑之间的关联关系。


 C 表示这种关联属于控制类型,其后缀用标识序号“1”表示该输入的
逻辑状态对所有以“1”作为前缀的输入起控制作用。
门控 SR 锁存器
1 2 3 4
门控SR锁存器的输入波形如
例 E
图所示,假设它的初始状态
S
为 0,试画出Q3、Q4、Q 和 R
Q 的波形。

Q3 Q3
S G3
G1 Q Q4
E
Q
G2 Q
G4
R Q4
Q
门控 SR 锁存器
1 2 3 4
门控SR锁存器的输入波形如
例 E
图所示,假设它的初始状态
S
为 0,试画出Q 和 Q 的波形。 R

R 1R Q

E C1 Q

S 1S Q
Q
逻辑符号
门控 SR 锁存器

小结与问题

门控SR锁存器的状态受使能信号E的控制。
 当 E=0时,锁存器被禁止;
 在 E=1期间,接收输入信号。

在 E=1期间,若输入发生多次变化,锁存器的
状态也将随之变化多次,且禁止输入S=R=1。

如何改进呢?
将在下一个知识点为大家讲解。
再见!
教学内容、要求及小结

本节主要内容:
 门控 D 锁存器的电路结构和工作原理
 D 锁存器的动态特性参数

学习本节后,你应该能
 理解逻辑门控 D 锁存器的工作原理
 理解传输门控 D 锁存器的工作原理
 理解 D 锁存器的几个时间参数(建立时间、保持时间、传输延迟时间、脉
冲宽度等)

小结:
● D 锁存器在工作中没有约束条件。门控 D 锁存器在使能信号有效时,输
出跟随输入信号 D 改变,故又称为透明锁存器。
锁存器和触发器

华中科技大学 罗杰
D 锁存器的电路结构
D 锁存器
逻辑门控 D 锁存器
逻辑门控 D 锁存器

S S
D G3
G1 Q
E
E
G2 Q
R
G5 G4
R
控制门 基本 SR 锁存器

 在门控 SR 锁存器的两个输入端之间增加一个
非门,构成门控 D 锁存器。

 由于 S = D,R = D, 所以消除了输出端可能出
现的非定义状态。
逻辑门控 D 锁存器

S 数据输入
D S
G3
G1 Q
D 1D Q
E
E E C1
G2 Q
Q
R
G5 G4
R
逻辑符号

E S R Q Q 功 能
逻辑门控 D 锁存器的功能表
0   不变 不变 保持 (No change)
1 0 0 不变 不变 保持 (No change) E D Q Q 功 能
1 0 1 0 1 置 0 (RESET) 0  不变 不变 保持 (No change)
1 1 0 1 0 置 1 (SET) 1 0 0 1 置 0 (RESET)
1 1 1 1 1 非定义状态 1 1 1 0 置 1 (SET)
逻辑门控 D 锁存器

逻辑门控 D 锁存器的输入波形
例 D 1D Q
E C1
如图所示,假设它的初始状态
Q
为 0,试画出Q 的波形。

解 E  0, 保持 D

E  1, Q  D E

Q
D 锁存器有两个稳定状态,
如果输入满足一定的条件, 1 2 3 4
总结 输出就会发生翻转。
传输门控 D 锁存器
传输门控 D 锁存器

传输门的基本特性  当 C = 0,C = 1 时, 开关断开,


不能传送信号。
C
C=0
A TG B A B
C
逻辑符号  当 C = 1,C = 0 时, 开关连通,
信号可以从A传送到B。
传输门就是一个能够传输模拟信号 也可以从B传送到A。
的模拟开关。开关导通时,其导通
电阻较低。 C=1
传输门通常受互补逻辑信号 C 和 C A B
控制。
传输门控 D 锁存器
 传输门控 D 锁存器由基本双稳态电路和传输门组成。

D TG1 G1 Q
数据输入
C
C TG2 C Q
D 1D
E C1
Q
G2 Q
逻辑符号
C C 基本双稳态电路
E G3 G4
传输门控 D 锁存器

D TG1 G1 Q D G1 Q
TG1
C TG2
C TG2 C

G2 Q G2 Q
1 0C 1C
E G3 G4 Q=D, Q=D

 可见,在 E=1期间,输出端Q 的状
 E=1 时,C = 0,C = 1,
态始终与输入的状态保持相同。
TG1导通,TG2断开
传输门控 D 锁存器

D TG1 G1 Q D G1 Q
TG1
C
C TG2 C TG2

G2 Q G2 Q
0 1C 0C
E G3 G4
 电路的原理与基本双稳态电路相同。

 E=0 时,C = 1,C = 0,  电路将存储 E由1变0之前的瞬间 D


TG1断开,TG2导通 的值,实现了 1位数据的存储。
传输门控 D 锁存器

在 E=1期间,Q 端的状态始终跟随输入
小 结
信号变化,输出与输入的状态保持相同,
传输门控 D 锁存器的功能表与逻 所以又将这个电路称为“透明锁存器”
辑门控功能表相同。 (Transparent D-Latch)。
当 E 由 1 变 0 时,锁存输入的数据 D。
E D Q Q 功 能
0  不变 不变 保持 (No change) 当 E=0 时,锁存器的状态不变。
1 0 0 1 置 0 (RESET)
可见,同一个逻辑功能可以用不同的电路
1 1 1 0 置 1 (SET)
实现,逻辑功能与电路结构之间不存在固
定的对应关系。
典型 D 锁存器集成电路
典型 D 锁存器集成电路

 74HC/HCT373: OE

 它是一个CMOS集成电路,内部有 LE

8个传输门控 D 锁存器。 C1 Q0
C1
 由锁存信号LE产生一对互补的信 D0 1D

号C和 C去控制内部的传输门。 C1 Q1
 LE=1,各锁存器的输出跟随输入 C1
D1 1D
信号变化;
 LE=0,则保持状态不变。 …
… …
 8个D锁存器输出端都带有三态门。
 OE=0,输出三态门有效,输出锁
C1 Q7
存的信号; C1
 OE=1,输出处于高阻状态。 D7 1D
再见!
锁存器和触发器

华中科技大学 罗杰
D 锁存器的动态特性
D 锁存器的动态特性

 传输延迟时间 tpd : C

D TG1 G1 Q
 tpd是输出信号对输入信号的
C
C TG2 C
响应延迟时间。

G2 Q

C C
E G3 G4
D 锁存器的动态特性

 传输延迟时间 tpd : C

D TG1 G1 Q
 tpd是输出信号对输入信号的
C
C TG2 C
响应延迟时间。

D
G2 Q

E C C
0 E G3 G4
Q
D 锁存器的动态特性

 传输延迟时间 tpd : C

D TG1 G1 Q
 tpd是输出信号对输入信号的
C
C TG2 C
响应延迟时间。

D
G2 Q

E 1 0C 1C

0 E G3 G4
Q
tpLH(D-Q)
D 锁存器的动态特性

 传输延迟时间 tpd :
D G1 Q
 tpd是输出信号对输入信号的 TG1
TG2
响应延迟时间。

D
G2 Q
E 1 0C 1C

0 E G3 G4
Q
tpLH(D-Q)
D 锁存器的动态特性

 传输延迟时间 tpd :

 tpd是输出信号对输入信号的  tpLH(D-Q)是输出Q从低到高时,相对于输
响应延迟时间。 入信号 D 的延迟时间。

Q 0
tpLH(D-Q)
D 锁存器的动态特性

 传输延迟时间 tpd : C

D TG1 G1 Q
 tpd是输出信号对输入信号的
C
响应延迟时间。 C TG2 C

D
G2 Q
0
E 0 1C 0C
E G3 G4
Q
tpLH(D-Q)
D 锁存器的动态特性

 传输延迟时间 tpd : C

D TG1 G1 Q
 tpd是输出信号对输入信号的
C
C TG2 C
响应延迟时间。

D
G2 Q
0
E 0 1C 0C
E G3 G4
Q
tpLH(D-Q)
D 锁存器的动态特性

 传输延迟时间 tpd : C

D TG1 G1 Q
 tpd是输出信号对输入信号的
C
C TG2 C
响应延迟时间。

D
1 G2 Q
0
E 1 0C 1C
E G3 G4
Q
tpLH(D-Q)
D 锁存器的动态特性

 传输延迟时间 tpd : C

D TG1 G1 Q
 tpd是输出信号对输入信号的
C
C TG2 C
响应延迟时间。

0
D
G2 Q
E 1 0C 1C
E G3 G4
Q
tpLH(D-Q)
D 锁存器的动态特性

 传输延迟时间 tpd : C

D TG1 G1 Q
 tpd是输出信号对输入信号的
C
C TG2 C
响应延迟时间。

0
D
G2 Q
E 1 0C 1C
E G3 G4
Q
tpLH(D-Q) tpHL(E-Q)
D 锁存器的动态特性

 传输延迟时间 tpd :
 tpLH(D-Q)是输出Q从低到高时,相对于输

 tpd是输出信号对输入信号的 入信号 D 的延迟时间。

响应延迟时间。  tpHL(E-Q)是输出Q从高到低时,相对于输
入信号 E 的延迟时间。
D

Q
tpLH(D-Q) tpHL(E-Q)
D 锁存器的动态特性

 传输延迟时间 tpd :
 tpLH(D-Q)是输出Q从低到高时,相对于输

 tpd是输出信号对输入信号的 入信号 D 的延迟时间。

响应延迟时间。  tpHL(E-Q)是输出Q从高到低时,相对于输
入信号 E 的延迟时间。
D
 tpHL (D-Q)是输出Q从高到低时,相对于输
E 入信号 D 的延迟时间。

Q  tpLH(E-Q)是输出Q从低到高时,相对于输
tpHL (D-Q) tpLH (E-Q) 入信号 E 的延迟时间。
D 锁存器的动态特性

 传输延迟时间 tpd :
 对于CMOS集成电路,因为输出信号对
 tpd是输出信号对输入信号的
各输入信号的延迟相差不多,有时统一
响应延迟时间。
以tpHL和tpLH表达。

D
 有时,使用平均传输延迟时间:

E
tpLH+tpHL
tpd =
𝟐

Q
tpLH(D-Q) tpHL(E-Q)
D 锁存器的动态特性
 建立时间 tSU :
 tSU表示数据 D 在锁存信号 E 的有  如果 t’SU < tSU , 则可能导致不确定
效跳变沿(此处为下降沿) 到来 的逻辑输出。
之前必须稳定不变的最短时间。

D
t'SU
D tSU
E
tSU
E
状态不能确定

Q Q
D 锁存器的动态特性

 保持时间 tH :
 tH表示数据 D 在锁存信号 E 有效  如果 t’H < tH , 则可能导致不确定
跳变沿(此处为下降沿)到来之 的逻辑输出。
后必须保持稳定不变的最短时间。

D
t'H
D tSU tH
E

E tH
状态不能确定

Q Q
D 锁存器的动态特性

 脉冲宽度 tW :
 tW 表示锁存信号 E 的脉冲宽度。  如果 t’W < tW , 则可能导致不确定
为保证信号D正确传送到 Q ,通 的逻辑输出。
常器件手册会给出tW的最小值。
D
tW
D tSU tH
E
E tW t'W
状态不能确定
Q Q
D 锁存器的动态特性

几种典型的 D 锁存器定时参数

tpd /ns*
工作电压 tSU /ns tH /ns tW /ns
型号 功能 D-Q LE-Q
VCC /V
最小值 最大值 最小值 最大值 最小值 最小值 最小值

CD74HC373 八D锁存器 4.5 45 53 15 5 24

SN74LVC32 三十二
3.30.3 1.6 4.2 2.1 4.6 1.7 1.2 3.3
373A D 锁存器

SN74LVC1G
单D锁存器 3.30.3 1 5.4 1 5.5 1.5 1.5 3
373

*测试条件:Q端负载电容CL=50pF。
表格中的参数来自TI 公司网站:http://www.ti.com/ 。
D 锁存器的动态特性

在设计工作中,要重视电路的动态特性参数,特别是电
路工作在接近定时极限的高频条件下,对这些定时参数要留
有一定的余地。
否则,电路在长期工作时会发生原因难以查明的偶发性
逻辑错误,或因环境条件改变(如温度变化)而出现工作不
稳定的情况。
再见!
教学内容、要求及小结

本节主要内容:
 主从 D 触发器的电路结构和工作原理
 具有异步清零和异步置位的 D 触发器
 解释主从 D 触发器的几个时间参数(建立时间、保持时间、传输延迟时
间、最高时钟脉冲频率、最小的时钟脉冲宽度等)

学习本节后,你应该能
 理解上升沿触发的触发器和下降沿触发的触发器之间的差别
 了解主从 D 触发器的电路结构
 掌握 D 触发器的特性表和特性方程
 理解触发器的异步输入(异步清零、异步置数)和同步输入之间的差别
 理解建立时间、保持时间和传输延迟时间的定义
 了解触发器的几个时间参数(最高时钟脉冲频率、最小的时钟脉冲宽度、
异步有效电平脉冲的宽度)的定义

小结:
● 触发器是对时钟脉冲边沿敏感的存储电路,它们在时钟脉冲的上升沿或下
降沿作用下更新状态。目前触发器电路主要有主从和维持阻塞等结构形式。
● 触发器的电路结构与逻辑功能没有必然联系。同一种逻辑功能的触发器也
可用不同结构的电路实现。在 CMOS 电路中主从结构 D 触发器应用广泛。
锁存器和触发器

华中科技大学 罗杰
主从 D 触发器
触发器概述

锁存器 触发器
在使能信号E 的高电平(或低电平)期 触发器的状态更新只发生在CP 信号的
间,输出状态跟随输入变化。这种输 上升沿或者下降沿,这种输出状态的
出状态的更新方式,称为电平触发。 更新方式,我们称为边沿触发。

E CP

E CP
触发器概述

按照逻辑功能分类
触发器概述

按照电路结构分类
主从 D 触发器的结构及工作原理
主从 D 触发器

主锁存器 从锁存器
逻辑符号
D Qm Q
1D 1D

D 1D Q Em ES
C1 C1 Q
E C1
Q
CP

门控 D 锁存器的功能表

E D Q Q 功 能
0  不变 不变 保持 (No change)
1 0 0 1 置 0 (RESET)

1 1 1 0 置 1 (SET)
主从 D 触发器

主锁存器 从锁存器

D Qm
1D 1D Q

Em ES
C1 C1 Q

CP
0 1 0

01 CP = 0 时, 则 Em=1,Es=0,

Qm 跟随输入 D 变化,使Qm=D。 从锁存器维持原来的状态不变。


主从 D 触发器

主锁存器 从锁存器

D Qm
1D 1D Q

Em ES
C1 C1 Q

CP
1 0 1

02 CP 由 0 跳变到 1 时,则 Em=0,Es=1,

Qm不再跟随 D 变化,Qm的值送到从锁存器 Q 端。
即 Q 端被置成 CP 上升沿到达前瞬间 D 的值。
主从 D 触发器
主锁存器 从锁存器
 用Qn表示 CP 信号上升沿到达之前
Qm
D 1D 1D Q
触发器的状态,
Em ES
C1 C1 Q  用Qn+1表示 CP 信号上升沿到达之后
触发器的状态
CP
边沿 D 触发器的特性表
CP D Qn Qn+1
D    Qn
1D Q

CP
 0  0
C1 Q
 1  1
上升沿触发
D 触发器特性方程: Qn+1 = D
主从 D 触发器
主锁存器 从锁存器
Qm 主锁存器 从锁存器
D 1D 1D Q
C C
Q
Em ES Qm
C1 C1 TG1 G1 TG3 G3
Q D Q
C
CP C TG2 C C TG4 C

G2 Qm G4

D
1D Q C
CP CP C
C1 Q

上升沿触发的主从 D 触发器
上升沿触发
主从 D 触发器
主锁存器 从锁存器
C C
Q
Qm
TG1 G1 TG3 G3 Q
D
TG1 TG3
C TG
C TGTG
2 2
C C TG4 4 C

G2 Qm G4

C
CP C
0 1 0 上升沿触发的主从 D 触发器
主从 D 触发器
主锁存器 从锁存器
C C
Q
Qm
TG1 G1 TG3 G3 Q
D TG1 TG3
TG C
C TG2 2 C C TGTG
4 4
C

G2 Qm G4

C
CP C
1 0 1 上升沿触发的主从 D 触发器
主从 D 触发器

主锁存器 从锁存器 主锁存器 从锁存器


C C C C
Q Q
G1 G3 G1 G3
Qm Qm
D TG1 TG3 Q D TG1 TG3 Q

C C
C TG2 C TG4 C C TG2 C C TG4 C
C

Qm Qm
G2 G4 G2 G4

C C
CP C CP C

下降沿触发的主从 D 触发器 上升沿触发的主从 D 触发器


主从 D 触发器

边沿 D 触发器的特性表
D CP D Qn Qn+1
1D Q

CP
   Qn
C1 Q
 0  0
下降沿触发  1  1

D 触发器特性方程:

Qn+1 = D
主从 D 触发器

电平敏感型D锁存器和边沿敏感型D触发器的输入波形如图所示,假设
例 它们的初态为 0,试画出各输出端Q0、Q1、Q2波形。

D Q0 1 2 3 4
1D

CP C1
Q0
CP

D
1D Q1

C1
Q1 Q0

1D Q2 Q1
C1
Q2 Q2
再见!
锁存器和触发器

华中科技大学 罗杰
有其他控制端的 D 触发器
(一)
主从 D 触发器

异步输入端

直接置1端 直接置0端
能够直接将触发器 能够直接将触发器
的状态置为1的输 的状态置为0的输入
入端,也称为异步 端,也称为异步清
置1端。 零端、或异步复位
端。
主从 D 触发器

具有直接置1、直接置0,上升沿触发的 D 触发器

C
C

G1 TG 3
G3 Q SD
D TG 1

C Q S
C D 1D 1Q
C C TG 2 TG 4 C
C C CP C1 1Q
CP C R

G2 G4
RD
RD
逻辑符号
SD
主从 D 触发器

直接置1、直接置0 功能是如何实现的呢? ❖当 CP = 1 时,

C = 0, C = 1
C
C

G1
G3 Q TG1、 TG4关断
TG 3
D TG 1

C Q
TG2、 TG3导通
C
0C
1 C TG 2 C C TG 4 C 输入端 D 被断开,
CP C 或非门G4的输出被
1
G2 G4
断开
RD

SD 画出等效电路
主从 D 触发器

直接置1、直接置0 功能是如何实现的呢?

C
C TG 3
G3 G3 Q
Q G1
G1 TG 3 D
D TG 1
TG 1
C Q Q
C
TG 2
TG 4
C C TG 2 C C TG 4 C
CP C

G2 G4 G2 G4
RD RD

SD SD
主从 D 触发器

直接置 1 、直接置0 的功能是如何 ❖当 CP = 1 时,输入端 D 被断开


实现的?

TG 3 SD
G3 Q TG 3
G1 G3 Q
D G1
TG 1 D
Q TG 1
Q
TG 2
TG 4 TG 2

RD

SD
G2
 G4
RD
G2
主从 D 触发器

◆ 当 CP = 1 时,直接置 1 的过程:
SD=0,RD=1
0 1
SD
TG 3
0 1 G1、G2 构成的SR锁存器锁存
G1 Q
D
TG 1
输入信号, G1的输出为0,
TG 2
G2的输出为1。

1 0
Q  Q=1, Q=0
RD
G2 1 G3

1 0
主从 D 触发器

◆ 当 CP = 1 时,直接置 0 的过程:

1 0
SD
TG 3
1 0
G1 Q
D
TG 1
SD=1, RD=0

TG 2

 Q=0, Q=1
0 1
Q
RD
G2 0 G3

0 1
主从 D 触发器

直接置1、直接置0 功能是如何实现的呢? ❖当 CP = 0 时,

C
C
C = 1, C = 0
G3 Q
G1 TG3
D TG1

C Q
TG1、 TG4导通
C
1C TG2、 TG3关断
TG2 TG4
0 C C C C
CP C
0 画出等效电路
G2 G4
RD

SD
主从 D 触发器

直接置1、直接置0 功能是如何实现的呢?

C
C
TG 3
G3 Q G3 Q
G1 TG3 G1
D TG1 D
TG 1
C Q Q
C
1 TG 4
0 C C TG2 C C TG4 C
CP C
0 G4
G2 G4
RD RD

SD SD
主从 D 触发器

◆ 当 CP = 0 时,直接置 1 的过程:

0 0
TG 3 1 SD=0,RD=1
G3 Q
G1
D
TG 1
Q
G3、G4 构成SR锁存器。
TG 4
1
G4的输出为 0,G3的输
G4 0 出为 1。
1 0
RD

SD
 Q=1, Q=0
0 1 1
主从 D 触发器

◆ 当 CP = 0 时,直接置0的过程:

1 1
TG 3
G3
0 Q
G1
D
TG 1
SD=1,RD=0
Q
0
TG 4
 Q=0, Q=1

0 1 G4 1
RD

SD
1 0 0
主从 D 触发器
C
C
G3 Q
G1 TG 3
D TG 1

C Q
C

C C TG 2 C C TG 4 C
CP C

RD
1 0 G2 G4

1 0
SD

或非门 G1 ~G4的作用跟 非门 相同,


❖ 当 SD=RD= 1 时, 实现 D 触发器的功能。
主从 D 触发器

有异步输入端的D 触发器的特性表

SD RD CP D Qn+1 Qn+1 说 明

0 1   1 0 异步置1

1 0   0 1 异步置0
0 0   1 1 输出不确定

1 1  0 0 1 同步置0
1 1  1 1 0 同步置1

当 SD= RD= 0 时,触发器输出会出现不确定的状态,应该禁止。


主从 D 触发器

具有直接置1、直接置0,上升沿触发的 D 触发器

C
C
G3 Q 1SD
G1 TG 3 S
D TG 1 1Q
1CP C1
C Q
C 1D 1D
1Q
C C TG 2 C TG 4 C
1R D R
C
CP C
2SD S
2Q
2CP C2
G2 G4
RD 2D 2D
2Q
2R D R
SD

74HC/HCT74
有清零端和置1端的 D 触发器的逻辑图 逻辑符号
再见!
锁存器和触发器

华中科技大学 罗杰
有其他控制端的 D 触发器
(二)
主从 D 触发器

具有直接置1、直接置0,上升沿触发的 D 触发器

C
C

G1 TG3
G3 Q SD
D TG1
C Q S
C D 1D 1Q
C C TG2 TG4
C C C CP C1 1Q
CP C R

G2 G4
RD
RD
逻辑符号
SD
主从 D 触发器

D 触发器的特性表

SD RD CP D Qn+1 Qn+1 说 明

0 1   1 0 异步置1 SD

1 0   0 1 异步置0
D 1D
S
1Q
0 0   1 1 输出不确定
CP C1 1Q
1 1  0 0 1 同步置0 R
1 1  1 1 0 同步置1 RD
逻辑符号

当 SD= RD= 0 时,触发器输出会出现不确定


的状态,应该禁止。
主从 D 触发器

下图是一个带有异步输入端的 D 触发器,假设它的初态为 0。已知所有


例 的输入波形,试画出输出端 Q 波形。

CP 1 2 3 4 5 6 7 8
SD
D
D D Q
SD
CP C
Q RD

RD Q

置1 清0
主从 D 触发器

有同步清零端的 D 触发器

所谓同步清零 是指在清零输入信号有效,且 CP 的有效跳变沿


到来时,才能将触发器清零。

RD 0 0 0 RD 1
D 1D Q D 1D Q

CP C1 Q CP C1 Q
主从 D 触发器

有同步清零端的 D 触发器 有同步置1端的 D 触发器

所谓同步清零 是指在清零输入信 所谓同步置1 是指在预置输入信


号有效,且 CP 的有效跳变沿到 号有效,且 CP 的有效跳变沿到
来时,才能将触发器清零。 来时,才能将触发器置1。

0 SD
RD 1
1D Q D 1 1 1
D 1D Q
1 0
CP C1 Q
CP C1 Q
主从 D 触发器

有同步清零端的 D 触发器 有同步置1端的 D 触发器

所谓同步清零 是指在清零输入信 所谓同步置1 是指在预置输入信


号有效,且 CP 的有效跳变沿到 号有效,且 CP 的有效跳变沿到
来时,才能将触发器清零。 来时,才能将触发器置1。

1 SD
RD 1 D
D 1D Q 1 1D Q
1 0
CP C1 Q
CP C1 Q
主从 D 触发器

有使能端的 D 触发器

D 1D
 功能: Q
CP
C1 Q
 En = 0,Q 保持不变。 En

 En =1,在 CP 作用下, Q = D 用与门控制时钟的电路


主从 D 触发器

有使能端的 D 触发器

0 1D
D Q
1

CE
CP C1 Q
主从 D 触发器

有使能端的 D 触发器

0 1D 0 D 1D Q
Q 1D Q
D 1 D 1
CE
CE
0 1
CE CP C1 Q
CP C1 Q CP C1 Q
逻辑符号
Qn1  CE  Qn  CE  D
再见!
锁存器和触发器

华中科技大学 罗杰
主从 D 触发器的动态特性
主从D 触发器的动态特性

 传输延迟时间 tpd :

 在 CP 有效跳变沿(此处为上升沿)
D
到来时,输入信号 D 被传送到触发
器电路内部,经过一定的时间在输 CP

出端 Q 将会得到稳定的新状态,这
一时间被定义为传输延迟时间。 Q
主从D 触发器的动态特性

 传输延迟时间 tpd :

 tpLH 是输出 Q 从低电平变成高电平


D
时,相对于CP 所需要的延迟时间。
CP
 tpHL 是输出 Q 从高电平变成低电平
时,相对于CP 所需要的延迟时间。 Q

 通常使用平均传输延迟时间: tpLH tpHL

tpLH+tpHL
tpd =
𝟐
主从D 触发器的动态特性

 建立时间 tSU :

 数据 D 在时钟信号 CP 的有效跳变沿
D tSU
(此处为上升沿)到来之前,必须稳
定不变的最短时间称为建立时间 tSU。 CP

Q
主从D 触发器的动态特性

 保持时间 tH :

 在 CP 有效跳变沿(此处为上升沿)
D tSU tH
到来之后,数据信号 D 必须保持稳
定不变的最短时间称为保持时间 tH。 CP

Q
主从 D 触发器的动态特性

 触发脉冲宽度 tW :
 tW 是指触发器时钟信号CP 中高电
平持续时间的最小值。 D

tW
 最高时钟频率 fcmax : CP
Tcmin
 触发器可靠工作时所允许输入的
Q
时钟脉冲频率的最大值,
fcmax= 1/Tcmin

 对于同一型号的不同芯片,fcmax
可能会有差异。
主从 D 触发器的动态特性

几种典型的D 触发器定时参数
fcmax
工作电压 tpd /ns* tSU /ns tH /ns tW /ns
型号 功能 /MHz
VCC /V
最小值 最大值 最小值 最小值 最小值 最高

CD74HC74 双D触发器 4.5 44 25 0 20 25

CD74HC374 八D触发器 4.5 45 25 5 20 24

SN74AUC1G74 单D触发器 2.50.2 0.8 1.2 0.4 0.3 1 275

*测试条件:温度范围 (-40~85)C,74HC系列 Q 端负载电容CL=50pF,其余系列为CL=15pF 。


表格中的参数来自TI 公司网站:http://www.ti.com/ 。
设计题 用一个按钮开关控制一个LED灯的亮灭。

要求:按一次,灯亮;再按一次,灯灭;如此循环,……

+VCC
Inputs Outputs
K 组 合
A 待设计 L
电路 反馈 逻辑电路 存储电路 现态
电路的基本组成

F
+VCC
Q
K 1D

C1
Q
电路的基本组成

0 F
+VCC
Q
K 1D 0
C1
Q
电路的基本组成

0 1 F
+VCC
Q
K 1D 0
C1
Q
电路的基本组成

1 F
+VCC
Q
K 1D

C1
Q
电路的基本组成

1 0 F
+VCC
Q
K 1D 1
C1
Q
电路的基本组成

F F
+VCC +VCC
Q Q
K 1D K 1D

C1 C1
Q Q
再见!
教学内容、要求及小结

本节主要内容:
 维持阻塞 D 触发器的结构和工作原理
 维持阻塞 D 触发器中异步清零和异步置数的实现方法

学习本节后,你应该能
 理解维持阻塞 D 触发器的工作原理
 理解异步清零和异步置数的原理

小结:
● 触发器是对时钟脉冲边沿敏感的存储电路,它们在时钟脉冲的上升沿或下
降沿作用下更新状态。目前触发器电路主要有主从和维持阻塞等结构形式。
●维持阻塞 D 触发器的电路结构与前面的主从 D 触发器完全不同,但这两
个电路所实现的逻辑功能是完全相同的,可见,电路结构与逻辑功能没有必然联
系。同一种逻辑功能的触发器也可用不同结构的电路实现。
● 电路结构确定了触发器的动作特点,逻辑功能表明其状态与输入信号的逻
辑关系。
锁存器和触发器

华中科技大学 罗杰
维持阻塞 D 触发器
维持阻塞 D 触发器

电路的组成
G1
Q1
在TTL集成电路中,常常
采用维持阻塞结构形式。 Q2 S G5
Q
在3个电平触发的 SR 锁存 G2

器的基础上改进得到。 CP
G3
Q3 Q
响应输入D R G6
和CP信号
置0维持线

Q4 根据 S R 确定
D
G4 触发器的状态
维持阻塞 D 触发器
G1
电路的工作原理 Q1 D

CP = 0 时, 1 S G5
01 Q2 Q
S = R = 1, Qn+1 = Qn 0
G2
CP
G3
同时,Q4= D , Q1 = D 1 Q
Q3 R G6
输入信号 D 进入触发器内
D Q4 D
部,为状态刷新作好准备. G4
维持阻塞 D 触发器
G1
当 Q4 = D , Q1 = D 时, D
Q1
02 CP 由 0 跳变为 1 时,
D 01 G5 01
即 CP = 1, Q2= D , Q3 = D Q2 S Q
G2
D=1, Qn+1= 1 CP
1 G3 01
D=0, Qn+1= 0 D 10 Q
Q3 R G6
 Qn+1 = D

D Q4 D
G4
维持阻塞 D 触发器
G1
1
在CP 由 0 跳变为 1 时, D
Q1 置1维持线
03 0
如果 D =1, Qn+1= 1 A
1 D 0 G5
1
在 CP = 1 期间,S = D= 0, Q2 S Q
G2
经过反馈线 A 送到门G1 输入 CP
1 G3 0
D 1 Q
端时,Q1=1,维持 S = 0不变,
Q3 R G6
从而维持 Qn+1= 1,故将线 A
称为置 1 维持线。 D Q4 D
1 G4
维持阻塞 D 触发器
G1
1
在CP 由 0 跳变为 1 时, D
Q1 置1维持线
03 0
如果 D =1, Qn+1= 1 A
1 D 0 G5
1
Q2 S Q
S = 0,通过反馈线 B 封锁门 G2
B
G3,即使外部 D 端从 1 变成 CP
1
0 G3 D 1 0
Q
0,使Q4=1,但 R = 1 不变, Q3 R G6
阻塞了D端的置0信号,故将
置0阻塞线
线 B 称为置0阻塞线。 D Q4 D
1 0 G4
维持阻塞 D 触发器
G1
在CP 由 0 跳变为 1 时, D
Q1

04 如果 D =0, Qn+1= 0
D 1 G5
0
R =D= 0,通过反馈线C 封锁 Q2 S Q
G2
门G4,Q4=1,即使外部 D 端 CP
1 G3 1
D 0 Q
从 0 变成 1,R= 0 不变,既维
Q3 R G6
C
持 Qn+1 = 0 不变,又阻塞了D
0 置0维持线
端的置 1 信号,故将线 C 称 D Q4 D 置1阻塞线
0 1 G4
为置0维持线、置1阻塞线。
维持阻塞 D 触发器
G1
结论 D
Q1

触发器只在 CP 由 0 跳变到 1 D 1 G5
0
Q2 S Q
的瞬间更新状态,其余时间均 G2
CP
保持状态不变。因此,这种触 1 G3 1
D 0 Q
发器被称为上升沿触发的维持 Q3 R G6
C
阻塞D 触发器。 0 置0维持线
D Q4 D 置1阻塞线
0 1 G4
维持阻塞 D 触发器
有异步输入端的维持阻塞D 触发器
直接置 1 线
SD
G1 SD
Q1

G5 D 1D Q
Q2 S Q
G2
CP C1 Q
CP
G3 RD
Q3 R
Q
G6
由于直接 置1 和 清零时,跟 CP
D Q4
信号无关,所以称置1、清零操作
G4
是异步置1和异步清零。
RD 直接置 0 线
维持阻塞 D 触发器

直接置1的过程: 当 SD = 0 , RD = 1 时,
0 直接置 1 线
SD Q= 1
G1 1
Q1 Q1 = 1, Q2 = CP
G5
Q2 S 1 Q
G2
CP
G3
Q3 R
1
Q
G6

D Q4
G4
1
RD 直接置 0 线
维持阻塞 D 触发器

直接置1的过程: 当 SD = 0 , RD = 1 时,
0 直接置 1 线
SD Q= 1
G1 1
Q1 Q1 = 1, Q2 = CP
G5
Q2 S 1 R = Q3 = Q2 CP  Q4
Q
G2 0
CP = CP CP  Q4 = 1
G3
Q3 R
1 门 G6的 3个输入端都为 1,
Q
1 0
G6  Q=0
D Q4
G4
Q 反馈到门G5的输入端,
1 维持 Q = 1不变。
RD 直接置 0 线
维持阻塞 D 触发器

直接置 0 的过程: 当 SD = 1 , RD = 0 时,
1 直接置 1 线
SD Q= 1
G1
Q1
S = Q2 = 1, Q4 = 1,
G5
Q2 S
Q
G2 1 1
CP
G3
Q3 R
Q
G6 1

D Q4
G4 1
0
RD 直接置 0 线
维持阻塞 D 触发器

直接置 0 的过程: 当 SD = 1 , RD = 0 时,
1 直接置 1 线
SD Q= 1
G1
0
Q1
S = Q2 = 1, Q4 = 1,
G5
Q2 S 0 Q
G2 1 1 门 G5的 3个输入端都为 1,
CP
G3 0  Q=0
Q3 R
Q
G6 1 Q 的状态 0 反馈到门G6的输
入端,维持 Q = 1不变。
D Q4
G4 1
0
RD 直接置 0 线
集成电路实例

SN74LS74A

芯片内部有两个独立的、上升沿触发的 D 触发器。
集成电路实例

SN74LS109A

芯片内部有两个独立
的、上升沿触发的J-K
触发器。
再见!
教学内容、要求及小结

本节主要内容:
 触发器逻辑功能的描述方法:特性表、特性方程和状态图等
 D 触发器逻辑功能的转换

学习本节后,你应该能
 掌握触发器逻辑功能分类
 掌握 D 触发器、JK 触发器、T 触发器、T ’触发器和 SR 触发器的特性表和
特性方程
 掌握各种触发器的时序波形图

小结:
● 触发器按逻辑功能划分为 D、JK、T、T ’ 和 SR 等几种类型。触发器的逻
辑功能可用特性表、特性方程、状态图和时序波形图等方式进行描述。
● 电路结构确定了触发器的动作特点,逻辑功能表明其状态与输入信号的逻
辑关系。无论哪种电路结构,同一种功能的触发器具有相同的特性表和特性方程。
● 每一种逻辑功能的触发器都可以通过适当增加外部连线和门电路转换为
其他逻辑功能的触发器。
锁存器和触发器

华中科技大学 罗杰
D 触发器
触发器的逻辑功能

描述触发器逻辑功能的方法有:
 特性表
 特性方程
 状态图
 时序波形图等
触发器的逻辑功能

按照逻辑功能分类
D 触发器的逻辑功能

D 触发器的逻辑功能
D 触发器的逻辑功能
 特性表
D 1D Q D Qn Qn+1
0 0 0
CP > C1 Q
0 1 0
上升沿触发 1 0 1
1 1 1

D 1D Q
 特性方程 Qn+1 = D
CP > C1 Q

下降沿触发
D 触发器的逻辑功能

特性表 状态图
D Qn Qn+1
D
0 0 0 Q
0 1 0 1
1 0 1
0 0 1 1
1 1 1
0

特性方程 Qn+1 = D 或者,


D=1
D=0 0 1 D=1
D=0
再见!
锁存器和触发器

华中科技大学 罗杰
JK 触发器
触发器的逻辑功能

按照逻辑功能分类
JK 触发器的逻辑功能

JK 触发器的逻辑功能
触发器的逻辑功能

描述JK 触发器输出与输入之间的逻辑关系的方法有:
 逻辑符号
 特性表
 特性方程
 状态图
 时序波形图等
JK 触发器的逻辑功能
 特性表
J 1J Q
J K Qn Qn+1 说 明
CP > C1
0 0 0 0
K 1K Q 状态不变
0 0 1 1
上升沿触发 0 1 0 0
置 0
0 1 1 0
J 1J Q 1 0 0 1
置 1
CP > C1 1 0 1 1
K 1K Q 1 1 0 1
翻 转
下降沿触发 1 1 1 0
JK 触发器的逻辑功能

 特性表  特性方程

J K Qn Qn+1 说 明 KQn
00 01 11 10
0 0 0 0 J
状态不变 0 0 1 0 0
0 0 1 1
0 1 0 0 1 1 1 0 1
置 0
0 1 1 0
1 0 0 1
置 1
1 0 1 1 Qn1  J Qn  KQn
1 1 0 1
翻 转
1 1 1 0
JK 触发器的逻辑功能

 特性表  状态转换图

J K Qn Qn+1 说明
JK
Q
0 0 0 0
状态不变
0 0 1 1 J=1
0 1 0 0 K =×
置 0
0 1 1 0 J=0
0 1 J=×
K =× K=0
1 0 0 1
置 1 J=×
1 0 1 1 K=1
1 1 0 1
翻 转
1 1 1 0
JK 触发器的逻辑功能

 特性表  状态转换图

J K Qn Qn+1 说明
JK
Q
0 0 0 0
状态不变
0 0 1 1
0 1 0 0 J=1
置 0
0 1 1 0 J=0 0 1 K=0
1 0 0 1
置 1 K=1
1 0 1 1
1 1 0 1
翻 转
1 1 1 0
JK 触发器的逻辑功能

用 D 触发器构成 JK 触发器
D 1D Q

n 1
Q  J Q  KQ
n n
CP > C1 Q

Qn+1 = D
J 1J Q
CP > C1
1K Q
D  J Q  KQn n K
JK 触发器的逻辑功能

用 D 触发器构成 JK 触发器
J
组合 D Q
1D
K 电路
CP C1 Q
n 1
Q  J Q  KQ
n n

Qn+1 = D
J
1D Q
K
D  J Q  KQn n
CP C1 Q
JK 触发器的逻辑功能

例 假设一个JK 触发器的初态为 0。已知所有的输入波形,试画出 Q 波形。

1 2 3 4 5 6 7
CP
J 1J Q
CP > C1 J
K 1K Q
K

Q
再见!
锁存器和触发器

华中科技大学 罗杰
T 触发器和 SR 触发器
触发器的逻辑功能

按照逻辑功能分类
触发器的逻辑功能

触发器功能的描述方法有:
 特性表
 特性方程
 状态图
 时序波形图等
T 触发器的逻辑功能

T 触发器的逻辑功能
T 触发器的逻辑功能

 特性表
T 1T Q
T Qn Q n 1
CP >C1 Q 0 0 0
0 1 1
上升沿触发 1 0 1
1 1 0
T 1T Q

CP > C1
 特性方程
Q

下降沿触发
Qn 1  T Qn  T Qn
T 触发器的逻辑功能

 特性表
T 1T Q
T Qn Q n 1
CP >C1 Q 0 0 0
0 1 1
上升沿触发 1 0 1
1 1 0
T 1T Q
T是Toggle(交替翻转)的缩写。
CP > C1 Q

下降沿触发
T 触发器的逻辑功能

 特性表  状态转换图
T Qn Q n 1 T
0 0 0
Q
0 1 1 T=1
1 0 1
T=0 0 1 T=0
1 1 0
T=1

 特性方程

Qn 1  T Qn  T Qn
T 触发器的逻辑功能

 特性表
T Qn Q n 1
0 0 0 T 1J Q
0 1 1 CP > C1
1 0 1 1K Q
1 1 0

 特性方程

Qn 1  T Qn  T Qn
T 触发器的逻辑功能

用 D 触发器构成 T 触发器
D 1D Q
n 1
Q  TQ  TQ
n n
CP C1 Q
Qn+1 = D

D  T Q  TQ n n
T 1T Q

T Q n
CP C1 Q

T Qn
T 触发器的逻辑功能

用 D 触发器构成 T 触发器
D 1D Q
n 1
Q  TQ  TQ
n n
CP C1 Q
Qn+1 = D

D  T Q  TQ n n 组合 D Q
T 1D
电路
T Q n
CP C1 Q

T Qn
T 触发器的逻辑功能

用 D 触发器构成 T 触发器

D  T Q  TQ
n n
T
Q
T Q n 1D

CP C1 Q
T Q n

T 1D Q 1D Q
T
CP C1 Q CP C1 Q
T’ 触发器的逻辑功能
n 1
 特性方程 Q  T Q  TQ
n n
Q
CP > C1
n 1
令 T=1,得 Q Q n
Q

上升沿触发
特点 时钟脉冲每作用一次,触发器的状
01 态翻转一次。 Q
CP > C1

特点 这种特定的T触发器只有时钟信号, Q
有时称为T ' 触发器。
02 下降沿触发
T’ 触发器的逻辑功能

用 D 触发器构成 T ' 触发器


1D Q

Qn+1 = D CP C1 Q
Q n1  Q n
1 2 3 4 5
CP

D  Qn
Q
二分频
T 触发器的逻辑功能
假设两个触发器构成如图所示电路,它们的初态为 0。已知时钟输入CP

波形,试画出Q0和 Q1 波形。

1 2 3 4 5 6
1T Q1
Q1 CP
C1

Q0
1D Q0
CP Q0
C1 Q1
T 触发器的逻辑功能
假设两个触发器构成如图所示电路,它们的初态为 0。已知时钟输入CP

波形,试画出Q0和 Q1 波形。

1 2 3 4 5 6
1T Q1
Q1 CP
C1

Q0 0 1 0 1
1D Q0
CP Q0 1
C1 Q1 0 0 1
SR 触发器的逻辑功能

SR 触发器的逻辑功能
SR 触发器的逻辑功能
 特性表
S 1S Q
S R Qn Qn+1 说明
CP > C1
0 0 0 0
R 1R Q 状态不变
0 0 1 1
上升沿触发 0 1 0 0
置 0
0 1 1 0
S 1S Q 1 0 0 1
置 1
CP > C1 1 0 1 1
R 1R Q 1 1 0 不确定
不确定
1 1 1 不确定
下降沿触发
SR 触发器的逻辑功能

 特性表  特性方程

S R Qn Qn+1 说明 Q n1  S  RQ n
0 0 0 0 状态不 SR=0(约束条件)
0 0 1 1 变
0 1 0 0
置 0  状态图
0 1 1 0
1 0 0 1 S=1
置 1 R=0
1 0 1 1 S=0 S=
0 1
1 1 0 不确定 R= R=0
不确定 S=0
1 1 1 不确定 R=1
再见!
例题选讲
触发器类型转换

华中科技大学 谭力
例题选讲
触发器类型转换
例题选讲
1. 利用T触发器和逻辑门设计的一个新触发器A的电路如图所示,
请说明触发器A的功能。
T触发器的特性方程: D 1T Q

Q n 1  T  Q n C C1 Q
P
产生T信号的逻辑表达式:

T  D  Qn
例题选讲
1. 利用T触发器和逻辑门设计的一个新触发器A的电路如图所示,
请说明触发器A的功能。
将T信号的逻辑表达式代入T触发器 1T Q
的特性方程并化简,得 D
C C1 Q
Q n 1  D  Q n  Q n P
Q n 1  D  0 触发器A的特性方程:

Q n 1
D Q n 1  D

触发器A的功能为D触发器
例题选讲

2. 试用JK触发器和逻辑门实现D触发器的功能,画出电路图

JK触发器的特性方程:

D J Q
Q n 1  J Q n  KQ n
组合 CP
逻辑 D触发器的特性方程:
K Q

Q n 1  D
例题选讲

2. 试用JK触发器和逻辑门实现D触发器的功能,画出电路图

n 1
Q  J Q  KQ
n n

D J Q
组合 CP
Q n 1  D  D
(Q n  Q n)
逻辑
K Q J D
KD
再见!
例题选讲
根据特性方程画波形

华中科技大学 谭力
例题选讲
根据特性方程画波形
例题选讲
两相脉冲产生电路如下图所示,试画出在 CP 作用下f1和f2的波形,
并说明f1和f2的时间关系。各D触发器的初始状态为0。
Q1 Q2 f1
D D D触发器的特性方程:
CP C1 C1

f2
Q n 1  D
产生D信号的逻辑表达式:
Q1 Q2 f1
D  Qn
CP C1 C1

f2 特性方程: Q n 1  Q n

转换后的触发器为T’触发器
例题选讲
两相脉冲产生电路如下图所示,试画出在 CP 作用下f1和f2的波形,
并说明f1和f2的时间关系。各D触发器的初始状态为0。
Q1 Q2 f1

CP C1 C1
CP

f2

Q1

Q2
T’触发器的特性方程:

Q n 1  Q n f 1

f 2
例题选讲
两相脉冲产生电路如下图所示,试画出在 CP 作用下f1和f2的波形,
并说明f1和f2的时间关系。各D触发器的初始状态为0。
Q1 Q2 f1

CP C1 C1
CP

f2

Q1

Q2
T’触发器的特性方程:

Q n 1  Q n f 1

f 2
例题选讲
两相脉冲产生电路如下图所示,试画出在 CP 作用下f1和f2的波形,
并说明f1和f2的时间关系。各D触发器的初始状态为0。
Q1 Q2 f1

CP C1 C1
CP

f2

Q1

Q2
T’触发器的特性方程:

Q n 1  Q n f 1

f 2
例题选讲
两相脉冲产生电路如下图所示,试画出在 CP 作用下f1和f2的波形,
并说明f1和f2的时间关系。各D触发器的初始状态为0。
Q1 Q2 f1

CP C1 C1
CP

f2

Q1

产生f2 的组合逻辑电路表达式:
Q2

f 2  Q1  Q2  Q1  Q2 f 1

f 2
例题选讲
两相脉冲产生电路如下图所示,试画出在 CP 作用下f1和f2的波形,
并说明f1和f2的时间关系。各D触发器的初始状态为0。
Q1 Q2 f1

CP C1 C1
CP

f2

Q1

Q2

f1和f2 的波形之间相差了一个时钟周期。 f 1

f 2
再见!
教学内容、要求及小结

本章目的
 介绍时序电路的基本结构及特点
 介绍时序电路逻辑功能的描述方法
 阐述同步时序电路的分析方法
 讨论同步时序电路的设计方法
 介绍异步时序电路的分析方法
 介绍常用时序逻辑功能器件的功能及其应用

本节主要内容:
 时序逻辑电路的基本结构及特点
 时序逻辑电路的分类
 时序电路逻辑功能的描述方法

学习本节后,你应该能
 正确理解时序逻辑电路的结构特征及工作特点
 了解时序逻辑电路的分类
 掌握时序电路逻辑功能的描述方法

小结:
● 时序逻辑电路由组合电路及存储电路两部分组成。其中存储电路是不可或
缺的组成部分,它能将电路的状态记忆下来。所以,时序电路在任一时刻的输出
信号不仅和当时的输入信号有关,而且还与电路原来的状态有关。
● 描述时序电路逻辑功能的方法有逻辑方程组(含驱动方程、状态方程和输
出方程)、状态表、状态图和时序图,它们以不同的方式表达时序电路逻辑功能,
是分析和设计时序电路的主要依据和手段。
时序逻辑电路

华中科技大学 秦臻
时序逻辑电路的基本概念
数字电路的分类

 组合电路结构特征

 组合电路工作特征

 什么是时序电路?
 时序电路的结构和工作特点如何?
时序逻辑电路实例

计数器 译码器 驱动器 KHz


脉冲信号
显示器
时序逻辑电路的基本结构与分类

1、时序逻辑电路的结构
j
i O
I 组合
电路 E S
k
存储电路

结构特征:  电路由组合电路和存储电路组成。
 电路存在反馈。
工作特征: 任一时刻的输出信号不仅取决于当时的输入信号,而且还取
决于电路原来的状态
2、时序逻辑电路的方程描述

I=(I1, I2, …,Ii) 为外部输入信号

O=(O1, O2, …,Oj) 为外部输出信号


E=(E1, E2, …,Ek) 为存储电路的输入信号

S=(S1, S2, …,Sm) 为存储电路的输出信号

j
i O
I 组合
电路 E S
k
存储电路

m
2、时序逻辑电路的方程描述

激励方程: E=f1(I,S)
表达了激励信号与输入信号、状态变量的关系式
状态方程 : Sn+1=f2(E,Sn)
表达存储电路从现态到次态的转换关系式

输出方程: O=f3(I,S)

j
i O
I 组合
电路 E S
k
存储电路

m
3、时序电路的分类

按照时序电路的动作特点分为:同步时序电路与异步时序电路

同步: 存储电路里所有触发器有一个统一的时钟源,它们
的状态在同一时刻更新。
时序电路
异步: 没有统一的时钟脉冲或没有时钟脉冲,电路的状
态更新不是同时发生的。
X
Q2
Z
Q1
“1” 1J 1J 1D 1D
> C1 CP
CP >C1 > >
Q2 Q0 Q1
1K Q1 1K FF0 FF1
Y
FF2
FF1 Q0 Q1
3、时序电路的分类

按照输出信号的特点分为:米利型和穆尔型电路

米利型电路
电路的输出是输入变量及触发器 状态的函数,
这类时序电路亦称为米利型电路

i 组 组
I j
合 合
O
电 E 电
S
路 k 存储电路 路
m

CP
3、时序电路的分类

穆尔型电路
电路输出仅仅取决于各触发器的状态,而不受电路当时的输入信号影响
或没有输入变量,这类电路称为穆尔型电路

i 组 组
I j
合 合
O
电 E 电
S
路 k 存储电路 路
m

CP
小结

时序电路是由组合电路和存储电路组成

时序电路的输出是触发器状态及输入的函数

描述时序电路的逻辑方程方法有:
激励方程、状态方程、输出方程。
再见!
时序逻辑电路的基本概念

华中科技大学 秦臻
时序逻辑功能的描述
描述时序电路的方法有

激励 状态
方程 转换表

方程 转

图表
描述 描述
输出 状态 状态
时序图
方程 方程 转换图
时序逻辑描述方法举例
(1) 逻辑方程组
激励方程组
输出组合电路
穆尔型输出
D0  (Q1  Q0 ) A
X

米利型输出
Y

FF0
A D0
1D Q0
C1
Q0

FF1
D1
1D Q1
C1
激励组合电路 Q1

CP 存储电路
时序逻辑描述方法举例
(1) 逻辑方程组
激励方程组
输出组合电路
穆尔型输出
D0  (Q1  Q0 ) A
D1  Q 0 A
X

米利型输出
Y

FF0
A D0
1D Q0
C1
Q0

FF1
D1
1D Q1
C1
激励组合电路 Q1

CP 存储电路
时序逻辑描述方法举例
(1) 逻辑方程组
激励方程组
输出组合电路
穆尔型输出
X
D0  (Q1  Q0 ) A
米利型输出 D1  Q 0 A
Y
状态方程组
FF0
A D0
Q n 1  D
1D Q0
C1
Q0
Q0n 1  (Q1n  Q0n ) A
n 1 n
FF1 Q1  Q0 A
D1
1D Q1
C1 输出方程
激励组合电路 Q1
X  Q1Q0
CP 存储电路 Y  (Q1  Q0 ) A
(2)列状态转换表

状态方程组
状态转换表
n 1
Q1 Q A
n
0
n
Q Q n Q1n1Q0n1 / Y
n 1
Q0  (Q  Q ) A
n
1
n
0
1 0
A=0 A=1
X

00 0 0 /0 1 0 /0 0
输出方程 01 0 0 /1 0 1 /0 1
10 0 0 /1 1 1 /0 0
X  Q1Q0 11 0 0 /1 0 1 /0 0
Y  (Q1  Q0 ) A
(3)画状态转换图

米利型输出标在方向线旁。穆尔型标在圆圈状态名旁。

A/Y
状态转换表 Q1Q0/X
0/0

n n Q1n1Q0n1 / Y
Q Q
1 0 X 00
00/0 01
A=0
A=0 A=1
A=1
00 00 /0
00 /0 10 // 00
10 0
01 00 / 1 01 / 0 1
1/0
10 00 / 1 11 / 0 0
11 00 / 1 01 / 0 0
10 11
(3)画状态转换图

米利型输出标在方向线旁。穆尔型标在圆圈状态名旁。

A/Y
状态转换表 Q1Q0/X 1/0
0/0

n n Q1n1Q0n1 / Y 0/1
Q Q
1 0 X 00/0 01 /1
A=0
A=0 A=1
A=1
00 00 / 0 10 / 0 0
01
01 00 // 11
00 01 // 00
01 11
1/0
10 00 / 1 11 / 0 0
11 00 / 1 01 / 0 0
10 11
(3)画状态转换图

米利型输出标在方向线旁。穆尔型标在圆圈状态名旁。

A/Y
状态转换表 Q1Q0/X
0/0 1/0
穆尔型输出
n n Q1n1Q0n1 / Y 0/1
Q Q
1 0 X 00 /0 01/1
A=0 A=1
00 00 / 0 10 / 0 0 米利型输出
01 00 / 1 01 / 0 1 0/1
1/0 0/1
10 00 / 1 11 / 0 0 1/0
11 00 / 1 01 / 0 0
1/0
10/0 11/0
(4) 画时序图

输出组合电路 对于给定的输入波形,画出触发
穆尔型输出 X 器及电路的输出波形,设触发器的初
始状态为00。
米利型输出 Y

A FF0 CP
D0
1D Q0
C1 A
Q0

FF1
D1
1D Q1
C1
激励组合电路 Q1

CP 存储电路
(4) 画时序图
1

状态转换表 CP

n n Q1n1Q0n1 / Y A
Q Q
1 0 X
A=0
A=0 A=1 Q0
00
00 00 // 00
00 10 / 0 00
Q1
01 00 / 1 01 / 0 1
10 00 / 1 11 / 0 0
X
11 00 / 1 01 / 0 0
Y
X  Q1Q0
Y  (Q1  Q0 ) A
(4) 画时序图
2

状态转换表 CP

n n Q1n1Q0n1 / Y A
Q Q
1 0 X
A=0 A=1
A=1 Q0
00
00 00 / 0 10 // 00
10 00
01 00 / 1 01 / 0 1 Q1

10 00 / 1 11 / 0 0
X
11 00 / 1 01 / 0 0
Y
X  Q1Q0
Y  (Q1  Q0 ) A
(4) 画时序图
3

状态转换表 CP

n n Q1n1Q0n1 / Y A
Q Q
1 0 X
A=0
A=0 A=1 Q0
00 00 / 0 10 / 0 0
Q1
01 00 / 1 01 / 0 1
10
10 00 // 11
00 11 / 0 0
X
11 00 / 1 01 / 0 0
Y
X  Q1Q0
Y  (Q1  Q0 ) A
(4) 画时序图
4

状态转换表 CP

n n Q1n1Q0n1 / Y A
Q Q
1 0 X
A=0 A=1 Q0
00 00 / 0 10 / 0 0
Q1
01 00 / 1 01 / 0 1
10 00 / 1 11 / 0 0
X
11 00 / 1 01 / 0 0
Y
X  Q1Q0
Y  (Q1  Q0 ) A
(4) 画时序图
5

状态转换表 CP

n n Q1n1Q0n1 / Y A
Q Q
1 0 X
A=0 A=1 Q0
00 00 / 0 10 / 0 0
Q1
01 00 / 1 01 / 0 1
10 00 / 1 11 / 0 0
X
11 00 / 1 01 / 0 0
Y
X  Q1Q0
Y  (Q1  Q0 ) A
(4) 画时序图
6

状态转换表 CP

n n Q1n1Q0n1 / Y A
Q Q
1 0 X
A=0 A=1 Q0
00 00 / 0 10 / 0 0
Q1
01 00 / 1 01 / 0 1
10 00 / 1 11 / 0 0
X
11 00 / 1 01 / 0 0
Y
X  Q1Q0
Y  (Q1  Q0 ) A
(4) 画时序图
7

状态转换表 CP

n n Q1n1Q0n1 / Y A
Q Q
1 0 X
A=0 A=1 Q0
00 00 / 0 10 / 0 0
Q1
01 00 / 1 01 / 0 1
10 00 / 1 11 / 0 0
X
11 00 / 1 01 / 0 0
Y
X  Q1Q0
Y  (Q1  Q0 ) A
(4) 画时序图
8

状态转换表 CP

n n Q1n1Q0n1 / Y A
Q Q
1 0 X
A=0 A=1 Q0
00 00 / 0 10 / 0 0
Q1
01 00 / 1 01 / 0 1
10 00 / 1 11 / 0 0
X
11 00 / 1 01 / 0 0
Y
X  Q1Q0
Y  (Q1  Q0 ) A
小结

时序电路的描述方法有:电路图、逻辑方
程组、状态转换表、状态转换图、时序图。

时序逻辑电路的五种描述方式是可以相互
转换
再见!
教学内容、要求及小结

本节主要内容:
 时序逻辑电路分析的任务
 同步时序逻辑电路分析步骤
 举例说明同步时序逻辑电路分析过程

学习本节后,你应该能
 明确同步时序电路的分析任务和步骤
 熟练掌握同步时序电路的分析方法

小结:
● 同步时序电路是目前广泛应用的时序电路。
● 同步时序电路的分析,首先按照给定电路列出各逻辑方程组、进而列出转
换表或状态表、画出状态图和时序图,最后确定电路的逻辑功能。
时序逻辑电路

华中科技大学 秦臻
同步时序逻辑电路分析
同步时序逻辑电路的分析

时序逻辑电路分析的任务

状态表
SSIC 输入和 • 次态
时序电路 时钟 逻辑功能 状态图
• 输出
时序图
同步时序逻辑电路分析步骤

◆列写方程 ◆列图表 ◆确定功能


• 激励方程 • 状态表 • 描述逻辑功
• 状态方程 • 状态图 能
• 输出方程 • 时序图 • 验证自启动
同步时序逻辑电路分析举例(1)

试分析如图所示时序电路的逻辑功能。

T0 Q0
A 1T Y
C1 G2
Q0

FF0

T1 Q1
1T
G1 C1
Q1
CP
FF1

解:电路是由两个T 触发器组成的同步时序电路。
(1)列方程组

激励方程组: T0 Q0
A 1T Y
C1 G2
Q0
T1=AQ0
FF0

T1 Q1
1T
G1 C1
Q1
CP
FF1
(1)列方程组

激励方程组: T0 Q0
A 1T Y
C1 G2
Q0
T1=AQ0
FF0
T0=A Q1
T1
1T
G1 C1
Q1
CP
FF1
(1)列方程组

激励方程组: T0 Q0
A 1T Y
C1 G2
Q0
T1=AQ0
FF0
T0=A Q1
T1
1T
G1 C1
状态方程组
Q1
CP
FF1

n 1 n
Q  T  Q  T Q  TQ n
n

Q1n 1  ( AQ0n )  Q1n


Q0n 1  A  Q0n
输出方程:
Y=AQ1Q0

注意:输出Y是现态的函数
(2)列状态表

状态方程组
Q1n1  ( AQ0n )  Q1n Q1n1 Q0n1 / Y
Q1n Q 0n
Q 0n  1  A  Q 0n A=0 A=1
00 00 /0 01/0
输出方程 01 01/0 10/0
10 10/0 11/0
Y =A Q1Q0
11 11/0 00/1
(3)画状态图
A/Y
Q1 Q0
0/0
Q1n1 Q0n1 / Y
1/0
Q1n Q 0n 00 01
A=0 A=1
00 0 00 // 0 01/0
01 01/0 10/0
10 10/0 11/0
11 10
11 11/0 00/1
(3)画状态图
A/Y
Q1 Q0
0/0 0/0
Q1n1 Q0n1 / Y
1/0
Q1n Q 0n 00 01
A=0 A=1
00 00/0 01/0
01 0 11 // 0 10/0 1/0

10 10/0 11/0
11 10
11 11/0 00/1
(3)画状态图
A/Y
Q1 Q0
0/0 0/0
Q1n1 Q0n1 / Y
1/0
Q1n Q 0n 00 01
A=0 A=1
00 00/0 01/0
1/0 1/0
01 01/0 10/0
10 10/0 11/0
11 10
11 11/0 00/1
1/0

0/0 0/0
(4)画时序图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的
初始状态为00。
1 2 3 4 5 6 7 8 9 10
Q1n1 Q0n1 / Y CP
Q1n Q 0n
A=0 A=1 A

00 00/0 0 11 // 0 Q0
01 01/0 10/0
Q1
10 10/0 11/0
11 11/0 00/1 Y

Y=AQ1Q0
(4)画时序图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的
初始状态为00。
1 2 3 4 5 6 7 8 9 10
Q1n1 Q0n1 / Y CP
Q1n Q 0n
A=0 A=1 A

00 00/0 01/0 Q0
01 01/0 1 00 // 0
Q1
10 10/0 11/0
11 11/0 00/1 Y

Y=AQ1Q0
(4)画时序图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的
初始状态为00。
1 2 3 4 5 6 7 8 9 10
Q1n1 Q0n1 / Y CP
Q1n Q 0n
A=0 A=1 A

00 00/0 01/0 Q0
01 01/0 10/0
Q1
10 10/0 11/0
11 11/0 00/1 Y

Y=AQ1Q0
(4)画时序图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的
初始状态为00。
1 2 3 4 5 6 7 8 9 10
Q1n1 Q0n1 / Y CP
Q1n Q 0n
A=0 A=1 A

00 00/0 01/0 Q0

01 01/0 10/0
Q1
10 10/0 11/0
11 11/0 00/1 Y
Y=AQ1Q0
(4)画时序图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的
初始状态为00。
1 2 3 4 5 6 7 8 9 10
Q1n1 Q0n1 / Y CP
Q1n Q 0n
A=0 A=1 A

00 00/0 01/0 Q0

01 01/0 10/0
Q1
10 10/0 11/0
11 11/0 00/1 Y
Y=AQ1Q0
(5)逻辑功能分析
电路为可控二进制计数器。当A=0时,电路状态保持不变;当A=1时,
状态值加1。当计数到11时,Y 为1。输出Y的下降沿可用于触发进位操
作。
0/0 0/0
1 2 3 4 5 6 7 8 9 10

A/Y 1/0 CP

Q1 Q0 00 01
A

Q0
1/0
Q1

Y
1 10 ②
1 1/0
0/0 0/0
再见!
时序逻辑电路

华中科技大学 秦臻
同步时序逻辑电路分析(2)
同步时序逻辑电路分析举例(2)
分析下图所示的同步时序电路。
X
Q1 Q2
“1
“1” 1J 1J
”CP
>C >C
1 Q1 1 Q2
1K 1K
Y
FF1 FF2

解:电路是由两个JK触发器组成的莫尔型同步时序电路。

(1)列写逻辑方程组:
激励方程组 J1=K1=1
同步时序逻辑电路分析举例(2)
分析下图所示的同步时序电路。
X
Q1 Q2
“1 1J 1J

CP >C >C
1 Q1 1 Q2
1K 1K
Y
FF1 FF2

解:电路是由两个JK触发器组成的莫尔型同步时序电路。

(1)列写逻辑方程组:
激励方程组 J1=K1=1
J2=K2=X  Q1
同步时序逻辑电路分析举例(2)
分析下图所示的同步时序电路。
X
Q1 Q2
“1 1J 1J

CP >C >C
1 Q1 1 Q2
1K 1K
Y
FF1 FF2

解:电路是由两个JK触发器组成的莫尔型同步时序电路。

(1)列写逻辑方程组:
激励方程组 J1=K1=1
J2=K2=X  Q1

输出方程 Y=Q2Q1
同步时序逻辑电路分析举例(2)
分析下图所示的同步时序电路。
JK触发器的特性方程
X n 1 n
Q1 Q2 Q  J Q  KQ n
“1 1J 1J
”CP
>C >C
n 1 n n
1 Q1 1 Q2 Q  1  Q1  1  Q  Q1 n
1K 1K 1 1
Y
FF1 FF2 n 1 n
Q
2  X  Q  Q 2  X  Q1n  Q2n
1
n

 X  Q1n  Q2n
(1)列写逻辑方程组:

激励方程组 J1=K1=1
J2=K2=X  Q1

输出方程 Y=Q2Q1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图

Q2n 1  X  Q1n  Q2n n 1 n


Q
1  Q1
Y=Q2Q1

Q2n 1Q1n 1
Q2nQ1n Y
X=0 X=1
00 01 11 0
01 10 00 0
10 11 01 0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
X
Q2Q1/Y
Q2n 1  X  Q1n  Q2n n 1 n
Q
1  Q1
0
Y=Q2Q1

00 /0 01
Q2n 1Q1n 1
Q2nQ1n Y
X=0 X=1
00 01 11 0
01 10 00 0 11 10
10 11 01 0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
X
Q2Q1/Y
Q2n 1  X  Q1n  Q2n n 1 n
Q
1  Q1
0
Y=Q2Q1

00 /0 01/0
Q2n 1Q1n 1
Q2nQ1n Y 0
X=0 X=1
00 01 11 0
01 10 00 0 11 10
10 11 01 0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
X
Q2Q1/Y
Q2n 1  X  Q1n  Q2n n 1 n
Q
1  Q1
0
Y=Q2Q1

00 /0 01/0
Q2n 1Q1n 1
Q2nQ1n Y 0
X=0 X=1
00 01 11 0
01 10 00 0 11 10 /0
10 11 01 0
0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
X
Q2Q1/Y
Q2n 1  X  Q1n  Q2n n 1 n
Q
1  Q1
0
Y=Q2Q1

00 /0 01/0
Q2n 1Q1n 1
Q2nQ1n Y 0
0
X=0 X=1
00 01 11 0
01 10 00 0 11/1 10 /0
10 11 01 0
0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
X
Q2Q1/Y
Q2n 1  X  Q1n  Q2n n 1 n
Q
1  Q1
0
Y=Q2Q1

00/0 01/0
Q2n 1Q1n 1
Q2nQ1n Y 0
0
X=0 X=1
00 01 11 0
01 10 00 0 11/1 10/0
10 11 01 0
0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
X
Q2Q1/Y
Q2n 1  X  Q1n  Q2n n 1 n
Q
1  Q1
0
Y=Q2Q1

00/0 01/0
Q2n 1Q1n 1
Q2nQ1n Y 0
0
X=0 X=1
00 01 11 0
01 10 00 0 11/1 10/0
10 11 01 0
0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
X
Q2Q1/Y
Q2n 1  X  Q1n  Q2n n 1 n
Q
1  Q1
0
Y=Q2Q1

00/0 01/0
Q2n 1Q1n 1
Q2nQ1n Y 0
0
X=0 X=1
00 01 11 0
01 10 00 0 11/1 10/0
10 11 01 0
0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
X
Q2Q1/Y
Q2n 1  X  Q1n  Q2n n 1 n
Q
1  Q1
0
Y=Q2Q1

00/0 01/0
Q2n 1Q1n 1
Q2nQ1n Y 0
0
X=0 X=1
00 01 11 0
01 10 00 0 11/1 10/0
10 11 01 0
0
11 00 10 1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的初始状态为00。

CP

Q2n 1Q1n 1 X
Q2nQ1n Y
X=0 X=1
00 01 11 0
Q1
01 10 00 0
10 11 01 0 Q2
11 00 10 1
Y
Y=Q2Q1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的初始状态为00。

CP

Q2n 1Q1n 1 X
Q2nQ1n Y
X=0 X=1
00 01 11 0
Q1
01 10 00 0
10 11 01 0 Q2
11 00 10 1
Y
Y=Q2Q1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的初始状态为00。

CP

Q2n 1Q1n 1 X
Q2nQ1n Y
X=0 X=1
00 01 11 0
Q1
01 10 00 0
10 11 01 0 Q2
11 00 10 1
Y
Y=Q2Q1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的初始状态为00。

CP

Q2n 1Q1n 1 X
Q2nQ1n Y
X=0 X=1
00 01 11 0
Q1
01 10 00 0
10 11 01 0 Q2
11 00 10 1
Y
Y=Q2Q1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的初始状态为00。

CP

Q2n 1Q1n 1 X
Q2nQ1n Y
X=0 X=1
00 01 11 0
Q1
01 10 00 0
10 11 01 0 Q2
11 00 10 1
Y
Y=Q2Q1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的初始状态为00。

CP

Q2n 1Q1n 1 X
Q2nQ1n Y
X=0 X=1
00 01 11 0
Q1
01 10 00 0
10 11 01 0 Q2
11 00 10 1
Y
Y=Q2Q1
同步时序逻辑电路分析举例(2)
(2)列状态转换表、画状态图和波形图
对于给定的输入波形,画出触发器及电路的输出波形,设触发器的初始状态为00。

CP

Q2n 1Q1n 1 X
Q2nQ1n Y
X=0 X=1
00 01 11 0
Q1
01 10 00 0
10 11 01 0 Q2
11 00 10 1
Y
Y=Q2Q1
同步时序逻辑电路分析举例(2)
(3)逻辑功能分析
X
Q2Q1/Y
•X=0时 00 01 10 11
0

电路进行加1计数 00/0 01/0

•X=1时 00 11 10 01
0
0

电路进行减1计数 。
11/1 10/0
电路功能:可逆计数器
0
Y可理解为进位或借位端。
同步时序逻辑电路分析举例(3)
分析下图所示的同步时序电路。

Q0 Q1 Q2
1D 1D 1D

CP >C1 >C1 >C1


Q0 Q1 Q2
FF0 FF1 FF2

Z0 Z1 Z2

(1)列写逻辑方程组:
n n
激励方程组 D0  Q1 Q 0
例3、分析下图所示的同步时序电路。

Q0 Q1 Q2
1D 1D 1D

CP >C1 >C1 >C1


Q0 Q1 Q2
FF0 FF1 FF2

Z0 Z1 Z2

(1)列写逻辑方程组:
n n
激励方程组 D0  Q1 Q 0

D1  Q0n
例3、分析下图所示的同步时序电路。

Q0 Q1 Q2
1D 1D 1D

CP >C1 >C1 >C1


Q0 Q1 Q2
FF0 FF1 FF2

Z0 Z1 Z2

(1)列写逻辑方程组:
n n
激励方程组 D0  Q1 Q 0

D1  Q0n

D2  Q1n
状态方程组

D 触发器特性方程为 Q n 1  D
n n
Q0n 1  D0  Q1 Q 0 状态表
Q1n 1  D1  Q0n Q2nQ1nQ0n Q2n 1Q1n +1Q0n 1
Q2n 1  D2  Q1n 000 001
001 010
输出方程组 010 100
Z0=Q0 Z1=Q1 Z2=Q2 011 110
电路是穆尔型输出 100 001
101 010
110 100
(2)列状态转换表 111 110
(3)画状态图

状态表
Q2Q1Q0
n
Q Q Q
2 1
n n
0 Q2n 1Q1n +1Q0n 1 000 001
000 001
001 010
011 110 100 010 101
010 100
011 110
100 001
101 010 111
110 100 由001、010、100三个有效状态
111 110 构成主循环。
电路具有自启动功能。
(4)画时序图
设触发器的初始状态为000。
1 2 3 4

Q2Q1Q0 CP

000 001 Q0
TCP
Q1
011 110 100 010
Q2

111 101
(5)逻辑功能分析
由状态图可见,电路的有效状态是三位循环码。
从时序图可看出,电路各触发器的Q端轮流输出一个高电平脉冲。
电路的功能为脉冲分配器或节拍脉冲产生器。

Q2Q1Q0
CP
000 001
Q0
TCP
011 110 100 010 Q1

Q2
111 101
小结

同步时序电路的分析是:找出给定时序电
路的逻辑功能。

同步时序逻辑电路的分析步骤:

列写方程

列图表

确定功能
再见!
教学内容、要求及小结

本节主要内容:
 时序逻辑电路设计的任务
 同步时序逻辑电路设计步骤
 举例说明同步时序逻辑电路设计过程

学习本节后,你应该能
 掌握同步时序电路的设计的一般步骤
 熟练掌握同步时序电路的设计方法

小结:
● 时序电路的设计是根据要求实现的逻辑功能,画出原始状态图或原始状态
表,然后进行状态化简(状态合并)和状态编码(状态分配),再求出所选触发器的驱
动方程和输出方程,最后和画出逻辑电路图的过程。为保证电路工作的可靠性,
最后还要检查一下电路能否自启动。正确画出原始状态图或原始状态表是时序电
路的设计的关键步骤,也是成功完成设计的基础。
同步时序逻辑电路设计

华中科技大学 秦臻
设计同步时序逻辑电路的一般步骤
设计同步时序逻辑电路的一般步骤

同步时序逻辑电路的设计任务是:

设计

根据实际逻辑 实现给定逻
问题的要求 辑功能电路

基于SSIC设计电路的最简标准:
所用触发器和门电路的数目最少,而且输入端数目最少。
设计同步时序逻辑电路的一般步骤
同步时序电路的设计过程

确定激励
选择触发器 方程和输
出方程
设计同步时序逻辑电路的一般步骤
• ①分析给定的逻辑问题,确定输入、输出变量的数目和符号。
• ②找出所有可能的状态和状态转换之间的关系。
逻辑抽象 • ③根据题意建立原始状态表或画出原始状态图。

• 合并等价状态,消去多余状态的过程称为状态化简。
• 等价状态:在相同的输入下有相同的输出,并转换到同一个次态去
状态化简 的两个状态称为等价状态。

• 又称为状态编码
• 给每个状态赋以二进制代码的过程。
状态分配 • 根据状态数确定触发器个数:2n-1<M≤2n M:状态数 n:触发器个数
设计同步时序逻辑电路的一般步骤

• 即选择触发器的类型。

• 求出电路的激励方程和输出方程 。

•画出逻辑图并检查自启动能力。
画逻辑图
设计同步时序逻辑电路的一般步骤

按照上述步骤设计同步时序逻辑电路时,需要选择采用穆尔型
还是米利型。

i 组 组 i 组 组
I j I j
合 合 合 合
O O
电 E 电 电 E 电
S S
路 k 存储电路 路 路 k 存储电路 路
m m
CP CP

穆尔型电路 米利型电路
同步时序逻辑电路设计举例(1)
同步时序逻辑电路设计举例(1)
用D触发器设计一个8421 BCD码同步十进制加计数器。
解:(1)列状态转换表
状态转换表
现 态 次 态
计数脉
冲CP的
顺序 Q 3n Q 2n Q1nQ 0n Q 3n+1 Q 2n+1 Q1n+1 Q 0n+1
0 0 0 0 0 0 0 0 1
1 0 0 0 1 0 0 1 0
2 0 0 1 0 0 0 1 1
3 0 0 1 1 0 1 0 0
4 0 1 0 0 0 1 0 1
5 0 1 0 1 0 1 1 0
6 0 1 1 0 0 1 1 1
7 0 1 1 1 1 0 0 0
8 1 0 0 0 1 0 0 1
9 1 0 0 1 0 0 0 0
同步时序逻辑电路设计举例(1)
(2) 确定激励方程组 状态转换表
计数脉 现 态 次 态 激励信号
冲CP的
顺序 Q 3n Q 2n Q1nQ 0n Q 3n+1 Q 2n+1 Q1n+1 Q 0n+1 D 3 D 2 D1 D 0
0 0 0 0 0 0 0 0 1 0 0 0 1
1 0 0 0 1 0 0 1 0 0 0 1 0
2 0 0 1 0 0 0 1 1 0 0 1 1
3 0 0 1 1 0 1 0 0 0 1 0 0
4 0 1 0 0 0 1 0 1 0 1 0 1
5 0 1 0 1 0 1 1 0 0 1 1 0
6 0 1 1 0 0 1 1 1 0 1 1 1
7 0 1 1 1 1 0 0 0 1 0 0 0
8 1 0 0 0 1 0 0 1 1 0 0 1
9 1 0 0 1 0 0 0 0 0 0 0 0

D3、 D2、 D1、 D0 是触发器现态还是次态的函数?


D3、 D2、 D1、 D0是触发器现态的函数
同步时序逻辑电路设计举例(1)
画出各触发器激励信号的卡诺图
D3 n
Q D2 n
1 Q
D3   Q 2n Q1n Q0n
1

0 0 0 0 Q 3n Q0n
0 0 1 0
0 0 1 0
n 1 1 0 1
× × × ×
Q
2 D2  Q2n Q1n  Q2n Q0n  Q2n Q1n Q0n Q
n
2
n
Q3 n
× × × ×
Q
n n n 1 0 × × 3
n n 0 0 × ×
QQQ
2 1 0 n
Q Q
3 0
Q n
0 D1 Q
n D0 Q
n
Q
1 1 0

0 1 0 1 1 0 0 1

0 1 0 1 1 0 0 1
D1  Q1n Q0n  Q 3n Q1n Q0n Q
n
Q
n
D0  Q 0n
2 2
n
× × × × n
× × × ×
Q3 Q3
0 0 × × 1 0 × ×
n n
Q Q
0 0
同步时序逻辑电路设计举例(1)
(3) 画逻辑图 D3  Q 3n Q0n  Q 2n Q1n Q0n

D2  Q2n Q1n  Q2n Q0n  Q2n Q1n Q0n


D1  Q1n Q0n  Q 3n Q1n Q0n
D0  Q 0n

Q3 Q0 Q2 Q1Q0
CP
RESET


R 1D R 1D R 1D R 1D
C1 C1 C1 C1
+VDD
Q3 FF3 Q2 FF2 Q1 FF1 Q0 FF0

Q3 Q2 Q1 Q0
同步时序逻辑电路设计举例(1)
(3) 画逻辑图 D3  Q 3n Q0n  Q 2n Q1n Q0n

D2  Q2n Q1n  Q2n Q0n  Q2n Q1n Q0n

D1  Q1n Q0n  Q 3n Q1n Q0n

D0  Q 0n

CP
RESET


R 1D R 1D R 1D R 1D
C1 C1 C1 C1
+VDD
Q3 FF3 Q2 FF2 Q1 FF1 Q0 FF0

Q3 Q2 Q1 Q0
同步时序逻辑电路设计举例(1)
检查自启动功能 D3  Q 3n Q0n  Q 2n Q1n Q0n

D2  Q2n Q1n  Q2n Q0n  Q2n Q1n Q0n

0000 0001 0010 0011 D1  Q1n Q0n  Q 3n Q1n Q0n


1011 1010 D0  Q 0n
1001 Q3 Q 2 Q1 Q 0 0100
1101 1100

1000 0111 0110 0101

1111 1110

电路具有自启动能力
再见!
同步时序逻辑电路设计

华中科技大学 秦臻
同步时序逻辑电路设计举例(2)
同步时序逻辑电路设计举例(2)
设计一个串行数据检测器。电路的输入信号A是与时钟脉冲同步的
串行数据。要求当输入A出现110序列时,输出信号Y为1,否则为0。

解: 1. 逻辑抽象
1)确定输入、输出变量及符号
输入变量:A, 输出变量:Y
2)定义每个状态的含义并确定状态数目
S0 —— 初始状态; S1—— A输入1后;
S2 —— A输入11后; S3—— A输入110后。

状态数:4个
同步时序逻辑电路设计举例(2)
3)画原始状态图列出原始状态转换表
A/Y
S

状态转换表
1/0 n S
n+1
/Y
0/0 S0 S1 S
A=0 A=1
S0 S0/ 0 S1 / 0

S3 S2
同步时序逻辑电路设计举例(2)
3)画原始状态图列出原始状态转换表
A/Y
S

状态转换表
1/0 n S
n+1
/Y
0/0 S0 S1 S
A=0 A=1
0/0 S0/ 0 S1 / 0
S0
1/0 S1 S0 / 0 S2 / 0

S3 S2
同步时序逻辑电路设计举例(2)
3)画原始状态图列出原始状态转换表
A/Y
S

状态转换表
1/0 n+1
n S /Y
0/0 S0 S1 S
A=0 A=1
0/0 S0 S0/ 0 S1 / 0
1/0 S1 S0 / 0 S2 / 0
S2 S3 / 1 S2 / 0
S3 S23 1/0
0/1
同步时序逻辑电路设计举例(2)
3)画原始状态图列出原始状态转换表
A/Y
S

状态转换表
n+1
1/0 n S /Y
0/0 S0 S1 S
A=0 A=1
0/0 S0 S0/ 0 S1 / 0
0/0 1/0 S1 S0 / 0 S2 / 0
1/0
S2 S3 / 1 S2 / 0
S3 S2 1/0 S3 S0 / 0 S1 / 0
0/1
同步时序逻辑电路设计举例(2)
3)画原始状态图列出原始状态转换表
A/Y
S

状态转换表
n+1
1/0 n S /Y
0/0 S0 S1 S
A=0 A=1
0/0 S0 S0 / 0 S1 / 0
0/0 1/0 S1 S0 / 0 S2 / 0
1/0
S2 S3 / 1 S2 / 0
S3 S2 1/0 S3 S0 / 0 S1 / 0
0/1
2. 状态化简
同步时序逻辑电路设计举例(2)
2. 状态化简
A/Y
S

状态转换表
n+1
1/0 n S /Y
0/0 S0 S1 S
A=0 A=1
0/0 S0 S0 / 0 S1 / 0
0/0 1/0 S1 S0 / 0 S2 / 0
1/0
S2 S3 / 1 S2 / 0
S3 S2 1/0
0/1
同步时序逻辑电路设计举例(2)
2. 状态化简
A/Y
S

状态转换表
n+1
1/0 n S /Y
0/0 S0 S1 S
A=0 A=1
0/0 S0 S0 / 0 S1 / 0
0/0 1/0 S1 S0 / 0 S2 / 0
1/0
S2 S0 / 1 S2 / 0
S3 S2 1/0
0/1
同步时序逻辑电路设计举例(2)
2. 状态化简
A/Y
S

状态转换表
n+1
1/0 n S /Y
0/0 S0 S1 S
A=0 A=1
0/0 S0 S0 / 0 S1 / 0
1/0 S1 S0 / 0 S2 / 0
0/1 S2 S0 / 1 S2 / 0
S2 1/0
同步时序逻辑电路设计举例(2)
3. 状态分配
令 S0 = 00, S1 = 01, S2 = 11

1/0 状态转换表
0/0 00 01 n+1
n S /Y
S
0/0 A=0 A=1
1/0 00 00 / 0 01 /0
0/1 01 00 / 0 11 /0
11 1/0 11 00 / 1 11 /0

4、选择触发器的类型
触发器个数: 两个。
类型:采用对 CP 下降沿敏感的JK 触发器。
同步时序逻辑电路设计举例(2)
5. 求激励方程和输出方程 状态转换表
Q1n+1 Q0n+1 /Y
Q 1 nQ 0 n
A=0 A=1
00 00 / 0 01 / 0
01 00 / 0 11 / 0

状态转换真值表 11 00 / 1 11 / 0

n +1
Q1n Q 0n A Q1n +1 Q 0 Y

0 0 0 0 0 0
0 0 1 0 1 0
同步时序逻辑电路设计举例(2)
5. 求激励方程和输出方程 状态转换表
Q1n+1 Q0n+1 /Y
Q 1 nQ 0 n
A=0 A=1
00 00 / 0 01 / 0
01 00 / 0 11 / 0

状态转换真值表 11 00 / 1 11 / 0

n +1
Q1n Q 0n A Q1n +1 Q 0 Y

0 0 0 0 0 0
0 0 1 0 1 0
0 1 0 0 0 0
0 1 1 1 1 0
1 1 0 0 0 1
1 1 1 1 1 0
同步时序逻辑电路设计举例(2)
J=×
5. 求激励方程和输出方程 K=1
J=× J=0
K=0 1 0 K=×
J=1
K=×
JK触发器状态转换图

状态转换真值表及激励信号

Q1n
n +1 激励信号
Q 0n A Q1n +1 Q 0 Y
J1 K1 J0 K0
0 0 0 0 0 0 0 × 0 ×
0 0 1 0 1 0
0 1 0 0 0 0
0 1 1 1 1 0
1 1 0 0 0 1
1 1 1 1 1 0
同步时序逻辑电路设计举例(2)
J=×
5. 求激励方程和输出方程 K=1
J=× J=0
K=0 1 0 K=×
J=1
K=×
JK触发器状态转换图

状态转换真值表及激励信号

Q1n
n +1 激励信号
Q 0n A Q1n +1 Q 0 Y
J1 K1 J0 K0
0 0 0 0 0 0 0 × 0 ×
0 0 1 0 1 0 0 ×
0 1 0 0 0 0
0 1 1 1 1 0
1 1 0 0 0 1
1 1 1 1 1 0
同步时序逻辑电路设计举例(2)
5. 求激励方程和输出方程 J=×
K=1
J=× J=0
K=0 1 0
K=×
J=1
J=1
K=×
K=×

JK触发器状态转换图
状态转换真值表及激励信号

Q1n
n +1 激励信号
Q 0n A Q1n +1 Q 0 Y
J1 K1 J0 K0
0 0 0 0 0 0 0 × 0 ×
0 0 1 0 1 0 0 × 1 ×
0 1 0 0 0 0
0 1 1 1 1 0
1 1 0 0 0 1
1 1 1 1 1 0
同步时序逻辑电路设计举例(2)
5. 求激励方程和输出方程 J=×
K=1
J=× J=0
K=0 1 0
K=×
J=1
K=×

JK触发器状态转换图
状态转换真值表及激励信号

Q1n
n +1 激励信号
Q 0n A Q1n +1 Q 0 Y
J1 K1 J0 K0
0 0 0 0 0 0 0 × 0 ×
0 0 1 0 1 0 0 × 1 ×
0 1 0 0 0 0 0 × × 1
0 1 1 1 1 0 1 × × 0
1 1 0 0 0 1 × 1 × 1
1 1 1 1 1 0 × 0 × 0
5. 求激励方程和输出方程 n n
J1 Q0 K1 Q0
用卡诺图化简
0 0 1 0 × × × ×
激励方程 n
Q1 × × × × Q1 ×
n
× 0 1

A A

J0 J1  Q0 A n K0 K1  A n
Q0 Q0

0 1 × × × × 0 1
n n
Q1 × × × × Q1 × × 0 1

A A
J0  A K0  A
n
Y Q0
输出方程
0 0 0 0

Y  Q1 A n
Q1 × × 0 1

A
6. 画出逻辑图,并检查自启动能力

激励方程 输出方程

J Q A
1 0
K A1
Y Q A 1

J A
0
K A0

FF0 FF1
Q0 Q1
A 1J 1J Y
>C1 >C1
1K 1K

CP
检查自启动能力和输出
激励方程
在 Q Q = 10时
1 0

J Q A
1 0
K A
1

A=0 Q Q 次态 = 00 Y  1
1 0
J A
0
K A
0

A=1 Q Q 次态 = 11
1 0
Y 0 输出方程

Y Q A 1
检查自启动能力和输出
0/0
在 Q1 Q0 = 10时 0/0 1/0
00 01

A=0 Q Q 次态 = 00 Y  1
1 0
0/1 1/0
0/1
10 11 1/0
A=1 Q Q 次态 = 11
1 0
Y 0 1/0

能自启动

n
Y Q0

输出方程 Y Q A 1 Y  QQ A
1 0
0 0 0 0
n
Q1 × × 0 1

A
检查自启动能力和输出

Y  QQ A
1 0

修改电路

FF0 FF1
Q0 Q1
A 1J 1J Y
>C1 >C1
1K 1K

CP
小结
同步时序电路设计是:根据具体的逻辑问
题,求出实现这一逻辑功能的电路。

同步时序逻辑电路的设计步骤:

*逻辑抽象得原始状态图、表 *画电路,检查自启动功能

*状态化简

*状态分配

*选择触发器

*确定激励方程和输出方程
问题

同步时序电路的工作速度快,但变量数比较多时结构复杂
再见!
教学内容、要求及小结

本节主要内容:
 异步时序电路与同步时序电路的主要区别
 异步时序电路分析步骤
 举例说明异步时序电路分析过程

学习本节后,你应该能
 掌握异步时序电路分析的分析方法

小结:
● 异步时序电路中没有统一的时钟脉冲,各触发器不是在同一时刻更新状态。
分析状态转换时必须考虑各触发器的时钟信号作用情况。
时序逻辑电路

华中科技大学 秦臻
异步时序逻辑电路分析
异步时序逻辑电路的特点

1. 没有统一的时钟脉冲,电路的状态更
新不是同时发生的。

2. 触发器有时钟脉冲沿作用时,其状态
变化。没有时钟沿作用时,其状态不变。

FF0 FF1
Q0 Q1 Z
1D 1D
CLK >C1 >C1
CP0 Q0 CP1 Q1
异步时序逻辑电路分析步骤

◆列写方程 ◆列图表 ◆确定功能


• 时钟方程 • 状态表 • 描述逻辑功
• 激励方程 • 状态图 能
• 状态方程 • 时序图 • 验证自启动
• 输出方程
异步时序逻辑电路分析举例(1)
1. 写出电路方程 FF0 FF1
Q0 Q1 Z
1D 1D
① 时钟方程
CLK >C1 >C1
CP0 Q0 CP1 Q1
CP0=CLK CP1=Q0
② 激励方程 D  Q D1  Q1
0 0

③ 状态方程
Q0n +1  D0 cp0  Q0n cp0
Q n +1  Dcpn  Q n cp n
 Q0n cp0  Q0n cp0
Q1n +1  D1cp1  Q1n cp1 cpn=1时,Qn+1=D;
cpn=0时,Qn+1=Qn,保持。
 Q1n cp1  Q1n cp1
④输出方程 Z  Q1n Q0n
2.列状态表画状态图及波形图
CP0=CLK CP1=Q0
Q0n +1  Q0n cp0  Q0n cp0
Z  Q1n Q0n
Q1n +1  Q1n cp1  Q1n cp1

状态转换表
n
Q1 Q0
n
cp1 cp0 Q n 1 Q n 1 Z
1 0
0 0 1 1 1 1 0
2.列状态表画状态图及波形图
CP0=CLK CP1=Q0
Q0n +1  Q0n cp0  Q0n cp0
Z  Q1n Q0n
Q1n +1  Q1n cp1  Q1n cp1

状态转换表
n
Q1 Q0
n
cp1 cp0 Q n 1 Q n 1 Z
1 0
0 0 1 1 1 1 0
0 1 0 1 0 0 0
2.列状态表画状态图及波形图
CP0=CLK CP1=Q0
Q0n +1  Q0n cp0  Q0n cp0
Z  Q1n Q0n
Q1n +1  Q1n cp1  Q1n cp1
Q1Q0/Z

状态转换表
n
Q1 Q0
n
cp1 cp0 Q n 1 Q n 1 Z 00/0
1 0 11
0 0 1 1 1 1 0
0 1 0 1 0 0 0
1 0 1 1 0 1 0
1 1 0 1 1 0 1
2.列状态表画状态图及波形图
CP0=CLK CP1=Q0
Q0n +1  Q0n cp0  Q0n cp0
Z  Q1n Q0n
Q1n +1  Q1n cp1  Q1n cp1
Q1Q0/Z

状态转换表
n
Q1 Q0
n
cp1 cp0 Q n 1 Q n 1 Z 00/0
1 0 11/1
11
0 0 1 1 1 1 0
0 1 0 1 0 0 0
1 0 1 1 0 1 0
1 1 0 1 1 0 1 10
2.列状态表画状态图及波形图
CP0=CLK CP1=Q0
Q0n +1  Q0n cp0  Q0n cp0
Z  Q1n Q0n
Q1n +1  Q1n cp1  Q1n cp1
Q1Q0/Z

状态转换表
n
Q1 Q0
n
cp1 cp0 Q n 1 Q n 1 Z 00/0
1 0 11/1
0 0 1 1 1 1 0
0 1 0 1 0 0 0
1 0 1 1 0 1 0
1 1 0 1 1 0 1 01 10
10/0
2.列状态表画状态图及波形图
CP0=CLK CP1=Q0
Q0n +1  Q0n cp0  Q0n cp0
Z  Q1n Q0n
Q1n +1  Q1n cp1  Q1n cp1
Q1Q0/Z

状态转换表
n
Q1 Q0
n
cp1 cp0 Q n 1 Q n 1 Z 00/0
1 0 11/1
0 0 1 1 1 1 0
0 1 0 1 0 0 0
1 0 1 1 0 1 0
01 /0 10/0
1 1 0 1 1 0 1
2.列状态表画状态图及波形图
CP0=CLK CP1=Q0
Q0n +1  Q0n cp0  Q0n cp0
Z  Q1n Q0n
Q1n +1  Q1n cp1  Q1n cp1
Q1Q0/Z

状态转换表
n
Q1 Q0
n
cp1 cp0 Q n 1 Q n 1 Z 00/0
1 0 11/1
0 0 1 1 1 1 0
0 1 0 1 0 0 0
1 0 1 1 0 1 0
01/0 10/0
1 1 0 1 1 0 1
2.列状态表画状态图及波形图
根据状态图和具体触发器的传输延迟时间tpLH和tpHL,
可以画出时序图
CP

Q0

Q1

Z
1TCP
状态不确定
3. 逻辑功能分析
该电路是一个异步二进制减计数器,Z信号的上升沿可触发借位操作。
也可把它看作为一个序列信号发生器。
异步时序逻辑电路分析举例(2)
分析如图所示异步时序逻辑电路
解:电路是由3个Tʹ触发器构成的异步时序电路
1.列出各逻辑方程组

CP0 CP1 CP2


CLK >C >C >C

Q0 Q1 Q2
FF0 FF1 FF2

Q0 Q1 Q2

时钟方程 CP 0  Q2  CLK  Q 2 CLK CP1  Q0

CP 2  Q0Q1  Q2  CLK  (Q0Q1  Q2 )CLK


1.列出各逻辑方程组

CP0 CP1 CP2


CLK >C >C >C

Q0 Q1 Q2
FF0 FF1 FF2

Q0 Q1 Q2

n
状态方程 Qn +1
0  Q cp0  Q cp0
0
n n
0
Q n +1
 Q cpn  Q n cp n

Q n +1
 Q cp1  Q cp1
n n
n
1 1 1
cpn  1时,Q n +1
Q
Q2n+1  Q2n cp2  Q2n cp2 cpn  0时,Q n +1  Q n
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
n
Q
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0
1 0 1
1 1 0
1 1 1
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
n
Q
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
n
Q
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 1 1
0 0 1 1 0
0 1 0 1 1
0 1 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
n
Q
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 1 1
0 0 1 1 0
0 1 0 1 1
0 1 1 1 0
1 0 0 0 0
1 0 1 0 1
1 1 0 0 0
1 1 1 0 1
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
n
Q
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 0 1 1
0 0 1 1 1 0
0 1 0 0 1 1
0 1 1 1 1 0
1 0 0 0 0 0
1 0 1 0 0 1
1 1 0 0 0 0
1 1 1 0 0 1
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
n
Q
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 0 1 1
0 0 1 1 1 1 0
0 1 0 0 1 1
0 1 1 1 1 0 0
1 0 0 0 0 0
1 0 1 0 0 1
1 1 0 0 0 0
1 1 1 0 0 1
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
n
Q
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 0 0 1 0 1
0 0 1 0 1 1 1 0
0 1 0 0 0 1 1 1
0 1 1 1 1 1 0 0
1 0 0 1 0 0 0 0
1 0 1 1 0 0 0 1
1 1 0 1 0 0 1 0
1 1 1 1 0 0 1 1
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
Qn
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 0 0 1 0 1
0 0 1 0 1 1 1 0
0 1 0 0 0 1 1 1
01 1 1 1 1 1 0 0
10 0 0 1 0 0 0 0
10 0 1 1 0 0 0 1
10 1 0 1 0 0 1 0
10 1 1 1 0 0 1 1
2.列状态表画状态图
CP 0  Q 2 CLK CP1  Q0
CP 2  (Q0Q1  Q2 )CLK
(cp=0表示无时钟下降沿,
状态转换表 cp=1表示有时钟下降沿)
n
Q
2 Q1
n n
Q
0 cp2 cp1 cp0 Q2n1 Q1n1 Q0n1
0 0 0 0 0 1 0 0 1
0 0 1 0 1 1 0 1 0
0 1 0 0 0 1 0 1 1
0 1 1 1 1 1 1 0 0
1 0 0 1 0 0 0 0 0
1 0 1 1 0 0 0 0 1
1 1 0 1 0 0 0 1 0
1 1 1 1 0 0 0 1 1
2.列状态表画状态图

Q2Q1Q0
000 001 101

100 010 110

011 111

3.逻辑功能分析

电路是一个异步五进制加计数电路。3个无效状态都能进入主循环,
因此,电路能够自启动。
再见!
教学内容、要求及小结

本节主要内容:
 寄存器的组成及工作原理
 移位寄存器的分类结构及工作原理
 集成移位寄存器的功能及应用

学习本节后,你应该能
 掌握寄存器和移位寄存器的逻辑功能
 掌握集成移位寄存器的功能及应用

小结:
● 寄存器的功能是存储代码。
● 移位寄存器不仅可以存储代码,还可以实现数据的串行-并行转换、数据
处理及数值运算等。
寄存器和移位寄存器

华中科技大学 秦臻
寄存器
寄存器

寄存器

• 数字系统中用来存储一组二值代码的逻辑部件。

一个触发器能存储1位二值代码,存储n位二值代码的寄存
器需要用n个触发器组成。
寄存器实际上是若干触发器的集合。
寄存器
8位CMOS寄存器74HC374
OE

CP

>C1 Q0

D0 1D

>C1 Q1

D1 1D

… … …

>C1 Q7

D7 1D

脉冲边沿敏感的寄存器
寄存器
8位CMOS寄存器74HC374
OE
OE
CPCP

>C1
>C1 Q0Q0

1 DD
0 0 1D1D

>C1
>C1 Q1Q1

1D D
1 1 1D1D


… …… ……

>C1
>C1 Q7Q7

0D D
7 7 1D1D
寄存器
8位CMOS寄存器74HC374
0 OE
OE

CPCP

>C1
>C1
1
Q0Q0

D0D0 1D1D

>C1
>C1
1 Q1Q1

D1D1 1D1D

…… …… ……

>C1
>C1
0 Q7Q7

D7D7 1D1D
移位寄存器
移位寄存器

移位寄存器的逻辑功能

• 移位寄存器既能寄存数码,又能在时钟脉冲的作用下
使数码向高位或向低位移动的逻辑功能部件

左移位寄存器
单向移位寄存器
右移位寄存器
• 按移动方式分
双向移位寄存器
移位寄存器

(1) 基本移位寄存器

(a)电路
并行数据输出端

串行数据输入端

FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3


DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
串行数据输出端
移位寄存器
(b) 工作原理
n n
写出激励方程 D0=DSI D1=Q0n D2=Q1 D3=Q2

写出状态方程 Q0n+1=DSI Q1n+1 =Q0n

Q2n+1 =Q1n Q3n+1 = Q2 n

FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3


D0 D1 D2 D3
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
移位寄存器 Q0 Q1 Q2 Q3

Q0n+1=DSI 1CP 后 1

Q1n+1 = Q0n
Q2n+1 =Q1n

Q3n+1 =Q2n

D0 D1 D2 D3 FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3


1 0 1 1
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
移位寄存器 Q0 Q1 Q2 Q3

Q0n+1=DSI 1CP 后 1

Q1n+1 = Q0n 2CP 后 1 1


Q2n+1 =Q1n

Q3n+1 =Q2n

D0 D1 D2 FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3


1 0 1 1
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
移位寄存器 Q0 Q1 Q2 Q3

Q0n+1=DSI 1CP 后 1

Q1n+1 = Q0n 2CP 后 1 1


Q2n+1 =Q1n
3CP 后 0 1 1
Q3n+1 =Q2n

D0 D1 FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3


1 0 1 1
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
移位寄存器 Q0 Q1 Q2 Q3

Q0n+1=DSI 1CP 后 1

Q1n+1 = Q0n 2CP 后 1 1


Q2n+1 =Q1n
3CP 后 0 1 1
Q3n+1 =Q2n
4CP 后 1 0 1 1
D0 FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
1 0 1 1
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO )
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO )
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO )
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO )

并行输出 DPO
第4个CP脉冲作用后,从DSI端串行输入的数码就可以从
Q0 Q1 Q2 Q3并行输出。 串入并出
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO )
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO )
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO )
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO )
移位寄存器
DSI = D7D6D5D4D3D2D1D0=11010000,从高位开始输入。所有触发器先清零。
1 2 3 4 5 6 7 8
CP

DSI 1 1 0 1 0 0 0 0 0

Q0

Q1

Q2

Q 3(D SO ) 串行输出
并行输出 DPO

第8个CP脉冲作用后,从DSI 端串行输入的数码就可以从
DSO 端全部输出。 串入串出
移位寄存器

(1) 基本移位寄存器

(a)左移寄存器的连接

FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3


1D 1D 1D 1D
> > > >
C1 C1 C1 C1
CP
移位寄存器

(1) 基本移位寄存器

(a)左移寄存器的连接

FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3


1D 1D 1D 1D
> > > >
C1 C1 C1 C1
CP
移位寄存器

(1) 基本移位寄存器

(a)左移寄存器的连接

FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3


1D 1D 1D 1D
> > > >
C1 C1 C1 C1
CP
移位寄存器
(2) 多功能双向移位寄存器
(a)工作原理
并行输入
D0 D1 D2 D3

右移串行输入(DIR) 右移串行输出(DOR)
FF0 FF1 FF2 FF3
左移串行输出(DOL) 左移串行输入(DIL)
Q0 Q1 Q2 Q3
并行输出
多功能移位寄存器工作模式简图
移位寄存器
实现多种功能双向移位寄存器的一种方案(仅以FFm为例)

S1S0=00 Qmn 1  Qmn 不变

DIm

S0 00 01 10 11
S1
FFm–1 FFm FFm+1
Dm–1 1D Dm 1D Dm+1 1D
C1 C1 C1

C
P
Qm–1 Qm Qm+1
移位寄存器
实现多种功能双向移位寄存器的一种方案(仅以FFm为例)

S1S0=00 Qmn 1  Qmn 不变

S1S0=01 Qmn 1  Qmn 1 右移

DIm

S0 00 01 10 11
S1
FFm–1 FFm FFm+1
Dm–1 1D Dm 1D Dm+1 1D
C1 C1 C1

C
P
Qm–1 Qm Qm+1
移位寄存器
实现多种功能双向移位寄存器的一种方案(仅以FFm为例)
n 1
S1S0=00 Qmn 1  Qmn 不变 S1S0=10 Qm  Q n
m 1 左移

S1S0=01 Qmn 1  Qmn 1 右移

DIm

S0 00 01 10 11
S1
FFm–1 FFm FFm+1
Dm–1 1D Dm 1D Dm+1 1D
C1 C1 C1

C
P
Qm–1 Qm Qm+1
移位寄存器
实现多种功能双向移位寄存器的一种方案(仅以FFm为例)
n 1
S1S0=00 Qmn 1  Qmn 不变 S1S0=10 Qm  Q n
m 1 左移

S1S0=01 Qmn 1  Qmn 1 右移 S1S0=11 Qmn 1  Dm 并入

DIm

S0 00 01 10 11
S1
FFm–1 FFm FFm+1
Dm–1 1D Dm 1D Dm+1 1D
C1 C1 C1

C
P
Qm–1 Qm Qm+1
移位寄存器
(b)典型集成电路
CMOS 4位双向移位寄存器74HC/HCT194
DI0 DI1 DI2 DI3 DSL

S1

S0

DSR

四选一数据
选择器 MUX0 MUX1 MUX2 MUX3

FF0 FF1 FF2 FF3

D0 1S D1 1S D2 1S D3 1S
C1 C1 C1 C1
D0 1R D1 1R D2 1R D3 1R
R R R R
CP

CR

Q0 Q1 Q2 Q3
移位寄存器
74HC/HCT194 的功能表
输 入 输 出
清 控制信 串行输
并行输入
零 号 入 时
钟 行
CR
右 左
CP Q 0n 1 Q1n1 Q 2n 1Q 3n 1
S1 S0 移 移 DI0 DI1 DI2 DI3
DSR DSL
L × × × × × × × × × L L L L 1
H L L × × × × × × × Q 0n Q1n Q 2n Q 3n 2
H L H L × ↑ × × × × L Q 0n Q1n Q 2n 3
H L H H × ↑ × × × × H Q 0n Q1n Q 2n 4
H H L × L ↑ × × × × Q1n Q 2n Q 3n L 5
H H L × H ↑ × × × × Q1n Q 2n Q 3
n H 6
H H H × × ↑ DI0* DI1* DI2* DI3* DI0 DI1 DI2 DI3 7
移位寄存器
例: 电路如图所示,画出 Q0-Q3波形,分析逻辑功能。
解:启动信号为0,S1=1,S0=1,同步置数Q0~Q3=0111
启动信号为1后,S1=0,S0=1,电路为右移状态,Q3=DSR因
为Q0~Q3总有一个为0,S1S0=01,则74194始终工作在右移循
Q0 Q1 Q2 Q3
环移位的状态。

1CP 后
0 1 1 1
S 1 Q0 Q1 Q2 Q3
启动 2CP 后
1 S0 74194
1 CR < CP
DSR D0D1D2D3 3CP 后

4CP 后
0 1 1 1
移位寄存器

CP 1 2 3 4

Q0 0 1 1 1 0

Q1 1 0 1 1 1

Q2 1 1 0 1 1

Q3 1 1 1 0 1

这是一个时序脉冲产生电路,Q0-Q3轮流出现一个CP周期的低电平。
再见!
教学内容、要求及小结

本节主要内容:
 计数器的基本功能、分类及工作特点
 异步二进制计数器的结构及特点

学习本节后,你应该能
 了解计数器的分类
 掌握异步二进制计数器的构成及特点

小结:
● 计数器不仅能用于统计输入时钟脉冲的个数,还能用于分频、定时、产生
节拍脉冲等。
● 计数器分类方法很多,按脉冲输入方式,分为同步和异步计数器;按进位
体制,分为二进制、十进制和任意进制计数器;按逻辑功能,分为加法、减法和
可逆计数器。
● 异步二进制计数器的各个触发器不在同一时刻翻转,从一个状态到下一个
状态可能出现中间的不稳定状态,并且工作频率受到限制。
计数器

华中科技大学 秦臻
计数器概述
计数器概述

计数器的逻辑功能

• 计数器的基本功能是对输入时钟脉冲进行计数。它也可用于分
频、定时、产生节拍脉冲和脉冲序列等等。

计数器的分类

• 按脉冲输入方式,分为同步和异步计数器
• 按进位体制,分为二进制、十进制和任意进制计数器
• 按逻辑功能,分为加法、减法和可逆计数器
计数器概述

二进制计数器
加计数器 十进制计数器
非二进制计数器
任意进制计数器
•同步计数器 减计数器 ……

可逆计数器
二进制计数器
加计数器 十进制计数器
•异步计数器 非二进制计数器
减计数器 任意进制计数器
……
可逆计数器
异步二进制计数器
异步二进制计数器

4位异步二进制加法计数器

FF0 FF1 FF2 FF3

CP >C >C >C >C


R R R R
CR

Q0 Q1 Q2 Q3
异步二进制计数器
4位异步二进制加法计数器波形图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
CP

Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Q1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0

Q2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0

Q3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0

1 1 1
f Q0  f CP f Q1  f CP f Q2  f CP f Q3 
1
f CP
2 4 8 16

结论:  计数器的功能:不仅可以计数也可作为分频器。
异步二进制计数器
如考虑每个触发器都有tpd的延时,电路会出现什么问题?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
CP

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Q0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
Q1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
Q2
4tpd
Q3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0

异步计数脉冲的最小周期 Tmin=n tpd。(n为位数)


异步二进制计数器
如考虑每个触发器都有tpd的延时,电路会出现什么问题?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
CP

0 1 00 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Q0
0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
Q1

Q2 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
4tpd
Q3 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0

异步计数脉冲的最小周期 Tmin=n tpd。(n为位数)


异步二进制计数器
如考虑每个触发器都有tpd的延时,电路会出现什么问题?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
CP
1tpd
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Q0
2tpd
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
Q1
3tpd
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
Q2
4tpd 4tpd
Q3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0

异步计数脉冲的最小周期 Tmin=n tpd。(n为位数)


异步二进制计数器

4位异步二进制减法计数器

FF0 FF1 FF2 FF3

CP >C >C >C >C


R R R R
CR

Q0 Q1 Q2 Q3
异步二进制计数器
4位异步二进制减法计数器波形图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
CP

Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Q1 0 1 1 0 0 11 11 0 0 1 1 0 0 1 1 0 0

Q2 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

Q3 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0

1 1 1
f Q0  f CP f Q1  f CP f Q2  f CP f Q3 
1
f CP
2 4 8 16
再见!
教学内容、要求及小结

本节主要内容:
 同步二进制计数器的结构及特点
 具有使能、并行进位、异步清零、同步并行置数功能的计数器

学习本节后,你应该能
 了解同步二进制计数器的结构及特点
 掌握计数器各控制端的逻辑功能

小结:
● 计数器是最常用的时序逻辑器件。
● 按照计数规律及 T 触发器的特点,避繁就简地设计同步二进制计数器电
路。
● 阐述了计数器的使能、并行进位、异步清零和同步并行置数的功能。
● 以集成二进制计数器 74 LVC161 为例介绍集成电路的功能表和时序图。
计数器

华中科技大学 秦臻
同步二进制计数器
同步二进制计数器 4位二进制计数器状态表 电路状态
计数顺序 进位输出
(1)采用T触发器构成4位同步二进制加计数器 Q3 Q2 Q1 Q0
0 0 0 0 0 0
T触发器的特点是:当T=0是保持,T=1时翻转 1 0 0 0 1 0
2 0 0 1 0 0

FF0可采用T0=1的T触发器 3 0 0 1 1 0
4 0 1 0 0 0
Q1仅在Q0=1后的下一个CP到来时翻转 5 0 1 0 1 0
6 0 1 1 0 0
FF1可采用T1= Q0的T触发器 7 0 1 1 1 0
8 1 0 0 0 0
9 1 0 0 1 0
10 1 0 1 0 0
11 1 0 1 1 0
12 1 1 0 0 0
13 1 1 0 1 0
14 1 1 1 0 0
15 1 1 1 1 1
16 0 0 0 0 0
同步二进制计数器 4位二进制计数器状态表 电路状态
计数顺序 进位输出
(1)采用T触发器构成4位同步二进制加计数器 Q3 Q2 Q1 Q0
0 0 0 0 0 0
T触发器的特点是:当T=0是保持,T=1时翻转 1 0 0 0 1 0
2 0 0 1 0 0

FF0可采用T0=1的T触发器 3 0 0 1 1 0
4 0 1 0 0 0
Q1仅在Q0=1后的下一个CP到来时翻转 5 0 1 0 1 0
6 0 1 1 0 0
FF1可采用T1= Q0的T触发器 7 0 1 1 1 0
8 1 0 0 0 0
Q2仅在Q0=Q1=1后的下一个CP到来时翻转 9 1 0 0 1 0
10 1 0 1 0 0
FF2可采用T2= Q0Q1的T触发器 11 1 0 1 1 0
12 1 1 0 0 0
13 1 1 0 1 0
14 1 1 1 0 0
15 1 1 1 1 1
16 0 0 0 0 0
同步二进制计数器 4位二进制计数器状态表 电路状态
计数顺序 进位输出
(1)采用T触发器构成4位同步二进制加计数器 Q3 Q2 Q1 Q0
0 0 0 0 0 0
T触发器的特点是:当T=0是保持,T=1时翻转 1 0 0 0 1 0
2 0 0 1 0 0

FF0可采用T0=1的T触发器 3 0 0 1 1 0
4 0 1 0 0 0
Q1仅在Q0=1后的下一个CP到来时翻转 5 0 1 0 1 0
6 0 1 1 0 0
FF1可采用T1= Q0的T触发器 7 0 1 1 1 0
8 1 0 0 0 0
Q2仅在Q0=Q1=1后的下一个CP到来时翻转 9 1 0 0 1 0
10 1 0 1 0 0
FF2可采用T2= Q0Q1的T触发器 11 1 0 1 1 0
12 1 1 0 0 0
Q3仅在Q0=Q1=Q2=1后的下一个CP到来时翻转 13 1 1 0 1 0
14 1 1 1 0 0
FF3可采用T3= Q0Q1Q2的T触发器 15 1 1 1 1 1
16 0 0 0 0 0
同步二进制计数器
(1)采用T触发器构成4位同步二进制加计数器
各个T触发器的激励方程为 T0  1
T  Q
1 0

T 2 Q1Q0
T3  Q2Q1Q0

4位二进制同步加计数器的逻辑图
T2=Q1Q0
T3= Q2Q1Q0
T0=1 T1=Q0
1 1T 1T 1T 1T
C1 C1 C1 C1

FF0 FF1 FF2 FF3


CP
Q0 Q1 Q2 Q3
同步二进制计数器
4位同步二进制加计数器时序图

CP

Q0

Q1

Q2

Q3 1tpd
同步二进制计数器
(2)采用D触发器构成同步二进制计数器 T0  1
T  Q
 1
Q n1  D  T Q n  T Q n
0
1D Q 
T 2 Q1Q0
T

CP C1
T3  Q2Q1Q0
Q

1
T0 =1 Q0 T1=Q0 Q1 T2=Q1Q0 Q2 T3=Q2Q1Q0

FF0 FF1 FF2 FF3


T 触发器
1D 1D 1D 1D
C1 C1 C1 C1

CP
Q0 Q1 Q2 Q3
同步二进制计数器
(3)计数使能和并行进位
CET、 CEP为计数使能,CE=CET•CEP,并行进位TC=Q3Q2Q1Q0CET
CET
CE
CEP G4
G0
TC

G1 G2 G3

T0=CE T1=Q0·CE T2=Q1Q0·CE T3=Q2Q1Q0·CE

FF0 FF1 FF2 FF3


1D 1D 1D 1D
C1 C1 C1 C1

CP

Q0 Q1 Q2 Q3
同步二进制计数器
(4) 异步清零和同步并行置数
D0 D1 D2 D3

CET

CEP

2选1数据选择器

0 1 0 1 0 1 0 1

PE
FF0 FF1 FF2 FF3
Q Q Q Q
1D 1D 1D 1D
C1 C1 C1 C1
R R R R
CP
清零 CR

Q0 Q1 Q2 Q3 TC
同步二进制计数器

74LVC161功能表
输 入 输 出

清零 预置 使能 预置数据输入 计 数 进位

CR PE CEP CET CP D3 D2 D1 D0 Q3 Q2 Q1 Q0 TC
L × × × × × × × × L L L L L
H L × × ↑ D3 D2 D1 D0 D3 D2 D1 D0 *
H H L × × × × × × 保 持 *
H H × L × × × × × 保 持 L
H H H H ↑ × × × × 计 数 *

CR的作用? PE的作用?
同步二进制计数器
时序图 CR

PE

D0 0
D1 0
D2
1
D3 1
CP

CEP
CET
Q0
Q1
Q2
Q3
TC TC=CET•Q3Q2Q1Q0
异步清零同步预置 计数 保持
同步二进制计数器
时序图 CR

PE

D0
D1
D2

D3
CP

CEP
CET
Q0 0
0
Q1
Q2 1
Q3 1
TC TC=CET•Q3Q2Q1Q0
异步清零同步预置 计数 保持
同步二进制计数器
时序图 CR

PE

D0
D1
D2

D3
CP

CEP
CET
Q0 1 1 1
Q1
0 0 1
Q2 1 1 1
Q3 1 1 1
TC 1 TC=CET•Q3Q2Q1Q0
异步清零同步预置 计数 保持
再见!
教学内容、要求及小结

本节主要内容:
 用集成计数器构成任意进制计数器的方法
 集成计数器级联的方法

学习本节后,你应该能
 熟练掌握计数器的逻辑功能
 掌握集成计数器 74VC161 的逻辑功能及应用

小结:
● 用已有的 M 进制集成计数器产品可以构成 N(任意)进制的计数器。当
M>N 时,用一片 M 进制计数器,采取反馈清零法或反馈置数法,跳过 MN 个状
态,就可以得到 N 进制的计数器了;当 M<N 时,要用多片 M 进制计数器组合起
来,才能构成 N 进制计数器。
● 集成计数器级联的方法有并行进位和串行进位两种方式。
计数器

华中科技大学 秦臻
集成计数器应用
集成计数器应用
用74LVC161构成九进制加计数器。
(1) 反馈清零法:利用异步置零输入端,在M进制计数器的计数过程中,
跳过M-N个状态,得到N进制计数器的方法。
CP Q3 Q2 Q1 Q0 × × × ×

0 0 0 0 0 1 1 CR D 0 D1 D2 D3
CET
TC
1 0 0 0 1 1 1 CEP 74LVC161
CP PE
2 0 0 1 0 CP > CP Q0 Q1 Q2 Q3 1
… ……. 1

8 1 0 0 0
9 1 0 0 1 CR  Q0  Q3  0
… …

设法跳过169=7个状态
15 1 1 1 1
集成计数器应用
工作波形
× × × × CP

1 1 CR D 0 D1 D2 D3 Q0
CET
TC
1 1 CEP 74LVC161
PE Q1
CP CP > CP Q 0 Q1 Q2 Q3 1
Q2
1

Q3

状态图
Q 3Q 2Q 1Q 0 1001 0000 0001 0010 0011

1000 0111 0110 0101 0100


集成计数器应用
(2) 反馈置数法:利用同步置数端,在M进制计数器的计数过程
中,跳过M-N个状态,得到N进制计数器的方法。

1
CP Q3 Q2 Q1 Q0
CR D 0 D1 D2 D3
0 0 0 0 0 1
1 CET
TC
1 1 74LVC161
1 0 0 0 1 CEP
PE
CP CP > CP Q0 Q1 Q2 Q3
2 0 0 1 0
… …….

8 1 0 0 0 Q 3Q 2Q 1Q 0
9 1 0 0 1
1000 0000 0001 0010
… ……  Q3  0
PE

15 1 1 1 1
0111 0110 0101 0100 0011
集成计数器应用
采用后九种状态作为有效状态,用反馈置数法 构成九进制加计数器。
1 1 1 1
CP QD QC QB QA
Q3 Q2 Q1 Q0 1 1 CR D 0 D1 D2 D3
0 0 0 0 0 CET
TC
1 1 74LVC161
01 10 01 01 1
CEP
PE
12 00 > CP
00 10 0
CP CP Q0 Q1 Q2 Q3

1… 0 0……. 1 1

1 0 1 0 TC  CET  Q3  Q2  Q1  Q0  1
1 0 1 1
7 0 1 1 1
1 1 0 0 Q 3Q 2Q 1Q 0

18 11 00 01 0 1000 1001 1010 1011


19 11 10 00 1
1… 1 ……
1 1
15 1 1 1 1 0111 1111 1110 1101 1100
集成计数器应用
波形图:
1 2 3 4 5 6 7 8 9 10
CP

Q0 1 1

Q1 1 1

Q2 1 1

0 0
Q3

该计数器的模为9。
集成计数器应用
例:分析下图所示的时序逻辑电路,试画出其状态图,并指出计数器的模是多少?

CP
> Q 3Q 2Q 1Q 0

D0 D1 D2 D3 PE
CP
0000 0001 0010 0011 0100 0101
1 CET 1111
74LVC161
CEP
CR Q0 Q1 Q2 Q3
1110
1011 1010 1001 1000 0111 0110

1101
1100

PE  Q3  Q1  Q0  0
M=12
集成计数器应用
例 用74LVC161组成256进制计数器。
解:设计思想
• 1片74161是16进制计数器
• 256 = 16×16
• 所以256进制计数器需用两片74161构成

•片与片之间的连接通常有两种方式:

并行进位 (低位片的进位信号作为高位片的使能信号)

串行进位 (低位片的进位信号作为高位片的时钟脉冲,
即异步计数方式)
集成计数器应用
并行进位:低位片的进位作为高位片的使能

1 × × × × 1 × × × ×

CR D0 D1 D2 D3 CR D0 D1 D2 D3
1 CET TC CET TC
1 CEP 74161(A) CEP 74161(B)
PE 1 PE 1
>CP Q 0 Q 1 Q 2 Q 3 >CP Q 0 Q 1 Q 2 Q 3
CP

0000 1111 +0 0 0 1

计数状态 : 0000 0000 ~1111 1111


M = 16×16=256
集成计数器应用
串行进位:低位片的进位作为高位片的时钟

1 × × × × 1 × × × ×

1 CR D0 D1 D2 D3 CR D0 D1 D2 D3
CET 1 CET TC
TC
1 CEP 74161(A) 1 CEP 74161(B)
PE 1 PE 1
CP >CP Q 0 Q 1 Q 2 Q 3 >CP Q 0 Q 1 Q 2 Q 3

0000 1111 +0 0 0 1

计数状态 : 0000 0000 ~1111 1111

采用串行进位时,为什么低TC要经反相器后作为高位的CP?
同步二进制计数器
CR
74161时序图
PE

D0
D1
D2

D3
CP

CEP
CET
Q0 1
Q1 1
Q2 1
Q3 1
TC 1

TC
小结

用集成计数器构成任意进制计数器的一般方法
1)N < M 的情况 :

(已有的集成计数器是M 进制,需组成的是N 进制计数器 )


实现的方法:

反馈清零法 利用清零输入端,使电路计数到某状态时产生清
零操作,清除M–N个状态实现N进制计数器。

反馈置数法 利用计数器的置数功能,通过给计数器置入某个
数值,而跳过(M–N)个状态,实现N进制计数器。
小结

2)N >M 的情况

实现的方法:----采用多片M进制计数器构成。

按芯片连接方式可分为:

(1)串行进位方式: 构成异步计数器

(2)并行进位方式: 构成同步计数器
再见!
教学内容、要求及小结

本节主要内容:
 异步二-十进制计数器的结构及特点
 环形和扭环形计数器的结构特点及工作原理

学习本节后,你应该能
 了解异步二-十进制计数器的结构及连接方法
 了解环形和扭环形计数器的结构及特点

小结:
● 异步二-十进制计数器是由模 2 和模 5 异步时序电路组成,可以连接成
8421BCD 或 5421BCD 计数器。
● 环形和扭环形计数器的优点是电路结构简单,译码电路非常简单,可以避
免出现竞争-冒险。
计数器

华中科技大学 秦臻
其他类型计数器
异步二-十进制计数器
将图中电路按以下两种方式连接,列出状态转换表
(1)CP 0 接计数脉冲信号,将Q0与 CP 1 相连
(2)CP 1 接计数脉冲信号,将Q3与CP 0 相连

CP1

FF0 FF1 FF2 FF3

CP0 C C C C
R R R R

CR

Q0 Q1 Q2 Q3
异步二-十进制计数器
将图中电路按以下两种方式连接,列出状态转换表
计数 连接方式1(8421码)
(1)CP 0 接计数脉冲信号,将Q0与 CP 1 相连 顺序 Q
3 Q Q
2 1Q 0

(2)CP 1 接计数脉冲信号,将Q3与CP 0 相连 0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
CP1
3 0 0 1 1
FF0 FF1 FF2 FF3
CP CP 4 0 1 0 0
0 C C C C 5 0 1 0 1
R R R R
6 0 1 1 0
CR
7 0 1 1 1
Q0 Q1 Q2 Q3
8 1 0 0 0
9 1 0 0 1
异步二-十进制计数器
将图中电路按以下两种方式连接,列出状态转换表
计数 连接方式2(5421码)
(1)CP 0 接计数脉冲信号,将Q0与 CP 1 相连 顺序 Q Q Q Q
0 3 2 1
(2)CP 1 接计数脉冲信号,将Q3与CP 0 相连 0 0 0 0 0
1 0 0 0 1
CP 2 0 0 1 0
CP1
3 0 0 1 1
FF0 FF1 FF2 FF3
4 0 1 0 0
CP0 C C C C
5 1 0 0 0
R R R R
6 1 0 0 1
CR
7 1 0 1 0
Q0 Q1 Q2 Q3
8 1 0 1 1
9 1 1 0 0
环形计数器
置初态Q3Q2Q1Q0=0001,
① 基本环形计数器

1 0 0 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
环形计数器
置初态Q3Q2Q1Q0=0001,
① 基本环形计数器
第1个CP: Q3Q2Q1Q0=0010,

1 0 0 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
环形计数器
置初态Q3Q2Q1Q0=0001,
① 基本环形计数器
第1个CP: Q3Q2Q1Q0=0010,
第2个CP: Q3Q2Q1Q0=0100,

0 1 0 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
环形计数器
置初态Q3Q2Q1Q0=0001,
① 基本环形计数器
第1个CP: Q3Q2Q1Q0=0010,
第2个CP: Q3Q2Q1Q0=0100,
第3个CP: Q3Q2Q1Q0=1000,

0 0 1 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1
CP
环形计数器
置初态Q3Q2Q1Q0=0001,
① 基本环形计数器
第1个CP: Q3Q2Q1Q0=0010,
第2个CP: Q3Q2Q1Q0=0100,
第3个CP: Q3Q2Q1Q0=1000,
第4个CP: Q3Q2Q1Q0=0001,

0 1 Q3Q2Q1Q0
0 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
0001 0010
DSI 1D 1D 1D 1D DSO
> > > >
C1 C1 C1 C1 1000 0100
CP
状态图
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,

0 0 0 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001,

0 0 0 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3 1
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001,
第2个CP: Q3Q2Q1Q0=0011,

1 0 0 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3 1
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001,
第2个CP: Q3Q2Q1Q0=0011,
第3个CP: Q3Q2Q1Q0=0111,

1 1 0 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3 1
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001,
第2个CP: Q3Q2Q1Q0=0011,
第3个CP: Q3Q2Q1Q0=0111,
第4个CP: Q3Q2Q1Q0=1111,

1 1 1 0
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3 1
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001, 第5个CP: Q3Q2Q1Q0=1110,
第2个CP: Q3Q2Q1Q0=0011,
第3个CP: Q3Q2Q1Q0=0111,
第4个CP: Q3Q2Q1Q0=1111,

1 1 1 1
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3 0
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001, 第5个CP: Q3Q2Q1Q0=1110,
第2个CP: Q3Q2Q1Q0=0011, 第6个CP: Q3Q2Q1Q0=1100,
第3个CP: Q3Q2Q1Q0=0111,
第4个CP: Q3Q2Q1Q0=1111,

0 1 1 1
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3 0
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001, 第5个CP: Q3Q2Q1Q0=1110,
第2个CP: Q3Q2Q1Q0=0011, 第6个CP: Q3Q2Q1Q0=1100,
第3个CP: Q3Q2Q1Q0=0111, 第7个CP: Q3Q2Q1Q0=1000,
第4个CP: Q3Q2Q1Q0=1111,

0 0 1 1
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3 0
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001, 第5个CP: Q3Q2Q1Q0=1110,
第2个CP: Q3Q2Q1Q0=0011, 第6个CP: Q3Q2Q1Q0=1100,
第3个CP: Q3Q2Q1Q0=0111, 第7个CP: Q3Q2Q1Q0=1000,
第4个CP: Q3Q2Q1Q0=1111, 第8个CP: Q3Q2Q1Q0=0000,

0 0 0 1
FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3
DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3 0
Q0
C1 C1 C1 C1
CP
环形计数器
② 扭环形计数器 置初态Q3Q2Q1Q0=0000,
第1个CP: Q3Q2Q1Q0=0001, 第5个CP: Q3Q2Q1Q0=1110,
第2个CP: Q3Q2Q1Q0=0011, 第6个CP: Q3Q2Q1Q0=1100,
第3个CP: Q3Q2Q1Q0=0111, 第7个CP: Q3Q2Q1Q0=1000,
第4个CP: Q3Q2Q1Q0=1111, 第8个CP: Q3Q2Q1Q0=0000,

FF0 Q0 FF1 Q1 FF2 Q2 FF3 Q3 Q3Q2Q1Q0 0000 0001 0011

DSI 1D 1D 1D 1D DSO
> Q0 > Q1 > > Q3
Q0 1000 0111
C1 C1 C1 C1
CP
1100 1110 1111
状态图
环形计数器
② 扭环形计数器

设计具有自启动功能的扭环形计数器

Q3Q2Q1Q0 0000 0001 0010 1001 0100


0011

1000 0111 1011 0101

1100 1110 1111 1010 1101 0110

状态图
环形计数器
② 扭环形计数器

设计具有自启动功能的扭环形计数器

Q0 Q1 Q3
1D 1D 1D 1D
>C1 >C1 >C1 Q2 >C1

FF0 FF1 FF2 FF3


CP
再见!
同步时序电路的设计
——状态转换图

华中科技大学 鲁放
同步时序电路设计
同步时序电路的定义:电路中的触发器具有相同的时钟信号,所
有触发器均同时在时钟有效跳边沿更新。
同步时序电路设计
同步时序电路的定义:电路中的触发器具有相同的时钟信号,所
有触发器均同时在时钟有效跳边沿更新。
同步时序电路的设计流程:
(1)逻辑抽象得到原始状态转换图和状态转换表;
(2)状态化简;
(3)状态分配;
(4)触发器选型;
(5)计算输出方程和触发器激励方程;
(6)检查电路是否具有自启动能力;
(7)根据逻辑方程,画出逻辑电路图。
例题:101序列检测

设计一个串行‘101’检测器,电路的输入信号X是与时钟脉冲同步的串
行数据,输出信号为Z。要求电路在输入信号X出现‘101’序列时,输
出信号Z为‘1’,否则为‘0’。要求以下列3种方式画出状态转换图。

(1)可重叠

(2)不可重叠

(3)以3个数据为一组
例题:101序列检测

X 1 0 1 0 1 0 1 0 1
Z (可重叠) 0 0 1 0 1 0 1 0 1
例题:101序列检测

X 1 0 1 0 1 0 1 0 1
Z (可重叠) 0 0 1 0 1 0 1 0 1
例题:101序列检测

X 1 0 1 0 1 0 1 0 1
Z (不可重叠) 0 0 1 0 0 0 1 0 0
例题:101序列检测

X 1 0 1 0 1 0 1 0 1
Z (不可重叠) 0 0 1 0 0 0 1 0 0
例题:101序列检测

X 1 0 1 0 1 0 1 0 1
Z (3个一组) 0 0 1 0 0 0 0 0 1
例题:101序列检测

X 1 0 1 0 1 0 1 0 1
Z (3个一组) 0 0 1 0 0 0 0 0 1
状态转换图设计小结

状态转换图的设计:
(1)是同步时序电路设计的关键,也是同步时序电路设计
的难点;
(2)需要严格遵循逻辑功能的描述;
(3)状态数量取决于功能需求;
(4)状态转换过程必须完备。在每个状态下,状态转换的
方向有2n个,其中n为电路输入信号数量。
再见!
同步时序电路的设计
——状态转换图(2)

华中科技大学 鲁放
例题:鼠标双击检测
鼠标操作中,在短时间间隔内连续两次敲击鼠标会被认为是“双击”,若敲击间隔时
间较长则不认为是双击。用同步时序电路设计“鼠标双击”检测电路,电路的输入为
上升沿有效的时钟信号CP和鼠标按键信号X,输出信号Z为检测结果。电路具体要求如
下:
例题:鼠标双击检测
鼠标操作中,在短时间间隔内连续两次敲击鼠标会被认为是“双击”,若敲击间隔时
间较长则不认为是双击。用同步时序电路设计“鼠标双击”检测电路,电路的输入为
上升沿有效的时钟信号CP和鼠标按键信号X,输出信号Z为检测结果。电路具体要求如
下:
(1)X信号平时为低电平,每次敲击鼠标时,将产生与时钟上升沿同步的、1个时钟
周期的高电平。

(2)如果两次敲击间隔小于或等于2个时钟周期时,则认为是一次“双击”操作,Z
将输出1个时钟周期的高电平。其他情况下,Z均输出低电平。

约束:一次鼠标敲击只有“单击”和“双击”两种操作,且任意两次操作之间的间隔
远超2个时钟周期,因此不必考虑鼠标“多击”的情况。
例题:鼠标双击检测
题意分析

单击 间隔为0 间隔为1 间隔为2


双击 双击 双击

Z
例题:鼠标双击检测
状态转换图

无间隔双击

间隔为2双击 间隔为1双击
例题:鼠标双击检测
状态转换图

无间隔双击

间隔为2双击 间隔为1双击
再见!
异步时序电路设计

华中科技大学 鲁放
异步时序电路

异步时序电路的定义:电路中的触发器没有统一的时钟,触发器
的状态不是同时更新。

与同步时序电路相比,异步时序电路:
(1)同样可以实现绝大部分的功能;
(2)在某些功能设计时,电路资源消耗可能略少;
(3)触发器不同时更新,状态转换延时大,时钟频率低;
(4)没有成熟、完整的设计方法;

某些功能必须采用异步时序电路才能实现
例题:波形整形电路
按键电路产生的信号为X,按键被按下时X为高电平,松开时为低电平。

由于敲击按键速度快慢有别,按键每次被按下的时间长短不一,因此X
为高电平的时间可能很短,也可能很长。如果将高电平持续时间不固定的信
号X直接送入后续处理电路,可能引起误动作。

设计一个波形整形电路,其输入为按键电路产生
的信号X,当X变为高电平后,无论其高电平持续
时间长短,电路将在下一个时钟CP上升沿到来后,
其输出信号Z将产生一个时钟周期宽度的高电平,
在其他时间Z为低电平。
例题:波形整形电路

CP

波形整形电路设计的要点:
(1)输入信号X与时钟异步,且X为高电平的时间不重要;
(2)除了触发器的时钟不同,触发器的异步清零和异步置位信号也要能灵活
加以运用;
(3)找到输入输出之间的关系,以搭积木方式进行电路设计。
例题:波形整形电路
CP

Q0

波形整形电路设计:
(1)X的高电平持续时间长短无关:利用X的上升沿作为触发器时钟;
(2)Z的跳变发生在CP上升沿:Z与CP同步,利用CP上升沿作为触发器时钟;
(3)Z的高电平持续一个时钟周期:在第3个CP上升沿到来之前必须将Q0清零。
异步时序电路小结

异步时序电路设计:
(1)没有成熟完整的设计步骤,类似于搭积木的方式进行电路的
拼凑,且由于异步时序电路时延长,时钟频率低,一般不建议设计
异步时序电路;
(2)某些功能,同步时序电路无法实现,必须采用异步电路,如
本例题中的波形整形电路;
(3)异步电路设计时,不仅考虑触发器时钟信号的不同,而且还
需灵活运用异步清零和异步置位信号。
再见!
教学内容、要求及小结

本章目的
能实现基本逻辑运算和复合逻辑运算的电子电路称为逻辑门电路。本
章重点讨论各种 CMOS 集成门电路的工作原理和使用,简单介绍几种基本
的 TTL 逻辑门。所讲内容将作为读者今后从事电子电路的设计和构建的基
础。主要内容如下:
 介绍 MOS 管和 BJT 管的开关特性
 阐述基本 CMOS 门电路结构和工作原理
 讨论 CMOS 门的输入、输出特性
 介绍 CMOS 漏极开路输出,三态输出逻辑门的工作原理及其使用
 介绍 CMOS 门电气特性与主要参数
 介绍各种逻辑门电路之间的接口

本节主要内容:
 CMOS 逻辑门电路的发展过程及几种系列主要性能比较
 TTL 系列逻辑门电路简介
 二值逻辑变量中的 0 和 1 对应电子器件的“闭合”和“断开”

学习本节后,你应该能
 了解逻辑门电路的分类
 了解 CMOS 逻辑门电路的主要优点
 理解 BJT 或 MOS 管作为电子开关的作用

小结:
● 逻辑门电路是组成各种数字电路的基本单元电路,它的种类繁多。从制造
工艺上可分为 MOS 型(CMOS 门电路)、双极型(TTL 门电路)和混合型(BiCMOS
门电路)。目前使用最多的是 CMOS 门电路。
● CMOS 门电路的优点是集成度高,功耗低,扇出数大(指带同类门负
载),噪声容限亦大,开关速度较高。随着半导体工艺技术的发展,CMOS 逻辑
门电路向着低电压和低功耗器件的方向发展。
● 数字电路中 MOS 或 BJT 管相当于一个受控开关,工作在“闭合”“断开”两
种状态。
逻辑门电路

华中科技大学 秦臻
逻辑门电路简介
逻辑门电路简介
逻辑门:实现基本逻辑运算和常用逻辑运算的单元电路。
逻辑门电路的分类
逻辑门电路简介
逻辑门电路产品系列

(转自http://www.ti.com/Logic Selection Guide 2007)


逻辑门电路简介
CMOS逻辑门电路使用最广泛,速度快,功耗低。

4000 74HC/HCT 74AHC/AHCT 74LVC/AUC

• 速度慢 • 速度加快 • 速度2倍于HC • 低(超低)电压


• 与TTL不兼容 • 与TTL兼容 • 与TTL兼容 • 速度更快
• 抗干扰 • 负载能力强 • 负载能力强 • 抗干扰
• 功耗低 • 抗干扰 • 抗干扰 • 功耗低
• 功耗低 • 功耗低
逻辑门电路简介

TTL是应用最早,技术比较成熟的集成电路,曾被广泛使用。

74 74S 74LS 74AS 74ALS


• 速度约为9ns • 速度是74两倍 • 速度与74相当 • 速度更快 • 速度快
• 功耗约为10mW • 功耗约为20mW • 功耗低于74S • 功耗低 • 功耗更低
逻辑门电路简介
逻辑门电路产品命名:
以54或74开始,后加字母及数字表示,如54/74HC00。中间字母表示不
同系列,如HC系列。最后的数字表示不同逻辑功能芯片的编号。
VCC
14 13 12 11 10 9 8

1 2 3 4 5 6 7
GND
(a) (b)
2输入与非门74HC00
(a) 双列直插封装 (b) 引脚排列图
逻辑门电路简介
开关电路
逻辑变量取值0或1,对应电路中电子器件的“闭合”与“断开”。
MOS管或BJT管可以作为开关。

VCC V CC

R R

v O=VCC v O=0

S S

(a) 输出逻辑1 (b) 输出逻辑0


再见!
教学内容、要求及小结

本节主要内容:
 MOS 管分类及 N 沟道增强型 MOS 管的结构工作原理工作特点
 MOS 管开关电路及动态特性

学习本节后,你应该能
 了解 MOS 管的分类
 了解 MOS 管作为开关器件的工作原理
 了解 MOS 管开关电路的动态特性

小结:
● MOS 管有增强型和耗尽型,每一种又有 N 沟道和 P 沟道之分。
● MOS 管输出特性分为三个区截止区、饱和区和可变电阻区。在数字电路中,
MOS 管工作在可变电阻区和截止区。
● 由于极间电容的存在,MOS 管开关电路输入端加一个理想脉冲波形,其输
出的上升沿和下降沿的变化都变缓慢了。
MOS管及其开关特性

华中科技大学 秦臻
MOS管及其开关特性
CMOS门电路是以MOS管为开关器件。
MOS管的分类
1.N沟道增强型MOS管

结构和工作原理

源极 栅极

s g d d

SiO2 g B

N N s
符号
d
P
N型半导体 g
P型半导体
B s
1.N沟道增强型MOS管
(1) VGS控制沟道的导电性
 vGS=0,vDS0,等效背靠背连接的两个二极管,iD0。
VDS

VGS=0
s g d

N N

B
1.N沟道增强型MOS管
(1) VGS控制沟道的导电性
 vGS=0,vDS0,等效背靠背连接的两个二极管,iD0。

 vGS>0, 建立电场 反型层  vDS>0, iD 0。 VDS

 沟道建立的最小vGS值称为开启电压VT. VGS
s g d

N N

P
N 沟道
B
1.N沟道增强型MOS管
(2) VGS和VDS共同作用 iD

 vGS>VT, vDS>0, 靠近漏极的电压减小。 VGS

 当VGS>VT, iD 随VDS增加几乎成线性增加 。
O
vDS
 当vDS   vGD=(vGSvDS)VT, 漏极处出现 VDS
VGS
夹断。 S G D

 继续增加VDS   夹断区域变大, N N
iD 饱和。
P
n-沟道
B
2. N沟道增强型MOS管的输出特性

 截止区: vGS  VT , iD  0

iD
可变电阻区
 可变电阻区:沟道产生, iD 随vDS VDS=VGS VT
线性增加, rds为受vGS控制可变电阻。 VGS4

VGS3
dvDS 1 饱和区
rds   VGS2
diD vGS cost
2 K n (vGS  VT )
VGS1
O
截止区 vDS
 饱和区: vGS  VT , vDS  vGS  VT
输出特性曲线
3. 其他类型的MOS管
d d
(1) P沟道增强型MOS管 iD

g
 结构与NMOS管相反。 g B

 vGS、vDS 电压极性与NMOS管相反。 s s
 开启电压vT为负值 (a)标准符号 (b)简化符号

S G D
(2) N沟道耗尽型MOS管
 绝缘层掺入正离子,使衬底表面形成N沟道。 N + + ++++ + N
 vGS电压可以是正值、零或负值。 P
 vGS达到某一负值vP,沟道被夹断, iD =0。
B
3. 其他类型的MOS管

(2) N沟道耗尽型MOS管 d d

N沟道耗尽型MOS管符号如图。 g B g

s s
(a)标准符号 (b)简化符号

(3) P沟道耗尽型MOS管
d d

结构与N沟道耗尽型MOS管相反。
符号如图所示。 g B g

s s
(a)标准符号 (b)简化符号
4.MOS管开关电路

逻辑变量取0或1,对应电路中电子器件的“闭合”与“断开”。

VCC VCC VDD


 当υI<VT: MOS管截止,输出高
电平,相当于开关“断开”。 R R Rd
vO=VCC vO=0
d vO

 当υI>VT:MOS管工作在可变 S S g
vI
电阻区,输出低电平,相当于 s
开关“闭合”。
输出逻辑 1 输出逻辑 0

 MOS管相当于一个由vGS控制的无触点开关。
5.MOS管开关电路的动态特性

 由于MOS管栅极、漏极与衬底间电容,
栅极与漏极之间存在电容,电路在状
态转换之间有电容充、放电过程。
 输出波形上升沿、下降沿变得缓慢。
再见!
教学内容、要求及小结

本节主要内容:
 CMOS 反相器的结构工作原理、外部特性。
 CMOS 与非、或非门及传输门的结构及工作原理

学习本节后,你应该能
 了解 CMOS 门电路的结构工作原理、外部特性
 了解传输门的结构及工作原理

小结:
● CMOS 逻辑门电路是由互补的增强型 N 沟道和 P 沟道 MOSFET 构成,其
优点是静态功耗几乎为 0,开关速度较高,带负载能力强。
● CMOS 逻辑门电路的输入和输出高、低电平都对应一定的电压范围。
● 传输门除了作为传输信号的开关外,还可以用于构成各种逻辑电路。
基本CMOS逻辑门电路

华中科技大学 秦臻
CMOS反相器
CMOS反相器
1. 工作原理
VTN = 2 V,VTP = - 2 V VDD>(VTN  VTP ) +VDD
S2 +5V
TP
vi vGSN vGSP TN TP vO
导通
0V 0V -5V 截止 导通 5V D2
0V
vi D1 vO
截止
TN
S1
CMOS反相器
1. 工作原理
VTN = 2 V,VTP = - 2 V VDD>(VTN  VTP ) +VDD
S2 +5V
TP
vi vGSN vGSP TN TP vO
0V 0V -5V 截止 导通 5V 截止D
2
5V
5V 5V 0V 导通 截止 0V vi D1 vO
导通
真值表 TN
S1
A (vi) L(vO) 逻辑表达式 逻辑符号
0 1
0
L A A L
1
CMOS反相器
CMOS反相器的重要特点:

• 无论VI是高电平还是低电平 ,TN和TP中总是一个导通而另一个
第一 截止。CMOS反相器的静态功耗几乎为零。

• MOS管导通电阻低,截止电阻高。使充、放电时间常数小,开关
第二 速度更快,具有更强的带负载能力。

• MOS管IG≈0,输入电阻高。 理论上可以带任意同类门,但负载
第三 门输入杂散电容会影响开关速度。
CMOS反相器
2. 电压传输特性和电流传输特性
电压传输特性 v O  f ( v I ) 电流传输特性 iD  f (vI )
CMOS反相器
3. 输入逻辑电平和输出逻辑电平
VOUT VOUT
/V /V 输出高电平
5 5
输入低电平 输入高电平 VOHmin

无定义
VOLmax
0 VIN
VILmax VIHmin 5 VIN 0
VILmax VIHmin 5 /V
/V
无定义 输出低电平
输入低电平的上限值 输出高电平的下限值
VIL(max) VOH(min)
输入高电平的下限值 输出低电平的上限值
VIH(min) VOL(max)
CMOS反相器
4. 工作速度
VDD VDD

vI=0V
iDP
iDP
TP vO TP vO vO
vI
TN TN
iDN vI=VDD
CL CL CL
iDN

由于电路具有互补对称的性质,它的传输延迟时间tPLH和tPHL是相等的。
其他基本CMOS逻辑门电路
1.CMOS与非门
工作原理 +VDD +5V
VTN = 2 V,VTP = - 2 V
导通 导通
TP2 TP1 L
A B TN1 TP1 TN2 TP2 L
A
0 0 截止 导通 截止 导通 1 0 截止 TN1

B TN2
0 截止
1.CMOS与非门
工作原理 +VDD +5V
VTN = 2 V,VTP = - 2 V
TP2 TP1 L
A B TN1 TP1 TN2 TP2 L
A
0 0 截止 导通 截止 导通 1 TN1

0 1 截止 导通 导通 截止 1
B TN2
1 0 导通 截止 截止 导通 1
1 1 导通 截止 导通 截止 0

N输入与非门电路的结构? 与非门 A
输入端增加有什么问题? L  AB B
2.CMOS或非门
工作原理 +VDD +5V
A
VTN = 2 V,VTP = - 2 V 0
导通 TP1
A B TN1 TP1 TN2 TP2 L B
0 导通 TP2
0 0 截止 导通 截止 导通 1 L
TN1 TN2
截止 截止
2.CMOS或非门
工作原理 +VDD +5V
A
VTN = 2 V,VTP = - 2 V
TP1
A B TN1 TP1 TN2 TP2 L B
TP2
0 0 截止 导通 截止 导通 1 L
0 1 截止 导通 导通 截止 0 TN1 TN2

1 0 导通 截止 截止 导通 0
1 1 导通 截止 导通 截止 0

N输入或非门电路的结构? 或非门 A
B
输入端增加有什么问题? L  A B
其他基本CMOS逻辑门电路
例:分析CMOS电路,说明其逻辑功能。
VDD
A B
L  A B  X TP4
TP3

 A B  A  B A TP1

TP5
TP2 X
 A B  A  B L

TN5
 A B B
TN1 TN2 TN4

异或门电路 TN3
3.CMOS传输门
C
传输门的结构及工作原理 C
TP

+ VDD
vI /vO vO /vI vI /vO TG vO /vI
V
0V

TN C

C 符号
传输门电路结构
C

等效电路 υI / υO υo/ υI
3.CMOS传输门
设: VTN=2V,VTP= –2V
传输门的结构及工作原理 I的变化范围为0到+5V。
C 1)当C=0, C =1时
+5V
TP C=0V,C=+5V
截止
0V到+5V + VDD GSN= 0V - (0V到+5V)=(0到-5)V
vI /vO vO /vI
V
0V GSN< VTN, TN截止
截止TN GSP=+5V - (0V到+5V)=(5到0)V
C
0V GSP>0, TP截止

开关断开,不能转送信号
3.CMOS传输门
2)当C=1, C =0时
传输门的结构及工作原理 a、I=0V~3V
C
0V GSN=5V - (0V~+3V)=(5~2)V

TP GSN>VTN, TN导通
导通
0V到+5V + VDD b、I=2V~5V
vI /vO vO /vI
V
0V GSP= 0V - (2V~+5V)= -2V ~ -5V
导通TN |GSP | > |VTP|, TP导通

C +5V c、I=2V~3V
TN导通,TP导通

开关闭合,转送信号 vO  vI
3.CMOS传输门
传输门的应用—传输门组成异或门

B=0 A 截止
TG1

TG1断开, TG2导通 0 B
1
L

L=A
导通
TG2
3.CMOS传输门
传输门的应用—传输门组成异或门

B=0 A 导通
TG1

TG1断开, TG2导通 1 B
0
L

L=A
截止
TG2
B=1

TG1导通, TG2断开

L=A L  AB  AB
3.CMOS传输门
传输门的应用—传输门组成数据选择器
VDD
C=0

TG1导通,TG2断开 X 导通
TG1

L=X L

Y 截止
TG2
0 C
3.CMOS传输门
传输门的应用—传输门组成数据选择器
VDD
C=0

TG1导通,TG2断开 X 截止
TG1

L=X L

C=1
Y 导通
TG2

TG2导通, TG1断开 1 C

L=Y
小结
 CMOS反相器及其特点

 其他基本CMOS门电路

* 与非门

* 或非门

* 传输门

* 以及门电路的应用
再见!
教学内容、要求及小结

本节主要内容:
 CMOS 门电路的输入输出保护缓冲电路。
 CMOS 漏极开路输出,三态输出逻辑门的工作原理及其使用

学习本节后,你应该能
 了解 CMOS 门电路的输入输出保护缓冲电路
 了解 CMOS 漏极开路输出,三态输出逻辑门的工作原理及其使用

小结:
● 从输出电路的结构看,CMOS 逻辑门电路有普通缓冲器输出、漏极开路输
出或三态输出三种不同的输出电路。
● 漏极开路输出门电路(OD 门)的输出端并联实现“线与”。
● 三态输出端也可以并联使用,但要保证任何时候,只能有一个三态输出门
工作,而其他三态输出门都处于高阻状态。
CMOS逻辑门电路
的不同输出结构

华中科技大学 秦臻
CMOS逻辑门的保护和缓冲电路
CMOS逻辑门的保护和缓冲电路
采用缓冲电路能够统一参数,使不同的逻辑门电路具有相同的
输入和输出特性。
V DD

vo
vi 基本逻辑
功能电路

输入保护缓冲电路 基本逻辑功能电路 输出缓冲电路


CMOS逻辑门的保护和缓冲电路
VDD
1. 输入端保护电路
(1) 0 < vI < VDD + vDF CP
D1 TP
D1、D2截止 Rs
vI vO
(2) vI > VDD + vDF
D2 TN
D1导通, D2截止 CN
vI = VDD + vDF
(3) vI < - vDF D2 ---分布式二极管
二极管导通电压:vDF
D2导通, D1截止 vI = - vDF

当输入电压不在正常范围时,二极管导通,限制了电压的增加,保护了输入电路。
RS和MOS管栅极电容组成积分网络,使输入信号的过冲电压延迟且衰减后到栅极。
CMOS逻辑门的保护和缓冲电路
2. CMOS逻辑门的缓冲电路
输入、输出端加了反相器作为缓冲电路,所以电路的逻辑功能也发生了变化。
或非门增加了缓冲器后,逻辑功能为与非。

A
L

L  A  B  A B B

A
L
B
CMOS逻辑门的不同输出结构
CMOS漏极开路(OD)门
1. CMOS漏极开路门的提出 V DD

A
输出短接,在一定情况下会产生低阻 TP1

B TN1 1
通路,大电流有可能导致器件的损毁,
与非门 G 1
并且无法确定输出是高电平还是低电平。 V DD

C TP2
0
D TN2

与非门 G 2
CMOS漏极开路(OD)门
2. 漏极开路门的结构与逻辑符号
VDD
电路 V DD 逻辑符号 V DD
RP
漏极
L
开路输出 RP
L A
A TP1 L A L
A
A B B
1 L
B
B
TN1 B 与非门 G1
C
与非门 G1 C D

(a)工作时必须外接电源和电阻 D

与非门 G2
(b) 可以实现线与功能
L  AB  CD
 AB  CD
CMOS漏极开路(OD)门
3.上拉电阻对OD门动态性能的影响

V DD
Rp的值愈小,负载电容的充电时间常数亦
RP
愈小,因而开关速度愈快。但功耗大,且可能
A 0L 1
使输出电流超过允许的最大值IOL(max)。 B

C
D CL
Rp的值大,可保证输出电流不能超过允许的
最大值IOL(max)、功耗小。但负载电容的充电时
间常数亦愈大,开关速度因而愈慢。
电路带电容负载
CMOS漏极开路(OD)门
3.上拉电阻对OD门动态性能的影响
+V DD
当VO=VOL RP
IOL(max) IIL(total)
最不利的情况:只有一个 OD门导通,
0
为保证低电平时,OD门的输出电流不能超 k
IIL
过允许的最大值IOL(max)且VO=VOL(max),
RP不能太小。
1


VDD - VOL (max)
I OL (max)   I IL(total) n m
Rp (min)
VDD - VOL (max) 1
Rp (min) 
I OL (max) - I IL(total)
CMOS漏极开路(OD)门
3.上拉电阻对OD门动态性能的影响
+V DD
当VO=VOH RP
I0H(total) IIH(total)

为使高电平不低于规定的VOH的最小值,
k
则Rp的选择不能过大。Rp的最大值Rp(max) : IIL

V DD - V OH(min)


R p(max)  n m
I OH(total)  I IH(total)
三态(TSL)输出门电路
高电平使能的三态输出缓冲电路
V DD
1
EN
1
使能EN 输入A 输出L B 截止TP
L 0
1 0 0 0
A 1 导通TN
0 C
三态(TSL)输出门电路
高电平使能的三态输出缓冲电路
V DD
0
EN
1 导通TP
B
使能EN 输入A 输出L
L 1
1 0 0 0
0
1 1 1 A 截止TN
1 C
三态(TSL)输出门电路
高电平使能的三态输出缓冲电路
V DD
1
EN
0
使能EN 输入A 输出L B 截止TP
L
1 0 0 1 高阻
0
1 1 1 A 截止TN
× C
0 × 高阻

EN
A L
三态(TSL)输出门电路
三态门电路的应用

数据总线
D

G1 G2 … Gn

EN1 EN2 ENn


01 D1 01 D2 … 10 Dn

任何时刻只能有一个门的使能端为有效,其他门输出高阻
小结

 CMOS逻辑门的保护和缓冲电路

 CMOS逻辑门的不同输出结构

* 漏极开路(OD)门

* 三态输出门
再见!
教学内容、要求及小结

本节主要内容:
 介绍 CMOS 门电路的主要参数

学习本节后,你应该能
 了解 CMOS 门电路的主要参数

小结:
● 逻辑门电路的主要技术参数有输入和输出高、低电平的最大值和最小值、
噪声容限、传输延迟时间、功耗、延迟-功耗积、扇入数和扇出数等。
CMOS逻辑门电路
的重要参数

华中科技大学 秦臻
CMOS逻辑门电路的重要参数
1.输入和输出的高、低电平 vO vI

驱动门 G1 负载门 G2

输入低电平的上限值 vO +VDD +VDD vI


VIL(max) 输出
高电平 VOH(min) 输入
输入高电平的下限值 高电平
VIH(min) VIH(min)

输出高电平的下限值 VIL(max)
VOH(min)
输入
输出 VOL(max)
输出低电平的上限值 低电平
低电平
0 0
VOL(max)
G1 门 vO 范围 G2 门 vI 范围
CMOS逻辑门电路的重要参数
1.输入和输出的高、低电平

类型 4000 74HC 74HCT 74LVC 74AUC


参数/单位
 VDD  5V   VDD  5V   VDD  5V   VDD  3.3V   VDD  1.8V 
         
 O
I  1mA   O
I  0.02 mA   O
I  0.02 mA    I O  0.1mA 
 O
I 0.1mA 
VIL(max) /V 1.0 1.5 0.8 0.8 0.6
VOL(max) /V 0.05 0.1 0.1 0.2 0.2
VIH(min) /V 4.0 3.5 2.0 2.0 1.2
VOH(min) /V 4.95 4.9 4.9 3.1 1.7
高电平噪声容限(VNH/V) 0.95 1.4 2.9 1.1 0.5
低电平噪声容限(VNL/V) 0.95 1.4 0.7 0.6 0.4
CMOS逻辑门电路的重要参数
2.噪声容限 驱动门 负载门
噪声
在保证输出电平不变的条件下,输入电平允 vo vI

许波动的范围。它表示门电路的抗干扰能力。
负载门输入高电平时的噪声容限:
vO +VDD +VDD vI
VNH —当前级门输出高电平的最小值时允许 1 输出
VOH(min) 1 输入
负向噪声电压的最大值。 VNH
VIH(min)
VNH =VOH(min)-VIH(min)
VIL(max)
负载门输入低电平时的噪声容限: VNL
0 输入
VNL —当前级门输出低电平的最大值时允许 0 输出 VOL(max)
0 0

正向噪声电压的最大值 G1 门 vO 范围 G2 门 vI 范围

VNL =VIL(max)-VOL(max)
CMOS逻辑门电路的重要参数
2.噪声容限

类型 4000 74HC 74HCT 74LVC 74AUC


参数/单位
 VDD  5V   VDD  5V   VDD  5V   VDD  3.3V   VDD  1.8V 
         
 O
I  1mA   O
I  0.02 mA   O
I  0.02 mA    I O  0.1mA 
 O
I 0.1mA 
VIL(max) /V 1.0 1.5 0.8 0.8 0.6
VOL(max) /V 0.05 0.1 0.1 0.2 0.2
VIH(min) /V 4.0 3.5 2.0 2.0 1.2
VOH(min) /V 4.95 4.9 4.9 3.1 1.7
高电平噪声容限(VNH/V) 0.95 1.4 2.9 1.1 0.5
低电平噪声容限(VNL/V) 0.95 1.4 0.7 0.6 0.4
CMOS逻辑门电路的重要参数
3.传输延迟时间

传输延迟时间说明门电路在输入脉冲波形的作用
50% 50%
下,其输出波形相对于输入波形延迟了多长的时间。 输入
它是表征门电路开关速度的参数。 t PHL tPLH

传输延迟时间与电源电压VDD及负载电容大小有关。
90% 90%
输出
表中为各个非门的参数。 50% 50%

10% 10%
t tr
f
类型
74HC 74AHC 74LVC 74AUC
参数
VDD=5V VDD=5V VDD=3.3V VDD=1.8V CMOS电路传输延迟时间
tPLH或
tPHL(ns) 6 3.8 2.5 0.8
CMOS逻辑门电路的重要参数
4.功耗

静态功耗:指的是当电路没有状态转换时的功耗,即门电路空载时电源总电
流IDD与电源电压VDD的乘积。
CMOS电路的静态功耗非常低。
对于TTL门电路来说,静态功耗是主要的。

动态功耗:指的是电路在输出状态转换时的功耗。
PL (CPD  CL)VDD
2
f
CMOS逻辑门电路的重要参数
5.延时-功耗积
是速度功耗综合性的指标。延时功耗积,用符号DP表
几种CMOS系列非门的DP

系列 74HC04 74AHC04 74LVC04 74AUC04


参数/单位 (VDD=5V) (VDD=5V) (VDD=3.3V) (VDD=1.8V)

功耗电容 21 12 8 17
CPD/pF
传输延迟时间 6 3.8 2.5 0.8
tpd/ns(CL=15pF)
功耗 9 6.8 2.5 1
PD mW(10MHz)
延时功耗积 54 25.84 6.25 0.8
DP/pJ
CMOS逻辑门电路的重要参数
6.扇入与扇出数
扇入数:取决于逻辑门的输入端的个数。
扇出数:是指其在正常工作情况下,所能带同类门电路的最大数目。
(a)带拉电流负载
IOH
当负载门的个数增加时,总的拉电流将增加,会
引起输出高电压的降低。但不得低于输出高电平的下 IIH
限值,这就限制了负载门的个数。
I OH ( 驱动门) IIH
高电平扇出数: N OH 
I IH (负载门)


IOH :驱动门的输出端为高电平电流。
IIH :负载门的输入电流。
CMOS逻辑门电路的重要参数
6.扇入与扇出数
(b)带灌电流负载
IOL
当负载门的个数增加时,总的灌电流IOL将增加,同时
也将引起输出低电压VOL的升高。当输出为低电平,并 IIL
且保证不超过输出低电平的上限值。
I OL ( 驱动门) IIL
低电平扇出数: N OL 
I IL (负载门)
IOL :驱动门的输出端为低电平电流。


IIL :负载门输入端电流。

如果NOH与NOL不等,取两者中数值小的作为扇出数。
小结

CMOS门电路的重要参数有

* 输入和输出的高、低电平

* 噪声容限

* 传输延迟时间

* 功耗

* 延时-功耗积

* 扇入与扇出数
再见!
教学内容、要求及小结

本节主要内容:
 类 NMOS 电路的结构及工作原理
 BiCMOS 电路的结构及工作原理

学习本节后,你应该能
 了解类 NMOS 电路的结构及工作原理
 了解 BiCMOS 电路的结构及工作原理

小结:
● NMOS 电路的工作管为增强型 NMOS 管,负载管可以是增强型或耗尽型。
用 PMOS 增强型(栅极接地处于常通状态),优点是噪声容限大,还可与 CMOS
电路相匹配。
● BiCMOS 电路采用 BJT 管作为 CMOS 电路的输出级,电路具有 MOS 管
的高集成度、低功耗和双极性管驱动力强的优势。
教学内容、要求及小结

本节主要内容:
 BJT 开关电路的工作原理

学习本节后,你应该能
 了解 BJT 的开关特性
 影响 BJT 的开关速度的因素

小结:
● 数字电路中,BJT 管工作在输出特性曲线的截止区和饱和区。
● 影响 BJT 开关速度的因素是从截止到饱和导通时建立基区电荷时间,以及
从饱和导通到截止时存储电荷消散的时间。
教学内容、要求及小结

本节主要内容:
 基本 TTL 反相器的工作原理

学习本节后,你应该能
 了解基本 TTL 反相器的工作原理
 理解基本 TTL 反相器的输出特性

小结:
● 基本 TTL 反相器是由输入级、中间级及输出级构成,目的是为了提高电路
的开关速度和带负载能力。
TTL反相器

华中科技大学 杨彩虹
1.TTL反相器
1.1 基本BJT反相器的问题

BJT开关速度受限:
VCC
► 管子基区内电荷的存储和消
RC
散需要时间。
RB
1
0
► 带电容负载时,CL的充、放 CL

放电过程均经历一定的时间,
从而增加输出电压O波形的上
升和下降时间。
1.2 TTL反相器的基本电路

电路改进: VCC (5V)

► 输入级:由T1和电 R b1
4k W
Rc 2
1.6k W
Rc 4
130 W

阻Rb1组成,提高电 T4

路的工作速度。 T1 T2 D
+

► 输出级:由T3,T4, vI
+

T3 vO
二极管D和电阻RC4组 负载

R e2
成,提高开关速度 1K W

和带负载能力。
输入级 中间级 输出级
1. TTL反相器的工作原理
► 当输入为低电平时(I = VIL = 0.2 V )
VCC(5V)

Rb1 Rc2 Rc4


T1 发射结导通 B1= VIL + VBE1 =0.9V
B1作用于 T1 集电结、 T2 和 T3发射结,
4kW 1.6kW 130W

0.9V vB4
vB1 T4 VCC  vB1
0.2V iB1   1.025 mA
T1 T2 D R1
+
vI I BS1  0 iB1  I BS1
+

T3
负载
vO
所以T2 、 T3截止,T4 、D导通

Re2
1KW vO  vB4  VBE4  VD 
(5  0.7  0.7) V  3.6 V

输入 T1 T2 T3 D4 T4 输出
低电平 饱和 截止 截止 导通 导通 高电平
1. TTL反相器的工作原理
VCC(5V)
► 当输入为高电平时(I = VIH = 3.6 V )
Rb1 Rc2 Rc4 在VCC 作用下,T2 和 T3饱和导通,此时
4kW 1.6kW 130W

0.9V
B1= VBC1 + VBE2 + VBE3 =2.1V使T1 倒置放大
2.1V
4.3V T4
vB1 截止
T2 和 T3饱和导通使得
3.6V T1 T2饱和 D
+ 倒置放大1.4V 0.2V C2= VCES2 + VBE3 =0.9V
vI
– 0.7V + C2作用于T4发射结和二极管D,使得T4和D均截
T3饱和 vO
负载
– 止,且T3饱和导通,所以输出为低电平
Re2
1KW
vO  vC3  VCES3  0.2V

输入 T1 T2 T3 D4 T4 输出
高电平 倒置放大 饱和 饱和 截止 截止 低电平
1. TTL反相器的工作原理

输入 T1 T2 T3 D4 T4 输出
低电平 饱和 截止 截止 导通 导通 高电平

倒置放
高电平 饱和 饱和 截止 截止 低电平

逻辑真值表 人像
输入A 输出L
0 1
1 0

逻辑表达式
L = A
2.输入级对TTL反相器工作速度的影响

提高工作速度 ► 当I由高电平变低电平的瞬间

VCC(5V)
•T2、T3管的状态变化滞后于T1管,仍处于
Rb1 Rc2 Rc4
4kW 1.6kW 130W
导通状态。

0.9V v T4
B1 •T1管Je正偏、Jc反偏, T1工作在放大状态。
0.2V T1 T2 D
+ 1.4V T1管射极电流(1+1 ) iB1很快地从T2的基区
vI
+ 抽走多余的存储电荷,加速输出由低电平到

T3
负载
vO 高电平的转换。

Re2
1KW
3. 输出级对TTL反相器负载能力的影响

提高负载能力 当O= 0.2V

VCC(5V)
VCC(5V) 输出为低电平时,T4截止,T3饱和导通,其
Rb1Rb1 Rc2 Rc2 Rc4 Rc4 饱和电流全部用来驱动负载。
4kW4kW 1.6kW
1.6kW 130W130W
0.9V
2.1V
T4 T4
0.2V
vB1vB1
当O= 3.6V
3.6V T
1 T1 T2 T2 D D
++ 0.2
3.6V
1.4V 输出为高电平时,T3 截止,T4 组成的电压跟
vI v V
I
+
–– + 随器的输出电阻很小,输出高电平稳定,带负
T3 T vO v
3 负载
负载 O
– – 载能力也较强。
Re2 R
e2
1KW 1KW
4. 输出级对TTL反相器工作速度的影响

提高开关速度

VCC(5V)

Rb1 Rc2 Rc4


输出端接负载电容CL时
4kW 1.6kW 130W
0.9V
vB1 T4 当O由低到高电平跳变瞬间,CL充电,T4
0.2V
T1 T2 饱和导通电阻很小,电容CL充电很快,输
D
+ 3.6V
出波形上升沿陡直。
vI
+

T3 vO
负载

Re2
1KW
4. 输出级对TTL反相器工作速度的影响

提高开关速度

VCC(5V)
输出端接负载电容CL时
Rb1 Rc2 Rc4
4kW 1.6kW 130W

2.1V
vB1 T4
当O由高变低电平跳变瞬间, CL放电,
3.6V T
+
1 T2 D
0.2
T3饱和导通电阻很小,电容CL放电很快,
1.4V
vI V
+
输出波形的下降沿陡直。

T3 vO
负载

Re2
1KW
小结:

TTL反相器通过引入输入级和输出
级改进
 提高了工作速度; 人像
 增强了带负载能力。
再见!
教学内容、要求及小结

本节主要内容:
 TTL 与非门和或非门的结构及工作原理
 TTL 集电极开路门和三态门的结构及工作原理

学习本节后,你应该能
 理解 TTL 与非门和或非门的结构及工作原理
 理解集电极开路门和三态门的结构及工作原理

小结:
● TTL 与非门是将基本 TTL 反相器的输入级采用多发射极构成。或非门采用
多个输入级并接构成。
● 集电极开路输出门电路(OC 门)的输出端并联实现“线与”。 三态输出端
也可以并联使用,但要保证任何时候,只能有一个三态输出门工作,而其他三态
输出门都处于高阻状态。
其它TTL门电路

华中科技大学 杨彩虹
1. TTL与非门和 • 与非门
或非门 • 或非门

2. 集电极开路 • 集电极开路门(OC门)
门和三态门 • 三态门(TSL门)
1.TTL与非门和或非门
1.1 TTL与非门
1. 电路组成 R1 R2 R4
VCC

4k 1.6k 130


输入级,由多发射极晶体管T1 和电阻
T3
R1 构成,输入信号通过T1 发射结实现
D4
与逻辑; A T2
T1
Y
中间级,由T2和电阻R2、R3组成,从T2 B
T4
的集电结和发射极同时输出两个相位 R3
1k
相反的信号,分别驱动T3和T4;

输出级,由T3、D4、T4和R4构成。 输入级 中间级 输出级

图- 54/74系列与非门
2. 基本工作情况

当输入A、B至少有一个为低电平(0.3V)
时,T1 基极电位约为1V,因此T2 和T4 均 VCC
R1 R2 R4
不会导通。VCC经R2驱动T3和D4,使之导 4k 1.6k 130

通。输出电压为 T3
1V
低电平
D4
vO  VCC  iB3 R2  VBE3  vD4 A T1 T2
Y
B 高电平
由于基流iB3很小,可忽略不计,则 T4
R3
1k
vO  VCC  VBE3  vD4
 5V  0.7V  0.7V  3.6V
图- 54/74系列与非门
输出高电平,电路处于关态。
2. 基本工作情况

当输入A、B全部为高电平(3.6V)时,T1 VCC
R1 R2 R4
130
基极电位升高,使T1 集电结、T2 和T4 发 4k 1.6k

射结导通。T2集电结电位约为1V,不能 T3

高电平 1V
驱动T3和D4,使之截止。输出电压为 D4
A T1 T2
Y
vO  VOL  VCE(sat)4  0.3V B
T4 低电平
高电平
R3
1k
输出低电平,电路处于开态。

表-1 TTL与非门电路各晶体管工作状态 图- 54/74系列与非门

T1 T2 T3 D4 T4
输出高电平(关态) 饱和 截止 导通 导通 截止
输出低电平(开态) 倒置工作 饱和 截止 截止 饱和
3. 推拉式输出和多发射极晶体管的作用

推拉式输出电路提高了带负载能力:
当电路处于关态时,输出级工作于射极输出状态,呈现低阻抗输出;

当电路处于开态时,T4处于饱和状态,输出电阻也很低。

电路在稳态时,均具有较低输出阻抗,极大地提高了带负载能力。

推拉输出电路和多发射极晶体管极大地提高了电路的开关速度:

一般TTL与非门的平均延迟时间可缩短到几十纳秒。
1.2 TTL或非门
VCC

A T3
T1
T2
D4

T4 Y
B
T1′
T2′

图- TTL或非门电路
表-2 或非门工作状态
输入(A,B) T1 T1 ′ T2 T2 ′ T3 D4 T4 输出
A=L,B=L 饱和 饱和 截止 截止 导通 导通 截止 H
A=L,B=H 饱和 倒置 截止 导通 截止 截止 饱和 L
A=H,B=L 倒置 饱和 导通 截止 截止 截止 饱和 L
A=H,B=H 倒置 倒置 导通 导通 截止 截止 饱和 L
2.集电极开路门和三态门
1. )集电极开路门
两个非门的输出端直接连接,其输出与输
入间的关系为

Y  A B
A
Y 线与:两个逻辑门输出端相连,可以实现两
个输出端相与的功能。

线与可以大大简化电路,但推拉式输出
B
Y  A B 结构的TTL门电路不能将两个门的输出端直
接线与。
图- 非门的线与连接
集电极开路门
VCC
集电极开路门的提出
T3
如果Y1输出为高电平,Y2输出为低电平,
D4 Y1 由于推拉式输出级总是呈现低阻抗,因
VOH
T4 此将会导致一个很大的负载电流流过两
个输出级,远远超过其正常工作电流,
VCC
损坏门电路。

T3
集电极开路门(OC门):为了使TTL门能
D4
VOL
够实现线与,将输出级改为集电极开路的
T2
T4 Y2
结构。

图- 两个与非门输出直接相连
集电极开路门

VCC VCC
T3 RL
D4 A &
T2 Y
A T1 ●
Y
T4 B
B
C &
(a)
n D
A &

···
Y
B
I &
(b)
J

图- 集电极开路的与非门
及其逻辑符号 图- n个OC门并联使用

Y  AB  CD   IJ  AB  CD   IJ
3.三态门(TSL)
三态门: 普通门电路 + 控制端(EN) + 控制电路

VCC 高电平有效
D
T3 A
&
B Y
D4 EN EN
T1
A
T2 (b) 低电平有效
Y
B P
T4 A
&
EN 1 1 B Y
EN EN
G1 G2
(a) (c)
图- 三态门电路及逻辑符号

若EN为有效电平,三态门等同于普通门电路;否则,输出为高阻态,输入与
输出之间相当于断开。
三态门实现总线结构

A1 &
B1
1 EN EN D
1

A2 &
B2
1 EN2 EN D
···

An &
Bn
1 ENn EN D

图- 三态门接成总线结构
三态门实现数据双向传输

G1
DO 1
EN
DO /DI 总

线
人像
1
DI
EN
G2
EN

图- 三态门实现数据双向传输
再见!
教学内容、要求及小结

本节主要内容:
 肖特基势垒二极管的工作原理
 低功耗肖特基 TTL 反相器的结构及工作原理
 抗饱和 TTL 与非门的结构及工作原理

学习本节后,你应该能
 了解肖特基势垒二极管的工作原理
 理解低功耗肖特基 TTL 反相器的结构及工作原理
 了解抗饱和 TTL 与非门的结构及工作原理

小结:
● 肖特基势垒二极管导通阈值电压较低,约为 0.4-0.5V。它从正向导通到反
向截止,没有内部电荷的建立和消散过程。
● 低功耗肖特基 TTL 电路可以抵抗 BJT 过饱和作用,使电路的开关时间大大
缩短。
抗饱和TTL门电路

华中科技大学 杨彩虹
1.TTL反相器的问题
P区 势垒区 N区
► 提高BJT工作速度的关键是
控制BJT的饱和深度 +
电子 空穴
-

► 电路改进
 提高工作速度
 降低功耗

► 抗饱和TTL门电路 P 区的电子 N 区的空穴


浓度分布 浓度分布
 采用肖特基势垒二极管
限制BJT的饱和深度,提
高速度,降低功耗 图-1 PN结存储电荷的分布
2.肖特基势垒二极管工作原理

►肖特基势垒二极管(SBD):

一种利用金属和半导体相接触,在交界面形成势垒的二极管

► SBD工作特点
 单向导电性

 导通阈值电压低

 没有电荷存储作用,开关(导通
反向截止)速度快
2.肖特基势垒二极管工作原理
C C

B B

E E
(a) (b)

图-2 带肖特基二极管钳位的BJT
(a)电路结构形式 (b)符号

► 当BJT工作在饱和时
 发射结和集电结均正偏;
 集电结正偏电压越大,饱和程度越深;

 在BJT的B、C间增加SBD,可以限制
BJT的饱和深度;
2.肖特基势垒二极管工作原理
0.4V C C

B B

E E
(a) (b)

图-2 带肖特基二极管钳位的BJT
► 当BJT集电结正偏电压超过SBD导通阈值
 SBD导通,集电结正偏电压钳制于0.4V左右;
 若流向基极电流增大,则SBD分流,从而
限制基极电流和集电结正偏电压;

► SBD的作用
 分流,限压,抗饱和;
 提高BJT开关速度;
3.低功耗肖特基TTL反相器

VCC
R2 R7 120 VCC (5V)
R1 8k T4 Rb1 Rc2 Rc4
20k T5 4k  1.6k  130 

R6
D3 T4
4k

T1 T2
D4 L D
+
A ●
T1
R3 vI
D1 ●
T3 +

12k R4 R5 T3 vO
负载
D2 1.5k 3k –
Re2
T2 1K 

图-3-1 74LS04中的一个反相器电路 图-3-2 基本TTL反相器电路


3.低功耗肖特基TTL反相器

► 74LS04的改进措施(1)
VCC
R2 R7 120
R1 8k  1. 除T5外,其余BJT均采用SBD:SBD的
T4
20k T5 电压钳制使其获得明显的抗过饱和效果;
R6
D3
4k

 2. 输入级用SBD D1取代BJT:由于SBD没
L
A
D4 有电荷存储效应,有利于提高工作速度。

T1
R3
D1 T3  3. 用T4和T5组成的复合管取代基本TTL电

12k R4 R5
D2 1.5k 3k 路中的二极管D和T4:输出由低电平向高
T2 电平过渡时,复合管的高电流增益、小
输出电阻可以减小电路对负载的充电时
间。
图-3-1 74LS04中的一个反相器电路
3.低功耗肖特基TTL反相器

► 74LS04的改进措施(2)
VCC
R2 R7 120
R1 8k
 4. 输入级增加SBD D2,既可减小杂散信号干
T4
20k T5 扰,也能防止输入信号反向过冲而损坏T1。
R6
D3
1
4k

 5. 用T2与R4、R5组成的有源电路代替基本
0 L
A ●
T1
D4 TTL电路中Re2(1KΩ),缩短了门电路的转换
R3
D1 ●
T3 时间:反相器输入低电平高电平时,T1
12k R4 R5
D2 1.5k 3k
截止导通;由于T2的基极串接R4,T2导

T2 通滞后于T3,T1以较大电流驱动T3,加快T3
导通。随后T2开始导通,对T3的基极电流
分流,减轻T3的饱和程度,当电路再次翻
图-3-1 74LS04中的一个反相器电路
转时,T3快速截止。
表-1 TTL系列器件主要性能比较

74 74H 74S 74LS


平均传输延迟/每门/ns 10 6 3 9.5
平均功耗/每门/mW 10 22 19 2
最高工作频率/MHz 35 50 125 45
4.其它低功耗肖特基TTL门电路
VCC
R1 20k R2 8k R4 120

T3
T4

D1 D3 R5
4k
A ●

D4 Y
B ●
T2
R7
D2 ●
T5
12k
R3 R6
1.5k 3k

T6

图-4 74LS00中的一个与非门

传统的多发射极三极管被改为SBD,电路的其它部分和74LS04反相器完全一样。
再见!
教学内容、要求及小结

本节主要内容:
 不同系列逻辑门电路之间的接口问题
 逻辑门驱动其它负载时的接口
 常用的抗干扰措施

学习本节后,你应该能
 能够判断不同系列逻辑接口的电压兼容和电流匹配问题。
 能够理解逻辑门驱动其它负载时的接口问题,并能够计算驱动 LED 时限流
电阻的值。

小结:
● 在逻辑电路的实际应用中,有可能遇到不同系列门电路之间、门电路与负
载之间的接口技术问题,应该能正确分析和解决这些问题。
● 对逻辑门多余输入端的处理,如何连接去耦合滤波电容以及接地等抗干扰
工问题能够有正确的方法。
逻辑门电路使用中的
几个实际问题

华中科技大学 杨彩虹
1.各系列逻辑门电路之间的接口问题

不同系列逻辑门电路混合使用时,必须满足:

1. 门电路输入、输出电压必须处在数据手册规定的极值之内;
2. 电压兼容:驱动器件输出电压必须处在负载器件的输入电压范围,包括
高、低电平电压;
3. 扇出问题:驱动器件必须为负载器件提供足够的拉电流或灌电流。
1.1各种门电路输入/输出电压的极值
(1)输入电压极值VI(max) 和VI(min)
有些逻辑门电路允许VI超过电源电压VDD,有些不允许。

VDD
VDD
TP
D1 TP
vI 接基本逻辑
vI 接基本逻辑
功能电路
功能电路 TN
TN D2 TN
D2 TN

图-1 74HC 系列输入电路 图-2 74AHC 系列输入电路

VI(max) =VDD +0.5V,VI被钳位,不能 VI(max) =7V, VDD =3.3V时,允许


超过VDD 。 VI > 3.3V 。
两系列VI(min)通常为0V,考虑二极管作用,VI(min)= -0.5V。
1.1各种门电路输入/输出电压的极值
(2)输出电压极值VO(max) 和VO(min)

有些逻辑门电路允许VO超过VDD,有些不允许。

74HC和74AHC系列:
VO(max) =VDD +0.5V,不能超过VDD

74LVC系列:
VO(max) =6.5V。采用VDD =3.3V时,允许VO > 3.3V,但必须低于6.5V。

VO(min) 通常为0V,考虑二极管作用,VO(min)= -0.5V。


1.2各种门电路电压兼容性和电流
匹配性问题

vO vI

驱动门 G1 负载门 G2

vO vI VOH(min) ≥ VIH(min)
VOH (min)

VIH (min)
VOL(max) ≤ VIL(max)
VIL (max)
VOL( max)

图-3 输入、输出的电压匹配
1.2各种门电路电压兼容性和电流
匹配性问题

拉电流 灌电流

0 1 0 1 0 1
IOH IIH IOL
… IIL …

IIH IIL
n个 n个
图-4 负载器件的电流要求-拉电流 图-5 负载器件的电流要求-灌电流

IOH(max) ≥ IIH(total) IOL(max) ≥ IIL(total)


1.2各种门电路电压兼容性和电流
匹配性问题
(1)驱动器件必须为负载器件提供合乎
标准的高、低电平电压。
(2)驱动器件必须为负载器件提供足够
的驱动电流。

驱动电路 负载电路
1.)VOH(min) ≥ VIH(min)
2.)VOL(max) ≤ VIL(max)
3.) IOH(max) ≥ IIH(total)

4.) IOL(max) ≥ IIL(total)


5.0 VCC 5.0 VCC
4.4V
V VOH V

3.5V VIH 3.3 VCC


V
2.4V VOH 2.4V VOH 2.5 VCC
2.0V VIH 2.0V VIH V
2.0V VOH
1.8 VCC
1.7V VIH 1.5 VCC
1.5V VIL
1.35 VOH
V 1.15
V VOH
1.17 VIH 0.975V VIH
0.8V VIL 0.8V VIL 0.7V VIL V
0.63 VIL V
0.5V VOL 0.4V V
0.45 VOL 0.525V VIL
VOL 0.4V VOL 0.4V VOL 0.35 VOL
0.0V GND 0.0V GND 0.0V GND 0.0V GND V
0.0V GND 0.0V GND
V V
5V CMOS 系 5V TTL 系列 3.3V LVTTL 系 2.5V CMOS 系列 1.8V CMOS 系 1.5V CMOS 系
列 列 (与 2.5V列CMOS 列 CMOS
(与 2.5V
(HC、AHC 等系列)(TTL、HCT、 (LVC、AUP、 (LVC、AUC、
AHCT 等系列) BiCMOS 等系列) AVC、 系列相同) 系列相同)

AUP 等系列)
图-6 不同系列器件在给定电源电压下的输入/输出电平参数
1.3 5V CMOS驱动3.3V CMOS门

例-1:已知5V CMOS门系列
VOH(min)=4.4V VOL(max) =0.5V 当负载门个数n小于≤4
IOL(max)= 20 A IOH(max)=  20 A
带拉电流负载
3.3V CMOS门系列 IOH(max) ≥ IIH(total)
VIH(min) = 2V VIL(max )= 0.8V

IIH(max)=5A IIL(max)= 5 A 带灌电流负载

IOL(max) ≥ IIL(total)
输出、输入电压
VOH(min) ≥ VIH(min)
VOL(max) ≤ VIL(max)
1.4 3.3V CMOS驱动5V CMOS门
解决方法:外接上拉电阻。
例-2:已知3.3V CMOS门系列
+3.3V +5V
VOH(min)=2.4V VOL(max) =0.4V
Rp
IOL(max)= 0.1mA IOH(max)= 0.1mA

5V CMOS门系列


VIH(min) = 3.5V VIL(max )= 1.5V

IIH(max)=5A IIL(max)= 5 A
3.3VCMOS 5VCMOS

除VOH(min) ≥ VIH(min)不满足外,其它 图-7 用上拉电阻解决输出高电平匹配

输出、输入的电压/电流条件均满足。 VOH  VDD  RP (I O  nI IH)


( IO :驱动门输出级截止时的漏电流)
1.5 低电压CMOS电路之间的接口

不同系列逻辑电路,特别是2.5V以下电
路之间的接口:采用逻辑电平转换器

VDDA VDDB

电平
转换器
逻辑电路 A 逻辑电路 B

图-8 电平转换器用作接口
2.逻辑门驱动其它负载时的接口

2. 1. 驱动显示器件
门电路输入为低电平,输出为高电
vI
平时,LED发光。
LED
VOH  VF
R
R

ID
图-9 反相器高电平驱动LED电路
2.1 驱动显示器件

VCC
门电路输入为高电平,输出为低电
R
平时,LED发光。
LED
vI
VCC  VF  VOL
R
图-10 反相器低电平驱动LED电路 ID
2.1 驱动显示器件

例-3:试用74HC04中的一个反相器作为接口电路,使门电路输入
为高电平时,LED导通发光,计算限流电阻。

解:LED正常发光需要几mA的电流,导通压降VF=1.6V。查询
74HC04手册得,当VCC=5V时,VOL=0.1V,IOL(max)=4mA。所以
ID取值不能超过4mA。限流电阻最小值为

(5  1.6  0.1)V
R  825Ω
4mA
2.2 驱动机电性负载

机电负载的电流要求

 电流一般时,驱动电路并联;

 电流较大时,使用功率驱动器件;

继电器
限流电阻

vI

图-11 用功率驱动器提高驱动能力
3.抗干扰措施
1. 多余输入端的处理措施

原则:不改变电路工作状态及可靠性。
VCC

A L L A L
A

图-12 多余输入端的处理电路

1、与其他输入端并接;
2、直接接电源或地:与门、与非门输入
端接正电源;或门、或非门输入端接地。
3.抗干扰措施
2. 去耦合滤波电容

在直流电源和地之间接去耦合滤波电
容,滤除干扰信号。

3. 接地和安装工艺

正确的接地技术:将电源地和信号地、
模拟地和数字地分开。
印刷电路板的设计和安装:连线要尽量
短,以去除寄生干扰。
小 结
 不同系列逻辑门电路之间的接口问题
 电压兼容
 电流匹配

 逻辑门驱动其它负载时的接口问题
 显示性负载
 机电性负载

 抗干扰措施
 多余输入端的处理
 去耦合滤波
 接地和安装工艺
再见!
教学内容、要求及小结

本章目的
本章讨论半导体存储器的基本结构和工作原理,以及各类存储器的特点。
主要内容包括:
 半导体存储器概述和分类
 只读存储器(ROM)的结构和工作原理
 可编程 ROM 简介
 ROM 应用举例
 随机存取存储器(RAM)的结构和工作原理
 SRAM 的读写操作定时图
 同步 SRAM、FIFO 存储器及双口存储器简介
 存储容量的扩展、RAM 应用举例

学习本章后,你应该能
 解释几种不同类型存储器的特点
 描述 ROM 和 RAM 存储器的组成及工作原理
 描述 PROM 的各种不同类型及特点
 解释异步 SRAM 和同步 SRAM 之间的区别
 了解 SRAM 和 DRAM。
 扩展存储器的容量
 了解 ROM、RAM 的读写时序

小结:
● 半导体存储器是现代数字系统特别是计算机中的重要组成部分,它可分为
只读存储器(Read-Only memory,ROM)和随机存取存储器(Random Access
Memory,RAM,又称为读写存储器),属于 MOS 工艺制成的大规模集成电路。
● 正常工作时,既可从 RAM 中读出数据,也可向 RAM 中写入数据,而 ROM
通常只能读出数据。断电以后,RAM 中所存的数据将全部丢失,即具有易失性;
而 ROM 中的数据可以长久保存。
● ROM 属于组合逻辑电路。根据数据写入方式的不同,ROM 又可以分为固
定(掩膜)ROM 和可编程 ROM。可编程 ROM 又可以细分为 PROM、EPROM、
E2PROM 和快闪存储器等。特别是 E2PROM 和快闪存储器可以进行电擦写,已兼
有了 RAM 的特性。
● RAM 是一种时序逻辑电路。它包含有 SRAM 和 DRAM 两种类型,前者用锁
存器记忆数据,后者靠 MOS 管栅极电容存储数据。因此,在不停电的情况下,
SRAM 的数据可以长久保持,而 DRAM 则必须定期刷新。
● 无论是 SRAM 还是 DRAM,目前都有在时钟脉冲作用下工作的同步 RAM
(SSRAM 和 SDRAM)
,而且同步 RAM 已成为主流存储器。在此基础上发展起来
的 DDR、DDRⅡ和 QDR 等 RAM 也已越来越多地应用于计算机内存、显存和通讯
设备中。
● 存储器的读写定时图描述了读写操作的时序约束,它是用好存储器的重要
依据。
半导体存储器

华中科技大学 张林
半导体存储器概述和分类
半导体存储器概述和分类

断电后储存的 断电后储存的数
数据将丢失 据仍可长期保存
半导体存储器概述和分类
半导体存储器概述和分类

 RAM——随机存访问储器(Random-Access Memory)
“随机”是指,可以直接存取任意位置的存储单元
的数据,且访问时间与存储单元的位置无关。
半导体存储器概述和分类

 RAM——随机存访问储器(Random-Access Memory)
“随机”是指,可以直接存取任意位置的存储单元
的数据,且访问时间与存储单元的位置无关。

顺序存访问存储器
半导体存储器概述和分类

 RAM——随机存访问储器(Random-Access Memory)

读、写机理相同,读、写时间相同,可无限次写入。

用在需要频繁读写数据的场合,如手机中的运行内
存,计算机系统中的数据缓存、信息处理过程中的数据
存储等。
半导体存储器概述和分类

 ROM——只读存储器(Read-Only Memory)
数据只能读出不能写入。数据的写入是由制造商完成的。
ROM也可以随机访问。

实际上,现在有些ROM也可以由用户写入数据,但写
入时间远大于读出时间,且写入次数也是有限的。
半导体存储器概述和分类

 ROM——只读存储器(Read-Only Memory)
常用于:
 存放系统程序、数据表、字符代码,等不易变化的数据
 读操作频率远高于写操作频率的场合
 读写都不频繁的场合

ROM的数据写入过程常称为“编程”
半导体存储器概述和分类
半导体存储器概述和分类
半导体存储器概述和分类

 PROM:编程一次,不能擦除和重写。

 EPROM:多次编程。但是编程前,必须先用紫外线下照
射擦除数据。

 E2PROM:可以“在线”进行擦除和编程。

 FLASH:比E2PROM有更高的密度和更快的写入速度。
半导体存储器概述和分类

E2PROM和闪存的非易失性和在系统可编程特性,使它们广泛
用于各种存储卡中。
半导体存储器概述和分类

各类存储器几种特性比较
类型 非易失性 高密度 在系统可写
FLASH 是 是 是
只有闪存具备了非
SRAM 否 否 是
易失、高密度和在系统
DRAM 否 是 是
可写三种特性。
ROM 是 是 否
EPROM 是 是 否
E2PROM 是 否 是
半导体存储器概述和分类

顺序存访问半导体存储器

 先进先出存储器(First-In First-Out,FIFO)

 后进先出存储器(Last-In First-Out,LIFO)
半导体存储器概述和分类

 存储器到底是如何存储二值信息的呢?

 它又是怎样进行读写的呢?

 如果容量不够,又该怎么办呢?
再见!
半导体存储器

华中科技大学 张林
ROM的结构和工作原理
1. ROM的基本结构

1. ROM的基本结构
1. ROM的基本结构




控制信号输入

数据输出
1. ROM的基本结构





一组数据

控制信号输入

字长:字中
数据输出 字
所含的位数
1. ROM的基本结构





(地址码)

控制信号输入

地址单元:构成同
数据输出
一个字的存储单元
1. ROM的基本结构




地址码

控制信号输入

数据输出
1. ROM的基本结构

N个地
An…A2A1
址单元
N = 2n

控制信号输入

数据输出
1. ROM的基本结构




控制信号输入

数据输出
1. ROM的基本结构




允许输出

数据输出
1. ROM的基本结构




禁止输出

输出高阻态
2. ROM的工作原理

2. ROM的工作原理
2. ROM的工作原理
+5V

位线
R R R R
字线
存储阵列

Y0
2 线-4 线
译码器 Y1
A1 A1
Y2
A0 A0

Y3
输出控制电路

OE

D3 D2 D1 D0

ROM 结构示意图
2. ROM的工作原理
+5V

位线
R R R R
字线
存储阵列

Y0
2 线-4 线
译码器 Y1
A1 A1
Y2
A0 A0

Y3
输出控制电路

OE

D3 D2 D1 D0

ROM 结构示意图
2. ROM的工作原理
+5V

位线
R R R R
字线

Y0
2 线-4 线
译码器 Y1
A1 A1
Y2
A0 A0

Y3

OE

D3 D2 D1 D0
2. ROM的工作原理
+5V

位线
R R R R
字线

Y0=1
2 线-4 线 0 0 1 0
译码器 Y1=0
A1
0 A1
1 Y2=1
A0 A0

Y3=1

OE

D3 D2 D1 D0
2. ROM的工作原理
+5V

位线
R R R R
字线

Y0=1
2 线-4 线 0 0 1 0
译码器 Y1=0
A1
0 A1
1 Y2=1
A0 A0

Y3=1

OE
0 1 1 0 1

D3 D2 D1 D0
2. ROM的工作原理
+5V

位线
R R R R
ROM存储的内容
字线

输出使能控制 地址 内容
Y0 OE A1A0 D3D2D1D0
2 线-4 线
译码器 Y1 0 0 0 1 0 1 1
A1 A1
Y2 0 0 1 1 1 0 1
A0 A0

Y3
0 1 0 0 1 0 0
0 1 1 1 1 1 0
1 x x 高阻
OE

D3 D2 D1 D0
2. ROM的工作原理
+5V +5V

位线
R R R R R
字线

Y0
2 线-4 线
译码器 Y1 Y1

A1 A1
Y2 输 Y2
A0 A0



Y3 Y3


Z(输出)
OE
二极管与门
D3 D2 D1 D0

输出
2. ROM的工作原理
+5V

位线
R R R R
字线

Y0
2 线-4 线
译码器 Y1
A1 A1
Y2
A0 A0

Y3

OE

D3 D2 D1 D0
3. 二维译码与存储阵列

3. 二维译码与存储阵列
3. 二维译码与存储阵列
+VDD
列线
行线
  
Y0

A7 A3 4 Y1
线
A6 A2
| 
16

线
A5 A1 


A4 A0 Y14

Y15

  
A3 S3 I0 I1 I14 I15
A2 S2
16 线-1 线数据选择器
A1 S1
A0 S0 Y

D0(位线)

二维译码结构示意图
3. 二维译码与存储阵列
+VDD
列线
行线
  
Y0 0

A7 0 A3 4 Y1 1
线
A6 0 A2
|  1 0 0 1
16

0 线
A5 A1 

1 码
A4 A0 Y14 0

Y15 0

  
A3 S3 I0 I1 I14 I15
A2 S2
16 线-1 线数据选择器
A1 S1
A0 S0 Y

D0(位线)
3. 二维译码与存储阵列
+VDD
列线
行线
  
Y0 0

A7 0 A3 4 Y1 1
线
A6 0 A2
|  1 0 0 1
16

0 线
A5 A1 

1 码
A4 A0 Y14 0

Y15 0

  
A3 0 S3 I0 I1 I14 I15
A2 0 S2
0 16 线-1 线数据选择器
A1 S1
A0
1 S0 Y

D0(位线)
3. 二维译码与存储阵列
+VDD
列线
行线
  
Y0

A7 A3 4 Y1
线
A6 A2
| 
16

线
A5 A1 


A4 A0 Y14

Y15

  
A3 S3 I0 I1 I14 I15
A2 S2
16 线-1 线数据选择器
A1 S1
A0 S0 Y

D0(位线)
3. 二维译码与存储阵列
+VDD +VDD
列线
行线
  
Y0 Y0

A7 A3 4 Y1 Y1
线
A6 A2
|  ( 
16
线
 输 
A5 A1 译


或非存储阵列 入 

A4 A0 器
Y14 ) Y14

Y15 Y15

  
A3 S3 I0 I1 I14 I15 I1(输出)
A2 S2
16 线-1 线数据选择器
A1 S1
A0 S0 Y 或非门
D0(位线)
3. 二维译码与存储阵列
+VDD

R    R R    R
  
Y0

A7 A3 4 Y1
线
A6 A2
| 
16

线   
A5 A1 


A4 A0 Y14

Y15

     
A3 S3 I0 I15 S3 I0 I15
A2 S2 S2
16 线-1 线数据选择器 16 线-1 线数据选择器   
A1 S1 S1
A0 S0 Y S0 Y

D0 D1

多位结构示意图
再见!
半导体存储器

华中科技大学 张林
可编程ROM简介
可编程ROM简介
+VDD
+5V 列线
行线
位线   
R R R R Y0
字线

A7 A3 4 Y1
线
Y0
A6 A2
| 
2 线-4 线 16
译码器 Y1 
线
A5 A1 
A1 A1 译
Y2 码
A0 A0 A4 A0 Y14

Y3 Y15

  
A3 S3 I0 I1 I14 I15
OE
A2 S2
16 线-1 线数据选择器
A1 S1
D3 D2 D1 D0 S0
A0 Y

D0(位线)
可编程ROM简介
PROM

※ PROM
可编程ROM简介
PROM
列线
行线

熔丝

带金属熔丝的存储阵列示意图
可编程ROM简介
PROM
列线
行线

熔丝

编程后的存储阵列示意图
可编程ROM简介
EPROM

※ EPROM
可编程ROM简介
EPROM

源极s 控制栅gc 漏极d

d
N+ N+ gc
浮栅gf s
gf
P型衬底
SIMOS管结构 SIMOS管符号
可编程ROM简介
EPROM

源极s 控制栅gc 漏极d +5V +5V

R R

N+ N+
d d
gc 导 gc 截
+5V 通 0V 止
P型衬底 s s

浮栅上无电荷时
可编程ROM简介
EPROM

源极s 控制栅gc 漏极d


iD
浮栅无电子

N+ N+

P型衬底 O VT1 5V vGS


编程前
浮栅上无电荷时
可编程ROM简介
EPROM

源极s 控制栅gc 漏极d


iD
浮栅无电子 浮栅有电子

N+ N+

P型衬底 O VT1 5V VT2 vGS


编程前 编程后
浮栅上有电子时
可编程ROM简介
iD
EPROM 浮栅无电子 浮栅有电子

源极s 控制栅gc 漏极d

O VT1 5V VT2 vGS


编程前 编程后

N+ N+ +5V +5V

R R

P型衬底 浮栅有电子
d
浮栅无电子
d
gc 截 gc 导
+5V 止 +5V 通
s s
可编程ROM简介
EPROM
向浮栅上注入电子
>12V
vD gc d
s vD>12V

N+ N+

雪崩击穿高能电子
可编程ROM简介
EPROM
读操作时电子无泄放通路
gc d
s

N+ N+
可编程ROM简介
EPROM
擦除浮栅上电子
紫外线照射 gc d
s

N+ N+
可编程ROM简介
EPROM
擦除浮栅上电子
紫外线照射 gc d
s

N+ N+
可编程ROM简介
EPROM
EPROM存储单元

列线 列线
行线 行线

d d
gc gc
s s
gf gf

要断开连接 要保留连接
注入电子 不注入电子
可编程ROM简介
EPROM
可编程ROM简介
E2PROM

※ 2
E PROM
可编程ROM简介
E2PROM

源极s 控制栅gc 漏极d


d

gc
N+ N+
隧道
浮栅gf
gf
P型衬底 s
Flotox管结构 Flotox管符号
可编程ROM简介
E2PROM

源极s 控制栅gc 漏极d


注入电子的
电场方向

N+ N+

P型衬底
可编程ROM简介
E2PROM

源极s 控制栅gc 漏极d


移除电子的
电场方向

N+ N+

P型衬底
可编程ROM简介
E2PROM

列线
源极s 控制栅gc 漏极d 行线

选通控
制管
N+ N+ T1
d
隧道
浮栅gf gc T2

P型衬底 s

Flotox管结构 E2PROM的存储单元
可编程ROM简介
E2PROM

读操作时 列线 列线
行线 行线

浮栅有电子 T1 浮栅无电子 T1
d d
gc T2 截止 gc T2 导通
+3V +3V
s s
可编程ROM简介
E2PROM

写操作时 行线
20V 列线 行线 20V 列线

0V 20V
电子注入 浮栅电子
T1 T1
到浮栅 d 被擦除 d

gc T2 gc T2
20V 0V
s s
可编程ROM简介
E2PROM
可编程ROM简介
闪存

※ 闪存
可编程ROM简介
闪存

源极s 控制栅gc 漏极d


列线
行线

N+ N+ d
gc
浮栅gf s
P型衬底 gf
VSS
快闪叠栅MOS管结构 闪存的存储单元
可编程ROM简介
闪存

源极s 控制栅gc 漏极d


列线
行线

N+ N+ d
重叠区 隧道区 gc
浮栅gf s
P型衬底 gf
VSS
快闪叠栅MOS管结构 闪存的存储单元
可编程ROM简介
闪存

列线 列线
数据写入 行线 行线

d 6V d 0V
gc gc
电子注入到浮栅 不产生雪崩注入
s s
0V 0V
VSS VSS
可编程ROM简介
闪存

数据擦除
列线
行线

0V d
浮栅电子 gc
被擦除 s

VSS
可编程ROM简介
闪存

读操作时
列线
行线

d
gc
s
可编程ROM简介

d d

gc gc

s s

还可用作编程开关
再见!
半导体存储器

华中科技大学 张林
ROM应用举例
ROM应用举例

C A4
待 I3 A3 转
D1
转 I2 A2
O3

换 D2 O2

I1 A1 ROM
代 D3 O1

A0
码 I0
D4 O0 码
CE
OE

用ROM实现二进制码和格雷码的相互转换
ROM应用举例

控制信号 C
0 A4

二 I3 A3
D1 O3
进 I2 A2
D2

O2
制 I1 A1 ROM 雷
D3 O1
码 I0 A0 码
D4 O0
CE
OE

用ROM实现二进制码和格雷码的相互转换
ROM应用举例

控制信号 C
1 A4
I3 A3

D1 O3 二
I2 A2
雷 D2 O2 进
A1

I1 ROM
D3 O1 制
I0 A0
D4 O0 码
CE
OE

用ROM实现二进制码和格雷码的相互转换
ROM应用举例
ROM 中的内容
地址 内容 地址 内容
控制信号 二进制码 格雷码 控制信号 格雷码 二进制码
C I3 I2 I1 I0 O3O2O1O0 C I3 I2 I1 I0 O3O2O1O0
C A4 (A4) (A3A2A1A0) (D3D2D1D0) (A4) (A3A2A1A0) (D3D2D1D0)
0 0000 0000 1 0000 0000
I3 A3
D1 O3 0 0001 0001 1 0001 0001
I2 A2 0 0010 0011 1 0010 0011
D2 O2 0 0011 0010 1 0011 0010
I1 A1 ROM 0 0100 0110 1 0100 0111
D3 O1 0 0101 0111 1 0101 0110
I0 A0
D4 O0 0 0110 0101 1 0110 0100
0 0111 0100 1 0111 0101
CE
0 1000 1100 1 1000 1111
OE 0 1001 1101 1 1001 1110
0 1010 1111 1 1010 1100
0 1011 1110 1 1011 1101
0 1100 1010 1 1100 1000
0 1101 1011 1 1101 1001
0 1110 1001 1 1110 1011
0 1111 1000 1 1111 1010
ROM应用举例
ROM 中的内容
地址 内容 地址 内容
控制信号 二进制码 格雷码 控制信号 格雷码 二进制码
C I3 I2 I1 I0 O3O2O1O0 C I3 I2 I1 I0 O3O2O1O0
C A4 (A4) (A3A2A1A0) (D3D2D1D0) (A4) (A3A2A1A0) (D3D2D1D0)
0 0000 0000 1 0000 0000
I3 A3
D1 O3 0 0001 0001 1 0001 0001
I2 A2 0 0010 0011 1 0010 0011
D2 O2 0 0011 0010 1 0011 0010
I1 A1 ROM 0 0100 0110 1 0100 0111
D3 O1 0 0101 0111 1 0101 0110
I0 A0
D4 O0 0 0110 0101 1 0110 0100
0 0111 0100 1 0111 0101
CE
0 1000 1100 1 1000 1111
OE 0 1001 1101 1 1001 1110
0 1010 1111 1 1010 1100
0 1011 1110 1 1011 1101
0 1100 1010 1 1100 1000
ROM的容量至少:25×4位 0 1101 1011 1 1101 1001
0 1110 1001 1 1110 1011
0 1111 1000 1 1111 1010
ROM应用举例

能否用ROM实现
两个4位二进制数 ROM的地址线
的乘法运算? 和数据线分别至
少需要多根?

怎样确定ROM
中的内容? 如何用ROM计
算一个角度的正
弦函数值?
ROM应用举例

 列出逻辑函数的真值表
 将输入作为地址,输出作为地址单元存储的内容
 把内容按地址写入ROM
ROM应用举例

L1
水泵 L2

水箱 B

出水管 A

水位检测元件
ROM应用举例

控制要求:
L1 L2
 水位高于C,两个水泵都停止运行;
C
 水位在B和C之间,只有L1运行;
B
 水位在A和B之间,只有L2运行;
A
 水位在A以下,两个水泵都运行,同时
点亮指示灯Y,指示水位偏低,其他情
况,Y都熄灭。
ROM应用举例

逻辑变量定义:
L1 L2
 输入: A 、B 、C,高电平—1,低电
C
平—0
B
 输出:L1、L2、Y
A  L1和L2为1时,对应的水泵运行,否则停
止运行
 Y=1,指示灯亮, Y=0,指示灯熄灭
ROM应用举例
真值表(ROM 地址和内容的对应关系)

输入(地址) 输出(内容)
A B C L2 L1 Y 水位情况注释
L1 L2
(A2 A1 A0) (D2 D1 D0)
C 0 0 0 0 0 0 高于C
0 0 1 0 1 0 在B和C之间
B
0 1 0
A
0 1 1 1 0 0 在A和B之间

1 0 0

1 0 1

1 1 0

1 1 1 1 1 1 低于A
ROM应用举例
真值表(ROM 地址和内容的对应关系)

输入(地址) 输出(内容)
A B C L2 L1 Y 水位情况注释
L1 L2
(A2 A1 A0) (D2 D1 D0)
C 0 0 0 0 0 0 高于C
0 0 1 0 1 0 在B和C之间
B
0 1 0 x x x 高于C同时低于B(不可能)
A
0 1 1 1 0 0 在A和B之间

1 0 0 x x x 高于C同时低于A(不可能)
1 0 1 x x x 低于A同时高于B(不可能)

1 1 0 x x x 低于A同时高于C(不可能)
1 1 1 1 1 1 低于A
ROM应用举例
真值表(ROM 地址和内容的对应关系)

输入(地址) 输出(内容)
A B C L2 L1 Y 水位情况注释
A A2 (A2 A1 A0) (D2 D1 D0)
D2 L2
B A1 0 0 0 0 0 0 高于C
D1 L1
A0 ROM
C
D0 Y 0 0 1 0 1 0 在B和C之间
CE 高于C同时低于B(不可能)
0 1 0 0 0 0
OE
0 1 1 1 0 0 在A和B之间

用 ROM 实现的水箱控制逻辑电路 1 0 0 0 0 0 高于C同时低于A(不可能)


1 0 1 0 0 0 低于A同时高于B(不可能)
ROM的容量至少:23×3位
1 1 0 0 0 0 低于A同时高于C(不可能)
1 1 1 1 1 1 低于A
再见!
半导体存储器

华中科技大学 张林
RAM的结构和工作原理
RAM的结构和工作原理
RAM的结构和工作原理

SRAM:Static Random-Access Memory


DRAM:Dynamic Random-Access Memory
RAM的结构和工作原理

• 存储单元类似于锁存器,有
SRAM 0、1两个稳态。

• 用电容器存储电荷来保存0
DRAM 或1,需要定时刷新。
SRAM:Static Random-Access Memory
DRAM:Dynamic Random-Access Memory
1. SRAM的基本结构及输入输出

1. SRAM的基本结构及输入输出
1. SRAM的基本结构及输入输出
Ai A0
  

列 译 码

Ai+1
 行
 译 存 储 阵 列


An-1

CE I/O 电路
WE

OE

  
I /O0 I /Om-1

SRAM的结构框图
1. SRAM的基本结构及输入输出
Ai A0
  

列 译 码

Ai+1
 行
 译 存 储 阵 列


An-1

CE I/O 电路
WE

OE

  
I /O0 I /Om-1
1. SRAM的基本结构及输入输出

Ai A0
  

列 译 码

Ai+1
 行
 译 存 储 阵 列


An-1

0
CE I/O 电路
WE

OE

  
I /O0 I /Om-1
1. SRAM的基本结构及输入输出

Ai A0
  

列 译 码

Ai+1
 行
 译 存 储 阵 列


An-1

1
CE I/O 电路
WE
0
0
OE

高阻
  
I /O0 I /Om-1
1. SRAM的基本结构及输入输出

Ai A0
  

列 译 码

Ai+1
 行
 译 存 储 阵 列


An-1

CE
0 I/O 电路
WE
0 1
0
OE

写操作
  
I /O0 I /Om-1
1. SRAM的基本结构及输入输出

Ai A0
  

列 译 码

Ai+1
 行
 译 存 储 阵 列


An-1

CE
0 I/O 电路
WE
1 0
0 1
OE

读操作
  
I /O0 I /Om-1
1. SRAM的基本结构及输入输出

Ai A0
  

列 译 码

Ai+1
 行
 译 存 储 阵 列


An-1

CE I/O 电路
WE

OE

  
I /O0 I /Om-1
1. SRAM的基本结构及输入输出

Ai A0
  

列 译 码

Ai+1

SRAM 的工作模式

 译 存 储 阵 列 工作模式 CE WE OE I /O 0 ~ I /O m-1

码 保持(微功耗) 1 x x 高阻
An-1
读 0 1 0 数据输出
写 0 0 x 数据输入
CE I/O 电路
WE 输出无效 0 1 1 高阻

OE

  
I /O0 I /Om-1
2. SRAM存储单元

2. SRAM存储单元
2. SRAM存储单元

Xi-1 VDD
VGG
T3 T4
Xi
(行选择线)
VDD 存储
VGG 单元
T3 T4 T1 T2

位 T5 T6
T1 T2 位
线 线
B B

T7 T8 (Q) (Q)
数 数

R S

线 D Yj (列选择线)
D 线

第j列,第i行的存储单元结构示意图
2. SRAM存储单元
Xi-1

Xi
0
(行选择线)
VDD
VGG
T3 T4

位 T5 T6
T1 T2 位
线 线
B B

T7 T8
数 数
据 据
线 D Yj (列选择线)
D 线

第j列,第i行的存储单元结构示意图
2. SRAM存储单元
Xi-1

Xi
1
(行选择线)
VDD
VGG
T3 T4

位 T5 T6
T1 T2 位
线 线
B B

T7 T8
数 数

1 据
线 D Yj (列选择线)
D 线

第j列,第i行的存储单元结构示意图
2. SRAM存储单元
Xi-1

Xi
(行选择线)
VDD
VGG
T3 T4

位 T5 T6
T1 T2 位
线 线
B B

T7 T8
数 数
据 据
线 D Yj (列选择线)
D 线

第j列,第i行的存储单元结构示意图
3. DRAM

3. DRAM
3. DRAM

Xi-1

Xi
(行选择线)
VDD 存储
VGG 单元
T3 T4

位 T5 T6
T1 T2 位
线 线
B B

T7 T8
数 数
据 据
线 D Yj (列选择线)
D 线

SRAM的存储单元
3. DRAM
刷新控制 R
Xi-1
刷新缓冲器

Xi 行线 Xi-1
(行选择线)
VDD 存储
VGG 单元 行线 Xi
T3 存储单元
T4

部 输出缓冲器/ T1 C
位 T5 T6
位 数 灵敏放大器
T1 T2
线 线 据 DO
B B 线
读/写 WE

DI
线
B
T7 T8 T2 输入缓冲器

数 数 数
据 列线 Yj 据

线 D Yj (列选择线) 线
D 线 I/O

SRAM的存储单元 DRAM的存储单元及基本操作原理示意图
3. DRAM
刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
存储单元

部 输出缓冲器/ T1 C
数 灵敏放大器
据 DO
线
读/写 WE

DI
线
B
T2 输入缓冲器


列线 Yj 据
线
I/O
3. DRAM
写操作 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1
存储单元

部 输出缓冲器/ T1 C

据 DO
灵敏放大器 充电
线
读/写 WE 0 1

DI
线
B
T2 输入缓冲器
1 数
列线 Yj 据 1
线
I/O
3. DRAM
写操作 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1
存储单元

部 输出缓冲器/ T1 C

据 DO
灵敏放大器 放电
线
读/写 WE 0 0

DI
线
B
T2 输入缓冲器
1 数
列线 Yj 据 0
线
I/O
3. DRAM
读操作 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1
存储单元

部 输出缓冲器/ T1 C
数 灵敏放大器
据 DO
线
读/写 WE 1

DI
线
B
T2 输入缓冲器
1 数
列线 Yj 据
线
I/O
3. DRAM
读操作 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1
存储单元

部 输出缓冲器/ T1 C
数 灵敏放大器
据 DO
线
读/写 WE 1

DI
线
B
T2 输入缓冲器
1 数
容性负载
列线 Yj 据
线
I/O
3. DRAM
读操作 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1
存储单元

部 输出缓冲器/ T1 C
数 灵敏放大器
据 DO
线
读/写 WE 1

DI
线 读前预置为
B
T2 输入缓冲器 中间电平值
1 数
列线 Yj 据
线
I/O
3. DRAM
读操作 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1
存储单元

部 输出缓冲器/ T1 C
数 灵敏放大器 0
据 DO
线
读/写 WE 1

DI
线 电平降低
B
T2 输入缓冲器
1 数
列线 Yj 据
线
I/O
3. DRAM
读操作 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1
存储单元

部 输出缓冲器/ T1 C
数 灵敏放大器 1
据 DO
线
读/写 WE 1

DI
线 电平升高
B
T2 输入缓冲器
1 数
列线 Yj 据
线
I/O
3. DRAM
1
刷新 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1


部 输出缓冲器/ T1 C
数 灵敏放大器
据 DO
线
读/写 WE 1

DI
线
B
T2 输入缓冲器
1 数
列线 Yj 据
线
I/O
3. DRAM
1
刷新 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1


部 输出缓冲器/ T1 C
数 灵敏放大器
据 DO
线
读/写 WE 1

DI
线
B
T2 输入缓冲器


列线 Yj 据 正反馈环
线
I/O
3. DRAM
刷新 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi 0
截止

部 输出缓冲器/ T1 C
数 灵敏放大器 漏电流
据 DO
线
读/写 WE

DI
线
B
T2 输入缓冲器


列线 Yj 据
线
I/O
3. DRAM
1
刷新 刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi
1

部 输出缓冲器/ T1 C
数 灵敏放大器
据 DO
线
读/写 WE
1

DI
线
B
T2 输入缓冲器
0 数
列线 Yj
截止

线
I/O
3. DRAM
刷新控制 R

刷新缓冲器

行线 Xi-1

行线 Xi


部 输出缓冲器/ T1 C
数 灵敏放大器
据 DO
线
读/写 WE

DI
线
B
T2 输入缓冲器


列线 Yj 据
线
I/O
再见!
半导体存储器

华中科技大学 张林
SRAM的读写操作定时图
SRAM的读写操作定时图

An-1

 I/Om-1
 
A0 SRAM 

CE I/O0
WE
OE
SRAM的读写操作定时图

WE 1
tRC
CE
tACE tHZCE
OE tDOE

地址 读出单元的地址有效
tLZOE
tLZCE tHZOE
高阻
数据 输出数据有效

SRAM的一种读操作定时图
SRAM的读写操作定时图

WE 1
tRC
CE
tACE tHZCE
OE tDOE

地址 读出单元的地址有效
tLZOE
tLZCE tHZOE
高阻
数据 输出数据有效

SRAM的一种读操作定时图
SRAM的读写操作定时图
读操作定时参数含义
CY7C1062DV33参数
参数 说明 值样例(单位:ns)
最小值 最大值
tRC 读周期。连续进行两次读操作所需要的最小时间间隔 10
tLZOE 输出使能高阻维持时间。输出使能有效后,输出仍维持高阻的时间 1
tLZCE 片选高阻维持时间。片选有效后,输出仍维持高阻的时间 3
tACE 片选存取时间。片选信号有效到数据稳定输出的延迟时间 10
输出使能时间。输出使能信号有效到数据稳定输出的延迟时间,通
tDOE 5
常tDOE < tACE
输出使能保持时间。输出使能无效后,输出数据仍保持有效的时间,
tHZOE 5
通常tHZOE < tLZOE
片选保持时间。片选无效后,输出数据仍保持有效的时间,通常
tHZCE 5
tHZCE < tLZCE
SRAM的读写操作定时图

OE 1
tWC
地址

tAW tHA
CE

WE
tSA tSD tHD

数据 输入数据有效

SRAM的一种写操作定时图
SRAM的读写操作定时图

写操作定时参数含义
CY7C1062DV33参数
参数 说明 值样例(单位:ns)
最小值
tWC 写周期 10
地址建立时间。反映在写控制信号有效前,地址
tSA 0
必须稳定一段时间
反映在写控制信号失效前,地址必须保持有效的
tAW 7
时间。
写结束前数据建立时间。反映在写信号失效前,
tSD 5.5
数据线上的数据应保持稳定的时间
tHA 反映写控制信号失效后地址需要维持的时间 0
tHD 反映写控制信号失效后数据能够维持的时间。 0
SRAM的读写操作定时图

WE 1
读周期 OE 1 写周期
tRC tWC
CE
tHZCE 地址 地址有效
tACE
OE tDOE tAW tHA
CE
地址 读出单元的地址有效
WE
tLZOE
tHZOE tSA tSD tHD
tLZCE
高阻 数据 输入数据有效
数据 输出数据有效
再见!
半导体存储器

华中科技大学 张林
同步SRAM、FIFO存储器及双口存储器简介
1. 同步SRAM

1. 同步SRAM
1. 同步SRAM

SSRAM:Synchronous SRAM.
在时钟脉冲控制下完成读写

ASRAM:Asynchronous SRAM
1. 同步SRAM

地址 A
地址 A1 A1
时钟 CP D1 Q1
寄存器 A0 A0 地址译码 三态输出
D0 Q0
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能
ADV 输入驱动

输入
读写控 数据
寄存器
片选 CE 制逻辑 输入/输出
I /O
读/写 WE

输出使能
OE

同步SRAM的基本结构
1. 同步SRAM

地址 A
地址 A1 A1
时钟 CP D1 Q1
寄存器 A0 A0 地址译码 三态输出
D0 Q0
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能
ADV 输入驱动

内含寄
存器 输入
读写控 数据
寄存器
片选 CE 制逻辑 输入/输出
I /O
读/写 WE

输出使能
OE

同步SRAM的基本结构
1. 同步SRAM
内含2位的二进
地址 A 制计数器
地址 (丛发计数器)
时钟 CP A1 A1
D1 Q1
寄存器 A0 A0 地址译码 三态输出
D0 Q0
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能
ADV 输入驱动

输入
读写控 数据
寄存器
片选 CE 制逻辑 输入/输出
I /O
读/写 WE

输出使能
OE

同步SRAM的基本结构
1. 同步SRAM

地址 A
地址 A1 A1
时钟 CP D1 Q1
寄存器 A0 A0 地址译码 三态输出
D0 Q0
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能
ADV 输入驱动

输入
读写控 数据
寄存器
片选 CE 制逻辑 输入/输出
I /O
读/写 WE

输出使能
OE

同步SRAM的基本结构
1. 同步SRAM

地址 A
地址 A1 A1
时钟 CP D1 Q1
寄存器 A0 A0 地址译码 三态输出
D0 Q0
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能
ADV 输入驱动
ADV=1,丛发模式
ADV=0,普通模式
输入
读写控 数据
寄存器
片选 CE 制逻辑 输入/输出
I /O
读/写 WE

输出使能
OE

同步SRAM的基本结构
1. 同步SRAM
CP 上 升 沿 作 用
普通模式 地址 A 前的地址单元
地址 中的数据。
时钟 CP A1 A1
读操作 寄存器 A0
D1
D0
Q1
Q0
A0 地址译码 三态输出
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能 0
ADV 输入驱动

输入
读写控 数据
0 寄存器
片选 CE 制逻辑 输入/输出
1 I /O
读/写 WE

输出使能 0
OE
1. 同步SRAM

普通模式 地址 A
地址 A1 A1
时钟 CP
写操作 寄存器 A0
D1
D0
Q1
Q0
A0 地址译码 三态输出
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能 0
ADV 输入驱动

输入
读写控 数据
0 寄存器
片选 CE 制逻辑 输入/输出
0 I /O
读/写 WE

输出使能
0 0
x
OE
1. 同步SRAM

丛发模式 地址 A
地址 A1 A1
时钟 CP
读操作 寄存器 A0
D1
D0
Q1
Q0
A0 地址译码 三态输出
输 缓冲器
丛发控 出
地址寄存器不接收外 存储阵列
部新地址而保持上一 制逻辑 放

次存入的地址 丛发使能 1
ADV 输入驱动
丛发计数器在当前
A1 A0 基 础 上 加 1 , 产
生下一个地址 输入
读写控 数据
0 寄存器
片选 CE 制逻辑 输入/输出
1 I /O
读/写 WE

输出使能 0
OE
1. 同步SRAM

丛发模式 地址 A
地址 A1 A1
时钟 CP
读操作 寄存器 A0
D1
D0
Q1
Q0
A0 地址译码 三态输出
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能 1
ADV 输入驱动
丛发计数器继续加
1产生下一个地址
输入
读写控 数据
0 寄存器
片选 CE 制逻辑 输入/输出
1 I /O
读/写 WE

输出使能 0
OE
1. 同步SRAM

地址 A
地址 A1 A1
时钟 CP D1 Q1
寄存器 A0 A0 地址译码 三态输出
D0 Q0
输 缓冲器
丛发控 出
存储阵列
制逻辑 放

丛发使能
ADV 输入驱动

输入
读写控 数据
寄存器
片选 CE 制逻辑 输入/输出
I /O
读/写 WE

输出使能
OE
1. 同步SRAM
1 2 3 4 5 6 7 8
普通模式读操作 CP

CE

ADV

WE

A A1 A2 A3 A4 A5 A6 A7

I/O O(A1) O(A2) O(A3) O(A4) O(A5) O (A6)

锁存 A1 锁存 A2 锁存 A3 片选 锁存 A4 锁存 A5 锁存 A6 锁存 A7
地址 地址,读 地址,读 地址 地址,读 地址,读 地址,读
无效
出 A1 单 出 A2 单 出 A4 单 出 A5 单 出 A6 单
元数据 元数据 元数据 元数据 元数据
1. 同步SRAM
1 2 3 4 5 6 7 8
普通模式读操作 CP

CE

ADV

O(A1)表示A1地址单元 WE
中的数据被读出,其
余类推。 A A1 A2 A3 A4 A5 A6 A7

I/O O(A1) O(A2) O(A3) O(A4) O(A5) O (A6)

锁存 A1 锁存 A2 锁存 A3 片选 锁存 A4 锁存 A5 锁存 A6 锁存 A7
地址 地址,读 地址,读 地址 地址,读 地址,读 地址,读
无效
出 A1 单 出 A2 单 出 A4 单 出 A5 单 出 A6 单
元数据 元数据 元数据 元数据 元数据
1. 同步SRAM
1 2 3 4 5 6 7 8
普通模式读操作 CP

CE

ADV

WE

A A1 A2 A3 A4 A5 A6 A7

I/O O(A1) O(A2) O(A3) O(A4) O(A5) O (A6)

锁存 A1 锁存 A2 锁存 A3 片选 锁存 A4 锁存 A5 锁存 A6 锁存 A7
地址 地址,读 地址,读 地址 地址,读 地址,读 地址,读
无效
出 A1 单 出 A2 单 出 A4 单 出 A5 单 出 A6 单
元数据 元数据 元数据 元数据 元数据
1. 同步SRAM
1 2 3 4 5 6 7 8
丛发模式读操作 CP

CE

ADV

WE

A A1 A2

I/O O(A1) O(A1+1) O(A1+2) O(A2) O(A2+1) O(A2+2) O(A2+3)

锁存 A1 丛发模式, 丛发模式, 锁存 A2 丛发模式, 丛发模式, 丛发模式, 丛发模式,


地址及 读出 A1 单 读出 A1+1 地址及 读出 A2 单 读出 A2+1 读出 A2+2 读出 A2+3
控制信 元数据,生 单元数据, 控制信 元数据,生 单元数据, 单元数据, 单元数据,
号 成 A1+1 地 生成 A1+2 号 成 A2+1 地 生成 A2+2 生成 A2+3 循环回 A2
址 地址 址 地址 地址 地址
1. 同步SRAM
1 2 3 4 5 6 7 8
丛发模式读操作 CP

CE

ADV

WE

A A1 A2

I/O O(A1) O(A1+1) O(A1+2) O(A2) O(A2+1) O(A2+2) O(A2+3)

锁存 A1 丛发模式, 丛发模式, 锁存 A2 丛发模式, 丛发模式, 丛发模式, 丛发模式,


地址及 读出 A1 单 读出 A1+1 地址及 读出 A2 单 读出 A2+1 读出 A2+2 读出 A2+3
控制信 元数据,生 单元数据, 控制信 元数据,生 单元数据, 单元数据, 单元数据,
号 成 A1+1 地 生成 A1+2 号 成 A2+1 地 生成 A2+2 生成 A2+3 循环回 A2
址 地址 址 地址 地址 地址
1. 同步SRAM

1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11

CP CP

CE CE

ADV ADV

WE WE

A A1 A2 A3
A A1 A2 A3 A4 A5 A6 A7 A8 A9

O(A1) O(A2) O(A3) O(A4) I (A5) I (A6) O(A7) I (A8) I/O O(A1) O(A1+1) O(A1+2) O(A2) O(A2+1) O(A2+2) O(A2+3) O(A2) I (A3) I (A3+1)
I/O

丛发模式
读 A1 读 A2 读 A3 片选 读 A4 写 A5 写 A6 读 A7 写 A8 片选 写 A9 读 A1 丛发模式 丛发模式 读 A2 丛发模式 丛发模式 丛发模式 向 A3 地 丛发模式 丛发模式
重新读
地址单 地址单 地址单 无效 地址单 地址单 地址单 地址单 地址单 无效 地址单 地址单 读 A1+1 读 A1+2 地址单 读 A2+1 读 A2+2 读 A2+3 址单元 向 A3+1 向 A3+2
A2 中的
元数据 元数据 元数据 元数据 元数据 元数据 元数据 元数据 元数据 元数据 中的数据 中的数据 元数据 中的数据 中的数据 中的数据 写数据 写数据 写数据
数据
1. 同步SRAM
1. 同步SRAM
1. 同步SRAM

在每个时钟脉冲的上升沿和下降沿,各传
输一次数据,数据传输效率提高了一倍。

为读操作和写操作分别提供独立的接口,
不但在每个时钟脉冲的上升沿和下降沿各
传输一次数据,而且读和写能够同时进行,
使数据传输效率又提高了一倍。
1. 同步SRAM

DDRⅡ、DDR Ⅲ……

QDRⅡ、QDR Ⅲ……
1. 同步SRAM

几种 SRAM 产品的主要指标
存取 时钟
容量 工作 工作
型号 类型 字位 时间 频率 厂商
(密度) 电压 电流
ns MHz
M68AF031A SRAM 256 KBit 32K8 55  5V 50mA STMicroelectronics
K6X0808C1D SRAM 256 KBit 32K8 55  5V 25mA Samsung
CY7C1062DV33 SRAM 16 MBit 512K32 10  3.3V 150mA Cypress
IDT71V3556 SSRAM 4.5MBit 128K36 5 200 3.3V 400mA IDT
µPD4481181GF-A65 SSRAM 8MBit 512K16 6.5 133 3.3V 250mA NEC
CY7C1308CV25 DDR 9MBit 256K36 6 167 2.5V 650mA Cypress
µPD44164185F5-E40 DDRⅡ 18MBit 1M18 4 250 1.8V 650mA NEC
CY7C1513V18 QDRⅡ 72MBit 4M18 4 250 1.8V Cypress
注:对于 DDR、DDRⅡ 和 QDRⅡ ,工作电压指核心工作电压
DDRⅡ、DDR Ⅲ……

QDRⅡ、QDR Ⅲ……
2. FIFO存储器

2. FIFO存储器
2. FIFO存储器
2. FIFO存储器

数据输入 数据输出

写控制信号 "空"信号
读控制信号 "满"信号

地址由FIFO内部的读地址指针计
数器和写地址指针计数器来确定。

用于需要长时间、不间断、高速数据采集的缓冲器
3. 双口存储器

3. 双口存储器
3. 双口存储器

数据输入/输出 数据输入/输出

地址 地址

读/写控制信号 读/写控制信号
A口 B口

当同时访问相同的地址单元时,内部仲裁电路根据访问的微小时差,决
定哪个端口先访问。
再见!
半导体存储器

华中科技大学 张林
存储容量的扩展
存储容量的扩展
1. 字长(位数)的扩展

1. 字长(位数)的扩展
1. 字长(位数)的扩展

字长:字的位数

字长

• RAM芯片的字长,通常有1位、4位、8位、
16位和32位等不同位数的。
1. 字长(位数)的扩展

A. 11 ..
.. .
并 A0
联 CE
WE ... ...
WE CE A0 A11 WE CE A0 A11
...
4K×4 位 4K×4 位
I/O0 I/O1 I/O2 I/O3 I/O0 I/O1 I/O2 I/O3

D0 D1 D2 D3 D12 D13 D14 D15

扩展的位线
用4K×4位RAM芯片构成4K×16位的存储器系统
1. 字长(位数)的扩展

字长:字的位数

方法

• 通过芯片的并联实现位扩展。即,
将RAM的地址线、读/写控制线和
片选信号对应地并接在一起,而各
芯片的数据线作为字的各个位线。
2. 字数的扩展

2. 字数的扩展
2. 字数的扩展
8
CE D7D0
字数扩展为 WE
8K8 位
(0)
215=32K 13
A12A0

CE D7D0 8
高 WE
8K8 位
位 A14 A1 Y0
(1)
地 A13 A0 Y1 13
A12A0
址 2 线-4 线 Y2
译码器
EN Y3 8
CE D7D0
WE
8K8 位

13 (2)
A12A0

CE D7D0 8 8
D7D0
WE WE
8K8 位
低位 13 13 (3)
A12A0
地址 A12A0
2. 字数的扩展
8
CE D7D0
工作芯片
WE
8K8 位
(0)
13
A12A0

CE D7D0 8
高 0 0 WE
8K8 位
位 A14 A1 Y0
0 (1)
地 A13 A0 Y1 13
A12A0
址 2 线-4 线 Y2
译码器
EN Y3 8
CE D7D0
WE
8K8 位

13 (2)
A12A0

CE D7D0 8 8
D7D0
WE WE
8K8 位
低位 13 13 (3)
A12A0
地址 A12A0
2. 字数的扩展
8
CE D7D0
WE
8K8 位
(0)
13
A12A0
高位地址与工作芯片关系
CE D7D0 8
工作芯片 高位地址
高 工作芯片
位 A14
0 A1 Y0
WE
8K8 位 A14 A13
1 0 (1)
地 A13 A0 Y1 13
0 0 (0)
A12A0
址 2 线-4 线 Y2
译码器
EN Y3
CE D7D0
8 0 1 (1)
WE
8K8 位
1 0 (2)
13 (2)
A12A0
1 1 (3)
CE D7D0 8 8
D7D0
WE WE
8K8 位
低位 13 13 (3)
A12A0
地址 A12A0
2. 字数的扩展
32K×8位存储器系统的地址分配表
工作的 译码器 扩展的地 对应的十
址输入端 8K×8位RAM芯片地址输入端 六进制地
RAM 有效输
芯片 出端 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 址码
0 0 0 0 0 0 0 0 0 0 0 0 0 0000H
0 0 0 0 0 0 0 0 0 0 0 0 1 0001H
(0) Y0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0002H
┇ ┇
1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFH
0 0 0 0 0 0 0 0 0 0 0 0 0 2000H
0 0 0 0 0 0 0 0 0 0 0 0 1 2001H
(1) Y1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 2002H
┇ ┇
1 1 1 1 1 1 1 1 1 1 1 1 1 3FFFH
0 0 0 0 0 0 0 0 0 0 0 0 0 4000H
0 0 0 0 0 0 0 0 0 0 0 0 1 400H
(2) Y2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 4002H
┇ ┇
1 1 1 1 1 1 1 1 1 1 1 1 1 5FFFH
0 0 0 0 0 0 0 0 0 0 0 0 0 6000H
0 0 0 0 0 0 0 0 0 0 0 0 1 6001H
(3) Y3 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 6002H
┇ ┇
1 1 1 1 1 1 1 1 1 1 1 1 1 7FFFH
2. 字数的扩展

需要增加地址码的位数

方法

• 将所有芯片的地址线各自对应并接在一起,作为低
位地址码的输入端,剩余的高位地址码,经外加的
译码器译码后,分别控制各个芯片的片选,所有芯
片的读写控制线和数据线也都分别并接在一起。
存储容量的扩展

用256×4位芯片组成512×8位的存储器,问需要多少芯片?
电路应如何连接?

 需要2片实现位扩展。
 在位扩展基础上,还要增加一倍器件,才能完成字扩展。

共需要4个256×4位的芯片
存储容量的扩展
A7

A0
A8 CE1
WE ··· ···
用4片256×4位的 WE CE A0 A7 WE CE A0 A7
256×4位 256×4位
RAM芯片和一个非 I/O0 I/O1 I/O2 I/O3 I/O0 I/O1 I/O2 I/O3

D0 D1 D2 D3 D4 D5 D6 D7
门,构成512×8
A7
位的存储器 ┇
A0
CE2
WE ··· ···
WE CE A0 A7 WE CE A0 A7
256×4位 256×4位
I/O0 I/O1 I/O2 I/O3 I/O0 I/O1 I/O2 I/O3

D0 D1 D2 D3 D4 D5 D6 D7
再见!
半导体存储器

华中科技大学 张林
RAM应用举例及本章小结
RAM应用举例及本章小结

R7
CE D6 a e
W D5 b f
E D4 c g
RAM
D3 d
A3
BCD D2
A2
输入 A1 D1
A0 D0

七段显示译码器与显示器的连接
RAM应用举例及本章小结
a
用作七段显示译码器时 RAM 的地址和内容
地址 内容
f b
g (BCD码的输入) (a b c d e f g) 字形
A3 A2 A1 A0 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 1 1 1 1 1 1 0
e c 0 0 0 1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1
0 0 1 1 1 1 1 1 0 0 1
d 0 1 0 0 0 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 1
R7
CE D6
1 a e 0 1 1 0 0 0 1 1 1 1 1
W D5 1 b f 0 1 1 1 1 1 1 0 0 0 0
E D4
1 c g 1 0 0 0 1 1 1 1 1 1 1
RAM
D3 1 d 1 0 0 1 1 1 1 1 0 1 1
0 A3
BCD 0 D2 1 1 0 1 0 0 0 0 0 0 0 0 熄灭
A2
输入 0 D1 1 1 0 1 1 0 0 0 0 0 0 0 熄灭
A1
0 A0 D0 0 1 1 0 0 0 0 0 0 0 0 0 熄灭
1 1 0 1 0 0 0 0 0 0 0 熄灭
1 1 1 0 0 0 0 0 0 0 0 熄灭

七段显示译码器与显示器的连接 熄灭
1 1 1 1 0 0 0 0 0 0 0
RAM应用举例及本章小结

存储阵列
半导体存储器是现代数
字系统,特别是计算机中的
重要组成部分,用来存放系
统的运行程序和数据。
地址 输入/输出
译码器 控制电路
RAM应用举例及本章小结
同步
异步 SRAM
SRAM SRAM
DDR, 固定
无需 QDR… ROM PROM
刷新
EPROM
半导体 可编程
易失性 RAM ROM
ROM
存储器

需要 非易失性 E2PROM
刷新 同步 闪存 读写存储器
DRAM
异步 DRAM DDR, 读写存储器
DRAM QDR…
RAM应用举例及本章小结
再见!
教学内容、要求及小结

本章目的
目前,可编程逻辑器件在数字系统的设计与实现中得到普遍应用,与中、小
规模逻辑器件相比,可编程逻辑器件在集成度、功耗和系统可靠性等方面有显著
的优势。本章将讨论各种可编程逻辑器件的组成、工作原理及特点,介绍开发流
程,为使用这类器件打下一定基础。主要内容包括:
 可编程逻辑器件历史、主要类型、PLD 采用的简化符号和不同编程技术概

 可编程逻辑阵列 PLA 和可编程阵列逻辑 PAL 基本结构
 通用阵列逻辑器件 GAL 基本结构
 CPLD 基本结构简介
 现场可编程门阵列 FPGA 的基本结构
 可编程逻辑器件开发过程简介

学习本章后,你应该能
 解释 PLD 器件符号的含义
 说明各种可编程逻辑器件(SPLD、CPLD、FPGA)的结构特点
 解释如何通过对与/或阵列编程实现逻辑函数
 理解 LUT 实现逻辑函数的原理
 知晓 PLD 器件开发流程

小结:
 可编程逻辑器件的逻辑功能可以由用户设计实现。它们具有集成度高、可
靠性高、处理速度快和保密性好等特点。
 早期的 SPLD 器件,均采用与-或阵列的基本结构形式。通过增加触发器来
实现时序逻辑电路。输出逻辑宏单元大大增强了电路的灵活性。
 CPLD 是在 PAL 的基础上发展起来的复杂可编程逻辑器件,其电路结构的
核心是与-或阵列和触发器,且具有在系统编程的特性,使得数字系统的开发效
率得到提高。
 CPLD 器件通常采用 CMOS E2PROM 工艺制造,编程后即使切断电源,其逻辑
功能也不会消失。部分 CPLD 内部还集成了 E2PROM、FIFO 或双口 RAM,以适应不
同功能的数字系统设计。
 FPGA 是目前规模最大、密度最高的可编程逻辑器件,它是基于查找表 LUT
实现逻辑函数的。FPGA 内包含了数目众多的 LUT,因此可以实现规模更大、逻辑
更复杂的数字电路。
 目前,大部分 FPGA 的 LUT 由数据选择器和 SRAM 构成,其编程次数不受限
制。但断后,逻辑功能将消失。所以,使用 FPGA 时,需要一个外部的 EPROM 保
存编程数据。上电后,FPGA 首先从 EPROM 中读入编程数据进行初始化,然后才
开始正常工作。基于反熔丝技术的 FPGA 只能编程一次,但不受掉电影响。
 无论是 CPLD 还是 FPGA,其开发过程必须借助相关开发软件和编程设备才
能完成。本节附录介绍了基于 Xilinx Vivado 软件的 FPGA 开发过程。
可编程逻辑器件

华中科技大学 张林
可编程逻辑器件概述
可编程逻辑器件概述

可编程逻辑器件(Programmable Logic
Device,简称PLD )
——用户可以根据自己的需要,定义
其逻辑功能的器件
可编程逻辑器件概述
可编程逻辑器件概述
可编程逻辑器件概述

紫外线擦除和电擦除
熔丝编程技术, 在系统可编程  电路规模越来越大
技术,多次编程
一次可编程器件 (In-Systern  工作速度越来越快
 通用阵列逻辑器件(Generic
Array Logic,简称GAL) Programmability,
 可编程逻辑阵列  电路结构越来越灵活
紫外线擦除的可编程器件

简称ISP)
(Prograrnrnable (Erasable PLD,简称EPLD)
Logic Array,简称  复杂可编程器件(Complex
PLD,简称CPLD)  CPLD
PLA)
 FPGA
 可编程阵列逻辑
SRAM技术
(Programmable
 现场可编程门阵列(Field
Array Logic,简称
Programrnable Gate Array,
PAL) 简称FPGA)
可编程逻辑器件概述

数字信号
微处理器 E2PROM
处理单元

FIFO 双口RAM 锁相环

SoC FPGA

片上系统(System on Chip,简称SoC)
再见!
可编程逻辑器件

华中科技大学 张林
可编程逻辑器件内部电路常用符号
可编程逻辑电路中常用符号

A B C D VCC
0
R
0
L
熔丝

L  ABCD
可编程逻辑电路中常用符号

A B C D VCC

L
熔丝

L  AC
可编程逻辑电路中常用符号

VCC

A B C D
R

╳ ╳
T1 T2 T3 T4

编程为连 编程为断 编程为连 编程为断


接状态 开状态 接状态 开状态
可编程逻辑电路中常用符号

VCC

A B C D
R
1
L
0

T1 T3

L  A  C  AC
可编程逻辑电路中常用符号

由P沟道MOS管替代
VCC

A B C D
R

T1 T2 T3 T4
可编程逻辑电路中常用符号

A B C D VCC
L  AC
R
断开状态
与逻辑运算
L
熔丝 A B C D
VCC
L
A B C D
R

连接状态
T1 T3
可编程逻辑电路中常用符号

A B C A B C
L1 L2

L1  A  B  C L2  A  C
可编程逻辑电路中常用符号

A A B B A A B B
L= 0 L= 0
可编程逻辑电路中常用符号

A A B B A A B B
L= 0 L= 0

A B C
A
L=A+B+C A
A

固定连接 互补输出的缓冲器
再见!
可编程逻辑器件

华中科技大学 张林
可编程逻辑阵列PLA
和可编程阵列逻辑PAL
PLA和PAL
PLA和PAL

与-或阵列

基本结构
PLA
PLA

可编程

输 与 输
入 或
输 阵 阵 出 输
电 电 出


路 列 列

PLA

C B A 输入电路
或阵列
(可编程)

P1

P2

P3

P4 输出电路

0
与阵列
1
(可编程)
F0 L0
F1 L1
PLA

C B A 输入电路
ABC 或阵列
(可编程)
P1  ABC P2  ABC P3  ABC P4  BC
P1

P2 F0  P1  P3  P4  ABC  ABC  BC
P3 F1  P1  P2  P3  ABC  ABC  ABC
P4 输出电路
L0  F0  0  F0  ABC  ABC  BC
0
与阵列
1
(可编程) L1  F1  1  F1  ABC  ABC  ABC
F0 L0
乘积项
F1 L1
PLA

I1 O1
I2 O2
输 PLA 输


入 出
I16 O8

典型的PLA集成电路有16个输入、48个
乘积项和8个输出。
PAL
PAL

可编程 不可编程

输 与 输
入 或
输 阵 阵 出 输
电 电 出


路 列 列

PAL
与阵列(可编程) 或阵列(固定)

1 2 3 4 5 6 7 8 9 10

1
2 L0
3
A0
反馈输入缓冲器
4
5 L1
6 每个输出可以产生3个乘
A1
积项的4变量逻辑函数。
7
8 L2
9
A2
10 )
11 L3
12
A3

1 2 3 4 5 6 7 8 9 10
PAL
与阵列(可编程) 或阵列(固定)

1 2 3 4 5 6 7 8 9 10

1
2 L0
3
A0
反馈输入缓冲器
4
5 L1
6
A1
7
8 L2
9
A2
10 )
11 L3
12
A3

1 2 3 4 5 6 7 8 9 10
PAL

1 2 3 4 5 6 7 8 9 10
1
2 L0
3 0  L0  ABC  ABC D
D 
4  L1  ABC  AC D  BC D
5 L1 
6
 L2  ABC  ABC
C

7
 L3  L0  BC D  AC D
8 L2
9 0   ABC  ABC D  BC D  AC D
B 
10
11 L3

A
12
与或阵列的规模限制了乘积项和变量个数

1 2 3 4 5 6 7 8 9 10
PAL

CLK(时钟) OE(输出使能)

从与门 Q
1D
阵列来
C1
PAL

TIBPAL16R4A的逻辑图

时序电路的输出
(寄存器型输出)

输入 输入/输出

输出使能控制
PAL

TIBPAL16R4A的逻辑图

表示上电时触发器复位
再见!
可编程逻辑器件

华中科技大学 张林
通用阵列逻辑器件GAL
GAL
GAL

改进了输出电路结构,通
过编程,可以将输出结构
配置成多种不同的电路。

输 与 输
入 或
输 阵 阵 出 输
电 电 出


路 列 列

GAL
GAL16V8结构框图

时钟输入缓冲器
反馈/输入缓冲器,产
生8对两两互补的变量

输入缓冲器,产生8
对两两互补的变量

输出使能控制信
号的输入缓冲器
GAL

32个输入
8个与门
可编程与阵列
0 4 8 12 16 20 24 28
0

OLMC
7
GAL
GAL16V8结构框图

8个三态输出缓冲器
 88=64个与门
 32个输入 三态缓冲器高阻状
 6432=2048个可编程 态时,可做输入端
连接单元
GAL
GAL16V8结构框图

输出逻辑宏单元
(Output Logic Macro Cell,
简称OLMC)
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

可编程存储单元,对 OLMC(n) 三态控制选择器


11 TSMUX
应GAL结构控制字中 10 至相邻级的
01
的数据位。 VCC 00
FMUX 输入

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选 括号中的n表示这个
择器
XOR(n) 反馈选择器 宏单元对应的I/O引脚
FMUX
10 号,m代表相邻宏单
反馈到
与阵列
11
01
元的编号。
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 0
0 AC0 AC1(n)
PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 1
0 AC0 AC1(n)
PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 L D 1
与阵列 L
Q OMUX
> Q 输出选
0 择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 L D 1
与阵列 L
Q OMUX
> Q 输出选
1 择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

可编程存储单元,对 OLMC(n) 三态控制选择器


11 TSMUX
应GAL结构控制字中 10 至相邻级的
01
的数据位。 VCC 00
FMUX 输入

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 1 1
0 AC0 AC1(n)
PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00
11
AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

至相邻级的
FMUX 输入
OLMC(n)
PT1

自 2



列 I/O (n)
8
XOR(n)

反馈

CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 1 0
0 AC0 AC1(n)
PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00
10
AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
GAL

至相邻级的
OLMC(n) FMUX 输入

PT1
Q
来自 D
与阵列 I/O (n)
Q

Q

XOR(n)

反馈到 NC
与阵列
NC

来自相邻
级输出(m)
CLK OE
GAL

OLMC(n) 三态控制选择器
11 TSMUX
10 至相邻级的
01 FMUX 输入
VCC 00

乘积项选择器 AC0 AC1(n)


0 PTMUX
PT1 1 0
Q I/O (n)
来自 D 1
与阵列
Q OMUX
> Q 输出选
择器
XOR(n) 反馈选择器
FMUX
10
反馈到 11
与阵列 01
00

AC0 AC1(m)
来自相邻
AC1(n)
级输出(m)
CLK OE
再见!
可编程逻辑器件

华中科技大学 张林
CPLD基本结构简介
CPLD基本结构简介

I/O  逻辑块   逻辑块  I/O


   
块     块
n 可 n


I/O  逻辑块   逻辑块  I/O
  的  
块     块

n 部 n
 连 
 
 线 

I/O  逻辑块   逻辑块  I/O


   
块     块
n n
CPLD基本结构简介

I/O  逻辑块   逻辑块  I/O


   
块  GAL   GAL  块
n 可 n


I/O  逻辑块   逻辑块  I/O
  的  
块  GAL   GAL  块

n 部 n
 连 
 
 线 

I/O  逻辑块   逻辑块  I/O


   
块  GAL   GAL  块
n n
CPLD基本结构简介

I/O  逻辑块   逻辑块  I/O


编程技术 块







 块
n 可 n


I/O  逻辑块   逻辑块  I/O
  的  
块     块

n 部 n
 连 
 
 线 

I/O  逻辑块   逻辑块  I/O


   
块     块
n n
CPLD基本结构简介

逻辑块

Altera —— LAB(Logic Array Block)


Xilinx —— FB(Function Block)
Lattice —— GLB(Generic Logic Block)
CPLD基本结构简介

通常是4到20个

宏单元 1
内部 可编程 宏单元 2 可编程
可编 n 可编程 m
的内部
乘积项 宏单元 3
程连 乘积项 连线区
分配电 
线区 阵列  m
路  I/O 块
宏单元 m

逻辑块
CPLD基本结构简介

宏单元 1
内部 可编程 宏单元 2 可编程
XC9500系列:n=36, m=18 可编 n 可编程
乘积项
m
的内部
宏单元 3
程连 乘积项 连线区
分配电 
MAX7000S系列:n=36, m=16 线区 阵列
路  m
 I/O 块
宏单元 m

逻辑块
CPLD基本结构简介

01

可编程乘积项阵列 宏单元 1
内部 可编程 宏单元 2 可编程
可编程乘积项阵列决定了 可编 n 可编程 m
的内部
乘积项 宏单元 3
每个逻辑块乘积项的总数 程连 乘积项 连线区
分配电 
线区 阵列  m
输入变量个数决定了每个 路  I/O 块
乘积项的变量个数 宏单元 m

XC9500系列的逻辑块:
逻辑块
90个36变量乘积项
MAX7000S系列的逻辑块:
80个36变量乘积项
CPLD基本结构简介

02

乘积项分配电路 宏单元 1
内部 可编程 宏单元 2 可编程
将乘积项阵列中任何一个 可编 n 可编程 m
的内部
乘积项 宏单元 3
乘积项分配给某一个宏单元或 程连 乘积项 连线区
分配电 
线区 阵列  m
多个宏单元,增强了灵活性。 路  I/O 块

XC9500系列的逻辑块:
宏单元 m
90个乘积项可以组合到一个宏单
元中,产生90个乘积项的与或式 逻辑块
MAX7000S系列的逻辑块:
还可以使同一个乘积项被多个宏单
元共享
CPLD基本结构简介

03

宏单元 宏单元 1
内部 可编程 宏单元 2 可编程
包含一个或门、一个触发器 n 可编程 m
可编 乘积项 宏单元 3 的内部
和一些可编程的数据选择器及控制 程连 乘积项 连线区
分配电 
阵列 
门。 线区 路 m
 I/O 块
 组合逻辑输出
宏单元 m
 寄存器输出
 清零或置位 逻辑块
宏单元的输出不仅送到I/O块,
也送回内部连线区。
CPLD基本结构简介

I/O  逻辑块   逻辑块  I/O


   
块     块
n 可 n


I/O  逻辑块   逻辑块  I/O
  的  
块     块

n 部 n
 连 
 
 线 

I/O  逻辑块   逻辑块  I/O


   
块     块
n n
CPLD基本结构简介

到其他 I/O 单元

VCCINT VCCIO

输入缓冲 D1
去内部
可编程 G2
I/O单元(1)
连线区 可编程
D2 上拉
I/O单元(2)
输出缓冲驱动 I/O


OUT
G1 I/O

来自 OE
宏单元
PTOE 1
r
可编程
接地
I/O单元(k)
0
全局输 r M
出使能
r

到其他 I/O 单元

I/O单元
CPLD基本结构简介

到其他 I/O 单元

VCCINT VCCIO

输入缓冲 D1
去内部
可编程 G2
连线区 可编程
D2 上拉

输出缓冲驱动
OUT
G1 I/O
来自 OE
宏单元 1
PTOE 可编程
r 接地
0
全局输 r M
出使能
r

到其他 I/O 单元
CPLD基本结构简介

到其他 I/O 单元

VCCINT VCCIO

输入缓冲 D1
去内部
可编程 G2
连线区 可编程
D2 上拉

输出缓冲驱动
OUT 高阻
G1 I/O
来自 OE
宏单元 1 0
PTOE 可编程
r 接地
0
全局输 r M
出使能
r

到其他 I/O 单元
CPLD基本结构简介

到其他 I/O 单元
芯核工作电压I/O工作电压
VCCINT VCCIO

输入缓冲 D1
去内部
可编程 G2
连线区 可编程
D2 上拉

输出缓冲驱动
OUT
G1 I/O
来自 OE
宏单元 1
PTOE 可编程
r 接地
0
全局输 r M
出使能
r

到其他 I/O 单元
CPLD基本结构简介

I/O  逻辑块   逻辑块  I/O


   
块     块
n 可 n


I/O  逻辑块   逻辑块  I/O
  的  
块     块

n 部 n
 连 
 
 线 

I/O  逻辑块   逻辑块  I/O


   
块     块
n n
CPLD基本结构简介



T 导通 程

1 内

E2PROM 连
单元 线
CPLD基本结构简介



T 截止 程

0 内

E2PROM 连
单元 线
CPLD基本结构简介

X1 X2 X1 X2 X1 X2

0
Y1 Y1 Y1
1
M1
E2PROM S
单元

0
Y2 Y2 Y2
1
M2

两路互连示意图 S=0 S=1


CPLD基本结构简介

I/O  逻辑块   逻辑块  I/O


Altera公司:可编程连线阵列,简称 块







 块
PIA(Programmable Interconnect n 可 n

Array) 程
I/O  逻辑块   逻辑块  I/O
  的  
块     块
Xilinx 公 司 : 开 关 矩 阵 ( Switch 内
n 部 n
Mattrix)  连 
 
 线 
Lattice公司:全局布线区,简称GRP
(Global Routing Pool) I/O  逻辑块   逻辑块  I/O
   
块     块
n n
CPLD基本结构简介

几种典型CPLD产品的相关参数
逻辑 单个逻辑块中 宏单元 逻辑块输入 最高工作 工作电压 最大可用
厂商 系列 型号
块 宏单元个数 总数 宽度/Bit 频率/MHz /V 引脚数
MAX 7000S EPM7032S 4 16 64 36 175.4 5 68
Altera MAX 7000A EPM7128AE 8 16 128 36 192.3 3.3 100
MAX II EPM2210G 221 10 1700 26 304 1.8 272
XC9500 XC95144 8 18 144 36 100 5 133
Xilinx
XC9500XL XC95144XL 8 18 144 54 200 3.3 117
ispMACH4000V 4128V 8 16 128 36 333 3.3 100
Lattice
ispLSI 5000VE 5128VE 4 32 128 64 180 3.3 96
CPLD基本结构简介

几种典型CPLD产品的相关参数
逻辑 单个逻辑块中 宏单元 逻辑块输入 最高工作 工作电压 最大可用
厂商 系列 型号
块 宏单元个数 总数 宽度/Bit 频率/MHz /V 引脚数
MAX 7000S EPM7032S 4 16 64 36 175.4 5 68
Altera MAX 7000A EPM7128AE 8 16 128 36 192.3 3.3 100
MAX II EPM2210G 221 10 1700 26 304 1.8 272
XC9500 XC95144 8 18 144 36 100 5 133
Xilinx
XC9500XL XC95144XL 8 18 144 54 200 3.3 117
ispMACH4000V 4128V 8 16 128 36 333 3.3 100
Lattice
ispLSI 5000VE 5128VE 4 32 128 64 180 3.3 96

MAX II 的逻辑块中不是与或阵列而是查找表(LUT)
再见!
可编程逻辑器件

华中科技大学 张林
FPGA实现逻辑功能的基本原理
FPGA实现逻辑功能的基本原理

编程技术

只能编程一次,
无限次编程 主要用于大批
量定型产品。
FPGA实现逻辑功能的基本原理

异或逻辑真值表 译码电路
存储器地址 存储内容 B

B A L 0 0
0 0 0 SRAM 1 1
0 0 L
存储
1 0 1
0 1 1 单元
0 0 1
1 0 1
A
1 1 0
FPGA实现逻辑功能的基本原理

异或逻辑真值表
0
存储器地址 存储内容 B

B A L 0 0
0 0 0 SRAM 1 1
0 L0
存储
1 0 1
0 1 1 单元
0 1
1 0 1
A 0
1 1 0
FPGA实现逻辑功能的基本原理

异或逻辑真值表
0
存储器地址 存储内容 B

B A L 0 0
0 0 0 SRAM 1 1
0 L1
存储
1 0 1
0 1 1 单元
0 1
1 0 1 1
A
1 1 0
FPGA实现逻辑功能的基本原理

查找表LUT(Look-Up Table)

B B
SRAM存 0/1 0 0 0
储单元
0/1 1 1 1
0 L 0 L
0/1 0 1 1 0 1
0/1 1 0 1
A LUT A LUT
FPGA实现逻辑功能的基本原理

C
B
0/1
0/1
 3个输入变量
0/1
 8个存储单元
0/1 L
0/1  三级的数据选择器
0/1
0/1
0/1
A LUT
FPGA实现逻辑功能的基本原理

C
4输入的LUT:
B
 4个输入变量
0/1
0/1  16个存储单元

相当于161位的SRAM
0/1
0/1 L
0/1
0/1 D
0/1 C
LUT F
0/1 B
A LUT A
FPGA实现逻辑功能的基本原理

LUT 1 Y1
L3
(Ⅳ) 0
字扩展关系
1 Z
1 0
高位地址 输出
LUT L2 Y0
F E Z
(Ⅲ) 0
0 0 选通LUT(Ⅰ)
•••
E
0 1 选通LUT(Ⅱ)
LUT 1 X1
L1 1 0 选通LUT(Ⅲ)
(Ⅱ) 0
1 1 选通LUT(Ⅳ)
1
D
LUT 1 X0
C L0
B (Ⅰ) 0
A
•••
FPGA实现逻辑功能的基本原理
0
F

LUT 1 Y1
L3
(Ⅳ) 0
字扩展关系
1 Z
1 0
高位地址 输出
LUT L2 Y0
F E Z
(Ⅲ) 0
0 0 选通LUT(Ⅰ)
0 •••
E
0 1 选通LUT(Ⅱ)
LUT 1 X1
L1 1 0 选通LUT(Ⅲ)
(Ⅱ) 0
1 1 选通LUT(Ⅳ)
1
D
LUT 1 X0
C L0
B (Ⅰ) 0
A
•••
FPGA实现逻辑功能的基本原理

LUT 1 Y1
L3
(Ⅳ) 0

1 Z
1 Y0 0
LUT L2
(Ⅲ) 0
•••
E

LUT 1 X1
L1
(Ⅱ) 0

1
D
LUT 1 X0
C L0
B (Ⅰ) 0
A
•••
FPGA实现逻辑功能的基本原理

Select

D 1 F
C 0
LUT D Q
B
A
CP >

FPGA中的基本逻辑块
FPGA实现逻辑功能的基本原理

FPGA
E2PROM
(SRAM)
再见!
可编程逻辑器件

华中科技大学 张林
FPGA结构简介
FPGA结构简介
FPGA结构简介

I/O 块






 逻辑块


I/O I/O
互连开关
块 块


       
       
       





I/O 块
FPGA结构简介

逻辑块

Xilinx —— CLB(Configurable Logic Block)


Altera —— LAB(Logic Array Block)
FPGA结构简介
COUT
Spartan-Ⅱ系列的
逻辑块简化框图 YB
Y
G4
G3 进位及控 Sd
LUT D Q YQ
G2 制逻辑
G1 EC
Rd

包含若干可编 BY
F5IN
程的数据选择 SR 触发器时钟
CLK
器和控制门 CE 使能控制端
XB
F5
X
F4
F3 进位及控 Sd
LUT D Q XQ
F2 制逻辑
F1 EC
Rd

BX

CIN
FPGA结构简介
COUT
Spartan-Ⅱ系列的
逻辑块简化框图 YB
Y
G4
G3 进位及控 Sd
可以实现: G2
LUT
制逻辑
D Q YQ

G1 EC
 两个独立的4变量任意 Rd
组合型输出
BY
逻辑函数 F5IN
SR 存器型输出
CLK
CE
XB
F5
X
F4
F3 进位及控 Sd
LUT D Q XQ
F2 制逻辑
F1 EC
Rd

BX

CIN
FPGA结构简介
COUT
Spartan-Ⅱ系列的
逻辑块简化框图 YB
Y
G4
G3 进位及控 Sd
可以实现: G2
LUT
制逻辑
D Q YQ

G1 EC
 两个独立的4变量任意 Rd

BY
逻辑函数 F5IN
SR
 5变量任意逻辑函数 与前级级联 CLK
CE
扩展更多的 XB
F5
输入变量 F4
X

F3 进位及控 Sd
LUT D Q XQ
F2 制逻辑
F1 EC
Rd

BX

CIN
FPGA结构简介
COUT 进位输出
Spartan-Ⅱ系列的
逻辑块简化框图 YB
Y
G4
G3 进位及控 Sd
可以实现: 被加数和 G2
LUT
制逻辑
D Q YQ

加数的高 G1 EC 进位输出
 两个独立的4变量任意 Rd
和的输出
位输入 BY
逻辑函数 F5IN
SR
 5变量任意逻辑函数 CLK
CE
XB
 2位二进制加法器 F5
低位输入 F4
X

F3 进位及控 Sd
LUT D Q XQ
F2 制逻辑
F1 EC
Rd

BX

CIN 进位输入
FPGA结构简介
Spartan-Ⅱ系列的 C1 (COUT)
逻辑块简化框图
C1 (YB)
CY
I4 0 1
可以实现: I3 O
S1 (Y)
G-LUT A1B1
A1 (G2) I2
 两个独立的4变量任意 B1 (G1) I1

逻辑函数
C0 (XB)
 5变量任意逻辑函数 CY
0 1
I4
 2位二进制加法器 I3
S0 (X)
F-LUT O A B
A0 (F2) I2 0 0

B0 (F1) I1

C-1 (CIN)
FPGA结构简介
COUT
Spartan-Ⅱ系列的 激励信号
逻辑块简化框图 YB
Y
G4
G3 进位及控 Sd
可以实现: G2
LUT
制逻辑
D Q YQ

G1 EC
 两个独立的4变量任意 Rd
通过连线
BY
逻辑函数 F5IN 资源反馈
SR
回本逻辑
 5变量任意逻辑函数 CLK
CE
XB
块的输入
 2位二进制加法器 F5
X
F4
 时序逻辑电路 F3 进位及控 Sd
LUT D Q XQ
F2 制逻辑
F1 EC
Rd

BX
激励信号
CIN
FPGA结构简介
COUT
Spartan-Ⅱ系列的 161位
逻辑块简化框图 YB
SRAM Y
G4
G3 进位及控 Sd
可以实现: G2
LUT
制逻辑
D Q YQ

G1 EC
 两个独立的4变量任意 Rd

BY
逻辑函数 F5IN
SR
 5变量任意逻辑函数 161位 CLK
CE
SRAM XB
 2位二进制加法器 F5
X
F4
 时序逻辑电路 F3 进位及控 Sd
LUT D Q XQ
F2 制逻辑
 存储器 F1 EC
Rd

BX

CIN
FPGA结构简介

I/O 块






 逻辑块


I/O I/O
互连开关
块 块


       
       
       





I/O 块
FPGA结构简介

I/O单元(1)
I/O单元(2) I/O


I/O单元(k)
FPGA结构简介
I/O单元简化框图

TFF VCCO
T D Q 弱保持
 I/O引脚用 TCE EC M
SRAM 电路
单元
作输出 VCCO
OFF I/O
O D Q
OC EC
M 可编程输出缓冲器
E SRAM
单元
VCCO

I 可编程延
IFF 时电路 VREF
IQ Q D
EC 可编程输入缓冲器

CLK
可编程开关
ICE
FPGA结构简介
I/O单元简化框图

TFF VCCO
T D Q 弱保持
 I/O引脚用 TCE EC M
SRAM 电路
单元
作输入 VCCO
对I/O引脚
OFF I/O 过压保护和
O D Q
控制输入信号 静电保护
OC EC
M 可编程输出缓冲器
进入的时机 E SRAM
单元
VCCO

I 可编程延
IFF 时电路 VREF
IQ Q D
EC 可编程输入缓冲器

CLK
可编程开关
ICE
FPGA结构简介
I/O单元简化框图

TFF VCCO
T D Q 弱保持
 I/O引脚无 TCE EC M
SRAM 电路 当引脚外部无
无外部信号输
单元
输入输出时 驱动信号时,
入时为引脚分
VCCO
OFF I/O
弱保持电路的
配固定电平
O D Q 电平将维持在
OC EC
M 可编程输出缓冲器 该引脚最后一
E SRAM
单元
个状态的逻辑
VCCO
电平上,消除
可编程延
I
IFF 时电路 VREF 引脚电平的抖
IQ Q D 动。
EC 可编程输入缓冲器

CLK
可编程开关
ICE
FPGA结构简介
I/O单元简化框图

TFF VCCO
T D Q 弱保持
 I/O端口电压 TCE EC M
SRAM 电路
单元
VCCO
OFF I/O 同组的I/O
O D Q
OC EC 单元共用
M 可编程输出缓冲器
E SRAM
单元
VCCO

I 可编程延
IFF 时电路 VREF
IQ Q D 更便于电
EC 可编程输入缓冲器 平匹配
CLK
可编程开关
ICE
FPGA结构简介

I/O 块






 逻辑块


I/O I/O
互连开关
块 块


       
       
       





I/O 块
FPGA结构简介

互连开关
FPGA结构简介
互连开关

纵线
横线
导通

1
M
SRAM
单元
FPGA结构简介
互连开关
纵线

纵线
M M
横线
截止 M
横线
0
M
M
SRAM
单元
M M
FPGA结构简介

由于同步时序电路需要时钟同
时驱动众多触发器,且要考虑不同
时钟路径的时延和驱动,所以FPGA
中专门设计了全局时钟网络。

I/O块外围的附加连线资源,
称为万能环。它们使引脚的交换和
锁定与内部逻辑无关。
FPGA结构简介

I/O 块






通过优化电路
 逻辑块


布局和连线,
I/O I/O
互连开关


块 可以减小传输

       
延迟时间,提
       
       

高工作速度。




I/O 块
FPGA结构简介

数字信号
乘法器
处理器

锁相环 CPU

高性能FPGA
再见!
可编程逻辑器件

华中科技大学 张林
可编程逻辑器件开发过程简介
与本章小结
可编程逻辑器件开发过程简介

开发环境和条件

计算机

开发软件、编程器或编程电缆
可编程逻辑器件开发过程简介

逻辑变量定义、逻辑状态划分,列写真值表、
逻辑设计
逻辑函数表达式,画出状态图或逻辑图等。
设计输入
(原理图或HDL) 输入原理图,或用硬件描述语言描述逻辑函
数、真值表或状态图等输入设计。
逻辑综合

功能仿真 开发软件对输入的设计进行逻辑化简和优化,
并检查电路图连线或语法是否有错。并将输
入的设计转换成电路网表文件。

通过开发软件进行逻辑功能仿真。如果发现
不能满足设计要求,则需要修改设计。
可编程逻辑器件开发过程简介

逻辑设计

开发软件根据约束条件,以及之前的电路网表文件, 设计输入
(原理图或HDL)
在目标芯片中分配逻辑资源,规划逻辑单元布局,
确定连线方案,并生成编程数据等相关文件。 逻辑综合

时序仿真包含信号传递延时信息。若发现不满足设计 功能仿真
要求,则需更换器件或增加约束条件重新布局布线;
若仍不能满足要求,就需要修改最初的设计了。
布局布线

也称为下载或配置,就是将编程数据写入可编 时序仿真
程逻辑器件中。各种可编程器件都设有编程数
据写入端口,并规定了数据写入规则。 器件编程
可编程逻辑器件开发过程简介

计算机
CPLD

USB 口 适配器 JTAG

CPLD 编程连接示意图
可编程逻辑器件开发过程简介

计算机 FPGA

USB 口 适配器 编程端口

FPGA 编程连接示意图
可编程逻辑器件开发过程简介

目标板

计算机 E2PROM FPGA

USB 口 适配器 编程端口

FPGA 编程连接示意图
可编程逻辑器件小结

用户设计和
定义逻辑功

保密性好 集成度高
可编程逻
辑器件

处理速度快 可靠性高
可编程逻辑器件小结

CPLD FPGA
(在系统编程)
(LUT数量极大,可以
实现规模更大、逻辑更
GAL
PAL 复杂的数字电路)

与或阵列
和触发器
LUT
可编程逻辑器件小结

CPLD FPGA
SRAM编程技术,无限次编程。
E2PROM编程技术,断 断电后逻辑功能消失,需要
电后逻辑功能不消失。 EPROM保存编程数据。上电后,
FPGA先从EPROM中读入编程数据
进行初始化,然后开始工作。
再见!
FPGA入门教程
FPGA开发准备

Xilinx介绍

Vivado介绍

Vivado下载及安装

FPGA在线学习资源

其他FPGA开发工具

Page 2 © Copyright 2016 Xilinx


.
Xilinx介绍

Xilinx(赛灵思)是全球领先的可编程逻辑完整解决方案的供应商。
Xilinx公司成立于 1984年,首创了现场可编程逻辑阵列(FPGA)这一创
新性的技术,并于1985年首次推出商业化产品。

目前Xilinx满足了全世界对 FPGA产品一半以上的需求,结合了全
可编程器件(FPGA,SoCs和3DICs)以及全可编程工具。产品广泛
应用于5G无线,机器视觉,物联网,云计算等领域。

© Copyright 2016 Xilinx


.
Vivado介绍

Vivado设计套件,是Xilinx2012年发布的集成设计环境。包括高度集成的设计
环境和新一代从系统到IC级的工具。集成了ISE、PlanAhead、Isim、XPS、
ChipScope和iMACT等独立套件。实现了FPGA的仿真、综合、实现、下载、调
试等功能。提高了FPGA的开发效率。

© Copyright 2016 Xilinx


.
Vivado下载及安装

Vivado的下载 (china.xilinx.com)
License下载
Vivado安装

© Copyright 2016 Xilinx


.
FPGA在线学习资源

OpenHW开源硬件社区
Xilinx官方网站
DocNav

© Copyright 2016 Xilinx


.
其他FPGA开发工具

SW Application C, C++ C, C++, OpenCL


Linux / FreeRTOS / Bare Metal x86 PCIe based applications
Developer

Open & ASSP-like Embedded Flow Algorithmic Synthesis


Auto HW acceleration of SW Area / Perf Optimization
Integrated
Development
Stack HLS
Develop in Weeks not Months (>1000 users)
Over 100X Faster Verification than RTL

Foundation for integrated development stack


AXI / IP Integrator / IP Packager
HW Designer

Delivering at All Levels of Abstraction


© Copyright 2016 Xilinx
.
总结

Xilinx介绍

Vivado介绍

Vivado下载及安装

FPGA在线学习资源

其他FPGA开发工具

© Copyright 2016 Xilinx


.
FPGA入门教程
FPGA开发流程

FPGA开发流程介绍

Vivado-创建工程

Vivado-仿真

Vivado-综合

Page 2 © Copyright 2016 Xilinx


.
FPGA开发流程介绍
建立源文件 Ug910
Vivado getting started

RTL仿真 Ug900
Vivado logic simulation

综合 Ug901
Vivado Synthesis

实现 Ug904
Vivado Implementation

时序分析 Ug906
Vivado Timing Analysis

Ug908
生成Bitstream
Programming&debugging

© Copyright 2016 Xilinx


.
FPGA 设计流程- 创建源文件
Create Code
Device

RTL Simulation

Synthesis

Implementation

Timing Analysis

Generate Bitstream

© Copyright 2016 Xilinx


.
FPGA 设计流程 - RTL 仿真
Create Code
Test Data

Verify Functions
RTL Simulation

Device
Test Bench RTL
Module
Synthesis

Implementation Simulator
Vivado
or
Modelsim
Timing Analysis

Generate Bitstream

© Copyright 2016 Xilinx


.
FPGA 设计流程 - RTL 仿真
Create Code

RTL Simulation

Synthesis

Implementation

Timing Analysis

Generate Bitstream

© Copyright 2016 Xilinx


.
FPGA 设计流程 - 综合
Create Code

RTL Synthesis Netlist

RTL Simulation

Synthesis
RTL级

Implementation

Timing Analysis
网表

Generate Bitstream

© Copyright 2016 Xilinx


.
Step 1: 创建工程

创建新工程

选择工程名字和路径

导入源文件/约束文件

选择器件

创建/添加源文件

创建/添加约束文件

© Copyright 2016 Xilinx


.
Step 2: 行为级仿真

添加/创建仿真文件

仿真选项设置

运行行为级仿真

察看结果

© Copyright 2016 Xilinx


.
Step 3: 综合

设置综合选项

运行综合

打开综合后工程

添加Debug调试信号

© Copyright 2016 Xilinx


.
FPGA入门教程
FPGA开发流程

FPGA开发流程介绍

板卡介绍

Vivado-实现

Vivado-时序分析

Vivado-生成Bitstream

Vivado-下载程序到板卡

Page 2 © Copyright 2016 Xilinx


.
FPGA开发流程介绍
建立源文件 Ug910
Vivado getting started

RTL仿真 Ug900
Vivado logic simulation

综合 Ug901
Vivado Synthesis

实现 Ug904
Vivado Implementation

时序分析 Ug906
Vivado Timing Analysis

Ug908
生成Bitstream
Programming&debugging

© Copyright 2016 Xilinx


.
FPGA设计流程 - 实现
Create Code

RTL Simulation

Synthesis

Implementation

Timing Analysis

Generate Bitstream

© Copyright 2016 Xilinx


.
FPGA 设计流程 - 时序分析
Create Code Setup Time & Hold Time

Tckq+T1(Path Delay)+Tsetup < Tc

RTL Simulation

Synthesis

Implementation

Timing Analysis

Generate Bitstream

© Copyright 2016 Xilinx


.
FPGA 设计流程 - 生成 Bitstream
Create Code

Boot Modes
• QSPI
• SD
RTL Simulation
• JTAG
• ETC.

Synthesis

Implementation .bit FPGA

Timing Analysis .bin

FLASH

.mcs
Generate Bitstream

© Copyright 2016 Xilinx


.
Step 4: 实现

添加管脚约束

运行实现

查看实现结果

© Copyright 2016 Xilinx


.
Step 5: 时序分析

打开实现后工程

设置时序分析选项

© Copyright 2016 Xilinx


.
Step 6: 生成 Bitstream file

设置Bitstream选项

生成 Bitstream

© Copyright 2016 Xilinx


.
Step 7:下载Bitstream到FPGA板卡

打开Hardware Manager

下载工程

在硬件上验证功能

* 下载前先确认板卡jtag连接至电脑并且上电

© Copyright 2016 Xilinx


.
总结

实现
时序分析
生成Bitstream
下载Bitstream到FPGA板卡

© Copyright 2016 Xilinx


.
Digital Design Tutorial

Xilinx University Program


IP介绍

IP打包流程
Package IP 总结

Page 2 © Copyright 2015 Xilinx


.
IP介绍

在集成电路中,IP(intellectual property)核是指某一方提供的、
形式为逻辑单元、芯片设计的可重用模块。
在FPGA中设计中,适当的调用IP核可以提高设计效率,节省设
计时间。同时,有些IP核比如RapidIO(高速接口IP),与FPGA
底层的硬件电路资源息息相关。我们在调用IP核时,需要先翻阅
IP核的参考资料,了解IP核的结构以及接口定义,方便我们设计
中的调用。

Page 3 © Copyright 2015 Xilinx


.
IP介绍

在Vivado中,Xilinx已经提供了相当多的IP核。很多第三方的厂
家也提供不同功能的IP核。与此同时,我们也可以将自己的RTL
级设计封装成IP核供其他工程调用。Vivado提供了非常方便的IP
核封装流程。

Page 4 © Copyright 2015 Xilinx


.
Package IP Flow

Step 1: Create Project

Step 2: Package Current Project

Step 3: Package AXI4 Peripherals

Step 4: Add IP

© Copyright 2015 Xilinx


.
Step 1: Create Project

Create Project

Add Source File

Run RTL Simulation

© Copyright 2015 Xilinx


.
Step 2: Package Current Project

Set Identification

Specify IP Supporting Device

Validate Port & Interface

Package IP

© Copyright 2015 Xilinx


.
Step 3: Package AXI4 Peripherals

Set Peripheral Details

Add Interface

Package IP

© Copyright 2015 Xilinx


.
Step 4: Add IP

Add IP Repository

Add IP

© Copyright 2015 Xilinx


.
总结

IP核的定义

封装IP核的方法

在工程中添加IP核

Page 10 © Copyright 2015 Xilinx


.
Page 11 © Copyright 2015 Xilinx
.
Digital Design Tutorial

Xilinx University Program


实验介绍

演示
Digital Clock

Page 2 © Copyright 2015 Xilinx


.
实验介绍
数字钟是一个以秒为单位的计时器,可以在数码管上显示“秒”和“分”。
通过将FPGA时钟分频,得到1秒为周期的时钟信号作为脉冲激励。同时使
用计数电路74LS90和与门电路74LS08搭建模60计数器。并将最终的时间
通过数码管模块显示在板卡的数码管上。

Page 3 © Copyright 2015 Xilinx


.
SN74LS90

Input Output
R0_1 R0_2 R9_1 R9_2 qa qb qc qd
H H L X L L L L
H H X L L L L L
X X H H H L L H
X L X L
L X L X
Count
L L X X
X X L L

H=High-Level L=Low-Level X=Don’t Care

Page 4 © Copyright 2015 Xilinx


.
SN74LS08
Input Output
a1 b1 y1
L X L
X L L
H H H
H=High-Level L=Low-Level X=Don’t Care

Page 5 © Copyright 2015 Xilinx


.
模60计数器

Page 6 © Copyright 2015 Xilinx


.
Vivado Flow Overview

Step 1: Create New Project


Step 2: Add Source Files and IP
Step 3: Generate Bitstream
Step 4: Download Bitstream and Verify Functionality

Page 7 © Copyright 2015 Xilinx


.
Step 1: Create New Project

Specify Project Name

Specify Project Type

Import/Create Source files

Specify Device to be used

© Copyright 2015 Xilinx


.
Step 2: Add Source Files and IP

Create Block Design

Open IP Catalog

Add IP Repository

Add IP to the project

Create HDL wrapper

© Copyright 2015 Xilinx


.
Step 3: Generate Bitstream

Add Pin Constraints

Generate Bitstream

Check your Timing in Design Runs Window

© Copyright 2015 Xilinx


.
Step 4: Download Bitstream and Verify Functionality

Make sure your board is connected to your PC

Turn on your FPGA board

Open Hardware Manager

Program Device

Verify Functionality on Hardware

© Copyright 2015 Xilinx


.
总结

创建Block Design

在Block Design内添加IP

74LS90和74LS08

Page 12 © Copyright 2015 Xilinx


.
Page 13 © Copyright 2015 Xilinx
.
第二章 Quartus Prime 概述
学习目标

学习使用一种 FPGA 的开发工具,并完成一部分组合逻辑电路实验。主要内


容包括:

 介绍 Quartus Prime 软件的版本变迁

 介绍软件下载

 介绍软件安装

 通过 3/8 译码器实例介绍 Quartus Prime 设计流程等。

2.1 Quartus Prime 版本变迁

随着 Intel 公司器件集成度的提高、器件结构和性能的改进,Quartus Prime


软件也在不断地改进和更新之中,每年都有新版本推出,从 15.1 版本开始,
Quartus II 正式改名为 Quartus Prime,Quartus Prime 软件提供 3 个版本,即专业
版、标准版和精简版。Quartus Prime 专业版软件经过优化,可支持采用英特尔
Stratix 10、英特尔 Arria 10 和英特尔 Cyclone 10 GX 设备产品家族的下一代
FPGA 和 SoC 中 的 高 级 特 性 ; 英 特 尔 Quartus Prime 标 准 版 除 英 特 尔
Cyclone10 LP 设备产品家族外,英特尔 Quartus Prime 标准版软件还广泛支持更
早的设备产品家族;英特尔 Quartus Prime 精简版软件为大容量设备产品家族提
供了理想的入口点,并且可免费下载,而无需许可文件。当年年号的后两位数字
作为软件的主版本号(例如,2016 年推出的软件为 Quartus Prime 16.0),软件的
次版本号从 0 开始顺序编号。本文档使用 2017 年推出的 Quartus Prime 17.1 版
本,并将其安装在运行微软公司的 Windows 7 64 bit 操作系统的计算机上。

2.2 Quartus Prime 软件下载

登陆公司网站下载该软件,其网址为:

http://fpgasoftware.intel.com/17.1/?edition=standard&platform=windows&download
_manager=dlm3

2.3 Quartus Prime17.1 软件安装

读者下载软件后可按以下步骤进行安装:

安装步骤:
(1)打开下载的 Quartus Prime 设计文件,用鼠标左键双击 QuartusSetup-
17.1.0.590-windows.exe 文件,弹出如图 2.3.1 所示安装向导界面。

图 2.3.1 安装界面

(2)选择接受许可后,下一步进行安装目录的选择,注意不要安装到中文目录
下。如图 2.3.2 所示。
图 2.3.2 安装路径的选择

(3) 下面是安装内容的选择,如图 2.3.3 所示,勾选部分为必选项,其它选


项只有在需要进行 DSP 的开发或者 C 语言软件人员进行开发,勾选 DSP Builder
或 Intel FPGA SDK for OpenCL。

图 2.3.3 安装内容的选择
(4)点击 Next 按钮,如果上一步勾选安装 DSP Builder 组件,则需要已
安装 Matlab,可使用安装向导检测出 Matlab 的安装路径,也可自行指定安装路
径。

(5)点击 Next 按钮,即可开始进行 Quartus Prime 软件的安装。如图 2.3.4

所示的安装进度界面,等待安装完毕。

图 2.3.4 安装进度界面

如果 Quaruts Prime 软件安装完后,需要其他不同的器件,可在 Intel 官网


进行下载,器件库的安装如下步骤:

(1)在 tools 菜单中选择 Install devices 进行器件安装,如图 2.3.5


所示。
图 2.3.5 器件安装入口

(2)将目录定位到下载的器件包文件目录,即存放 .qdz 文件的目录,点


击 Next,如图 2.3.6 所示。

图 2.3.6 选择器件目录

(3)安装软件将自动识别器件安装包中的器件,根据需要在器件前进行勾选
安装,例如:MAX 10 FPGA,点击 Next,如图 2.3.7 所示。
图 2.3.7 选择相对应的器件

(4)出现器件安装进度条,等待安装完毕,如图 2.3.8 所示。

图 2.3.8 器件安装程序进程

(5)器件安装完如图 2.3.9 所示,点击 Finish 完成安装。


图 2.3.9 器件安装程序完成
2.4 Quartus Prime 17.1 设计流程

启动装有 Quartus Prime 17.1 软件的计算机后,用鼠标左键单击桌面左下角


“开始” 菜单项目中的“程序|Intel FPGA 17.1.0.590 Standard Edition| Quartus Prime
Standard Edition 17.1.0.590|Quartus (Quartus Prime 17.1)”命令后,Quartus Prime 开
始运行,屏幕上出现图 2.4.所示的主界面。该主界面由多个窗口组成,用户可以
通过菜单 View | Utility Windows 命令选取 Quartus Prime 的组成窗口,从而改变
主界面的形式。

标题栏
快捷工具
菜单栏
图标栏

IP 核目录
项目向导

窗口 多种应用

窗口
任务窗口

消息窗口

图 2.4.1 Quartus Prime 主界面

主界面的顶部是标题栏,标题栏下面有许多菜单,通过这些菜单可以选用
Quartus Prime 提供的绝大多数命令。许多常用命令以图标形式显示在快捷工具栏
上,选择 Tools | Customize | Toolbars 命令可以定制工具栏。当鼠标光标放置到某
个图标上,便显示出与该图标关联命令的名字。

通过 Quartus Prime 主窗口的 Help 菜单可以访问在线帮助文档,该帮助文档


能回答用户在使用该软件时可能遇到的大多数问题,并能获得许多高级功能的使
用方法。

另 外 , 安 装 Quartus Prime 软 件 时 , 在 安 装 子 目 录 ( 例 如
C:\intelFPGA\17.1\quartus\qdesigns)下面有几个设计项目示例,供用户参考。

使用 Quartus Prime 软件的设计流程如图 2 所示,大体上可以分为以下 6 个步骤:


图 2.4.2 Quartus Prime 设计流程

(1)创建一个新项目,并为此项目指定一个工作目录,然后指定一个目标器件。

在用 Quartus Prime 进行设计时,将每个逻辑电路或者子电路称为项目(project)。


当软件对项目进行编译处理时,将产生的一系列文件(例如,电路网表文件、编
程文件、报告文件等)。因此需要创建一个目录用于放置设计文件以及设计过程
产生的一些中间文件。我们创建目录 F:\Lab_exercise,以便保存工程项目文件。
建议每个项目使用一个目录。

(2)设计输入:Quartus Prime 可以使用的设计输入文件有:电路原理图、Verilog


HDL、以及其他的硬件描述语言文件,例如 VHDL 和 AHDL(Altera 公司专用
的硬件描述语言),也可以选用状态机文件和 EDIF(Electronic Design Interface

Format,电子设计接口格式)文件1等。

(3)逻辑综合:就是把原始描述(原理图或 HDL 代码)转换成面向某个具体的


FPGA 器件的电路网表文件,即用目标芯片中的逻辑元件来实现设计的逻辑,供

1EDIF 文件是由第三方综合工具生成的表示电路逻辑结构的标准格式文件。该 EDIF 标准为 EDA 工具之间


交换信息提供了一个便利的机制。
后面的布局布线软件使用。Quartus Prime 软件内部的集成综合工具支持 Verilog-
1995 和 Verilog-2001 的 IEEE 标准,还支持 VHDL 1987 和 VHDL 1993 标准。

(4)布局布线:根据事先设定的约束条件(例如,器件型号、指定的输入/输出
引脚、电路工作频率等),将逻辑综合器生成的网表文件输入到布局布线器,然
后用目标芯片中某具体位置的逻辑资源(元件、连线)去实现设计的逻辑,完成
逻辑元件、引脚的布局以及连线工作。同时生成一系列中间文件(例如,供时序
仿真用的电路网表文件、报告文件等)和编程数据文件(.sof 和.pof)。

(5)仿真验证:仿真的目的是验证设计的电路能否达到预期的要求。Quartus
Prime 软件支持功能仿真和时序仿真两种方式。

功能仿真(functional simulation)就是假设逻辑单元电路和互相连接的导线
是理想的,电路中没有任何信号的传播延迟,从功能上验证设计的电路是否达到
预期要求。仿真结果一般为输出波形和文本形式的报告文件,从波形中可以观察
到各个节点信号的变化情况。但波形只能反映功能,不能反映定时关系。在进行
功能仿真之前,需要完成 3 项准备工作:

① 对设计文件进行部分编译(分析和综合);

② 产生功能仿真所需要的网表文件;

③ 建立输入信号的激励波形文件。

时序仿真(timing simulation)是在布局布线完成后,根据信号传输的实际延
迟时间进行的逻辑功能测试,并分析逻辑设计在目标器件中最差情况下的时序关
系,它和器件的实际工作情况基本一致,因此时序仿真对整个设计项目的时序关
系以及性能评估是非常必要的。

(6)器件编程:将编译得到的编程数据文件下载到目标器件中,使该可编程器
件能够完成预定的功能,成为一个专用的集成电路芯片。

编程数据是在计算机上编程软件的控制下,由下载电缆传到 FPGA 器件的编


程接口,然后再对器件内部的逻辑单元进行配置。常用的下载电缆有:USB-
Blaster、ByteBlaster II 和 Ethernet Blaster 等,USB-Blaster 使用计算机的 USB 口,
ByteBlaster II 使用计算机的并行口,Ethernet Blaster 使用计算机的以太网口,在
使用之前,都需要安装驱动程序。

2.5 基于 Verilog HDL 的电路设计与实现

本节以 3/8 译码器为例,通过拨动 4 个 switch 开关(1 个使能,三个输入),


点亮正确译码后对应的 led 灯,介绍使用 Verilog HDL 的电路设计与实现。介绍
时,说明每个步骤涉及到的基本知识,然后给出具体的操作步骤。

2.5.1 电路分析

将 DE2-115 开发板上的 Switch 开关、LED 灯与 3/8 译码器模块连接,如图


2.5.1 所示。

图 2.5.1

2.5.2 开始

在 Quartus Prime 软件中设计的每个电路或者子电路都叫做工程(Project)。


Quartus Prime 软件每次只能打开一个工程,并且同一个工程的所有信息都必须保
存在同一个文件夹(folder)。为了开始新设计,第一步就是新建一个文件夹,将
来所有与此设计相关的文件和数据都保存在文件夹。为了保存本文档的设计工程,
新建文件夹 F:\Lab_exercise,所有的项目都保存在 Lab_exercise 中,然后在
Lab_exercise 中建立 decoder3_8 文件夹,包含 prj(保存工程文件)和 src(保存
代码文件)子文件夹。如图 2.5.2 所示。

图 2.5.2

启动 Quartus Prime 软件,会打开如图 2.5.3 所示的启动画面。该启动画面包


含了使用 Quartus Prime 软件所需要的几个窗口,用户可以通过鼠标在窗口中选
择想要执行的功能。

图 2.5.3

Quartus Prime 软件提供的绝大多数命令都可以通过选择位于标题栏下面的


一系列菜单命令来完成。例如,在 Quartus Prime 软件的菜单 File 单击鼠标左键,
打开如图 2.5.4 所示的文件菜单。在弹出的 File 菜单上单击 Exit 菜单项,这样可
退出 Quartus Prime 软件。一般情况下,无论任何时候使用鼠标选择时,都是使
用鼠标左键。因此,通常情况下我们不再明确指出使用鼠标的哪个键。少数情况
下,当有必要使用鼠标右键时,我们才明确指出。

图 2.5.4

对于有些命令,需要按顺序访问几个菜单命令才可以。本书使用符号

Menu1->Menu2->Item 表示使用鼠标左键先点击菜单 Menu1,然后在弹出的

菜单中鼠标左键点击菜单 Menu2,然后在弹出的菜单中鼠标单击 Item 项。例

如,File->Exit 表示使用鼠标命令退出 Quartus Prime 软件。许多的命令

也可以通过鼠标点击工具栏上相应的图标来完成。将鼠标放到工具栏相应的图标
上,与图标相对应的命令会显示出来。

注意:Quartus Prime 软件提供了大量的在线帮助文档,帮您解决使用


Quartus Prime 软件过程中遇到的许多问题。这些文档可以通过 Help 窗口中

菜单访问。

2.5.3 新建工程

Quartus Prime 中所有的设计都必须通过工程进行管理。为此,首先新建一个


设计工程。通过 Quartus Prime 提供的 New Project Wizard 向导,用户可以非常容
易的新建 Quartus Prime 工程。具体步骤如下:

1.选择菜单命令 File>New Project Wizard,弹出图 2.5.5 所示对话框,如果选中


Don't show me this introduction again,那么下一次新建工程时,可以不再显示本
对话框。

图 2.5.5

2.点击 Next 按钮,显示图 2.5.6 所示窗口。


图 2.5.6

在图 2.5.6 所示的对话框中,首先,需要设定工程所在的工作目录,我们选
择工程目录 F:\Lab_exercise\decoder3_8\prj,当然也可以选择其它的文件夹作为工
作目录。其次,每个工程必须有一个名字。最后,设定顶层模块名,默认情况下,
顶层模块名与工程名一致,一般不需要修改。如图 2.5.6 所示,我们选择
decoder3_8 作 为 工 程 名 和 顶 层 模 块 名 。 单 击 Next 。 如 果 事 先 还 没 有 创 建
decoder3_8 文件夹,Quartus Prime 会弹出一个对话框,询问是否新建 decoder3_8
文件夹,点击 Yes。打开图 2.5.7 所示的窗口。
图 2.5.7

3.在工程类型界面,如图 2.5.7 所示,您可以选择“Empty project”或者“Project


template”选项。在这个例程中,我们选择“Empty project”选项,单击 Next,将
会引出图 2.5.8 所示的窗口。

图 2.5.8
如果有些设计文件已经存在,你可以在这一步将这些文件加入到工程中。因
为我们没有任何已经设计好的文件,点击 Next,将会打开如图 2.5.9 所示的画面。

图 2.5.9

4.图 2.5.9 所示的对话框提示用户为该项目设计选择合适的器件。用户只需在


器件列表(Available Device)中,选择合适的器件即可。或者,通过选择器件的
Family,引脚数(Pin Count)以及速度等级(Speed grade)可以简化器件选择过
程。以 DE2-115 开发板为例,我们使用的 FPGA 的型号是 EP4CE115F29C7N(最
后 的 N 表 示 无 铅 封 装 , 我 们 选 择 EP4CE115F29C7 即 可 )。 通 过 选 择
Famliy->Cyclone IV E,Package->FBGA,Pin count->780,Core speed grade->7 可
以快速查找到对应芯片型号,选中 EP4CE115F29C7,对应行变成蓝色。然后点
击 next,出现如图 2.5.10 所示窗口。
图 2.5.10

5.图 2.5.10 所示的对话框,容许用户指定第三方 EDA 工具。第三方工具指由

Intel 以外的一些其他公司开发的 FPGA 设计工具。本节目的是介绍 Quartus

Prime 软件的基本使用,所以,我们不选择其它的工具。选择 Next,如图 2.5.11

所示。
图 2.5.11

6.图 2.5.11 给出对整个项目的总结(summary),确认无误后,点击 Finish 按

钮 , 返 回 到 Quartus Prime 主 窗 口 。 在 标 题 栏 中 显 示 的 工 程 名 称 为

decoder3_8,如图 2.5.12 所示。


图 2.5.12

2.5.4 使用 Verilog 作为设计输入

在第一章的文档里已经给出了 3/8 译码器的 Verilog 代码,也对 3/8 译码器进


行了功能仿真。3/8 译码器的 Verilog 代码如下所示:

//decoder3_8.v

module decoder3_8(

input [ 2: 0] a, //input 3 bits signal

input en, //enable signal

output reg [ 7: 0] Y //output 8 bits signal

);

/* always @(*)语句的意思是 always 模块中的任何一个输入信号或电平发生


变化时,

该语句下方的模块将被执行。

always 块中赋值用 '<=' */


always @(*)begin

if(en)begin

case(a[2:0])//decoder3_8

3'b000: Y <= 8'b1111_1110;

3'b001: Y <= 8'b1111_1101;

3'b010: Y <= 8'b1111_1011;

3'b011: Y <= 8'b1111_0111;

3'b100: Y <= 8'b1110_1111;

3'b101: Y <= 8'b1101_1111;

3'b110: Y <= 8'b1011_1111;

3'b111: Y <= 8'b0111_1111;

default:Y <= 8'b1111_1111;

endcase

end

else begin//en = 0 时,输出恒为 8'b1111_1111

Y <= 8'b1111_1111;

end

end

endmodule
2.5.5 使用 Quartus Prime 文本编辑器

本节介绍如何使用 Quartus Prime 文本编辑器。如果使用其它的文本编辑器


新建 Verilog HDL 源文件,可以跳过此节。

选择 File>New ,打开图 2.5.13 所示 New 对话框。选择 Verilog HDL 文件


类型,点击 OK。打开 Quartus Prime 文本编辑器窗口。

图 2.5.13

将 2.5.3 节中的 3/8 译码器的 Verilog 代码复制到文本编辑器中,如图 2.5.14


所示。
图 2.5.14

选择 File->Save As 或者按快捷键 Ctrl+s 打开图 2.5.15 所示的对话框。将目


录定位到事先创建的 src 文件夹中,然后在 Save as type 中选择 Verilog HDL File,
在 File name 中填写 decoder3_8,并且勾选 Add file to current project,最后点击保
存 , 这 样 文 件 就 会 保 存 在 F:\Lab_exercise\decoder3_8\src 文 件 夹 中 。

图 2.5.15
2.5.6 在项目中加入设计文件

如果使用 Quartus Prime 文本编辑器新建 Verilog HDL 文件,并且勾了 Add


file to current project 复选框,那么 decoder3_8.v 已经是 project 的一部分了。但
是如果开发人员在使用 Quartus 软件进行开发前,已经将设计文件编辑好,此时
我们建立工程后,就需要将设计文件加入到工程内。

新建工程时,可以通过勾选复选框的方式来指定哪个设计文件被包含在该
工程中。为了检查哪个文件包含在目前的项目中,选择 Assignment>Setting,
打开图 2.5.16 所示对话框,在左侧 Category 中选择 File 选项。选择
Project>Add/Remove Files in Project 也可以打开此对话框。

图 2.5.16

然后点击 选择设计文件,然后点击 Apply,最后点击 OK 即可,如图 2.5.17 所


示。
图 2.5.17

2.5.7 编译设计电路

Quartus Prime 的编译过程需要经过几个步骤,分别由 Quartus Prime 的不


同工具处理。首先,Analysis&Synthesis 工具分析代码是否包含语法错误,如
果没有语法错误执行综合过程,获得描述的电路网表。其次 Fitter 工具根据综
合得到的电路网表,采用 FPGA 器件内部合适的逻辑资源实现该电路 Assembler
工具根据以上结果产生配置文件,Class Timing Analyzer 工具完成初步的时
序分析工具。这些工具由 Quartus Prime 的编译器所控制。通过选择

Processing>Start Compilation 运行编译器,或者点击工具栏 图标。

随着编译的进行,Quartus Prime 软件主窗口的左侧会显示编译的进度。如果


编译成功,会弹出一个对话框请求确认,点击 OK 。在 Quartus Prime 窗口的
底部 message 窗口,会显示在编译过程中的各种信息。如果编译过程中有错误
出现,都会有相应的错误信息给出。编译结束后,Quartus Prime 会给出编译
报告。显示编译报告的窗口会自动弹出,如图 2.5.18 所示。窗口可以以正常
的方式改变大小、最大化或者关闭,可以通过 Processing>Compilation

Report 或者点击 图标随时打开编译报告。如图 2.5.18 所示,本工程使用了

8 个 LE 和 12 个引脚。

图 2.5.18

2.5.8 引脚分配

在编译过程中,Quartus Prime 软件自由选择 FPGA 器件的引脚作为电路的


输入和输出。然而,我们的开发板的 FPGA 与其他的器件(拨动开关、LED 等
等)的连接是固定的。如果我们希望使用开发板上的拨动开关作为我们电路的外
部输入,则必须将电路的外部输入分配给拨动开关对应的引脚。

在 3/8 译码器实验中,我们选用四个拨动开关(SW3、SW2、SW1、SW0)
作为输入,选用 8 个 LED(LEDG7、LEDG6、LEDG5、LEDG4、LEDG3、LEDG2、
LEDG1、LEDG0)作为输出显示。查看 DE2_115_User_manual.pdf,查找各个拨
动开关和 LED 灯与 FPGA 相连的引脚。在用户手册第 36 页,显示了 Switch 的
引脚分配,如图 2.5.19 所示。
图 2.5.19

同样的,在第 37 页显示了 LEDG 的引脚分配,如图 2.5.20 所示。

图 2.5.20

接下来介绍两个引脚分配的方式:

1.在 Quaruts 软件页面中,点击快捷工具栏中的 ,或者点击菜单栏中的

Assignments->Pin Planner。出现如图 2.5.21 所示引脚分配界面。


图 2.5.21

在 Location 一栏中,针对每一个节点,输入对应引脚编号。

2.开发板的引脚分配是确定的。用户在完成一个设计以后,在进行以后的项目
开发时,往往希望使用相同的引脚分配。如果在你的项目中使用很多的引脚,按
照上述的方式进行引脚分配会变得非常麻烦,Quartus Prime 软件允许用户导入和
导出一个特定格式的引脚分配文件,通过使用该文件用户不必每次都使用
Assignment Editor 进行引脚分配。

在 src 文件夹中新建一个名为 Pin 的 txt 文本文件,输入如图 2.5.22 所示内


容。其中第一行:to , location 是固定内容,是分配引脚的格式。接下来的
几行就是引脚分配的内容。

注意:逗号是半角符号。
图 2.5.22

编写好引脚分配文件之后,点击菜单栏中 Assignments->Import Assignments,

出现如图 2.5.23 所示页面,然后点击 ,选择对应文件夹的的 Pin.txt 文件,再


点击 OK。

图 2.5.23

导入引脚分配文件之后,可以在快捷工具栏中,点击 ,或者在菜单栏中

点击 Assignments->Assignment Editor,会弹出如图 2.5.24 所示窗口。


图 2.5.24

再次检查引脚分配是否正确,如果引脚分配不正确或者忘记分配某些引脚,
可以重新修改引脚分配文件再次导入即可。

2.5.9 未使用引脚配置

在使用 Altera FPGA 过程中,未使用引脚的配置是很重要的。一般未用引脚


设 置 成 三 态 输 入 。 利 用 Quartus II 将 未 使 用 引 脚 设 置 为 三 态 输 入 。 选 择
Assignments->Device,弹出来 Device 窗口,如图 2.5.25 所示。

图 2.5.25
点击 Devices and Pin Options,打开一个选项卡,选项卡中选择 Unused Pins
就可以对未定义的引脚配置成 As input tri-stated,然后点击 OK,如图 2.5.26 所
示。

图 2.5.26

配置完成以后,再次编译工程。

2.5.10 编程和配置 FPGA 器件

设计好的电路需要通过 FPGA 器件实现,这一过程叫做编程(Programme)


或者配置(configuration)。下载到 FPGA 器件所需的配置文件由 Quartus Prime 软
件 Compiler’s Assembler 工具产生。Intel 公司的 DE 系列的板卡或实验箱支持两
种不同的配置过程,一种叫做 JTAG 模式,一种叫做 AS 模式。配置文件通过一
根一端连接在主机(Host Computer)的 USB 端口,另一端连接在 DE-115 开发板的
USB 电缆,从主机下载到 DE-115 开发板。为了使数据下载正确进行,主机上必
须装有 USB-Blaster 驱动程序。正确安装 USB-Blaster 驱动程序后,在正式下载
配置文件到开发板之前,确认(1)USB 电缆已经正确连接;(2)开发板或者实验箱
的电源开关已经打开。

JTAG 下载模式将配置数据直接下载到 FPGA 器件内部。JTAG 是 Joint Test


Action Group 的缩写。该组织定义了测试数字电路以及将数据下载数字电路的标
准方式,而且已经被 IEEE 采纳为正式标准。以 JTAG 方式配置 FPGA 器件,配
置数据会一直保持数据直到系统掉电,配置数据在系统掉电后丢失。开发板支持
的第二种配置模式叫做主动串行(ActiveSerial,AS)模式。在这种配置模式下,除了
FPGA 器件,还额外需要一块带有一些 Flash 存储器的配置芯片来存储配置数据。
Quartus Prime 软件将数据下载到开发板的配置器件上。然后,当系统重新上电或
者重新配置时,配置器件内的配置数据会自动地下载到开发板的配置器件上,这
样 FPGA 器件不需要在系统掉电后每次都由 Quartus Prime 软件来编程,通过改变
开发板上的 RUNPROG 开关的位置在两种编程模式之间进行切换。开关扳到
RUN 位置,选择 JTAG 模式,而当开关扳到 PROG 位置,选择的则是 AS 模式。
本节仅讨论 JTAG 编程模式。

1.使用 JTAG 模式对 DE2-115 开发板编程和配置

对于 DE2-115 板,JTAG 模式可以按照以下步骤进行。首先拨动 RUN/PROG 开

关到 RUN 位置。 在 Quartus Prime 的快捷工具栏中点击 ,或者在菜单栏中选

择 Tools -> Programmer 命令,弹出如图 2.5.27 中的窗口。

如果编程模式 Mode 选择框中默认不是 JTAG 模式,可在“Mode”框中选择


JTAG。 同样,如果在 Hardware Setup 选择框中默认情况下未选择 USB-Blaster,
按 Hardware Setup ...按钮,在弹出的窗口中选择 USB-Blaster 作为编程使用的硬
件,如图 2.5.28 所示。
图 2.5.27

图 2.5.28
通常情况下,编程文件 decoder3_8.sof 文件会被自动列出,如图 2.5.27 所示。
如果该文件尚未被列出,选择“Add File”,然后选择 decoder3_8.sof 文件。 该文
件 的 地 址 在 F:\Lab_exercise\decoder3_8\prj\output_files 中 ( 工 程 目 录 下 的
output_files)。

decoder3_8.sof 文件是由 Compiler’s Assembler 模块产生,其中包含了对


FPGA 器件进行配置所必须的数据。 扩展名.sof 代表该文件是用于 SRAM 类型
的器件配置,即 JTAG 下载模式所需选择的文件类型。 确保勾选 Program /
Configure 复选框,如图 2.5.27 所示。

现在,点击图 2.5.29 中的 Start 按钮。如果配置数据被成功下载到电路板上,


在进度条 Progress 会 如果 Quartus Prime 软件报告的错误,则表明下载失败。

注意:下载前必须确保电路板的电源已经打开。

图 2.5.29

2.5.11 测试设计的电路
程序烧写完成以后,在开发板上就可以观察实验现象。

如图 2.5.30 所示,SW3 往上拨动代表 en 使能信号为 1,SW2 往下拨动(a[2]


为 0),SW1、SW0 往上拨动(a[1]、a[0]为 1),即输入 a[2:0] = 3’b011,译码结
果应该是 Y[7:0] = 8‘b1111_0111。观察到 LED 灯从右往左数第 4 个是灭的,其余
7 个都是亮的,所以实验结果符合实验预期。可以根据 3/8 译码器真值表试着拨
动 Switch,让输入处于不同的状态,观察 LED 灯亮灭情况。

如果要在设计的电路中进行更改,请先关闭 Programmer 窗口,在 Verilog 设


计文件中,做出所需的修改,然后编译电路以及对电路板进行编程。

图 2.5.30
第三讲 基于 Verilog HDL 和 Quartus
Prime17.1 的电路设计与实现
学习目标:
通过下面几个实验,掌握基于 Verilog HDL 和 Quartus Prime17.1 的电路设计
与实现。
① 3/8 译码器 => 扩展成 4/16 译码器
② 4 位二进制计数器 => 用 LED 显示
③ 流水灯(组合上面两个模块)
④ 流水灯(移位寄存器流水灯)
⑤ 组合上面两种流水灯(增加 2 选 1 模块)

1. 3/8 译码器扩展成 4/16 译码器

1.1 3/8 译码器

回顾之前的 3/8 译码器模块,3/8 译码器模块如图 1.1 所示。

enable

out_data[7:0]
decoder3_8
模块
in_data[2:0]

图 1.1 3/8 译码器模块

3/8 译码器的 Verilog 代码如下所示:


//文件名: decoder3_8.v
module decoder3_8(
input [ 2: 0] in_data, //3 位信号输入
input enable, //使能信号输入
output reg [ 7: 0] out_data //8 位译码信号输出
);

/* always @(*)语句的意思是 always 模块中的任何一个输入信号或电平发生变化时,


该语句下方的模块将被执行,即所有输入信号都被视为敏感变量。
*/
//out_data: 3/8 译码器译码输出
always @(*)begin
if(enable)begin
case(in_data[2:0]) //enable = 1 时,对 in_data 进行译码,输出
out_data
3'b000: out_data = 8'b0000_0001;
3'b001: out_data = 8'b0000_0010;
3'b010: out_data = 8'b0000_0100;
3'b011: out_data = 8'b0000_1000;
3'b100: out_data = 8'b0001_0000;
3'b101: out_data = 8'b0010_0000;
3'b110: out_data = 8'b0100_0000;
3'b111: out_data = 8'b1000_0000;
default:out_data = 8'b0000_0000;
endcase
end
else begin //enable = 0 时,输出恒为 8'b0000_0000
out_data = 8'b0000_0000;
end
end

endmodule

1.2 4/16 译码器

4/16 译码器真值表如表 1-1 所示。


表 1-1 4/16 译码器真值表
en a[3] a[2] a[1] a[0] Y[15] Y[14] Y[13] Y[12] Y[11] Y[10] Y[9] Y[8] Y[7] Y[6] Y[5] Y[4] Y[3] Y[2] Y[1] Y[0]

1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1

1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1

1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1

1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1

1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1

1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1

1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1

1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1

1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1

1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1

1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1

1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1

1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 x x x x 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

分析 4/16 译码器真值表可以发现:
当使能信号 en 为 1 且 a[3] = 0 时,对于相同的输入 a[2:0],4/16 译码器的输
出 Y[7:0]跟 3/8 译码器输出 Y[7:0]一致;
当使能信号 en 为 1 且 a[3] = 1 时,对于相同的输入 a[2:0],4/16 译码器的输
出 Y[15:8]跟 3/8 译码器输出 Y[7:0]一致;
当使能信号 en = 0 时,4/16 译码器输出 Y[15:0]全为 1。
这样,我们在编写 Verilog 代码时,在 4/16 译码器模块中调用两个 3/8 译码
器模块;两个 3/8 译码器模块的 3 位输入信号为 4/16 译码器 4 位输入信号的低 3
位;4/16 译码器模块的 16 位输出由两个 3/8 译码器模块的 8 位输出组合得到;
高 8 位译码输出的 3/8 译码器模块的使能信号由 4/16 译码器模块的使能信号和
输入最高位相与得到;低 8 位译码输出的 3/8 译码器模块的使能信号由 4/16 译
码器模块的使能信号和反向后的输入最高位相与得到。
4/16 译码器模块电路框图如图 1.2 所示。
decoder4_16模块

enable
out_data[15:8]
out_data[7:0]

enable decoder3_8
模块

in_data[2:0]

out_data[15:0]

enable
out_data[7:0]
out_data[7:0]

in_data[3] decoder3_8
模块
in_data[3:0]
in_data[2:0]
in_data[2:0]

图 1.2 4/16 译码器模块电路框图


下面是 4/16 译码器的 Verilog 示例代码:
4/16 译码器模块有 4 位待译码输入信号、1 位使能信号输入和 16 位译码信
号输出。
//文件名:decoder4_16.v
module decoder4_16(
input [ 3: 0] in_data, //4 位信号输入
input enable, //使能信号输入
output wire [15: 0] out_data //16 位译码信号输出
);

//定义两个 3/8 译码器的线型变量


wire enable0;
wire enable1;

//连续赋值语句
//当 enable = 1 且 a[3] = 0 时,enable0 = 1,否则为 0
//当 enable = 1 且 a[3] = 1 时,enable1 = 1,否则为 0
assign enable0 = enable && (~in_data[3]);
assign enable1 = enable && (in_data[3]);

//模块例化
//低八位
decoder3_8 decoder3_8_inst0(
.in_data(in_data[2:0]),
.enable(enable0),
.out_data(out_data[7:0])
);

//高八位
decoder3_8 decoder3_8_inst1(
.in_data(in_data[2:0]),
.enable(enable1),
.out_data(out_data[15:8])
);

endmodule
然后就可以按照第二讲的内容,使用 Quartus 软件对 4/16 译码器模块代码进
行编译综合、布局布线,然后将编译生成的.sof 文件下载到我们的开发板中。
注意:需要添加 decoder3_8.v 文件。
可以自行选定要绑定的引脚,下面给出一个示例。
将 4/16 译码器模块的使能信号 enable 与 DE2-115 开发板中拨动开关 SW[4]
绑定;
4 位待译码输入 in_data[3:0]与 DE2-115 开发板中拨动开关 SW[3:0]绑定;
将 16 位译码输出 out_data[15:0]与 DE2-115 开发板中 LEDR[15:0]绑定。
下面是引脚分配文件:
to , location
enable , PIN_AB27
in_data[3] , PIN_AD27
in_data[2] , PIN_AC27
in_data[1] , PIN_AC28
in_data[0] , PIN_AB28
out_data[15] , PIN_G15
out_data[14] , PIN_F15
out_data[13] , PIN_H17
out_data[12] , PIN_J16
out_data[11] , PIN_H16
out_data[10] , PIN_J15
out_data[9] , PIN_G17
out_data[8] , PIN_J17
out_data[7] , PIN_H19
out_data[6] , PIN_J19
out_data[5] , PIN_E18
out_data[4] , PIN_F18
out_data[3] , PIN_F21
out_data[2] , PIN_E19
out_data[1] , PIN_F19
out_data[0] , PIN_G19
使用 Quartus Prime17.1 软件设计开发请参照第二讲内容。

2. 4 位二进制计数器

本节需要设计一个 4 位二进制计数器,实现十进制 0~15 的自动循环计数。


计数过程为:0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-0-1-2…依次循环,计数变化
时间为 1 秒钟,通过一个拨动开关控制计数器停止和启动,并且在开发板上的
LED 上显示。
我们需要用到 DE2-115 开发板外部振荡器产生的 50MHz 时钟。
4 位二进制计数器模块设计思路如下:
① 通过外部 50MHz 时钟分频产生 1Hz 的时钟信号;
② 以 1Hz 的时钟信号作为敏感变量,编写时序逻辑代码,对 4 位二进制
计数器进行计数。
下面是 4 位二进制计数器的 Verilog 示例代码:
4 位二进制计数器有一个时钟输入、一个低电平复位信号输入、计数器停止
信号输入以及 4 位计数器输出。
//文件名:counter16.v
module counter16(
input clk_50m, //输入 50MHz 时钟
input rst_n, //输入低电平复位信号
input cnt_stop, //输入计数器停止信号
output reg [ 3: 0] cnt_led //输出 4 位计数器输出
);

//变量声明
reg [24:0] cnt_50m ; //50M 时钟计数,注意位宽为
25 位
reg clk_1hz ; //1Hz 时钟
//cnt_50m:50M 时钟计数
//clk_50m 上升沿作为敏感变量
always @(posedge clk_50m or negedge rst_n)begin
if(!rst_n)begin
cnt_50m <= 25'd0;
end
else if(cnt_50m == 25'd24_999_999)begin //计数到
25‘d24_999_999 时复位到 0
cnt_50m <= 25'd0;
end
else begin
cnt_50m <= cnt_50m + 1'd1; //否则计数加 1
end
end

//clk_1hz:1Hz 时钟
always @(posedge clk_50m or negedge rst_n)begin
if(!rst_n)begin
clk_1hz <= 1'b0;
end
else if(cnt_50m == 25'd24999999)begin //当 cnt_50m ==
25'd24999999 时,clk_1hz 反向,产生 1Hz 的时钟信号
clk_1hz <= ~clk_1hz;
end
end

//cnt_led:4 位计数器输出
//clk_1hz 作为敏感变量,计数每次变化时间为 1 秒
always @(posedge clk_1hz or negedge rst_n)begin
if(!rst_n)begin
cnt_led <= 4'd0;
end
else if(cnt_stop)begin
cnt_led <= cnt_led; //当停止信号为 1 时,计数不

end
else if(cnt_led == 4'd15)begin //当 cnt_led == 4'd15
时,复位到 0
cnt_led <= 4'd0;
end
else begin
cnt_led <= cnt_led + 1'd1; //否则计数加 1
end
end

endmodule

然后就可以按照第二讲的内容,使用 Quartus 软件对 4 位二进制计数器模块


代码进行编译综合、布局布线,然后将编译生成的.sof 文件下载到我们的开发板
中。
可以自行选定要绑定的引脚,下面给出一个示例。
将 4 位二进制计数器的时钟 clk_50m 与 DE2-115 开发板中振荡器输出
clock_50(PIN_Y2)绑定;
将低电平复位信号 rst_n 与 DE2-115 开发板中的拨动开关 SW[17]绑定;
将计数器停止信号 cnt_stop 与 DE2-115 开发板中的拨动开关 SW[16]绑定;
将 4 位二进制计数输出 cnt_led[3:0]与 DE2-115 开发板中 LEDG[3:0]绑定。
下面是引脚分配文件:
to , location
clk_50m , PIN_Y2
rst_n , PIN_Y23
cnt_stop , PIN_Y24

cnt_led[3] , PIN_E24
cnt_led[2] , PIN_E25
cnt_led[1] , PIN_E22
cnt_led[0] , PIN_E21
使用 Quartus Prime17.1 软件设计开发请参照第二讲内容。

3. 计数器实现流水灯

本节需要组合第 1 节的 4/16 译码器模块和第 2 节的 4 位二进制计数器模块,


完成一个以计数器实现的流水灯实验,通过一个拨动开关控制流水灯暂停和运行,
并且在开发板上的 LED 上显示。
计数器实现流水灯模块的设计思路如下:
① 将外部 50MHz 时钟输入到 4 位二进制计数器模块中,产生自动循环 4 位
二进制计数器;
② 将上述产生的自动循环 4 位二进制计数器与 4/16 译码器模块对应信号
进行连接,输出 16 位译码信号;
③ 将外部低电平复位信号与 4 位二进制计数器模块的低电平复位信号和
4/16 译码器模块的使能信号连接;
④ 将外部流水灯暂停信号与 4 位二进制计数器模块的计数器停止信号连接。
下面是计数器实现流水灯的 Verilog 示例代码:
计数器实现流水灯模块有一个时钟输入、一个低电平复位信号输入、流水灯
暂停信号输入以及 16 位流水灯信号输出。
//文件名:flow_led_counter16.v
module flow_led_counter16(
input clk_50m, //输入 50MHz 时钟
input rst_n, //输入低电平复位信号
input flow_led_stop, //输入流水灯暂停信号
output wire [15: 0] flow_led //输出 16 位流水灯信号
);

//定义线型变量
wire [ 3: 0] cnt_led;

//例化 4 位二进制计数器模块
counter16 counter16_inst(
.clk_50m(clk_50m), //输入 50M 时钟
.rst_n(rst_n), //低电平复位信号
.cnt_stop(flow_led_stop), //输入计数器停止信号
.cnt_led(cnt_led) //4 位计数器输出
);

//例化 4/16 译码器模块


decoder4_16 decoder4_16_inst(
.in_data(cnt_led), //4 位信号输入
.enable(rst_n), //使能信号输入
.out_data(flow_led) //16 位译码信号输出
);

endmodule
然后就可以按照第二讲的内容,使用 Quartus 软件对计数器流水灯模块代码
进行编译综合、布局布线,然后将编译生成的.sof 文件下载到我们的开发板中。
注意:需要添加 counter16.v、decoder4_16.v 和 decoder3_8.v 文件。
可以自行选定要绑定的引脚,下面给出一个示例。
将 4 位二进制计数器的时钟 clk_50m 与 DE2-115 开发板中振荡器输出
clock_50(PIN_Y2)绑定;
将低电平复位信号 rst_n 与 DE2-115 开发板中的拨动开关 SW[17]绑定;
将流水灯暂停信号 flow_led_stop 与 DE2-115 开发板中的拨动开关 SW[16]绑
定;
将 16 位流水灯输出 flow_led [15:0]与 DE2-115 开发板中 LEDR[15:0]绑定。
下面是引脚分配文件:
to , location
clk_50m , PIN_Y2
rst_n , PIN_Y23
flow_led_stop , PIN_Y24

flow_led[15] , PIN_G15
flow_led[14] , PIN_F15
flow_led[13] , PIN_H17
flow_led[12] , PIN_J16
flow_led[11] , PIN_H16
flow_led[10] , PIN_J15
flow_led[9] , PIN_G17
flow_led[8] , PIN_J17
flow_led[7] , PIN_H19
flow_led[6] , PIN_J19
flow_led[5] , PIN_E18
flow_led[4] , PIN_F18
flow_led[3] , PIN_F21
flow_led[2] , PIN_E19
flow_led[1] , PIN_F19
flow_led[0] , PIN_G19
使用 Quartus Prime17.1 软件设计开发请参照第二讲内容。

4. 移位寄存器实现流水灯

本节需要通过移位寄存器实现流水灯,通过一个拨动开关控制流水灯暂停和
运行,并且在开发板上的 LED 上显示。
移位寄存器实现实现流水灯模块的设计思路如下:
① 将外部 50MHz 时钟分频产生 1Hz 时钟信号;
② 以 1Hz 的时钟信号作为敏感变量,编写时序逻辑代码,通过左移移位寄
存器(也可以使用右移移位寄存器)实现流水灯。
移位寄存器实现流水灯模块有一个时钟输入、一个低电平复位信号输入、流
水灯暂停信号输入以及 16 位流水灯信号输出。
//文件名:flow_led_shift_register.v
module flow_led_shift_register(
input clk_50m, //输入 50MHz 系统时钟
input rst_n, //输入低电平复位信号
input flow_led_stop, //输入流水灯暂停信号
output reg [15: 0] flow_led //16 位流水灯输出信号
);

//变量声明
reg [24:0] cnt_50m; //50M 时钟计数,注意位宽为
25 位
reg clk_1hz; //1Hz 时钟

//cnt_50m:50M 时钟计数
//clk_50m 上升沿作为敏感变量
always @(posedge clk_50m or negedge rst_n)begin
if(!rst_n)begin
cnt_50m <= 25'd0;
end
else if(cnt_50m == 25'd24_999_999)begin //计数到
25‘d24_999_999 时复位到 0
cnt_50m <= 25'd0;
end
else begin
cnt_50m <= cnt_50m + 1'd1; //否则计数加 1
end
end

//clk_1hz:1Hz 时钟
always @(posedge clk_50m or negedge rst_n)begin
if(!rst_n)begin
clk_1hz <= 1'b0;
end
else if(cnt_50m == 25'd24999999)begin //当 cnt_50m ==
25'd24999999 时,clk_1hz 反向,产生 1Hz 的时钟信号
clk_1hz <= ~clk_1hz;
end
end

//flow_led:移位寄存器实现的 16 位流水灯
always @(posedge clk_1hz or negedge rst_n)begin
if(!rst_n)begin
flow_led <= 16'h0001; //flow_led 复位
end
else if(flow_led_stop)begin
flow_led <= flow_led; //flow_led 保持不变,即流
水灯暂停
end
else begin
flow_led <= {flow_led[14:0], flow_led[15]}; //左移移位寄存器实现
16 位流水灯
end
end

endmodule
然后就可以按照第二讲的内容,使用 Quartus 软件对移位寄存器流水灯模块
代码进行编译综合、布局布线,然后将编译生成的.sof 文件下载到我们的开发板
中。
引脚绑定跟第 3 节计数器实现流水灯模块的引脚绑定一样。
使用 Quartus Prime17.1 软件设计开发请参照第二讲内容。
5. 组合流水灯

本节需要组合第 3 节计数器实现流水灯模块和第 4 节移位寄存器实现流水


灯模块,增加一个 2 选 1 模块,通过一个拨动开关,改变流水灯的实现方式,并
且通过另一个拨动开关控制流水灯暂停和运行,然后在开发板上的 LED 上显示。
组合流水灯模块的设计思路如下:
① 调用计数器实现流水灯模块,产生流水灯输出;
② 调用移位寄存器实现流水灯模块,产生流水灯输出;
③ 通过判断拨动开关状态,选择对应流水灯输出。
下面是组合流水灯的 Verilog 示例代码:
组合流水灯模块有一个时钟输入,一个低电平复位信号输入、流水灯暂停信
号输入、流水灯选择信号输入以及 16 位流水灯信号输出。
//文件名:flow_led_combine.v
module flow_led_combine(
input clk_50m, //输入 50MHz 系统时钟
input rst_n, //输入低电平复位信号
input flow_led_stop, //输入流水灯暂停信号
input sw_change, //2 选 1 选择信号
output wire [15: 0] flow_led //16 位流水灯输出信号
);

//定义线型变量
wire [15: 0] flow_led_cnt; //计数器实现流水灯模块输出
wire [15: 0] flow_led_shift_reg; //移位寄存器实现流水灯模块输

//sw_change = 1 时,选择 flow_led_cnt 输出,否则选择 flow_led_shift_reg 输出


assign flow_led = sw_change ? flow_led_cnt : flow_led_shift_reg;

//计数器实现流水灯模块例化
flow_led_counter16 flow_led_counter16_inst(
.clk_50m(clk_50m), //输入 50MHz 系统时钟
.rst_n(rst_n), //输入低电平复位信号
.flow_led_stop(flow_led_stop), //输入流水灯暂停信号
.flow_led(flow_led_cnt) //输出 16 位流水灯
);

//移位寄存器实现流水灯模块例化
flow_led_shift_register(
.clk_50m(clk_50m), //输入 50MHz 系统时钟
.rst_n(rst_n), //输入低电平复位信号
.flow_led_stop(flow_led_stop), //输入流水灯暂停信号
.flow_led(flow_led_shift_reg) //16 位流水灯输出信号
);
endmodule
然后就可以按照第二讲的内容,使用 Quartus 软件对组合流水灯模块代码进
行编译综合、布局布线,然后将编译生成的.sof 文件下载到我们的开发板中。
注意:需要添加 flow_led_counter16.v、flow_led_shift_register.v、counter16.v、
decoder4_16.v 和 decoder3_8.v 文件。
可以自行选定要绑定的引脚,下面给出一个示例。
将 4 位二进制计数器的时钟 clk_50m 与 DE2-115 开发板中振荡器输出
clock_50(PIN_Y2)绑定;
将低电平复位信号 rst_n 与 DE2-115 开发板中的拨动开关 SW[17]绑定;
将流水灯暂停信号 flow_led_stop 与 DE2-115 开发板中的拨动开关 SW[16]绑
定;
将流水灯选择信号 sw_change 与 DE2-115 开发板中的拨动开关 SW[15]绑定;
将 16 位流水灯输出 flow_led [15:0]与 DE2-115 开发板中 LEDR[15:0]绑定。
下面是引脚分配文件:
to , location
clk_50m , PIN_Y2
rst_n , PIN_Y23
flow_led_stop , PIN_Y24
sw_change , PIN_AA22

flow_led[15] , PIN_G15
flow_led[14] , PIN_F15
flow_led[13] , PIN_H17
flow_led[12] , PIN_J16
flow_led[11] , PIN_H16
flow_led[10] , PIN_J15
flow_led[9] , PIN_G17
flow_led[8] , PIN_J17
flow_led[7] , PIN_H19
flow_led[6] , PIN_J19
flow_led[5] , PIN_E18
flow_led[4] , PIN_F18
flow_led[3] , PIN_F21
flow_led[2] , PIN_E19
flow_led[1] , PIN_F19
flow_led[0] , PIN_G19
使用 Quartus Prime17.1 软件设计开发请参照第二讲内容。
注意:由于两种方式实现的流水灯都是从右往左依次变化一位,所以有时候
在拨动选择开关时,不能观察知道现在是哪种方式实现的流水灯。此时可以将移
位寄存器实现流水灯模块复位赋值从 16’h0001 改成 16’h0003,这样流水灯每
次会点亮两个,便于判别。
第四讲 基于原理图和 Verilog HDL 的
层次化设计
学习目标:
本节以编码、译码和显示电路为例,介绍在 Quartus Prime 17.1 软件中,如
何混合使用原理图和 Verilog HDL 进行分层次的结构化设计。注意:本节的实验
内容也可以全部使用 Verilog HDL 进行设计。

1.编码、译码、显示电路

图 1.1 是编码、译码和显示电路的组成框图,要求用 FPGA 实现虚线框内部


的电路。电路的功能是:当开关被按下时,其对应的编号(假设开关的下标与其
编号相同)能够在共阳极显示器上显示出来,同时,能够用发光二极管显示开关
的状态,即开关为高电平时,发光二极管亮,反之,发光二极管不亮。

开关状态 去发光二极
显示模块 管显示电路
+3.3V
EO
SW0 I0 GS a
七段共阳极
SW1 I1 A0 译码器
优先编码器 f b
A (7447) g
(74148)
A1 a~g
B
SW7 e c
I7
A2 C d
EI D ○p
SW17 1kΩ×9

图 1.1 编码、译码和显示电路框图

74LS148 是 8 线输入、3 线输出的二进制优先编码器,其功能表如表 1-1 所

示。它的输入为低电平有效,优先级别从 I 7 至 I 0 依次递减。另外它有输入使能 EI ,

输出编码标志位 GS 和输出控制信号 EO :

① EI =1 禁止编码,输出 A2 A1 A0 =111; EI =0 允许编码。

② GS 为编码输出标志。GS = 0 表示 A2 A1 A0 输出编码有效,GS =1 表示 A2 A1 A0
输出编码无效。
③ EO 用于多个编码器的级联控制,即 EO 总是接在优先级较低的相邻编码器 EI
端,当允许优先级高的编码器工作,但又无输入请求时, EO = 0,从而允许优

先级较低的相邻编码器工作,反之若优先级高的编码器处于编码状态时,EO =1,
禁止优先级较低的相邻编码器工作。
表 1-1 74LS148 功能表
输 入 输 出

EI I0 I1 I2 I3 I4 I5 I6 I7 A2 A1 A0 GS EO

1 × × × × × × × × 1 1 1 1 1

0 1 1 1 1 1 1 1 1 1 1 1 1 0

0 0 1 1 1 1 1 1 1 1 1 1 0 1

0 × 0 1 1 1 1 1 1 1 1 0 0 1

0 × × 0 1 1 1 1 1 1 0 1 0 1

0 × × × 0 1 1 1 1 1 0 0 0 1

0 × × × × 0 1 1 1 0 1 1 0 1

0 × × × × × 0 1 1 0 1 0 0 1

0 × × × × × × 0 1 0 0 1 0 1

0 × × × × × × × 0 0 0 0 0 1

电路的工作原理是:优先编码器 74LS148 检测外部 8 个开关的输入状态,并根


据事先安排的输入优先级别,输出开关的编码。由于输出的编码为反码(例如,
I7 的编码为 000,而 I0 的编码为 111),经过反相器将编码取反送到七段译码器,
将译码器的输出送给外部显示器,开关的编号就能被显示出来。
下面介绍混合使用原理图和 Verilog HDL 进行设计的具体步骤。

2.建立新的设计项目,输入设计文件

首先输入原理图文件,然后创建工程项目。具体操作如下:
(1)打开 Quartus Prime17.1 软件,选择 File | New…命令,在弹出窗口中点击
New Quartus Prime Project 新建工程,选择开发板型号等步骤可参照前面第二讲
内 容 。 工 程 命 名 为 “_74ls148_7SegDisplay” , 然 后 将 工 程 保 存 在
F:\Lab_exercise\_74ls148_7SegDisplay\prj 目 录 。 建 立 工 程 以 后 , 在 Quartus
Prime17.1 主界面,选择 File | New…命令,在弹出窗口的 Design Files(设计文
件)栏目下,选择 Block Diagram/Schematic File,单击 OK,打开原理图编辑器。
(2)在原理图编辑器窗口的空白处,双击鼠标左键,或者单击鼠标右键,选择
Insert->Symbol...,弹出元件符号 Symbol 对话框,如图 2.1 所示。在左边 Name 栏
内输入元件名称 74148,或者在 Libraries 下面的元件库 othersmaxplus II 中找
到 74148,如图 2.2 所示,单击按钮 OK。即可将元件调入原理图编辑窗口中,单
击左键放置元件。
图 2.1

图 2.2
(3)依照同样的方法,参照图 2.3,放置 7447、not、input、output、GND(地)
和 Vcc(高电平)等元件符号。注意:图 2.3 中红色矩形框所示是第 3 节实现的
内容。

(4)接着画连线。单击画图工具栏上的图标 ,画单根连线;再单击图标 ,
画总线。
给引线和引脚命名。为引线命名的方法是:将鼠标移到需要命名的引线上,
当鼠标变成十字形状时单击鼠标左键,然后输入名字。对于 n 位宽的总线 A,可
以采用 A[n–1..0]表示,其中单个信号可用 A[0], A[1],…,A[n]形式表示。用名字也
可以连接单个信号和总线。当一个总线中的某个成员名与一个引线名相同时,它
们的逻辑连接就存在了。
为引脚命名的方法是:在引脚的 PIN_NAME 处双击鼠标左键,然后输入指
定的名字,按回车键。
给引线、引脚或者其他元件命名还有另一种方式:鼠标左键单击选中该元件,
然后单击右键,在弹出的窗口中选择 Properties,修改属性,在属性窗口中可以修
改名字。

(5)保存文件。选择 File | Save As,在 File Name 栏内输入文件名,取名为


“_74ls148_7SegDisplay.bdf”,并保存在 F:\Lab_exercise\_74ls148_7SegDisplay\src
子目录中,然后单击 OK 按钮。

图 2.3 编码和译码电路原理图

3.输入 HDL 底层文件,创建新的元件符号,完善原理图文


图 2.3 中“开关状态显示模块”还没有完成,这里用 Verilog HDL 实现该模


块的功能,并将它作为底层模块,然后生成一个元件符号,供顶层的原理图调用。
接着上面的步骤,进行如下操作:
在 Quartus Prime 主界面,选择 File | New…命令,选择 Verilog HDL File,单
击 OK,打开文本编辑器。输入下面的 Verilog HDL 代码,用文件名 SW_LED.v
保存在 F:\Lab_exercise\_74ls148_7SegDisplay\src 目录,并在当前项目中添加该文
件。
module SW_LED(
input [ 7: 0] SW_In, //输入端口声明
output [ 7: 0] LED_Out //输出端口声明
);

assign LED_Out = SW_In; //将开关状态送到 LED

endmodule
选择 FileCreate/UpdateCreate Symbol Files for Current File,生成符号文
件。此时,在当前项目子目录中(F:\Lab_exercise\_74ls148_7SegDisplay\prj)会自
动产生 SW_LED.bsf 符号文件,供画原理图使用。同样,也可以根据一个底层的
原理图文件创建一个 HDL 设计文件,供顶层的 HDL 代码实例引用,方法是:
FileCreate/UpdateCreate HDL Design File for Current File。
重新回到原理图文件_74ls148_7SegDisplay.bdf 的编辑窗口,双击空白处,弹
出如图 3.1 所示的对话框,选择 Project 项目下面的 SW_LED 元件,单击 OK,
将它添加到原理图中。
最终完成后的原理图如图 2.3 所示。

图 3.1 新建元件符号输入对话框

4.分配引脚,编译设计文件

这里使用 DE2-115 开发板上的拨动开关、发光二极管和七段数码管 0 来实


际测试我们的设计。电路端口与器件引脚对应关系如表 4-1 所示。
表 4-1 电路端口与器件引脚的对应关系
电路端口名 FPGA 引脚编号 说 明
SW[7:0] AB26,AD26,AC26,AB27,AD27,AC27,AC28,AB28 74148 优先编码器的 8 个输入端口
SW17 Y23 74148 的使能端口,低电平有效
SW16 Y24 7447 的灯测试端口,低电平有效
LEDR[7:0] H19,J19,E18,F18,F21,E19,F19,G19 红色 LED,显示 SW7~SW0 状态
LEDR17 H15 红色 LED,显示 SW17 状态
LEDR16 G16 红色 LED,显示 SW16 状态
LEDG[2] E25 绿色 LED,显示 74148 GS 状态
LEDG[1] E22 绿色 LED,显示 74148 级联端 EO 状态
LEDG[0] E21 绿色 LED,显示 7447 RBO 端口状态
HEX0[6:0] H22,J22,L25,L26,E17,F22,G18 7 段数码管 0,显示开关对应的编号
具体操作步骤如下:
(1) 准备引脚分配文件 pin.txt,引脚分配文件如下:
(2)在 Quartus Prime 主界面,选择 Assignments | Import Assignments,再导入文
件 pin.txt,即可完成引脚分配。
(3)接着,选择菜单 Processing | Start Compilation 命令,或单击工具栏上的
快捷图标,完成全程编译。
pin.txt 文件:
to , location
SW17 , PIN_Y23
SW16 , PIN_Y24
SW[7] , PIN_AB26
SW[6] , PIN_AD26
SW[5] , PIN_AC26
SW[4] , PIN_AB27
SW[3] , PIN_AD27
SW[2] , PIN_AC27
SW[1] , PIN_AC28
SW[0] , PIN_AB28

LEDR17 , PIN_H15
LEDR16 , PIN_G16
LEDR[7] , PIN_H19
LEDR[6] , PIN_J19
LEDR[5] , PIN_E18
LEDR[4] , PIN_F18
LEDR[3] , PIN_F21
LEDR[2] , PIN_E19
LEDR[1] , PIN_F19
LEDR[0] , PIN_G19

LEDG[2] , PIN_E25
LEDG[1] , PIN_E22
LEDG[0] , PIN_E21

HEX0[6] , PIN_H22
HEX0[5] , PIN_J22
HEX0[4] , PIN_L25
HEX0[3] , PIN_L26
HEX0[2] , PIN_E17
HEX0[1] , PIN_F22
HEX0[0] , PIN_G18
5.对目标器件编程,实际测试电路功能

按 照 第二讲 Quartus Prime 概述 的操作步骤,将 DE2-115 板上左边的


RUN/PROG 开关(SW19)拨到 RUN 位置。接着选择 Tools | Programmer,或者
单击快捷图标 ,确认编程数据文件名_74ls148_7SegDisplay.sof 及目标器件等信
息,选择 JTAG 编程模式以及 USB-Blaster 编程硬件,最后单击编程窗口中的按
钮 Start,对目标器件编程。
将 DE2-115 开发板上的开关 SW17 设置成低电平,SW16 设置成高电平,再
拨动 SW7~SW0,按照表 1-1 验证输入信号的优先级别,同时观察数码管 HEX0
上显示的数码,检查整个电路的功能是否正确。
最后,在 Quartus Prime 主界面,选择 FileCreate/UpdateCreate Symbol
Files for Current File,生成符号文件_74ls148_7SegDisplay.bsf,如图 5.1 所示。可
以供其他更高层次的原理图文件调用。

图 5.1 顶层模块元件符号
教学内容、要求及小结

本章目的
在数字电路中,常常需要各种脉冲波形,例如时序电路中的时钟脉冲、控制
过程中的定时信号等。这些脉冲波形的获取,通常有两种方法:一种是是用脉冲
信号产生电路直接产生;另一种则是将已有信号通过波形变换电路获得。
本章首先介绍用门电路组成的单稳态触发器、施密特触发器、多谐振荡器,
然后讨论 555 定时器和用它构成的波形变换、产生电路。主要内容如下:
 介绍脉冲波形的变换电路——单稳态触发器和施密特触发器的工作原理、
参数计算及其应用。
 讨论脉冲波形的产生电路——多谐振荡器的工作原理和参数计算。
 介绍用 555 定时器组成的单稳态触发器、施密特触发器和多谐振荡器应用
电路。

本节主要内容:
 用门电路组成的单稳态触发器
 集成单稳态触发器
 单稳态触发器的应用

学习本节后,你应该能
 理解单稳态触发器的工作特点
 区分非重复触发和可重复触发单稳态触发器
 了解单稳态触发器的应用

小结:
● 单稳态触发器只有一个稳定状态,其工作特点为:(1)没有触发脉冲作用
时,电路处于一种稳定状态。(2)在触发脉冲作用下,电路会由稳态翻转到暂稳
态。暂稳态是一种不能长久保持的状态。(3)由于电路中 RC 延时环节的作用,
电路的暂稳态在维持一段时间后,会自动返回到稳态。暂稳态持续时间由 RC 延
时环节参数值决定。
● 集成单稳态触发器分为非重复触发和可重复触发两大类,在暂稳态期间,
出现的触发信号对非重复触发单稳电路没有影响,而对可重复触发单稳电路可起
到连续触发作用。
● 单稳态触发器被广泛地应用于脉冲的变换、延时和定时等。
单稳态触发器
华中科技大学 左冬红
脉冲电路引言
脉冲产生与波形变换电路类型
单稳态触发器特征
单稳态触发器波形

Tw
单稳态触发器的基本构成
RC延时电路分类

C R

R C
u

0 t

0 t

-u
u

0 t

0 t
微分、积分单稳态触发器电路

vO1 vO

G1 G2
C
vI Cd vI2
vd  vC
R
Rd

VDD
积分型单稳态触发器
vd t

vO1 t

vI2 t

R
vO t

t
vI

vd t

vO1 t

vI2 t
R
vO t

t
vI

vd t

vO1 t

vI2 t

R
vO t

t
vI

vd t

vO1 t

vI2 t

R
vO t

t
集成单稳态触发器
左冬红
集成单稳态触发器分类
𝑣𝑖
不可重复触发
𝑣𝑜 𝑡𝑊 𝑡𝑊

可重复触发 𝑣𝑖
𝑣𝑜 𝑡𝑊 𝑡𝑊
74121逻辑图
𝐶ext 𝑉cc
10 11 9

5 𝑎
𝐵 𝑅int

𝐺2 𝐺4
𝐴1 4 𝐺7 𝐺8
𝐺6
6
𝐴2 3 𝑄
𝐺1 𝐺5

𝐺3 ഥ
𝑄
1
𝐺9
10 𝐶ext 11 9

𝑎 𝑅int

0
𝐺7 𝐺8
𝐺6
6
𝑄
𝐺5


𝑄
1
𝐺9
1
5 1
𝐵

𝐺2 𝐺4
𝐴1 4
1
𝐴2 3
𝐺1

𝐺3 ഥ
𝑄
𝐺9 1
功能表
工作波形

𝐴1

𝐴2

𝑡𝑤 𝑡𝑤 𝑡𝑤 𝑡𝑤
𝑄
1 2 3 4
采用内部电阻 V CC

10 11 9 14 1
C ext R ext R int V CC
C ext 6
Q
3 3
A1 74121 4
4 Q
A2 1 5

5 B GND

7
采用外部电阻
V CC C R ext VCC

10 11 9 14 10 11 9 14
C ext R ext R int V CC C ext R ext R int V CC
6 C ext 6
C ext Q Q
3 3 A1
A1 74121 74121
4 4
A2 Q A2 Q
1 5 1
B
5 B GND GND

7 7
VCC C Rext VCC

10 11 9 14 10 11 9 14
Cext Rext Rint VCC Cext Rext Rint VCC
6 Cext 6
Cext Q Q
3 3 A1 74121
A1 74121 4
4 Q A2 Q
A2 1 1
5
B
5 B GND GND

7 7
单稳态触发器应用

华中科技大学 左冬红
单稳态触发器暂稳态特征
应用场景
定时控制
延时控制

C1 R1 C2 R2
VCC VCC

Cext Rext/ Cext Cext Rext/ Cext


vO1 vO

A1 74121 A1 74121
(1) (2)
A2 A2
Q Q
B B
vI

VCC
问题

C1 R1 C2 R2
VCC VCC

Cext Rext/ Cext Cext Rext/ Cext


Q vO

A1 74121 A1 74121
(1) (2)
A2 A2
Q Q
B B
vI
噪声消除

C R
vcc

Cext Cext/Rext

74121
A1 D vo
Q
A2 Q  C1
vI B R
噪声消除

C R
vcc

Cext Cext/Rext

74121
A1 D vo
Q
A2 Q  C1
vI B R
噪声消除

C R
vcc

Cext Cext/Rext

74121
A1 D vo
Q
A2 Q  C1
vI B R
单稳态触发器
华中科技大学 左冬红
正反馈过程

R
正反馈过程

R
vI

vd t

vO1 vO
vO1 t
G1 G2
C
vI2 t vI Cd
vd
vI2
 vC
R
Rd
vO t
VDD

t1 t 2
t
vI

vd t

vO1 vO
vO1 t
G1 G2
C
vI2 t vI Cd vI2
vd
 vC
R
Rd
vO t
VDD
t 1 t2
t
暂稳态脉宽

vO1 vO

G1 G2 vI2
C
vI Cd vI2
vd
 vC
R
Rd vO t
VDD
t1 t2 t
C充电等效电路

VDD

Vi2

C
恢复时间tre

vO1 vO

G1 G2
vI2
C
vI Cd vI2
vd
 vC 
R
Rd
t
VDD
性能分析
vI vI

t vd t

vO1 t vO1 t

vI2 t vI2 t

R
vO t vO t

t1 t 2
t
t 1 t2
t
小结
教学内容、要求及小结

本节主要内容:
 用门电路组成的施密特触发器
 集成施密特触发器
 施密特触发器的应用

学习本节后,你应该能
 理解施密特触发器工作特点
 掌握施密特触发器相关参数的计算
 了解施密特触发器的应用

小结:
● 在数字电路中,施密特触发器实质上是具有滞后特性的逻辑门。电路状态
与输入电压有关,不具备记忆功能。
● 施密特触发器有两个阈值电压。输入信号在增加过程中使输出电压产生跳
变时所对应的输入电压称为正向阈值电压(VT+);而输入信号在减少过程中使输
出电压产生跳变时所对应的输入电压称为负向阈值电压(VT-)。
● VT+和 VT-是施密特触发器的两个主要参数。施密特触发器输出电压在跳变
过程中存在正反馈,其输出波形的跳变沿都很陡直,所以常用于波形的变换(整
形)和幅度鉴别等方面。
施密特触发器

华中科技大学 左冬红
施密特触发器特征
同相施密特触发器
R2

G1 G2
R1
vI vO
vI1
vO1

+ +
- -
R2

G1 G2
0 R1 1 0
vI vO
vI1
vO1
R2

G1 G2
R1 1 0
vI vO
vI1
vO1
R2

G1 G2
R1 0 1
vI vO
vI1 1 0

vO1
R2

G1 G2
R1 0 1
vI vO
vI1
vO1
R2

G1 G2
R1
vI vO
vI1
vO1
波形变换结论
电阻阻值的确定
R2

G1 G2
R1 1
vI vO
vI1
vO1
集成施密特触发器
华中科技大学 左冬红
VDD

TP1 TP4
TP3
vS2
TP2 TN4
, TP6
vI vO vO

TN1 TN6
TP5
vS5
TN3 VDD
TN5
TN2
集成反相施密特触发器
VDD

TP1 TP4
TP3
vS2
TP2 TN4
, TP6
vI vO vO

TN1 TN6
TP5
vS5
TN3 VDD
TN5
TN2

施密特电路
整形电路 输出电路
VDD

TP1 TP4
TP3
vS2
TP2 TN4
, TP6
vI vO vO

TN1 TN6
TP5
vS5
TN3 VDD
TN5
TN2
施密特电路

0
施密特电路

0
施密特电路

0
施密特电路

0
施密特电路

0
施密特电路

截 导
止 通
1 0

截 导 截

止 通 止
施密特电路

截 导
止 通

0
导 截
通 止



施密特电路

导 截
截 导
通 止
止 通
0 1
导 截 导
通 止 通



施密特触发器的应用

华中科技大学 左冬红
v v
I O

vO

VOH

VOL

o vI
t
t

t
vI vO
t

t
vI vO
t

t
vI vO
t

t
vI vO
t

t
t t

t t
t
vI vO

t
t
vI vO

t
t
vI vO

t
教学内容、要求及小结

本节主要内容:
 门电路组成的多谐振荡器
 用施密特触发器构成多谐振荡器
 石英晶体多谐振荡器

学习本节后,你应该能
 正确理解多谐振荡器的工作原理
 掌握多谐振荡器振荡频率的计算
 了解石英晶体振荡器的应用

小结:
● 多谐振荡器是一种自激振荡电路,它在接通电源后,不需要外加触发信号,
电路就能自行产生一定频率和一定幅值矩形波。由于矩形波含有丰富的谐波分量,
所以将它称之为多谐振荡器。多谐振荡器在工作过程中没有稳定状态,故又被称
为无稳态电路。
● 在频率稳定性要求较高的场合,通常采用石英晶体振荡器。
门电路构成多谐振荡器

华中科技大学 左冬红
多谐振荡器一般组成
门电路组成的多谐振荡器 G1 G2

R
C

G1 G2 VDD

TP1 TP2
D1 D3

vO1 vO
vI
TN1 TN2
D2 D4
R

C
工作原理_第一暂稳态
G1 G2 VDD vI
TP1 TP2 VDD
D1 D3
VTH
vO1 vO
vI 0 t
TN1 TN2 vO
D2 D4
R
VDD

C 0 t
工作原理_第二暂稳态
G1 G2 VDD vI
TP1 TP2 VDD
D1 D3
VTH
vO1 vO
vI 0 t
TN1 TN2 vO
D2 D4
R
VDD

C 0 t
工作原理_第二暂稳态
G1 G2 VDD vI
TP1 TP2 VDD
D1 D3
VTH
vO1 vO
vI 0 t
TN1 TN2 vO
D2 D4
R
VDD

C 0 t
振荡周期
vI
G1 G2 VDD
VDD
TP1 TP2
D1 D3 VTH
vO1 vO 0 t
vI
TN1 vO
TN2
D2 D4
R
VDD

0 t
C
vI
振荡周期 VDD
VTH
G1 G2 VDD
0 t
TP1 TP2 vO
D1 D3

vO1 vO VDD
vI
TN1 TN2
D2 D4 0 t
R

C
vI
振荡周期 VDD

G1 G2 VDD VTH

TP1 TP2 0 t
D1 D3 vO

vO1 vO
vI VDD
TN1 TN2
D2 D4
R 0 t

C
振荡周期
施密特触发器
构成多谐振荡器

华中科技大学 左冬红
基本原理

vC vO

C
基本原理

vC vO

C
振荡
R

vC vO

C
振荡周期
R

vC vO

C
振荡周期
R

vC vO

C
振荡周期
石英晶体振荡器

华中科技大学 左冬红
由门电路组成的多谐振荡器
由施密特触发器组成的多谐振荡器
石英晶体振荡器

有源晶振

无源晶振
石英晶体选频谐振电路 R2
R1

Vo
G1 C2 G2

R1 R2 C1 石英晶体

Vo
G1 C2 G2

C1
石英晶体选频特性 阻抗特性

X
电路符号

0
f
元器件参数
R1 R2

Vo
G1 C2 G2

C1
石英晶体
双相脉冲产生电路

R1 R2

G1 C2 G2
J
Q
C
C1 石英晶体 K
1
双相脉冲产生电路
A
Q

R1 R2

G1 C2 G2
J Q
C
C1 石英晶体 1 K
双相脉冲产生电路
A
Q

R1 R2

G1 C2 G2
J Q
C
C1 石英晶体 1 K
双相脉冲产生电路 A
Q

R1 R2

G1 C2 G2
J Q
C
C1 石英晶体 1 K
教学内容、要求及小结

本节主要内容(选学):
 555 定时器的组成及工作原理
 用 555 组成的施密特触发器
 用 555 组成的单稳态触发器
 用 555 组成的多谐振荡器

学习本节后,你应该能
 了解 555 定时器的功能
 了解 555 组成的应用电路的工作原理

小结:
● 555 定时器是一种模、数混合的中规模集成电路,它使用方便、灵活,应
用极为广泛。用它可很方便地组成脉冲的产生、整形、延时和定时电路。
● 集成电路除 555 定时器外,目前还有 556(双定时器),558(四定时器)等。
555定时器及其构成施密特触发器

华中科技大学 左冬红
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

悬空 (5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

外接电压
(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

悬空 (5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

悬空 (5)
(6)

(3)
(2)

(7)
T

(1)
555电路结构
(8) (4)

悬空 (5)
(6)

(3)
(2)
状态不变
状态不变

(7)
T

(1)
555电路结构
(8) (4)

悬空 (5)
(6)

(3)
(2)
1
1

(7)
T

(1)
555定时器功能表
输入 输出

0 0 导通
1 0 导通

1 1 截止

1 不变 不变

1 1 截止
555定时器功能表
输入 输出

0 0 导通
1 0 导通

1 1 截止

1 不变 不变

1 1 截止
555施密特触发器
(8) (4)

(5)
(6)

(3)
(2)

(7)
T

(1)
555施密特触发器

8 4

3
6

2 5
1
施密特触发器波形

8 4
3
6
2 1 5
输入 输出

0 0 导通
1 1 截止

1 0 导通

1 不变 不变

1 1 截止
施密特触发器波形

8 4
3
6
2 1 5
输入 输出

0 0 导通
1 1 截止

1 0 导通

1 不变 不变

1 1 截止
施密特触发器波形

8 4
3
6
2 1 5
输入 输出

0 0 导通
1 1 截止

1 0 导通

1 不变 不变

1 1 截止
施密特触发器波形

电压传输特性曲线
555单稳态触发器

华中科技大学 左冬红
(8) (4)

(5)
(6)

(3)

(2)

T
(7)

(1)
稳态分析
(8) (4)

(5)
1
(6) 0
0

(3)
1
1 0
(2)

T
(7)

(1)
稳态分析
(8) (4)

(5)
0
(6)

0
(3)
01
1 01
(2)

T
(7)

(1)
稳态分析
(8) (4)

(5)
1
(6) 0

(3)
1
1 0
(2)

T
(7)

(1)
(8) (4)

(5)
1
(6) 0

(3)

(2)

T
(7)

(1)
(8) (4)

(5)
1
(6)

(3)

(2)

T
(7)

(1)
(8) (4)

(5)
(6)

(3)

(2) 1

T
(7)

(1)
(8) (4)

(5)
1
(6) 0
0

(3)
1
1 0
(2)

T
(7)

(1)
波形及脉宽计算
(8) (4)

(5)
1
(6)

0 1
(3)
1
(2)

T
(7)

(1)
不可重复触发单稳态触发器
不可重复触发单稳态电路

8 4
7
3
6

2 5
1
可重复触发单稳态电路

8 4
7
3
6

2 5
1
可重复触发单稳态触发器

8 4
7
3
6

2 5
1
失落脉冲

报警信号
555多谐振荡器

华中科技大学 左冬红
555多谐振荡器

8 4
7
3

6
2 5
1
(8) (4)

(5)
1
(6)

1 (3)
1 0
0
(2)

(7)
T

(1)
(8) (4)

(5)
1
(6)

0 1 (3)
10 1
(2)

(7)
T

(1)
(8) (4)

(5)
10
(6)

(3)
1
(2)

(7)
T

(1)
(8) (4)

(5)
1
(6)
0

(3)
1 0
1 0
(2)

(7)
T

(1)
(8) (4)

(5)
1
(6)

(3)
10
(2)

(7)
T

(1)
多谐振荡器波形
电容放电
(8) (4)

(5)
(6)

(3)

(2)

(7)
T

(1)
电容充电
(8) (4)

(5)
(6)

(3)

(2)

(7)
T

(1)
多谐振荡器波形
占空比可调的多谐振荡器

8 4
7
3

6
2 1 5
占空比可调的多谐振荡器

8 4
7
3

6
2 5
1
教学内容、要求及小结

本章目的
本章主要介绍在模拟信号与数字信号之间起转换作用的电路──模数转换
器和数模转换器。主要内容包括:
 介绍权电阻网络、R-2R 倒 T 形网络 D/A 转换器的电路和工作原理
 介绍 D/A 转换器的单极性、双极性的输出方式
 介绍并行比较型、逐次比较型和双积分式 A/D 转换器的电路和工作原理
 介绍 D/A 转换器和 A/D 转换器的主要技术指标

本节主要内容:
 模数转换器和数模转换器的作用
 权电阻网络 D/A 转换器的工作原理

学习本节后,你应该能
 D/A 转换器的基本原理
 理解权电阻网络 D/A 转换器的工作原理

小结:
● A/D 和 D/A 转换器是组成现代数字系统的重要部件,是连接模拟量和数字
量的桥梁。
● 要实现数-模转换,首先要将输入二进制数中为 1 的每一位代码按其权的
大小,转换成模拟量,然后将这些模拟量相加,相加所得的总量就是与数字量成
正比的模拟量。
● D/A 转换器通常由基准电压源、数码寄存器、模拟电子开关、解码网络和
求和放大器等组成。
● 根据解码网络结构的不同,D/A 转换器有多种类型。如权电阻网络型、R-
2R 倒 T 形网络型、权电容网络型和电阻电容混合型及晶体管混合型等。这些 D/A
转换器按数字量的输入方式的不同又分为并行输入 D/A 转换器和串行输入 D/A
转换器两种。
● 在权电阻网络型 D/A 转换电路中,每一位电阻的阻值与这一位的“权”相
对应,位权越大,对应的阻值越小,所以,该电路也称为权电阻网络 D/A 转换电
路。
模数与数模转换器

华中科技大学 罗杰
权电阻网络 D/A 转换器
1. 概 述

1. 概 述
1. 概 述

A/D D/A 模拟
传感器
转换器 计算机 转换器 控制器

工业生产过程控制对象
1. 概 述

将温度、压力、流量、 计算机进行数字处理 用模拟量作为控制


应力等物理量转换为模 (如计算、滤波)、保 信号
拟电量。 存等

A/D D/A 模拟
传感器
转换器 计算机 转换器 控制器

工业生产过程控制对象

A/D、D/A转换器已成为计算机系统中不可缺少的接口电路。
1. 概 述

 A/D转换器( Analog to Digital Converter ):

能够实现模拟信号到数字信号转换的电路称为
模数转换器,简称A/D转换器。

输入模拟量 输出数字量
A/D
 I 或 iI Dn~D0
转换器
1. 概 述

 D/A转换器( Digital to Analog Converter ):

能够实现数字信号到模拟信号转换的电路称为
数模转换器,简称D/A转换器。

数字量 模拟量
n位 D/A  I 或 iI
转换器
2.权电阻网络 D/A 转换器

2.权电阻网络 D/A 转换器


2.权电阻网络 D/A 转换器

1. 实现 D/A 转换的基本思想

将二进制数 ND=(1101)B 转换为十进制数。

ND= D3×23+D2×22+D1×21+D0×20

=1×23+1×22+0×21+1×20

可见,将输入二进制数中为 1 的每一位代码按其权值的大小,
转换成模拟量,然后将这些模拟量相加,相加所得的总量就是与
数字量成正比的模拟量。
2.权电阻网络 D/A 转换器

 D/A 转换器的分类: 权电阻网络DAC

倒T形电阻网络DAC
按解码网络
结构分类
权电流DAC

D/A 转换器 权电容网络DAC

双极型开关型DAC
按模拟电子开
关电路分类
CMOS开关型DAC
2.权电阻网络 D/A 转换器

2. 实现 D/A 转换的原理电路

基准电压 电子开关 电阻网络 求和电路


D0(LSB) S0 i0 R

寄 D1 S1 i1 R /2

Rf=R
量 存 D2 S2 i2 R /4

输 器
D3(MSB) S3 i3 R /8 i

入 vO
+ A
+
VREF

2.权电阻网络 D/A 转换器

2. 实现 D/A 转换的原理电路

基准电压 电子开关 电阻网络 求和电路


D0(LSB) S0 i0 R

寄 D1 S1 i1 R /2

Rf=R
量 存 D2 S2 i2 R /4

输 器
D3(MSB) S3 i3 R /8 i

入 vO
+ A
+
VREF

VREF VREF VREF VREF


i0  D0 i1  D1 i2  D2 i3  D3
R R/2 R/4 R /8
2.权电阻网络 D/A 转换器

2. 实现 D/A 转换的原理电路 vO   Rf (i3  i2  i1  i0 )

Rf VREF
基准电压 电子开关 电阻网络 求和电路  ( D3 23  D2 2 2  D1 21  D0 20 )
D0(LSB) S0 i0 R
R

Rf VREF 3
字 寄

D1 S1

S2
i1
i2
R /2
R /4
Rf=R
  i
R i 0
D  2 i

量 D2
输 器
D3(MSB) S3 i3 R /8 i
– Rf VREF

A
vO  NB
+
R
+
VREF

VREF VREF VREF VREF


i0  D0 i1  D1 i2  D2 i3  D3
R R/2 R/4 R /8
再见!
教学内容、要求及小结

本节主要内容:
 R-2R 倒 T 型网络 D/A 转换器的工作原理
 集成 10 位 D/A 转换器 AD7533 的电路结构

学习本节后,你应该能
 掌握 R-2R 倒 T 型网络 D/A 转换器的工作原理
 掌握倒 T 形网络 D/A 转换器输出模拟量与输入数字量之间的一般关系式,
 n 1 

VREF Rf
即 O     ( Di  2 )  。
i

2n R  i  0 

小结:
● 倒 T 形电阻网络 D/A 转换器克服了权电阻网络中电阻阻值相差太大的缺
点,在集成的 D/A 转换器中应用广泛。
● 倒 T 形电阻网络 D/A 转换器具有如下特点:电阻网络仅有 R 和 2R 两种阻
值;各 2R 支路电流 Ii 与相应 Di 数码状态无关,是一定值;由于支路电流流向运
放反相端时不存在传输时间,因而具有较高的转换速度。
模数与数模转换器

华中科技大学 罗杰
倒 T 形电阻网络 D/A转换器
倒 T 形电阻网络 D/A 转换器

输入4位二进制数 求和放大器
(LSB) (MSB) Rf
D0 D1 D2 D3
i
模拟电子开关 –
vO
+

S0 S1 S2 S3
2R 2R 2R 2R 2R
R R R
+VREF
电阻网络
倒 T 形电阻网络 D/A 转换器
(LSB) (MSB) Rf
D0 D1 D2 D3
i

模拟电子开关
vO
+

S0 S1 S2 S3
2R 2R 2R 2R 2R
R R R
+VREF

 根据运放线性运用时虚地的概念,无论模拟开关 Si 接左边、
还是右边,与 Si 相连的 2R电阻将接“地” 或虚地。
倒T形电阻网络D/A转换器

 倒T形电阻网络
R R R R
A B C D

2R 2R 2R 2R 2R
R R R I
VREF
A B C D
VREF
• 基准电源 提供的总电流为:I =? I 
R
倒T形电阻网络D/A转换器

 倒T形电阻网络
R R R
A B C

I0 I1 I2 I3
2R 2R 2R 2R 2R
R R R I
VREF
A B C
VREF
• 基准电源 提供的总电流为:I =? I 
R

• 流过各开关支路的电流:I3 =?I2 =? I1 =? I0 =?
倒T形电阻网络D/A转换器

 倒T形电阻网络
R R R
A B C

I0 I1 I2 I3 I/2
2R 2R 2R 2R 2R
R R R I
VREF
I/16 A I/8 B I/4 C I/2
VREF
• 基准电源 提供的总电流为:I =? I 
R

• 流过各开关支路的电流:I3 =?I2 =? I1 =? I0 =?
倒T形电阻网络D/A转换器

 倒T形电阻网络
R R R
A B C

I0 I1 I2 I3 I/2
2R 2R 2R 2R 2R
R R R I
VREF
I/16 A I/8 B I/4 C I/2

VREF VREF VREF VREF VREF


I  I3  I2  I1  I0 
R 2R 4R 8R 16 R

 流入每个 2R 电阻的电流从高位到低位按 2 的整数倍递减。


倒 T 形电阻网络 D/A 转换器
(LSB) (MSB) Rf
D0 D1 D2 D3
i

vO
+

S0 S1 S2 S3
2R
I/16 I/8 I/4 I/2
2R 2R 2R 2R
R R R
+VREF
I I I I I
16 8 4 2

i  I 0  I1  I 2  I 3  该电流与输入二进制数的大小
成正比,实现了数字量到模拟
VREF D0 D1 D2 D3
i  ( 4  3  2  1) 电流的转换。
R 2 2 2 2
倒 T 形电阻网络 D/A 转换器
(LSB) (MSB) Rf
D0 D1 D2 D3
i

vO
+

S0 S1 S2 S3
2R
I/16 I/8 I/4 I/2
2R 2R 2R 2R
R R R
+VREF
I I I I
16 8 4 2
I
运放输出的模拟电压:

i  I 0  I1  I 2  I 3  O  i Rf
3
Rf VREF
i 
VREF D0 D1 D2 D3
R 2
( 4  3  2  1)
2 2 2

R 2
 4  i )
( D
i 0
 2 i
倒T形电阻网络D/A转换器

倒 T 形电阻网络 D/A 转换器的输出模拟电压:

3
Rf VREF
4 位 DAC: O    4
R 2
 i )
( D
i 0
 2 i

n 1
Rf VREF
n 位 DAC: O    n
R 2
 (D  2 )
i 0
i
i

VREF Rf
O   n   N B
2 R
倒T形电阻网络D/A转换器

倒 T 形电阻网络 D/A 转换器的输出模拟电压:


VREF Rf
n 位 DAC:  O   n   NB
2 R
当 NB= 0 时,vO = 0;
2n  1
当 NB为最大值(全 1) 时,  O   n  VREF
2
倒 T 形电阻网络 D/A 转换器

 已知 Rf =R=10.0 k, (LSB) (MSB) Rf


D0 D1 D2 D3
VREF=10.0 V,要求: i

vO
(1)I0~ I3 分别为多少? +

S0 S1 S2 S3
(2)当D3D2D1D0分别为 2R
I0 I1 I2 I3
2R 2R 2R 2R
R R R
1000、0100、0010、0001 +VREF
I I I I I
时,vO 的值分别是多少? 16 8 4 2

(3)画出该电路的输入/输出特性曲线。
倒 T 形电阻网络 D/A 转换器

解: (LSB) (MSB) Rf
D0 D1 D2 D3
(1)基准源提供的电流为: i

vO
VREF 10.0 V +
I   1 mA
R 10.0 k
S0 S1 S2 S3
2R
I0 I1 I2 I3
I3= I/2 = 0.5 mA 2R
R
2R
R
2R
R
2R
+VREF
I2= I3/2 =0.25 mA I I I I I
16 8 4 2
I1= I2/2 =0.125 mA
I0= I1/2 =0.0625 mA
倒 T 形电阻网络 D/A 转换器

(LSB) (MSB)
(2)当 D3D2D1D0=1000时, D0 D1 D2 D3
Rf
i
只有支路电流 I3 流向 Rf, –
vO
+

I3= IREF/2 =0.5 mA S0 S1 S2 S3


2R
I0 I1 I2 I3
2R 2R 2R 2R
故输出电压: R R R
+VREF

v O ( D 3)   Rf  I 3 I
16
I
8
I
4
I
2
I

 10.0  0.5
 5V
倒 T 形电阻网络 D/A 转换器

(2)当 D3D2D1D0=1000时, 同理,当 D3D2D1D0 = 0100 时,


只有支路电流 I3 流向 Rf, v O ( D 2 )  10.0  0.25  2.5V

I3= IREF/2 =0.5 mA 当 D3D2D1D0 = 0010 时,

故输出电压: v O ( D1)  10.0  0.125  1.25V


v O ( D 3)   Rf  I 3 当 D3D2D1D0 = 0001 时,
 10.0  0.5
v O ( D 0 )  10.0  0.0625  0.625V
 5V
倒 T 形电阻网络 D/A 转换器

(3)输入数字量与输出电压vO关系表 O/(V)

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
D
D3D2 D1D0 vO / V D3D2D1D0 vO / V
0 0 0 0 0.0 1 0 0 0 5.0
0 0 0 1 0.625 1 0 0 1 5.625
0 0 1 0 1.250 1 0 1 0 6.250
0 0 1 1 1.875 1 0 1 1 6.875
0 1 0 0 2.500 1 1 0 0 7.500
0 1 0 1 3.125 1 1 0 1 8.125
0 1 1 0 3.750 1 1 1 0 8.750
0 1 1 1 4.735 1 1 1 1 9.375
集成电路 D/A转换器
集成电路 D/A转换器
 AD7533 D/A转换器: 10 位 CMOS电流开关型 D/A转换器
D0 D1 D2 D7 D8 D9

10 k RF
AD7533
R
IOUT1

IOUT2 O
+

2R 2R 2R 2R 2R 2R 2R 20K
10 k VREF
R R R R R
集成电路 D/A转换器
 AD7533 D/A转换器: 10 位 CMOS电流开关型 D/A转换器

D0 D1 D2 D7 D8 D9

10 k RF
使用时:
AD7533
R
IOUT1

• 要外接运放;
IOUT2 O
+
• 运放的反馈电阻可使用
内部电阻,也可采用外
2R 2R 2R 2R 2R 2R 2R 20K 接电阻。
10 k VREF

VREF  9 i 
  10  ( Di  2 )
R R R R R
O
2  i 0 
再见!
教学内容、要求及小结

本节主要内容:
 如何用单极性 D/A 转换器对输入的二进制补码进行转换

学习本节后,你应该能
 理解用单极性 D/A 转换器进行双极性数字量转换原理
 了解补码、偏移二进制码和无符号自然二进制数之间的关系。

小结:
● R-2R 倒 T 型网络 D/A 转换器的输入是无符号的二进制数,输出模拟量的
极性取决于基准电压 VREF 的极性。如果 VREF 为正值,则输出电压 vO 就为 0 到负
满度值;如果 VREF 为负值,则 vO 就为 0 到正满度值,D/A 转换器处于单极性输
出方式。
● 实际上,数字量既有正数,也有负数,因此要求 D/A 转换器不仅能够转换
无符号的二进制数,还应该能够转换有符号的二进制数。厂家并不专门生产双极
性 D/A 转换器,为了转换有符号的数字量,可以通过改变外部连线,使单极性
D/A 转换器具备双极性转换能力。改接的方法取决于待转换数字量的表示方法。
● 补码和偏移二进制码是有符号二进制数的不同表示方法。补码的最高位为
符号位,0 表示正数,1 表示负数。同样,偏移码的最高位也是符号位,但偏移
码的最高位为 0 时,表示负数,最高位为 1 时,表示正数。
● 对于 n 位二进制偏移码来说,向正方向偏移 2n-1,就变成了单极性的无符
号数。偏移码通常用来表示浮点数的指数部分。
模数与数模转换器

华中科技大学 罗杰
D/A 转换器的输出方式
D/A 转换器的输出方式

VREF
无符号 单极性
二进制数 模拟量
R-2R 倒T型
n位 D/A 转换器 O

 VREF > 0,vO 为(0 ~ 负满度值);


 VREF < 0,vO 为(0 ~ 正满度值)。
D/A 转换器的输出方式

有符号二进制码与十进制数之间的关系
十进 十进
补 码 偏 移 码 制数
补 码 偏 移 码
制数
+7 0 1 1 1 1 1 1 1 -1 1 1 1 1 0 1 1 1
+6 0 1 1 0 1 1 1 0 -2 1 1 1 0 0 1 1 0
+5 0 1 0 1 1 1 0 1 -3 1 1 0 1 0 1 0 1
+4 0 1 0 0 1 1 0 0 -4 1 1 0 0 0 1 0 0
+3 0 0 1 1 1 0 1 1 -5 1 0 1 1 0 0 1 1
+2 0 0 1 0 1 0 1 0 -6 1 0 1 0 0 0 1 0
+1 0 0 0 1 1 0 0 1 -7 1 0 0 1 0 0 0 1
0 0 0 0 0 1 0 0 0 -8 1 0 0 0 0 0 0 0
D/A 转换器的输出方式

 补码、偏移码和自然二进制数的关系


二 最高位 偏 然
进 取反 加上 8
移 二

码 进



 偏移码 0000  十进制数 -8;


 偏移码 1000  十进制数 0;
 偏移码 1111  十进制数 +7;
D/A 转换器的输出方式

 用单极性D/A转换器转换补码的思路


单极性

码 单极性
D/A 转换器
模拟量

 DAC将偏移码当成自然二进数处理;
 输出为单极性模拟量。
D/A 转换器的输出方式

 用单极性D/A转换器转换补码的思路
扣除偏移值 8
对应的模拟量
双极性
加 模拟量
偏 法
单极性
移 器
码 单极性
D/A 转换器
模拟量

 DAC将偏移码当成自然二进数处理;
 从输出中应该扣除偏移值转换后对应的模拟量。
D/A 转换器的输出方式

补码二进制数 NB VB

D0 D1 D2 D3 IB Rf =R=5.0 k
RB

– O
iO i A
+

S0 S1 S2 S3
I0 I1 I2 I3
2R 2R 2R 2R 2R

VREF = 10.0V
R R R IREF
D/A 转换器的输出方式
输入补码与输出电流之间的关系
补码 偏移码 电流 电流
十进制数 D3D2D1D0 i /mA
d3d2d1d0 iO /mA
+7 0111 1111 1.875 0.875
+6 0110 1110 1.750 0.750
… … …
+1 0001 1001 1.125 0.125
0 0000 1000 1.0 0
-1 1111 0111 0.875 -0.125
… … …
-7 1001 0001 0.125 -0.875
-8 1000 0000 0 -1.0
D/A 转换器的输出方式

NB (补码)

D7 D6 D5 D4 D3 D2 D1 D0  VB | VB | | VREF |

RB 2R
RB
IB
i R=Rf
VREF n 位倒 T 形电阻 iO
网络 D/A 转换器

A1 O
+
D/A 转换器的输出方式

例 分析下面电路将补码变成双极性电压输出的工作原理。
VREF
2R1

D3
i Rf =R 1 R1 R1 O
4 位 R-2R
D2
NB 倒 T 形网
络 D/A 转 – –
(补码) D1
换器 A1 A2
D0 + +
D/A 转换器的输出方式

解:A1的输出: VREF
2R1

VREF
1   4 ( N B  23 ) D3
i Rf =R 1 R1 R1 O
2 D2
4 位 R-2R
倒 T 形网
偏移码 NB
(补码) D1 络 D/A 转 – –
换器 A1 A2
D0 + +

A2的输出:

VREF
O  1 
2
VREF VREF VREF
 4
(NB  2 ) 
3
 4
 NB
2 2 2
再见!
教学内容、要求及小结

本节主要内容:
 D/A 转换器的主要技术指标及其含义

学习本节后,你应该能
 理解 D/A 转换器主要技术指标的含义
 合理选择和正确使用 D/A 转换器

小结:
● 分辨率、转换误差和转换速度是 D/A 转换器最重要的技术指标。
● 分辨率用来表征 D/A 转换器对输入量微小变化的敏感程度。分辨率只与
位数有关,与基准电压的大小无关,故生产厂商常用 D/A 转换器的位数表示分
辨率。D/A 转换器的位数越多,分辨率越高。
● D/A 转换器的转换误差是指在稳态工作时,实际输出的模拟量与理想值之
间存在的最大偏差。这是一个综合性的静态指标,它受到 D/A 转换器中元件参
数误差、基准电压的波动和运算放大器的零漂等因素的影响,因此,转换误差有
比例系数误差、失调误差和非线性误差等。
● D/A 转换器的转换速度通常用建立时间和转换速率两个参数来描述。
● 建立时间一般用 D/A 转换器输入的数字量 NB 从全 0 变为全 1 时,输出电
压 vO 从 0 变到满刻度输出值的规定误差范围(一般为LSB/2)时所需时间表示。
● 转换速率是指大信号工作状态下,模拟输出电压的最大变化率。通常以
V / μs 为单位表示。
模数与数模转换器

华中科技大学 罗杰
D/A 转换器的主要技术指标
D/A转换器的主要技术指标

分辨率
比例系数误差
主要技术
指标
转换精度 失调误差

非线性误差
转换速度
D/A转换器的主要技术指标

1. 分辨率
 最小输出电压VLSB:是指输入数码仅 D0为1,其余各位均为0
时,所对应的输出电压值。

例如,一个8位DAC,若VREF=5V,则最小输出电压为:

VREF 5 V
VLSB  8  8  19.5 3mV
2 2
D/A转换器的主要技术指标

1. 分辨率
 最大输出电压Vmax:是指输入数码全部为1时,所对应的输出
电压值,有时也称为满刻度输出电压VFSR。

FSR:是英文Full Scale Range的缩写,指满刻度值。


例如,一个8位DAC,若VREF=5V,则最大输出电压为:
7
VREF
Vmax  8
2
 i )  4.98 V
( D
i 0
 2 i
D/A转换器的主要技术指标

1. 分辨率

分辨率:用来表征 D/A 转换器对输入量微小变化的敏感程度。

对于 n 位 D/A转换器,其分辨率为:

VLSB 1
分辨率   n
Vmax 2  1

 分辨率只与位数有关,与基准电压 VREF 的大小无关。


 位数越多,分辨率越高。
D/A转换器的主要技术指标

1. 分辨率

例如,对于一个电压输出的 8 位D/A转换器,其分辨率为
1 1

2  1 255
8

• 表示输出电压被等分成255份;
• 总共有 28 个不同的电压值。
D/A转换器的主要技术指标

例 已知 10 位 D/A 转换器满刻度输出电压 Vmax = 10 V。

(1) 求输入最低位 D0 对应的输出电压 VLSB;


(2) 如果要求分辨的最小电压为 5mV ,应该选用 D/A转换器
的位数是多少?
解: (1) 根据分辨率的公式,得到

Vmax 10 V
VLSB  n  10  0.01V
2 1 2 1
D/A转换器的主要技术指标

例 已知 10 位 D/A 转换器满刻度输出电压 Vmax = 10 V。

(1) 求输入最低位 D0 对应的输出电压 VLSB;


(2) 如果要求分辨的最小电压为 5mV ,应该选用 D/A转换器
的位数是多少?
解: (2)将VLSB=5mV,Vmax=10V代入分辨率的公式,有

1 0.005 V

2 1
n
10 V

 n  11
D/A转换器的主要技术指标

2.转换误差
是指在稳态工作时,实际输出的模拟量与理想值之间存在的
最大偏差。

转换误差

比例系数误差 失调误差 非线性误差


D/A转换器的主要技术指标

2.转换误差 O
VREF

 比例系数误差:是指实际转换 7/8
6/8
特性曲线的斜率与理想特性曲
5/8 理想

线斜率的偏差。 4/8 比例系数误差


实际
引起该误差的原因: 3/8  O

2/8
 基准电压 VREF 偏离标准值。
1/8
 运放闭环增益偏离设计值。
000 001 010 011 100 101 110 111
D/A转换器的主要技术指标

2.转换误差 O
VREF

 失调误差:也称为零点误差,是 7/8
 O
6/8
指输入数字量为全 0 时,模拟量 5/8

的实际起始数值不为零值。 4/8 实际

3/8 理

引起该误差的原因: 2/8

 运算放大器的零点漂移。 1/8

000 001 010 011 100 101 110 111


D/A转换器的主要技术指标

2.转换误差

 非线性误差:表征 D/A 转换器输入的数字量作等量增加时,其输


出的模拟电压不能等量增加的程度。
 通常用在满刻度范围内,偏离理想转移特性的最大值来表示。

引起该误差的原因:
 开关导通的等效电阻不为零
 电阻网络中阻值的偏差
D/A转换器的主要技术指标

3.转换速度

 建立时间:指输入数字量变化
时,输出电压达到规定误差范
围所需的时间。
 一般用 D/A 输入数字量NB从全0
变为全1时,输出电压 vO 从 0 变
到满刻度输出值的规定误差范
围时所需时间表示。
D/A转换器的主要技术指标

3.转换速度

 转换速率:指大信号工作状态下,模拟输出电压的最大变化率。
通常以 V/s 为单位。

 一般不包含基准电压源和运算放大器的集成D/A转换器,
转换速率比较高。
D/A转换器的主要技术指标

 在使用集成 D/A 转换器时,还必须知道:

 工作电源电压
 输出方式
 输出值范围
 输入逻辑电平等
再见!
教学内容、要求及小结

本节主要内容:
 介绍 A/D 转换的一般过程——取样、保持、量化和编码

学习本节后,你应该能
 理解 A/D 转换的一般过程
 了解取样定理的内容

小结:
● 现在常用的 A/D 转换器有多种不同的电路结构,如并行比较型、逐次比较
型、双积分式等。它们的工作原理各不相同,但转换过程是类似的,通常包括取
样、保持、量化、编码等,如下图所示。

I(t) DO(t)
模拟量输入
取样-保持 量化 编码
数字量输出

● 在一系列离散的时间点上,对输入的模拟信号抽取样值,称为取样(或者
抽样)。为了保证取样所得到的信号O(t)能够保留原输入信号I(t)所包含的全部
信息,即能够从信号O(t)中将原先被取样信号恢复出来,必须满足下式:
fs ≥ 2 fimax
式中,fs 为取样信号的频率,fimax 为输入模拟信号I(t)的最高次谐波分量的频
率。这个式子就被称为取样定理。
● 一般取样与保持过程都是同时完成的。将取样所得信号转换为数字信号往
往需要一定的时间,为了给后续的量化、编码电路提供一个稳定值,取样电路的
输出还须保持一段时间。
● 经过取样和保持电路后,得到的输出信号仍然是模拟信号。要转换成数字
量,还要把取样得到的数值表示为某个最小数量单位的整数倍,这一转换过程称
为量化。量化所取的最小数量单位称为量化单位,用表示。
● 划分量化电平的方法通常有两种:舍尾取整法和四舍五入法。
● 把量化后的结果用二进制码或其他代码表示出来的过程称为编码。经编码
输出的代码就是 A/D 转换器的转换结果。
模数与数模转换器

华中科技大学 罗杰
A/D 转换的一般工作过程
A/D 转换的一般工作过程

 A/D 转换器的功能

能将模拟量(电压或者电流)成正比地转换成对应的
数字量。

输入模拟电压 输出数字量
A/D
I Dn~D0
转换器
A/D 转换的一般工作过程

时间上和幅值上都连续 时间上和幅值上都离散
模拟信号 数字信号

取 编
样 码
保持、量化
时间上离散的信号 幅值上也离散的信号

A/D 转换器一般要包括取样、 保持、量化及编码等过程。


A/D 转换的一般工作过程

 取样与保持
I (t)
TG

I(t) O(t)

t
0
S(t)
S(t)

 S(t)=1:开关闭合, O(t) = I(t); 0



t
O (t) TS
 S(t)=0:开关断开, O(t) = 0

t
0
A/D 转换的一般工作过程

 取样定理
I (t)

 取样信号S(t)的频率愈高,
取样点数愈多,愈能真实地 t
0
S(t)
复现输入信号。
 若取样频率过低,可能形成 0
O (t) 
t
TS

频谱失真,使得取样得到的
信号不能反映原来的模拟输 t
0

入信号。
A/D 转换的一般工作过程

 取样定理

设采样信号S(t)的频率为 fs,
输入模拟信号I(t)的最高次
谐波分量的频率为fimax,

fs ≥ 2fimax
奈奎斯特(1889-1976)
美国物理学家
A/D 转换的一般工作过程

 取样与保持电路
将取样所得信号转换为数字信号往往需要一定的时间,为了
给后续的量化编码电路提供一个稳定值,取样电路的输出还
须保持一段时间。
A/D 转换的一般工作过程

 取样与保持电路

I S O t
A1 A2
CH

开关驱
I
动电路

采样-保持控制电路

 AV1AV2= 1, 0 t0 t1 t2 t3 t4 t5 t6
t

 A1的 Ri 高, 采样
 A2 的 Ri 高,A2的RO低
A/D 转换的一般工作过程

 取样与保持电路

I S O t
A1 A2
CH O
开关驱
I
动电路

无放电
采样-保持控制电路

 AV1AV2= 1, 0 t0 t1 t2 t3 t4 t5 t6
t

 A1的 Ri 高, 采样 保持
 A2 的 Ri 高,A2的RO低
A/D 转换的一般工作过程

 量 化

 模拟信号取样后变成在时间上离散的信号,但取样信号仍然是
模拟信号。这个取样信号必须经过量化才成为数字信号。
 把取样得到的数值表示为某个最小数量单位的整数倍,这一转
换过程称为量化。
 量化所取的最小数量单位称为量化单位,用 表示。
 模拟量  转换成数字量后,恰好使数字量的最低位为1,所以模
拟量 ,在数字域记为 1LSB。
A/D 转换的一般工作过程

 量化误差 量化前的电压与量化后的电压差

 由于取样值是连续的,它的值不一定能被 整除,所以量化前、
后一定存在误差,此误差我们称之为量化误差,用  表示。。
 量化误差属原理误差,它是无法消除的。

 A/D 转换器的位数越多,1LSB所对应的值越小,量化误差的
绝对值越小。
A/D 转换的一般工作过程

 量化方式

近似量化方式

舍尾取整 四舍五入
A/D 转换的一般工作过程

例 将 0 ~ 1 V 电压转换为 3位二进制代码
输入 量化后
信号 电压 编码 取量化单位:
1V
7
V
7Δ=7/8 V 111 Δ=1LSB = 1/8 V
8
6
6Δ=6/8 V 110
V
8
5
V
5Δ=5/8 V 101 最大量化误差为:
8
4
4Δ=4/8 V 100
 max  1 LSB
V
8
3
V
3Δ=3/8 V 011
8
2
2Δ=2/8 V 010
=1/8V
V
8
1 1Δ=1/8 V 001
V
8
0Δ=0 V 000
0
A/D 转换的一般工作过程

 舍尾取整量化:
 量化中把不足一个量化单位
的部分舍弃;
 对于等于或大于一个量化单
位部分按一个量化单位处理。
A/D 转换的一般工作过程

例 将 0 ~ 1 V 电压转换为 3位二进制代码
输入 量化后
信号 电压 编码 取量化单位:
1V
13 7Δ=14/15 V 111 Δ=1LSB = 2/15 V
V
6Δ=12/15 V 110
15
11
V
15
9 5Δ=10/15 V 101 最大量化误差为:
V
4Δ=8/15 V 100
15
1
 max  LSB
7
V
15
3Δ=6/15 V 011
5
V 2
2Δ=4/15 V 010
15

= 1/15 V
3
V
1Δ=2/15 V 001
15
1
V
15
0
0Δ=0 V 000
A/D 转换的一般工作过程

 四舍五入量化:
 量化过程中,将不足半个量
化单位部分舍弃;
 对于等于或大于半个量化单
位部分按一个量化单位处理。
 最大量化误差自然不会超过
(1/2) 。
A/D 转换的一般工作过程

 编 码

 由于量化等级数是有限的,可以使用有限位二进制数
来表示。
 把量化后的结果用二进制码或其他代码表示出来的过
程称为编码。
 经编码输出的代码就是A/D转换器的转换结果。
A/D 转换的一般工作过程

 模拟信号的数字化过程 (请帮忙重画这个图)
再见!
教学内容、要求及小结

本节主要内容:
 并行比较型 A/D 转换器的工作原理

学习本节后,你应该能
 掌握并行比较型 A/D 转换器的工作原理

小结:
● 并行比较型 A/D 转换器的最显著优点是转换速度快,通常这种转换器的
转换时间为几十个 ns,是转换速度最快的。
● 并行 A/D 转换器通常采用 4 舍 5 入的方法划分量化电平。其转换精度主
要取决于量化电平的划分,分得越细(即取得越小),精度越高。此外,转换精
度还受到分压电阻、基准电压源精度和电压比较器灵敏度的影响。
● 这种 A/D 转换器的主要缺点是使用的比较器和触发器数目太多。例如,三
位并行 A/D 转换器需 7 个比较器和 7 个触发器。对于一个 n 位的并行 A/D 转换
器,就要用到 2n1 个比较器和相同数量的触发器。
模数与数模转换器

华中科技大学 罗杰
按照工作原理分类
并行比较型 A/D 转换器
并行比较型A/D转换器
VREF

I R
+C1 CO1 Q1
1D I1

>C1
R + CO2 Q2
C2 1D I2

>C1
R +C3 CO3 Q3
1D I3 D0 (LSB)

>C1 优 D0
R +C CO4 Q4 先

4 1D I4 编 D1
>C1 码
R + CO5 Q5 器

C5 1D I5 D2 (MSB)
>C1 0
R + CO6 Q6

C6 1D I6
>C1
R + CO7 Q7
C7 1D I7

>C1
R/2
CP
并行比较型A/D转换器
VREF
精密基准电压源
I R
+C1 CO1 Q1
1D I1
13VREF/15 –
>C1
R + CO2 Q2
C2 1D I2
11VREF/15 –
>C1
R +C3 CO3 Q3
1D I3 D0 (LSB)
9VREF/15 –
>C1 优 D0
R +C CO4 Q4 先

4 1D I4 编 D1
7VREF/15 >C1 码
R + CO5 Q5 器
5VREF/15 –
C5 1D I5 D2 (MSB)
>C1 0
R + CO6 Q6

C6 1D I6
3VREF/15 >C1
R + CO7 Q7
C7 1D I7
VREF/15 –
>C1
R/2
CP
并行比较型A/D转换器
VREF
VREF
0  I 
15 I R
+C1 CO1 0 1D
Q1
13VREF/15 – I1
>C1
R + CO2 0 1D
Q2
11VREF/15 –
C2 I2
>C1
R +C3 CO3 0 1D
Q3
I3 D0 (LSB)
9VREF/15 –
>C1 优 D0
R +C CO4 0 Q4 先

4 1D I4 编 D1
7VREF/15 >C1 码
R + CO5 0 Q5 器
5VREF/15 –
C5 1D I5 D2 (MSB)
>C1 0
R +
C6
CO6 0 1D
Q6
I6
3VREF/15 –
>C1
R +
C7
CO7 0 1D
Q7 I7
VREF/15 –
>C1
R/2
CP
并行比较型A/D转换器
VREF
VREF 3VREF
 I 
15 15
I
R
+C1 CO1 0 1D
Q1
13VREF/15 – I1
>C1
R + CO2 0 1D
Q2
11VREF/15 –
C2 I2
>C1
R +C3 CO3 0 1D
Q3
I3 D0 (LSB)
9VREF/15 –
>C1 优 D0
R +C CO4 0 Q4 先

4 1D I4 编 D1
7VREF/15 >C1 码
R + CO5 0 Q5 器
5VREF/15 –
C5 1D I5 D2 (MSB)
>C1 0
R +
C6
CO6 0 1D
Q6
I6
3VREF/15 –
>C1
R +
C7
CO7 1 1D
Q7 I7
VREF/15 –
>C1
R/2
CP
并行比较型A/D转换器
VREF
3VREF 5VREF
 I 
15  15
I
R
+C1 CO1 0 1D
Q1
13VREF/15 – I1
>C1
R + CO2 0 1D
Q2
11VREF/15 –
C2 I2
>C1
R +C3 CO3 0 1D
Q3
I3 D0 (LSB)
9VREF/15 –
>C1 优 D0
R +C CO4 0 Q4 先

4 1D I4 编 D1
7VREF/15 >C1 码
R + CO5 0 Q5 器
5VREF/15 –
C5 1D I5 D2 (MSB)
>C1 0
R +
C6
CO6 1 1D
Q6
I6
3VREF/15 –
>C1
R +
C7
CO7 1 1D
Q7 I7
VREF/15 –
>C1
R/2
CP
并行比较型A/D转换器

vI CO1 CO2 CO3 CO4 CO5 CO6 CO7


0 vI  VREF/15 0 0 0 0 0 0 0 取量化单位:
VREF/15  vI  3VREF/15 0 0 0 0 0 0 1 Δ=1LSB = 2/15 V
3VREF /15  vI  5VREF/15 0 0 0 0 0 1 1
最大量化误差为:
5VREF/15  vI  7VREF/15 0 0 0 0 1 1 1
1
 max  LSB
7VREF/15  vI  9VREF/15 0 0 0 1 1 1 1 2
9VREF/15  vI  11VREF/15 0 0 1 1 1 1 1 = 1/15 V
11VREF/15  vI  13VREF/15 0 1 1 1 1 1 1
13VREF/15  vI  15VREF/15 1 1 1 1 1 1 1
并行比较型A/D转换器
VREF
8VREF
I 
I
15 R
+C1 CO1 0 1D
Q1 0
13VREF/15 – I1
>C1
R + CO2 0 1D
Q2 0
11VREF/15 –
C2 I2
>C1
R +C3 CO3 0 1D
Q3 0 I 0 D0 (LSB)
9VREF/15 – 3
>C1 优 D0
R +C CO4 1 Q4 1 先 0 D1

4 1D I4 编
7VREF/15 >C1 码
R + CO5 1 Q5 1 器 1 D2 (MSB)
5VREF/15 –
C5 1D I5
>C1 0
R +
C6
CO6 1 1D
Q6 1 I6
3VREF/15 –
>C1
R +
C7
CO7 1 1D
Q7 1 I7
VREF/15 –
>C1
R/2
CP
并行比较型A/D转换器
3 位并行 A/D 转换器输入与输出关系对照表
vI CO1 CO2 CO3 CO4 CO5 CO6 CO7 D2 D1 D0
0 vI  VREF/15 0 0 0 0 0 0 0 0 0 0
VREF/15  vI  3VREF/15 0 0 0 0 0 0 1 0 0 1
3VREF /15  vI  5VREF/15 0 0 0 0 0 1 1 0 1 0
5VREF/15  vI  7VREF/15 0 0 0 0 1 1 1 0 1 1
7VREF/15  vI  9VREF/15 0 0 0 1 1 1 1 1 0 0

9VREF/15  vI  11VREF/15 0 0 1 1 1 1 1 1 0 1
11VREF/15  vI  13VREF/15 0 1 1 1 1 1 1 1 1 0
13VREF/15  vI  15VREF/15 1 1 1 1 1 1 1 1 1 1
并行比较型A/D转换器
VREF

I R
+C1 CO1 Q1
1D I1
13VREF/15 –
>C1
R + CO2 Q2 电路允许输入电压
C2 1D I2

11VREF/15 >C1 的范围是:
R +C3 CO3 Q3
1D I3 D0 (LSB)

0  I  VREF
9VREF/15 >C1 优 D0
R +C CO4 Q4 先

4 1D I4 编 D1
7VREF/15 >C1 码
R + CO5 Q5 器
5VREF/15 –
C5 1D I5 D2 (MSB)
>C1 0
R + CO6 Q6

C6 1D I6
3VREF/15 >C1
R + CO7 Q7
C7 1D I7
VREF/15 –
>C1
R/2
CP
并行比较型A/D转换器
 电路特点

 这种并行A/D转换器的转换精度主
要取决于量化电平的划分,分得越
细(即  取得越小),精度越高。
并行比较型A/D转换器
 电路特点

 缺点:电路复杂。

 对于一个 n 位的并行 A/D 转换器,


就要用到 2n1 个比较器和相同数量
的触发器。
并行比较型A/D转换器
 电路特点

 这种并行A/D转换器的转换精度主
要取决于量化电平的划分,分得越
细(即取得越小),精度越高。

 转换精度还受到分压电阻、基准电
压源精度和电压比较器灵敏度的影
响。
并行比较型A/D转换器
 电路特点

 优点:转换速度快。

 在并行A/D转换器中,输入电压I同时加到所有比较器的输入端。如不
考虑各器件的延迟,可认为三位数字量是与I输入时刻同时获得的。
所以它的转换时间最短。

 单片集成并行比较型A/D转换器的产品很多,如 ADI 公司的 AD9012


(TTL工艺,8位)、AD9002 (ECL工艺,8位)、AD9020 (TTL工艺,10
位)等。
再见!
教学内容、要求及小结

本节主要内容:
 逐次比较型 A/D 转换器的电路结构及工作原理

学习本节后,你应该能
 掌握逐次比较型 A/D 转换器的工作原理

小结:
● 逐次逼近转换技术,就是取一个数字量加到 D/A 转换器上,输出一个对应
的模拟电压O,与待转换的模拟量I 进行比较。若O 与I 正好相等,就得到了与
模拟量I 相对应的数字量。通常从高位到低位逐位增加数字量,经过多次比较后,
就能找到与模拟量I 相对应数字量。
● 逐次比较型 A/D 转换器与并行 A/D 转换器相比较,前者的转换速度要慢
一些,但位数较多时,逐次比较型转换器的电路规模比较小,转换精度较高。其
转换速度较其他类型电路的转换速度又快得多,因此,逐次比较型电路在集成
A/D 转换器产品中用得较多。
● 逐次比较型 A/D 转换器完成一次转换所需时间与其位数 n 和时钟脉冲频
率有关,位数越少,时钟频率越高,转换所需时间越短。
模数与数模转换器

华中科技大学 罗杰
逐次比较型 A/D 转换器
逐次比较型 A/D 转换器

 转换原理
逐次逼近转换过程与用天平称物重非常相似 。
所用砝码重量:8克、4克、2克和1克。
设待秤重量 Wx = 13克。
所加砝 说 明 结 果
码重量
第一次 8克 砝码总重 < 待测重量 Wx ,8克砝码保留 8克

第二次 再加4克 砝码总重 < 待测重量 Wx ,4克砝码保留 12克


第三次 再加2克 砝码总重 > 待测重量 Wx ,2克砝码去掉 12克
第四次 再加1克 砝码总重 = 待测重量 Wx ,1克砝码保留 13克
逐次比较型 A/D 转换器

 转换原理

 逐次逼近转换技术,就是取一个数字量加到 D/A 转换器上,


输出一个对应的模拟电压O,与待转换的模拟量I 进行比
较。若O与I 正好相等,就得到了与模拟量I相对应的数
字量。
 通常从高位到低位逐位增加数字量,经过多次比较后,就
能找到与模拟量I 相对应数字量。
逐次比较型 A/D 转换器

 转换原理 第一个 CP:


CP
电压 脉冲源
模拟量输入
I=6.84V 比较器
移位寄位器
I + 1 0·0·…· 0

控制
逻辑 数据寄存器

电路 1 0 0 0
D7 数
启动脉冲
D6 字

···

· · ·
D1 输
D0 出
VREF
VREF= -10V D/A 转换器

O
逐次比较型 A/D 转换器

8 位 D/A 转换器的输出模拟电压:
7
VREF Rf
O   8 
2 R
 (D  2 )
i 0
i
i

当 Rf = R , VREF = -10 V,且


数字量 10000000 时,得到
VREF 7 VREF
O   8  2  
2 2
O  5 V
逐次比较型 A/D 转换器

 转换原理 第一个CP: I ≥ 5 V 保留最高位 1


CP
电压 脉冲源 移位寄位器
模拟量输入
I=6.84V 比较器
I + 1 0·0·…· 0

控制
逻辑 数据寄存器
… 1
电路 1 0 0 0
D7 数
启动脉冲
D6 字

···

· · ·
D1 输
D0 出
VREF=10V
VREF D/A 转换器

 F =5 V
逐次比较型 A/D 转换器

 转换原理 第二个CP: I < 7.5 V 去掉次最高位 1


CP
电压 脉冲源
模拟量输入
I=6.84V 比较器
移位寄位器
I + 0 1·0·…· 0

控制
逻辑 数据寄存器
… 1
电路 1 1 0 0
D7 数
启动脉冲
0 D6 字

···

· · ·
D1 输
D0 出
VREF
VREF= -10V D/A 转换器

 O =7.5 V
逐次比较型 A/D 转换器

 转换原理 第三个CP: I > 6.25 V 保留对应位的 1


CP
电压 脉冲源
模拟量输入
I=6.84V 比较器
移位寄位器
I + 0 0·1 · …· 0

控制
逻辑 数据寄存器
10 1 … 0 1
电路 D7 数
启动脉冲 0 D6 字

···

· · ·
D1 输
D0 出
VREF
VREF= -10V D/A 转换器

 O =6.25V
10s

CP
启动脉冲

D7
1 1 1 1
D6
0 1 0 0
D5 0 0 1 1
D4 0 0 0
D3 0 0 0
D2 0 0 0
D1 0 0 0
D0 0 0 0
O
V
9
8 7.50000 VREF= -10V
7 6.2500
6
 I=6.84V
5.0000
5
4
3
2
1 t /s
0.00
0
10s

CP
启动脉冲

D7
1 1 1 1 1
D6
0 1 0 0 0
D5 0 0 1 1 1
D4 0 0 0 1 0
D3 0 0 0 0
D2 0 0 0 0
D1 0 0 0 0
D0 0 0 0 0
O
V
9
8 7.50000
6.8750
VREF= -10V
7 6.2500
6
 I=6.84V
5.0000
5
4
3
2
1 t /s
0.00
0
10s

CP
启动脉冲

D7
1 1 1 1 1 1
D6
0 1 0 0 0 0
D5 0 0 1 1 1 1
D4 0 0 0 1 0 0
D3 0 0 0 0 1 1
D2 0 0 0 0 0
D1 0 0 0 0 0
D0 0 0 0 0 0
O
V
9
8 7.50000
6.8750
VREF= -10V
7 6.2500 6.5625
6
 I=6.84V
5.0000
5
4
3
2
1 t /s
0.00
0
10s

CP
启动脉冲

D7
1 1 1 1 1 1 1
D6
0 1 0 0 0 0 0
D5 0 0 1 1 1 1 1
D4 0 0 0 1 0 0 0
D3 0 0 0 0 1 1 1
D2 0 0 0 0 0 1 1
D1 0 0 0 0 0 0
D0 0 0 0 0 0 0
O
V
9
8 7.50000
6.8750
VREF= -10V
7 6.2500 6.5625 6.71875
6
 I=6.84V
5.0000
5
4
3
2
1 t /s
0.00
0
10s

CP
启动脉冲

D7
1 1 1 1 1 1 1 1
D6
0 1 0 0 0 0 0 0
D5 0 0 1 1 1 1 1 1
D4 0 0 0 1 0 0 0 0
D3 0 0 0 0 1 1 1 1
D2 0 0 0 0 0 1 1 1
D1 0 0 0 0 0 0 1 1
D0 0 0 0 0 0 0 0
O
V
9
8 7.50000
6.8750
VREF= -10V
7 6.2500 6.5625 6.71875
6 6.796875

 I=6.84V
5.0000
5
4
3
2
1 t /s
0.00
0
10s

CP
启动脉冲

1 1 1 1 1 1 1 1 1
D7

D6
0 1 0 0 0 0 0 0 0
D5 0 0 1 1 1 1 1 1 1
D4 0 0 0 1 0 0 0 0 0
D3 0 0 0 0 1 1 1 1 1
D2 0 0 0 0 0 1 1 1 1
D1 0 0 0 0 0 0 1 1 1
D0 0 0 0 0 0 0 0 1 1
O
V
9
8 7.50000
6.8750
VREF= -10V
7 6.5625 6.71875 6.835937
6.2500
6 6.796875

 I=6.84V
5.0000
5
4
3
2
1 t /s
0.00
0

转换时间 = 80s
逐次比较型 A/D 转换器

小结
1、逐次比较型 A/D 转换器完成一次转换所需时间与其位数 n 和
时钟脉冲频率有关,位数愈少,时钟频率越高,转换所需时间越
短。

2、A/D 转换器输出数字量的位数越多,转换精度越高。
再见!
教学内容、要求及小结

本节主要内容:
 双积分式 A/D 转换器的电路结构及工作原理

学习本节后,你应该能
 掌握双积分式 A/D 转换器的工作原理

小结:
● 双积分式 A/D 转换器是一种间接 A/D 转换器。它采用对输入模拟电压和
参考电压分别进行两次积分,将输入电压平均值变换成与之成正比的时间间隔,
然后利用时钟脉冲和计数器测出此时间间隔,进而在输出端得到与模拟量相应的
数字量。由于该转换电路是对输入电压的平均值进行变换,所以它具有很强的抗
工频干扰能力,在数字测量中得到广泛应用。
● 双积分式 A/D 转换器最突出的优点是工作性能比较稳定,由于在转换过
程中,前后两次积分采用的是同一个积分器。因此,对与积分相关的电阻、电容
以及时钟脉冲源的稳定性要求不是很高,只要求在一个转换周期时间内保持稳定
即可。
● 双积分式 A/D 转换器主要缺点是工作速度较低,其转换速度一般都在每
秒几十次以内。通常用于速度要求不高、精度要求较高的测量仪表、工业测控系
统中。
● 不同结构的 A/D 转换器有各自的特点,在要求转换速度高的场合,可选用
并行 A/D 转换器;在要求精度高的情况,可以采用双积分 A/D 转换器,当然也
可选用高分辨率的其它形式 A/D 转换器,但成本会增加。由于逐次比较型 A/D
转换器在一定程度上兼顾了以上两种转换器的优点,因此得到普遍应用。
模数与数模转换器

华中科技大学 罗杰
双积分式 A/D 转换器
双积分式A/D转换器

S2
C
A S1
+I R
– O
–VREF S –
B + C C
定1 +

信 n 级计数器
号 FF 1 FFn-1 1 FF1 1 FF0 1
n

1 Qn T Qn-1 T Q1 T Q0 T
C< C< C< C < G G
1 1 1 1
R R R R
CP
CR
Dn-1 D1 D0
(MSB) (LSB) Tc
数字量输出
双积分式 A/D 转换器

S2
C
A S1
+ I R
– O  0 –
–VREF S C 0
B + C
定1 +

信 n 级计数器
号 1 1 1 1
FFn FFn-1 FF1 FF0
Qn T Qn-1 T Q1 T Q0 T
0
C< C< C< C < G G
1 1 1 1
R R R R
CP
CR
Dn-1 D1 D0
(MSB) (LSB) Tc
数字量输出
双积分式A/D转换器

S2
C
A S1
+ I R
– O <0
–VREF S – 1
B + C C
定1 +

信 n 级计数器
号 1 1 1 1
FFn FFn-1 FF1 FF0
Qn T Qn-1 T Q1 T Q0 T
0
C< C< C< C < G G
1 1 1 1
R R R R
CP
CR
Dn-1 D1 D0
(MSB) (LSB) Tc
数字量输出
双积分式 A/D 转换器

S2 (1) 准备阶段:
C
A S1
+I  S1 R
– O CR信号将计数器清零;
–VREF –
B + C C
定 +
开关S2闭合,待积分电

信 n 级计数器

容放电完毕后,断开S2
FFn 1 FFn-1 1 FF1 1 FF0 1
Q0n T Q0n-1 T Q01 T Q00 T 使电容的初始电压为0。
C< C< C< C < G G
1 1 1 1
R R R R
CP
CR
0 Dn-1 D1 D0
(MSB) (LSB) Tc
数字量输出
双积分式A/D转换器
1 t
O  
  0
 I dt
(2) 第一次积分:
S2
C
A S1
+I  S1 R
– ,
O
– • t = 0 时,开关S1与A
–VREF C
B + C
定 +

端相接,积分器开始
信 n 级计数器
号 1 1 1 1
对I 积分。
FFn FFn-1 FF1 FF0
Q0n T Qn-1 T Q1 T Q0 T
C< C< C< C < G G
1 1 1 1
R R R R
CP
CR 1
Dn-1 D1 D0
(MSB) (LSB) Tc
数字量输出
双积分式A/D转换器
1 t
O  
  0
 I dt
(2) 第一次积分:
S2
C
A S1
+I  S1 R  S1 + I
– O
–VREF –
B + C C 1
定 + 0 t

信 n 级计数器
O
号 FFn 1 FFn-1 1 FF1 1 FF0 1 T1
Q0n T Q1
0n-1
T
01
1
Q T Q1
00
T
0 t
C< C< C< C < G G
1 1 1 1 ①
R R R R
CP
CR 1
Dn-1 D1 D0
(MSB) (LSB) Tc
数字量输出
经过(2n-1)个 CP
双积分式A/D转换器
1 t VI
O  
  0  I dt   
 T1
(2) 第一次积分结束:
S2
C
A S1
+I  S1 R  S1 + I
– O
–VREF –
B + C C 1
定 + 0 t

信 n 级计数器
O
号 FFn 1 FFn-1 1 FF1 1 FF0 1 T1
Q1n T Q0
1n-1
T Q0
11
T Q0
10
T
0 t
C< C< C< C < G G
1 1 1 1 ①
R R R R P
CP
CR 1 2n T1
Dn-1 D1 D0 P   VI
(MSB) (LSB) Tc

数字量输出
经过 2n个 CP T1=2nTC
Qn
T1=2nTC 1 t
O  
   dt
0 I
0 t
t1 t2
S1 T1
+ I
P   VI
0 t

–VREF 2 n Tc
O P   VI
T1 T2 
0 t

① • 在 T1 固定的条件下,积分器的
C P
输出电压 P与输入电压 I的平
0 t 均值成正比。
G
0 t
T1
双积分式A/D转换器
1 t2
 O  VP 
  t1
( VREF ) dt
(2) 第二次积分:
S2
C
A S1
+I  S1 R
–VREF
– O – • VREF 加到积分器的
B + C C 1
+
定 输入端;

n 级计数器
信 • 积分器反方向进行
号 FFn 1 FFn-1 1 FF1 1 FF0 1
Q1n T Q0
1n-1
T Q0
11
T Q0
10
T 第二次积分.
C< C< C< C < G G
1 1 1 1
R R R R
CP
CR 1
Dn-1 D1 D0
(MSB) (LSB) Tc
数字量输出
双积分式A/D转换器
1 t2
 O  VP 
  t1
( VREF ) dt
(2) 第二次积分:
S2
C
A S1
+I  S1 R  S1
– O + I
–VREF –
B + C C 1 t
定 + 0
时 –VREF
信 n 级计数器
O
号 FFn 1 FFn-1 1 FF1 1 FF0 1 T1 T2
Q0
1n-1 01
1 t
Q1n T T Q T Q0
10
T 0
C< C< C< C < G G
1 1 1 1 ①
R R R R
CP P ②
CR 1
2n T1
Dn-1 D1 D0 P   VI
(MSB) (LSB) Tc 
数字量输出
双积分式A/D转换器
1 t2
 O  VP 
  t1
( VREF ) dt
(2) 第二次积分结束:
S2
C
A S1
+I  S1 R  S1
– O + I
–VREF –
B + C C 0 t
定 + 0
时 –VREF
信 n 级计数器
O
号 FFn 1 FFn-1 1 FF1 1 FF0 1 T1 T2
Q0
1n-1 t
Q1n T T Q1
01
T Q1
00
T 0
C< C< C< C < G G
1 1 1 1 ①
R R R R
CP P ②
CR 1
2n T1
Dn-1 D1 D0 P   VI
(MSB) (LSB) Tc 
数字量输出
计数值 N T2= NTc
Qn
1 t
O  
   dt
0 I
0 t
t1 t2
 S1 T1 2n TC
+ I P   V1   V1
 
0 t
1 t2


–VREF
T1=2nTC T2=NTC O (t2 )  p  (VREF )dt  0
O t1
T1 T2
0 t VREF
p  (t 2 - t1 )  0


P ②
C
2 n Tc VREFT2
 VI  0
0
 
t
G N 2 n Tc
T2  VI
0 t VREF
T1 T2
Qn

2 n Tc
0 t
T2  VI
t1 t2 VREF
 S1
+ I

0 t • T2与VI成正比,即电路将
–VREF
T1=2nTC T2=NTC 输入电压的平均值VI转换
O
T1 T2
0 t
成了时间间隔T2。
• VI越小,则 | P |越小,T2

P ②
C 越短。

0 t
G N

0 t
T1 T2
Qn

2 n Tc
0 t
T2  VI
t1 t2 VREF
 S1
+ I

0 t T2 = NTC
–VREF
T1=2nTC T2=NTC
O T2 2n
T1 T2 N  VI
0 t Tc VREF


② • 计数值 N 与在取样时间 T1 内输入
C P
电压的平均值VI 成正比。
0 t
• 计数器所计的数N=Qn-1…Q1Q0就是
G N
A/D 转换器得到的结果。
0 t
T1 T2
双积分式A/D转换器

 优 点:

• 由于转换结果与时间常数RC无关,从而消除了积分非线性带来
的误差。

• 只要求时钟源在一个转换周期时间内保持稳定。

• 由于双积分 A/D 转换器在 T1 时间内采的是输入电压的平均值,


因此具有很强的抗工频干扰的能力。
双积分式A/D转换器

 缺 点:

• 工作速度较低,其转换速度一般都在每秒几十次以内。

• 通常用于速度要求不高、精度要求较高的测量仪表、工业测控
系统中。
再见!
教学内容、要求及小结

本节主要内容:
 A/D 转换器的主要技术指标及其含义

学习本节后,你应该能
 理解 A/D 转换器主要技术指标的含义;
 合理选择和正确使用 A/D 转换器。

小结:
● A/D 转换转换器的主要技术参数是转换精度和转换速度。
● 在 A/D 转换器中,转换精度通常用分辨率和转换误差来描述。
● 分辨率反映了 A/D 转换器所能分辨的输入模拟量的最小值。在最大输入
电压一定时,输出位数愈多,量化单位愈小,分辨率愈高。
● A/D 转换器的转换误差表示实际输出数字量和理论上应该输出的数字量之
间的差别。对于以二进制数形式输出的 ADC 器件,一般用最低有效位(LSB)
的倍数来表示。对于以 BCD 码形式输出的 ADC 器件,通常以用满量程输出的
百分数来表示转换误差。
● 转换时间是指 A/D 转换器完成一次完整的转换所需要的时间。A/D 转换
器的转换时间主要取决于转换电路的类型,不同类型的转换器,其转换速度相差
较大。其中并行比较 A/D 转换器的转换速度最快,仅需几十纳秒时间。逐次比较
型 A/D 转换器次之,转换时间在几十微秒;双积分式 A/D 转换器的速度最慢,
需几百毫秒左右。
● 在实际应用中,应从数字系统数据总线的位数、精度要求、输入模拟信号
范围及输入信号极性、输出数字的编码等方面综合考虑 A/D 转换器的选用。
模数与数模转换器

华中科技大学 罗杰
A/D 转换器的主要技术指标
A/D 转换器的主要技术指标

 转换精度

转换精度:集成 A/D 转换器转换精度用分辨率和转换误差描述。

1. 分辨率:说明 A/D 转换器对输入信号的分辨能力。


通常以输出二进制(或十进制)数的位数表示。

2. 转换误差:表示 A/D 转换器实际输出的数字量和


理论上的输出数字量之间的差别。
A/D 转换器的主要技术指标
 分辨率

 可以用输出数字量的位数来表示。

例如,当输入电压的最大值为 5 V时,

• 8位 ADC,可以分辨的最小输入
电压为: 5 V/28 = 19.53 mV;

• 10位 ADC,可以分辨最小输入电
压为:5 V/210 = 4.88 mV。
A/D 转换器的主要技术指标

已知8位 A/D 转换器的基准电压VREF = 5.12V,求当



输入 vI = 3.8V 时,输出的二进制数字量。

解: A/D 转换器的基准电压 VREF 是输入信号的最大值。


8位 A/D 转换器的分辨率为:
vImax VREF 5.12
 8  8   0.02 V
2 2 256
 当输入vI = 3.8V 时,数字量为:
vI 3.8
  (190)D  (1011 1110)B
 0.02
A/D 转换器的主要技术指标

 转换精度

转换精度:集成 A/D 转换器转换精度用分辨率和转换误差描述。

1. 分辨率:说明 A/D 转换器对输入信号的分辨能力。


通常以输出二进制(或十进制)数的位数表示。

2. 转换误差:表示 A/D 转换器实际输出的数字量和


理论上的输出数字量之间的差别。
A/D 转换器的主要技术指标
 转换误差

 通常以输出误差最大值的形式给出

• 一般用最低有效位(LSB)的
倍数来表示。例如,转换误差
𝟏
< LSB。
𝟐
• 也用满量程输出的百分数来表
示转换误差。
A/D 转换器的主要技术指标
 转换误差
𝟏
• 𝟑 位BCD码输出 ADC,其输出范围为:0~1999,其转换误
𝟐

差为 0.05% FSR。
𝟐𝟎𝟎𝟎−𝟏𝟗𝟗𝟗
× 𝟏𝟎𝟎% = 0.05% FSR
𝟐𝟎𝟎𝟎
𝟒
• 𝟒 位BCD码输出 ADC,其输出范围为:0~4999,其转换误
𝟓

差为 0.002% FSR。
𝟓𝟎𝟎𝟎𝟎−𝟒𝟗𝟗𝟗𝟗
× 𝟏𝟎𝟎% = 0.002% FSR
𝟓𝟎𝟎𝟎𝟎
A/D 转换器的主要技术指标
 转换时间
 指 A/D 转换器从转换控制信号到来开始,到输出端得到稳定的
数字信号所经过的时间。
 A/D 转换器的转换时间与转换电路的类型有关。

电路类型 转换速度 比较

并行比较 A/D 转换器(8位) <50 ns 最高

逐次比较型 A/D 转换器 10~50 s 居中

间接 A/D 转换器 10 ms~1000 ms 最慢


A/D 转换器的主要技术指标

选用 A/D 转换器时,应注意:

1.数字系统数据总线的位数

2.精度要求

3.输入模拟信号范围及输入信号极性

4.输出数字的编码
再见!
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
华中科技大学

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
例题选讲

C C C C
钟祎

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
—D/A转换器综合运用

学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
例题选讲

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
D/A转换器综合运用

O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M


D/A转换器例题选讲




例题:由 D/A 转换器、扭环形计数器和 ROM 等电路组成的波形
产生电路如图所示,图中 ROM 数据表如表1所示,假设移位寄存
C

C
O

O
O

O
M

M
器74HC194 初始状态为 Q0Q1Q2Q3=0000





1 0 0 0 0
CP
 表 1 ROM的数据表
S1 CR D0 D1 D2 D3 CP 1 k 1 k
C

C
O

O
1 S0 74HC194 R1 0.001 F R2
A3 A2 A1 A0 O3 O2 O1 O0 A3 A2 A1 A0 O3 O2 O1 O0
O

O
M

M
DSR Q0 Q1 Q2 Q3 DSL C2


G
G1
C1 晶体
G2
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1



0.001 F 1 MHz 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0


A3 A2 A1 A 0
CE 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1
ROM −8 V
O3 O2 O1 O0 0 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0
0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1
C

C
D9 VREF
O

O
O

O
D8 Rf
0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1
M

M
D7


D6 IOUT1 0 1 1 0 1 0 0 0 1 1 1 0 0 1 1 1


D5 - vO


D4 AD7533 IOUT2 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1


D3 +
D2
D1
D0
C

C
O

O
O

O
M

M





M

M


D/A转换器例题选讲




(1)写出虚线框内电路的名称: 石英晶体多谐振荡器 ;
C

C
O

O
时钟信号CP的周期是: 1 μs ;
O

O
M

M





1 0 0 0 0
CP
石英晶体电路阻抗频率特性

S1 CR D0 D1 D2 D3 CP 1 k 1 k

C

C
X
O

O
1 S0 74HC194 R1 0.001 F R2
O

O

M

M
DSR Q0 Q1 Q2 Q3 DSL C2


G1 G2


G C1 晶体


电路符号 f0


0.001 F 1 MHz


A3 A2 A1 A 0
CE
f
ROM −8 V
O3 O2 O1 O0

电 电
C

C
D9 VREF
O

O
O

O
D8 Rf
容 容
M

M
D7


D6 IOUT1
性 性


D5 - vO


D4 AD7533 IOUT2



D3
D2 当 f = f0 时,电抗 X = 0
D1
D0
由石英晶体震荡频率为1MHz可知CP周期为1 μs
C

C
O

O
O

O
M

M





M

M


D/A转换器例题选讲




集成移位寄存器74HC194功能表
(2)填写完成计数器状态转换表,及
C

C
O

O
对应 D/A 转换器输入值和输出电压值;
O

O
M

M





计数器状态表及DAC输入和输出值
Q0 Q 1 Q2 Q3
C

C
CP D9 D8 D7 D6 υO /V 1
O

O
(A3 A2 A1 A0)
O

O
M

M
0 0 0 0 0 0 0 0 0 0



1 1 0 0 0 0 0 0 0



2 1 1 0 0 S1=0,S0=1,向右移位: 计数器状态图
3 1 1 1 0
DSR → Q0 → Q1 → Q2 → Q3
C

C
4 1 1 1 1 1000 1100
O

O
O

O
M

M
0 1 1 1
Q3 → DSR
5 0000 1110



6 0 0 1 1 Q0Q1Q2Q3


该移位寄存器构成模8扭环形计数器


1111
7 0 0 0 1 0000

0011 0111
8 0 0 0 0
查询ROM的数据表得到 D9D8D7D6
C

C
O

O
O

O
M

M





M

M


D/A转换器例题选讲




(2)填写完成计数器状态转换表,及
C

C
O

O
对应 D/A 转换器输入值和输出电压值;
O

O
M

M





计数器状态表及DAC输入和输出值
Q0 Q 1 Q2 Q3
C

C
CP D9 D8 D7 D6 υO /V 1
O

O
(A3 A2 A1 A0)
O

O
M

M
0 0 0 0 0 0 0 0 0 0



1 1 0 0 0 0 0 0 1 0 0 0 0



2 1 1 0 0 0 0 1 1 S1=0,S0=1,向右移位: 计数器状态图
3 1 1 1 0 0 1 1 1
DSR → Q0 → Q1 → Q2 → Q3
C

C
4 1 1 1 1 1 1 1 1 1000 1100
O

O
O

O
M

M
0 1 1 1 0 1 1 1
Q3 → DSR
5 0000 1110



6 0 0 1 1 0 0 1 1 Q0Q1Q2Q3


该移位寄存器构成模8扭环形计数器


1111
7 0 0 0 1 0 0 0 1 0000

0011 0111
8 0 0 0 0 0 0 0 0
查询ROM的数据表得到 D9D8D7D6
C

C
O

O
O

O
M

M





M

M


D/A转换器例题选讲




(2)填写完成计数器状态转换表,及对应 D/A 转换器输入值和
C

C
O

O
输出电压值;
O

O
M

M


AD7533 D/A转换器——10位CMOS电流开关型D/A转换器




D0 D1 D2 D7 D8 D9

计数器状态表及DAC输入和输出值 AD7533
10k Rf

R
IOUT1

Q0 Q 1 Q2 Q3 O
C

C
CP D9 D8 D7 D6 υO /V IOUT2
O

O
(A3 A2 A1 A0) +
O

O
M

M
0 0 0 0 0 0 0 0 0 0



2R 2R 2R 2R 2R 2R 2R
1 1 0 0 0 0 0 0 1


10k 20k VREF


2 1 1 0 0 0 0 1 1 R R R R R

3 1 1 1 0 0 1 1 1
使用:1) 要外接运放;
C

C
4 1 1 1 1 1 1 1 1
O

O
2) 运放反馈电阻可使用内部电阻,也可外接电阻。
O

O
M

M
5 0 1 1 1 0 1 1 1



6 0 0 1 1 0 0 1 1


AD7533 D/A转换器输出:


7 0 0 0 1 0 0 0 1
VREF Rf  9 
O = − 10   ( Di  2i ) 
8 0 0 0 0 0 0 0 0
R  i =0 
C

C
2
O

O
O

O
M

M





M

M


D/A转换器例题选讲




(2)填写完成计数器状态转换表,及对应 D/A 转换器输入值和
C

C
O

O
输出电压值;
O

O
M

M




根据给定电路图可知 Rf=R,VREF=-8V,


计数器状态表及DAC输入和输出值
D5D4D3D2D1D0 = 000000,则
Q0 Q 1 Q2 Q3
C

C
CP D9 D8 D7 D6 υO /V
O

O
(A3 A2 A1 A0)
O

O
M

M
0 0 0 0 0 0 0 0 0 0



1 1 0 0 0 0 0 0 1 0.5



2 1 1 0 0 0 0 1 1 1.5 当 D9D8D7D6 = 0001 时,υO =12-1+020+021+022 =0.5
3 1 1 1 0 0 1 1 1 3.5
当 D9D8D7D6 = 0011 时,υO =12-1+120+021+022 =1.5
C

C
4 1 1 1 1 1 1 1 1 7.5
O

O
O

O
当 D9D8D7D6 = 0111 时,υO =12-1+120+121+022 =3.5
M

M
5 0 1 1 1 0 1 1 1 3.5



6 0 0 1 1 0 0 1 1 1.5
当 D9D8D7D6 = 1111 时,υO =12-1+120+121+122 =7.5



7 0 0 0 1 0 0 0 1 0.5
8 0 0 0 0 0 0 0 0 0
……
C

C
O

O
O

O
M

M





中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

8
7
6
5
4
3
2
1
0
CP
中 中 中 中 中
国 国 国 国 国

0
0
0
1

0
1
1
1
大 大 大 大 大

0
0
0
1
1
1
1
0
学 学 学 学 学

0 0 0
M M M M M

0
0
1
1
1
1
0
0
O O O O

0
Q0 Q 1 Q2 Q3

1
1
0
0

0
1
1
0
O O

(A3 A2 A1 A0)
O O
C C C C

0
0
0
0

0
1
0
0
中 中 中 中 中

0
0
0
1
1
1
0
0
国 国 国 0 0 0 国 国

0
0
1
1
1
1
1
0
大 大 大 大 大
0
D9 D8 D7 D6

学 学 学 学 学

1
1
1
1

0
1
1
M 1 M M M M
O O O O
O O O O
D/A转换器例题选讲

C C C C
0

0
1.5
3.5
7.5
3.5
1.5
0.5

0.5
υO /V
计数器状态表及DAC输入和输出值

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
6
7
8

3
4

2
1

O
CP
υO信号周期为: 8 μs 。

vO /V

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
(3)试对应给出的CP信号,画出υO的波形;

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
2) 由波形图可知υO信号周期为8μs

国 国 国 国 国
大 大 大 大 大
DA转换器输出υO的波形图

学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
t
D

1) CP上升沿触发,根据表格依次画出υO波形
数字量

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
再见!

O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

You might also like