大学计算机专业数字电路与逻辑设计课程知识点详解——基于清华大学出版社《数字电路与逻辑设计(第三版)》——期末看完心里有底啦!
数字电路系统摘要 本文系统介绍了数字电路的基础知识,重点涵盖数制与编码两大核心内容。在数制方面,详细阐述了二进制、八进制、十六进制与十进制的转换方法,包括按权展开、除基取余和乘基取整等关键算法。编码部分解析了原码、反码、补码三种数值表示法及其运算特点,并介绍了BCD码、格雷码等常用编码方式。文章还涉及可靠性编码技术,如奇偶校验码的检错原理。这些基础知识为数字电路分析与设计奠定了重要理论基础,适用于
数字电路系统笔记
1. 数字电路基础
1.1 数字信号与模拟信号
- 模拟信号:连续变化的信号,如温度、电压、声音等自然现象
- 数字信号:离散的信号,只有两种状态(高电平/低电平、1/0)
- 数字电路优势:抗干扰能力强、可靠性高、易于集成、便于存储和处理
1.2 数字电路分类
- 组合逻辑电路:输出仅取决于当前输入,无记忆功能
- 时序逻辑电路:输出取决于当前输入和历史状态,有记忆功能
2. 数制与编码
2.1 数制的基本概念
2.1.1 数制的定义
数制是用一组固定的数码和统一的规则来表示数值的方法。在数字电路中,常用的数制包括十进制、二进制、八进制和十六进制。
2.1.2 数制的三要素
- 数码:数制中表示基本数值大小的不同数字符号
- 基数:数制所使用数码的个数,用
R表示 - 位权:数制中某一位上的1所表示数值的大小,等于基数的若干次幂
2.1.3 常用数制
| 数制 | 基数® | 数字符号 | 位权 | 表示符号 | 示例 |
|---|---|---|---|---|---|
| 十进制 | 10 | 0,1,2,3,4,5,6,7,8,9 | 10^i | D | (123.45)10 |
| 二进制 | 2 | 0,1 | 2^i | B | (1111011.101)2 |
| 八进制 | 8 | 0,1,2,3,4,5,6,7 | 8^i | O | (173.5)8 |
| 十六进制 | 16 | 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F | 16^i | H | (7B.D)16 |
2.2 数制转换
2.2.1 二进制转十进制
方法:按权展开求和
公式推导:
对于任意二进制数 (dn d{n-1} ots d1 d_0 . d{-1} d*{-2} ots d*{-m})2 ,其十进制值为:
(B)_2 = d_n imes 2^n + d{n-1} imes 2^{n-1} + ots + d0 imes 2^0 + d{-1} imes 2^{-1} + ots + d*{-m} imes 2^{-m} = um*{i=-m}^{n} d_i imes 2^i
示例:将二进制数 (1011.101)2 转换为十进制
egin{align*}
(1011.101)_2 &= 1×2^3 + 0×2^2 + 1×2^1 + 1×2^0 + 1×2^{-1} + 0×2^{-2} + 1×2^{-3}
&= 8 + 0 + 2 + 1 + 0.5 + 0 + 0.125
&= (11.625){10}
nd{align*}
2.2.2 十进制转二进制
2.2.2.1 整数部分转换
方法:除2取余,逆序排列
原理:十进制整数 N 可以表示为二进制数 (bn b{n-1} ots b1 b_0)_2 ,即:
N = b_n imes 2^n + b{n-1} imes 2^{n-1} + ots + b_1 imes 2^1 + b_0 imes 2^0
两边同时除以2,商为 N_1 ,余数为 b_0 :
N = 2 imes N_1 + b_0
继续将 N_1 除以2,得到商 N_2 和余数 b_1 ,依此类推,直到商为0。
示例:将十进制整数 (23)_{10} 转换为二进制
| 除法运算 | 商 | 余数 b_i | 位权 |
|---|---|---|---|
| 23 ÷ 2 | 11 | 1 ( b_0 ) | 2^0 |
| 11 ÷ 2 | 5 | 1 ( b_1 ) | 2^1 |
| 5 ÷ 2 | 2 | 1 ( b_2 ) | 2^2 |
| 2 ÷ 2 | 1 | 0 ( b_3 ) | 2^3 |
| 1 ÷ 2 | 0 | 1 ( b_4 ) | 2^4 |
- 逆序排列余数: 10111
- 结果: (23)_{10} = (10111)_2
2.2.2.2 小数部分转换
方法:乘2取整,顺序排列
原理:十进制小数 F 可以表示为二进制小数 (0.b*{-1} b*{-2} ots b*{-m})_2 ,即:
F = b*{-1} imes 2^{-1} + b*{-2} imes 2^{-2} + ots + b*{-m} imes 2^{-m}
两边同时乘以2,整数部分为 b*{-1} ,小数部分为 F_1 :
2F = b*{-1} + F1
继续将 F_1 乘以2,得到整数部分 b{-2} 和小数部分 F_2 ,依此类推,直到小数部分为0或达到所需精度。
示例:将十进制小数 (0.625)_{10} 转换为二进制
| 乘法运算 | 结果 | 整数部分 b_{-i} | 位权 |
|---|---|---|---|
| 0.625 × 2 | 1.25 | 1 ( b*{-1} ) | 2^{-1} |
| 0.25 × 2 | 0.5 | 0 ( b*{-2} ) | 2^{-2} |
| 0.5 × 2 | 1.0 | 1 ( b_{-3} ) | 2^{-3} |
- 顺序排列整数部分: 0.101
- 结果: (0.625)_{10} = (0.101)_2
2.2.2.3 完整示例
将十进制数 (23.625)_{10} 转换为二进制
- 整数部分:23 → 10111
- 小数部分:0.625 → 0.101
- 最终结果: (23.625)_{10} = (10111.101)_2
2.2.3 二进制与八进制互转
2.2.3.1 二进制转八进制
方法:以小数点为界,每3位一组,不足补0
原理:因为 2^3 = 8 ,所以3位二进制数恰好对应1位八进制数
步骤:
- 整数部分:从右向左每3位一组,不足左边补0
- 小数部分:从左向右每3位一组,不足右边补0
- 每组3位二进制数转换为1位八进制数
示例:将二进制数 (110010.1101)_2 转换为八进制
- 分组: (110010.110100)_2 (整数部分从右向左,小数部分从左向右)
- 转换: 110→6, 010→2; 110→6, 100→4
- 结果: (62.64)_8
2.2.3.2 八进制转二进制
方法:每位八进制数转换为3位二进制数
示例:将八进制数 (62.64)_8 转换为二进制
- 6→110, 2→010; 6→110, 4→100
- 结果: (110010.110100)_2 = (110010.1101)_2 (去掉末尾多余的0)
2.2.4 二进制与十六进制互转
2.2.4.1 二进制转十六进制
方法:以小数点为界,每4位一组,不足补0
原理:因为 2^4 = 16 ,所以4位二进制数恰好对应1位十六进制数
步骤:
- 整数部分:从右向左每4位一组,不足左边补0
- 小数部分:从左向右每4位一组,不足右边补0
- 每组4位二进制数转换为1位十六进制数
示例:将二进制数 (1100001.1101)_2 转换为十六进制
- 分组: (01100001.1101)_2 (整数部分左边补0,小数部分右边补0)
- 转换: 0110→6, 0001→1; 1101→D
- 结果: (61.D)_{16}
2.2.4.2 十六进制转二进制
方法:每位十六进制数转换为4位二进制数
示例:将十六进制数 (61.D)_{16} 转换为二进制
- 6→0110, 1→0001; D→1101
- 结果: (01100001.1101)_2 = (1100001.1101)_2 (去掉整数部分左边多余的0)
2.2.5 十进制与八进制/十六进制互转
方法:以二进制为中间桥梁
步骤:
- 十进制 → 二进制 → 八进制/十六进制
- 八进制/十六进制 → 二进制 → 十进制
2.3 二进制编码
2.3.1 数值编码
2.3.1.1 原码、反码和补码
原码:
- 最高位为符号位(0表示正数,1表示负数)
- 数值位为二进制绝对值
- 示例:+5的原码为00000101,-5的原码为10000101
反码:
- 正数的反码与原码相同
- 负数的反码:符号位不变,数值位取反
- 示例:+5的反码为00000101,-5的反码为11111010
补码:
- 正数的补码与原码相同
- 负数的补码:反码加1
- 示例:+5的补码为00000101,-5的补码为11111011
- 补码的优点:简化运算,减法可转换为加法
2.3.1.2 BCD码(二-十进制编码)
定义:用4位二进制数表示1位十进制数
8421码:
- 最常用的BCD码
- 各位的权值分别为8、4、2、1
- 示例:(529)10 = (0101 0010 1001)8421BCD
余3码:
- 8421码加3得到
- 具有自补特性,便于减法运算
- 示例:(5)10 = (0101)8421 + 0011 = (1000)余3
2421码:
- 各位的权值分别为2、4、2、1
- 示例:(5)10 = (1011)2421(1×2 + 0×4 + 1×2 + 1×1 = 5)
2.3.2 可靠性编码
2.3.2.1 格雷码
定义:相邻码组只有1位不同的编码
特点:
- 相邻码组之间只有1位变化,减少了误码率
- 常用于编码器、译码器和计数器等电路
- 具有反射特性,便于生成
生成方法:
- 二进制数转换为格雷码:
- 最高位保持不变
- 从左到右,每一位二进制数与前一位二进制数异或,得到对应的格雷码位
示例:二进制数 (1011)_2 转换为格雷码
- 二进制:1 0 1 1
- 格雷码:1 1 1 0 (1, 1⊕0=1, 0⊕1=1, 1⊕1=0)
2.3.2.2 奇偶校验码
定义:在原码基础上增加1位校验位,使整个码组中1的个数为奇数(奇校验)或偶数(偶校验)
特点:
- 只能检测出奇数位错误,不能检测出偶数位错误
- 不能确定错误位置
- 实现简单,成本低
示例:
- 原码:1011
- 奇校验:10110(1的个数为3,奇数)
- 偶校验:10111(1的个数为4,偶数)
2.3.3 字符编码
2.3.3.1 ASCII码
定义:美国信息交换标准代码
- 7位二进制编码,共128个字符
- 包括控制字符(32个)和可打印字符(96个)
示例:
- 数字0:0110000
- 大写字母A:1000001
- 小写字母a:1100001
2.3.3.2 Unicode
定义:统一码,用于表示全球各种文字符号
- 16位编码,共65536个字符
- 兼容ASCII码
- 支持多种语言,包括中文、日文、韩文等
UTF-8:
- Unicode的一种可变长度字符编码
- 1-4字节表示一个字符
- 兼容ASCII码(单字节)
2.4 数制与编码的应用
2.4.1 计算机存储
- 计算机内部采用二进制存储数据和指令
- 内存地址通常用十六进制表示(如0x7FFF)
- 文件大小用二进制单位(KB, MB, GB)表示,其中1KB=1024B
2.4.2 通信系统
- 数字通信中采用二进制编码(如ASCII, Unicode)
- 数据传输速率用比特率(bps)表示
- 差错控制编码(如奇偶校验码、CRC码)用于提高通信可靠性
2.4.3 数字电路设计
- 逻辑电路的输入输出用二进制表示
- 电路设计中常用十六进制表示状态编码
- 可靠性编码(如格雷码)用于减少电路错误
2.5 常见问题与易错点
2.5.1 二进制小数转换精度问题
问题:某些十进制小数无法用有限位二进制小数精确表示
例: (0.1)_{10} = (0.0001100110011ots)_2 (无限循环)
解决方法:根据实际需要保留适当位数,常用4-8位二进制小数
2.5.2 分组方向错误
问题:二进制转八进制/十六进制时,分组方向错误
注意事项:
- 整数部分:从右向左分组
- 小数部分:从左向右分组
2.5.3 符号位处理
问题:负数转换时符号位处理不当
解决方法:采用补码表示,最高位为符号位(0表示正数,1表示负数)
2.5.4 十六进制字母大小写混淆
问题:十六进制中的A-F与a-f混淆
注意事项:十六进制中字母大小写等价,但通常大写表示
2.6 数制转换总结
| 转换类型 | 方法 | 关键要点 |
|---|---|---|
| 二进制→十进制 | 按权展开求和 | 注意位权的正负 |
| 十进制→二进制 | 整数:除2取余,逆序排列 小数:乘2取整,顺序排列 |
小数部分可能无限循环 |
| 二进制→八进制 | 每3位一组转换 | 整数左边补0,小数右边补0 |
| 八进制→二进制 | 每位转3位二进制 | 去掉多余的0 |
| 二进制→十六进制 | 每4位一组转换 | 整数左边补0,小数右边补0 |
| 十六进制→二进制 | 每位转4位二进制 | 去掉多余的0 |
| 十进制→八进制/十六进制 | 二进制为中间桥梁 | 先转二进制,再转目标数制 |
3. 布尔代数
3.1 布尔代数的基本概念
3.1.1 布尔代数的定义
布尔代数是由英国数学家乔治·布尔(George Boole)于1847年提出的一种代数系统,用于描述逻辑关系和逻辑运算。它是数字电路设计的数学基础。
3.1.2 逻辑变量
- 定义:只取两种值(0和1)的变量
- 物理意义:在数字电路中,0通常表示低电平,1表示高电平
3.1.3 逻辑函数
- 定义:输入逻辑变量和输出逻辑变量之间的对应关系
- 表示方法:逻辑表达式、真值表、卡诺图、波形图、逻辑电路图
3.2 基本逻辑运算
3.2.1 与运算(AND)
- 定义:当且仅当所有输入都为1时,输出才为1
- 逻辑表达式:Y = A · B 或 Y = AB
- 真值表:
A B Y = AB 0 0 0 0 1 0 1 0 0 1 1 1 - 运算规则:0·0=0, 0·1=0, 1·0=0, 1·1=1
3.2.2 或运算(OR)
- 定义:只要有一个输入为1,输出就为1
- 逻辑表达式:Y = A + B
- 真值表:
A B Y = A + B 0 0 0 0 1 1 1 0 1 1 1 1 - 运算规则:0+0=0, 0+1=1, 1+0=1, 1+1=1
3.2.3 非运算(NOT)
- 定义:输入为0时输出为1,输入为1时输出为0
- 逻辑表达式:Y = Ā 或 Y = ¬A
- 真值表:
A Y = ¬A 0 1 1 0 - 运算规则:¬0=1, ¬1=0
3.3 复合逻辑运算
3.3.1 与非运算(NAND)
- 定义:与运算后取反
- 逻辑表达式:Y = ¬(A · B) 或 Y = A ↑ B
- 真值表:
A B Y = ¬(AB) 0 0 1 0 1 1 1 0 1 1 1 0
3.3.2 或非运算(NOR)
- 定义:或运算后取反
- 逻辑表达式:Y = ¬(A + B) 或 Y = A ↓ B
- 真值表:
A B Y = ¬(A + B) 0 0 1 0 1 0 1 0 0 1 1 0
3.3.3 异或运算(XOR)
- 定义:输入相异时输出为1,输入相同时输出为0
- 逻辑表达式:Y = A ⊕ B = A·¬B + ¬A·B
- 真值表:
A B Y = A ⊕ B 0 0 0 0 1 1 1 0 1 1 1 0
3.3.4 同或运算(XNOR)
- 定义:输入相同时输出为1,输入相异时输出为0
- 逻辑表达式:Y = A ⊙ B = A·B + ¬A·¬B = ¬(A ⊕ B)
- 真值表:
A B Y = A ⊙ B 0 0 1 0 1 0 1 0 0 1 1 1
3.4 布尔代数的基本定律和规则
3.4.1 基本定律
| 定律名称 | 表达式 | 证明(以与运算为例) |
|---|---|---|
| 交换律 | A + B = B + A A · B = B · A |
真值表验证:所有输入组合的输出相同 |
| 结合律 | (A + B) + C = A + (B + C) (A · B) · C = A · (B · C) |
真值表验证:所有输入组合的输出相同 |
| 分配律 | A · (B + C) = A · B + A · C A + B · C = (A + B) · (A + C) |
以第二式为例: (A + B) · (A + C) = A·A + A·C + B·A + B·C = A + A·C + A·B + B·C = A(1 + C + B) + B·C = A + B·C |
| 吸收律 | A + A · B = A A · (A + B) = A |
以第一式为例:A + A·B = A(1 + B) = A·1 = A |
| 摩根定律 | ¬(A + B) = ¬A · ¬B ¬(A · B) = ¬A + ¬B |
真值表验证:所有输入组合的输出相同 |
| 0-1律 | A + 0 = A A + 1 = 1 A · 0 = 0 A · 1 = A |
逻辑运算规则直接推导 |
| 互补律 | A + ¬A = 1 A · ¬A = 0 |
逻辑运算规则直接推导 |
| 重叠律 | A + A = A A · A = A |
以第一式为例:A + A = A(1 + 1) = A·1 = A |
| 对合律 | ¬(¬A) = A | 逻辑运算规则直接推导 |
| 反演律 | 与摩根定律相同 | - |
3.4.2 重要规则
3.4.2.1 代入规则
- 定义:在任何一个含有变量A的逻辑等式中,若以另外一个逻辑式代入式中所有A的位置,则等式仍然成立
- 应用:扩展基本定律的应用范围
- 示例:已知¬(A + B) = ¬A · ¬B,若令B = B + C,则¬(A + B + C) = ¬A · ¬(B + C) = ¬A · ¬B · ¬C
3.4.2.2 反演规则
- 定义:对于任意一个逻辑表达式Y,若将其中所有的·换成+,+换成·,0换成1,1换成0,原变量换成反变量,反变量换成原变量,则得到的结果就是¬Y
- 注意事项:
- 保持原表达式的运算顺序(先括号,再与,最后或)
- 只变换单个变量的反,不变换复合变量的反
- 示例:Y = A · ¬B + C · D,则¬Y = (¬A + B) · (¬C + ¬D)
3.4.2.3 对偶规则
- 定义:对于任意一个逻辑表达式Y,若将其中所有的·换成+,+换成·,0换成1,1换成0,则得到的结果就是Y的对偶式Y’
- 性质:若两个逻辑式相等,则它们的对偶式也相等
- 应用:简化定律的证明
- 示例:Y = A + B · C,则Y’ = A · (B + C)
3.5 逻辑函数的标准形式
3.5.1 最小项
- 定义:在n变量逻辑函数中,包含全部n个变量的乘积项,每个变量以原变量或反变量的形式出现且仅出现一次
- 性质:
- 对于任意一个最小项,只有一组变量取值使它的值为1
- 任意两个不同最小项的乘积为0
- 全体最小项的和为1
- 编号:最小项通常用mᵢ表示,i是该最小项对应的二进制数的十进制值
- 示例:三变量最小项A·¬B·C对应二进制数101,十进制值5,所以记为m₅
3.5.2 最大项
- 定义:在n变量逻辑函数中,包含全部n个变量的或项,每个变量以原变量或反变量的形式出现且仅出现一次
- 性质:
- 对于任意一个最大项,只有一组变量取值使它的值为0
- 任意两个不同最大项的和为1
- 全体最大项的乘积为0
- 编号:最大项通常用Mᵢ表示,i是该最大项对应的二进制数的十进制值
- 示例:三变量最大项A + ¬B + C对应二进制数010,十进制值2,所以记为M₂
3.5.3 最小项之和形式
- 定义:由若干个最小项相或构成的逻辑表达式
- 转换方法:
- 写出逻辑函数的真值表
- 找出所有使输出为1的变量取值组合
- 每个组合对应一个最小项,将这些最小项相或
- 示例:Y = A + B · C的最小项之和形式为Y = m₃ + m₅ + m₆ + m₇
3.5.4 最大项之积形式
- 定义:由若干个最大项相与构成的逻辑表达式
- 转换方法:
- 写出逻辑函数的真值表
- 找出所有使输出为0的变量取值组合
- 每个组合对应一个最大项,将这些最大项相与
- 示例:Y = A + B · C的最大项之积形式为Y = M₀ · M₁ · M₂ · M₄
3.6 逻辑函数化简
3.6.1 化简的意义和标准
3.6.1.1 化简的意义
- 减少逻辑门的数量,降低成本
- 提高电路的可靠性
- 减少电路的延迟,提高速度
3.6.1.2 化简的标准
- 与或式:包含的乘积项最少,每个乘积项中的变量个数最少
- 或与式:包含的或项最少,每个或项中的变量个数最少
3.6.2 公式化简法
3.6.2.1 常用方法
1. 并项法
- 原理:利用A + ¬A = 1,将两个乘积项合并为一个乘积项
- 示例:Y = A·B·¬C + A·B·C = A·B(¬C + C) = A·B
2. 吸收法
- 原理:利用A + A·B = A,消去多余的乘积项
- 示例:Y = A·B + A·B·¬C + A·B·D = A·B(1 + ¬C + D) = A·B
3. 消去法
- 原理:利用A + ¬A·B = A + B,消去多余的变量
- 示例:Y = A·B + ¬A·C + B·C = A·B + ¬A·C + B·C(A + ¬A) = A·B + ¬A·C + A·B·C + ¬A·B·C = A·B(1 + C) + ¬A·C(1 + B) = A·B + ¬A·C
4. 配项法
- 原理:利用A = A(B + ¬B),将一个乘积项拆分为两个乘积项,然后再与其他项合并
- 示例:Y = A·¬B + B·¬C + ¬B·C + ¬A·B = A·¬B + B·¬C + ¬B·C(A + ¬A) + ¬A·B(C + ¬C) = A·¬B + B·¬C + A·¬B·C + ¬A·¬B·C + ¬A·B·C + ¬A·B·¬C = A·¬B(1 + C) + B·¬C(1 + ¬A) + ¬A·C(¬B + B) = A·¬B + B·¬C + ¬A·C
3.6.2.2 化简示例
示例1:化简Y = A·B + A·¬B + ¬A·B + ¬A·¬B
- 解法1:Y = A(B + ¬B) + ¬A(B + ¬B) = A·1 + ¬A·1 = A + ¬A = 1
- 解法2:Y = B(A + ¬A) + ¬B(A + ¬A) = B·1 + ¬B·1 = B + ¬B = 1
示例2:化简Y = A·B + A·¬C + ¬B·C + ¬A·C
- 解法:Y = A·B + C(¬A + ¬B) + A·¬C = A·B + C·¬(A·B) + A·¬C = A·B + C + A·¬C = A(B + ¬C) + C = A + C
3.6.3 卡诺图化简法
3.6.3.1 卡诺图的结构
- 定义:卡诺图是一种由2ⁿ个小方格组成的图形,每个小方格代表一个最小项
- 特点:相邻的小方格只有1位变量不同(几何相邻和逻辑相邻)
- 结构:
- 2变量卡诺图:4个小方格,变量A和B
- 3变量卡诺图:8个小方格,变量A、B和C
- 4变量卡诺图:16个小方格,变量A、B、C和D
3.6.3.2 卡诺图的绘制
- 步骤:
- 根据变量数确定卡诺图的大小
- 标注每个小方格的变量取值
- 标注每个小方格对应的最小项编号
2变量卡诺图:
| B=0 | B=1 | |
|---|---|---|
| A=0 | m₀ | m₁ |
| A=1 | m₂ | m₃ |
3变量卡诺图:
| BC=00 | BC=01 | BC=11 | BC=10 | |
|---|---|---|---|---|
| A=0 | m₀ | m₁ | m₃ | m₂ |
| A=1 | m₄ | m₅ | m₇ | m₆ |
4变量卡诺图:
| BC=00 | BC=01 | BC=11 | BC=10 | |
|---|---|---|---|---|
| AD=00 | m₀ | m₁ | m₃ | m₂ |
| AD=01 | m₄ | m₅ | m₇ | m₆ |
| AD=11 | m₁2 | m₁3 | m₁5 | m₁4 |
| AD=10 | m₈ | m₉ | m₁1 | m₁0 |
3.6.3.3 逻辑函数到卡诺图的转换
- 步骤:
- 将逻辑函数转换为最小项之和形式
- 在卡诺图中,将对应于最小项的小方格填1,其余填0
示例:Y = A·B + A·¬C + ¬B·C的卡诺图
- 首先转换为最小项之和形式:Y = m₃ + m₅ + m₆ + m₇
- 然后在3变量卡诺图中填1:
BC=00 BC=01 BC=11 BC=10 A=0 0 0 1 (m₃) 0 A=1 0 1 (m₅) 1 (m₇) 1 (m₆)
3.6.3.4 卡诺图化简的步骤
步骤1:绘制逻辑函数的卡诺图
步骤2:将相邻的1方格分组(2ⁿ个)
- 相邻包括:上下相邻、左右相邻、四角相邻、对折相邻
- 每组的大小必须是2ⁿ(1, 2, 4, 8, 16…)
- 尽可能使每组包含更多的1方格
- 每个1方格可以属于多个组,但至少属于一个组
步骤3:写出每组对应的乘积项 - 每组中,若变量的取值相同,则保留该变量;若取值不同,则消去该变量
步骤4:将所有乘积项相或,得到最简与或式
3.6.3.5 卡诺图化简示例
示例1:化简Y = ∑m(0, 2, 4, 6)(3变量)
- 卡诺图:
BC=00 BC=01 BC=11 BC=10 A=0 1 (m₀) 0 0 1 (m₂) A=1 1 (m₄) 0 0 1 (m₆) - 分组:m₀, m₂, m₄, m₆组成一个4方格组
- 乘积项:¬B(A和C的取值不同,被消去)
- 结果:Y = ¬B
示例2:化简Y = ∑m(0, 1, 2, 3, 4, 5, 6, 7)(3变量)
- 卡诺图:所有小方格都填1
- 乘积项:1
- 结果:Y = 1
示例3:化简Y = ∑m(1, 3, 5, 7, 9, 11, 13, 15)(4变量)
- 卡诺图:所有奇数编号的小方格都填1
- 分组:可以组成两个8方格组,或四个4方格组,或八个2方格组
- 乘积项:D(A、B、C的取值不同,被消去)
- 结果:Y = D
示例4:化简Y = ∑m(0, 1, 3, 4, 6, 7)(3变量)
- 卡诺图:
BC=00 BC=01 BC=11 BC=10 A=0 1 (m₀) 1 (m₁) 1 (m₃) 0 A=1 1 (m₄) 0 1 (m₇) 1 (m₆) - 分组:
- m₀, m₁:乘积项¬A·¬C
- m₃, m₇:乘积项B·C
- m₄, m₆:乘积项A·¬B
- 结果:Y = ¬A·¬C + B·C + A·¬B
3.6.4 具有无关项的逻辑函数化简
3.6.4.1 无关项的概念
- 定义:在逻辑函数中,某些输入组合不会出现,或者出现后对输出没有影响,这些输入组合对应的最小项称为无关项
- 表示方法:用dᵢ表示,在卡诺图中用×或φ表示
3.6.4.2 无关项的应用
- 在化简逻辑函数时,无关项可以根据需要视为1或0,以获得更简单的化简结果
3.6.4.3 化简示例
示例:化简Y = ∑m(1, 3, 5, 7, 9) + ∑d(10, 11, 12, 13, 14, 15)(4变量)
- 卡诺图:
BC=00 BC=01 BC=11 BC=10 AD=00 0 1 (m₁) 1 (m₃) 0 AD=01 0 1 (m₅) 1 (m₇) 0 AD=11 × (d₁₂) × (d₁₃) × (d₁₅) × (d₁₄) AD=10 1 (m₉) × (d₉) × (d₁₁) × (d₁₀) - 分组:将m₁, m₃, m₅, m₇, m₉和d₁₀, d₁₁, d₁₃, d₁₅组成一个8方格组
- 乘积项:D
- 结果:Y = D
3.7 多输出逻辑函数化简
3.7.1 基本概念
- 定义:具有多个输出的逻辑函数
- 化简目标:不仅要使每个输出的逻辑表达式最简,还要使整个电路最简
3.7.2 化简方法
- 步骤:
- 分别化简每个输出的逻辑函数
- 寻找公共乘积项,尽可能共享逻辑门
- 综合考虑,选择最优方案
3.7.3 化简示例
示例:化简以下多输出逻辑函数
Y₁ = ∑m(1, 2, 3, 4, 5, 6, 7)
Y₂ = ∑m(0, 1, 2, 3)
解法:
- 单独化简:
Y₁ = A + B + C
Y₂ = ¬A·¬B + ¬A·C - 共享乘积项:
观察到Y₂中的¬A·¬B和¬A·C可以与Y₁共享
最终化简:
Y₁ = A + (¬A·¬B + ¬A·C) = A + ¬A(B + C) = A + B + C
Y₂ = ¬A·¬B + ¬A·C
3.8 常见问题与易错点
3.8.1 公式化简的常见错误
-
错误1:误用分配律
- 错误:A + B·C = (A + B)·C
- 正确:A + B·C = (A + B)·(A + C)
-
错误2:忘记反演规则的运算顺序
- 错误:¬(A + B·C) = ¬A·¬B + ¬C
- 正确:¬(A + B·C) = ¬A·(¬B + ¬C)
3.8.2 卡诺图化简的常见错误
-
错误1:分组大小不是2ⁿ
- 例如:将3个1方格分为一组
-
错误2:分组不包含所有1方格
- 例如:遗漏某些1方格
-
错误3:没有选择最大的分组
- 例如:将4个1方格分为两个2方格组,而不是一个4方格组
-
错误4:没有考虑相邻的边界
- 例如:卡诺图的左右边界是相邻的,上下边界也是相邻的
3.9 布尔代数的应用
3.9.1 逻辑电路设计
- 布尔代数是逻辑电路设计的数学基础
- 通过化简逻辑函数,可以得到更简单的逻辑电路
3.9.2 计算机科学
- 布尔代数用于计算机的逻辑设计
- 用于数据库查询优化
- 用于搜索引擎的布尔检索
3.9.3 其他领域
- 用于控制系统的逻辑设计
- 用于人工智能的逻辑推理
- 用于密码学的加密算法
4. 逻辑门电路
4.1 逻辑门的基本概念
4.1.1 逻辑门的定义
逻辑门是实现基本逻辑运算的电路单元,它是数字电路的基本构建块。逻辑门的输入和输出都是离散的电平信号,通常用0和1表示。
4.1.2 逻辑门的分类
- 基本逻辑门:实现基本逻辑运算(与、或、非)
- 复合逻辑门:由基本逻辑门组合而成(与非、或非、异或、同或等)
- 按工艺分类:TTL门、CMOS门、ECL门等
4.2 基本逻辑门
4.2.1 与门
4.2.1.1 逻辑功能
- 定义:当且仅当所有输入都为1时,输出才为1
- 逻辑表达式:Y = A · B 或 Y = AB
- 真值表:
A B Y = AB 0 0 0 0 1 0 1 0 0 1 1 1 - 逻辑符号:
- 国标符号:&
- 美国符号:∧
4.2.1.2 内部结构
二极管与门:
- 结构:由两个二极管和一个电阻组成
- 工作原理:
- 当A、B都为高电平时,两个二极管都截止,输出Y为高电平
- 当A或B为低电平时,对应的二极管导通,输出Y为低电平
晶体管与门:
- 结构:由两个晶体管和若干电阻组成
- 工作原理:
- 当A、B都为高电平时,两个晶体管都导通,输出Y为高电平
- 当A或B为低电平时,对应的晶体管截止,输出Y为低电平
4.2.2 或门
4.2.2.1 逻辑功能
- 定义:只要有一个输入为1,输出就为1
- 逻辑表达式:Y = A + B
- 真值表:
A B Y = A + B 0 0 0 0 1 1 1 0 1 1 1 1 - 逻辑符号:
- 国标符号:≥1
- 美国符号:∨
4.2.2.2 内部结构
二极管或门:
- 结构:由两个二极管和一个电阻组成
- 工作原理:
- 当A或B为高电平时,对应的二极管导通,输出Y为高电平
- 当A、B都为低电平时,两个二极管都截止,输出Y为低电平
晶体管或门:
- 结构:由两个晶体管和若干电阻组成
- 工作原理:
- 当A或B为高电平时,对应的晶体管导通,输出Y为高电平
- 当A、B都为低电平时,两个晶体管都截止,输出Y为低电平
4.2.3 非门
4.2.3.1 逻辑功能
- 定义:输入为0时输出为1,输入为1时输出为0
- 逻辑表达式:Y = ¬A 或 Y = Ā
- 真值表:
A Y = ¬A 0 1 1 0 - 逻辑符号:
- 国标符号:1
- 美国符号:¬
4.2.3.2 内部结构
晶体管非门:
- 结构:由一个晶体管和两个电阻组成
- 工作原理:
- 当A为高电平时,晶体管导通,输出Y为低电平
- 当A为低电平时,晶体管截止,输出Y为高电平
4.3 复合逻辑门
4.3.1 与非门
4.3.1.1 逻辑功能
- 定义:与运算后取反
- 逻辑表达式:Y = ¬(A · B) 或 Y = A ↑ B
- 真值表:
A B Y = ¬(AB) 0 0 1 0 1 1 1 0 1 1 1 0 - 逻辑符号:
- 国标符号:&(带小圆圈)
- 美国符号:NAND
4.3.1.2 特点与应用
- 与非门是通用门,可以组合成任何其他逻辑门
- 应用广泛,常用于数字电路的基本构建
4.3.2 或非门
4.3.2.1 逻辑功能
- 定义:或运算后取反
- 逻辑表达式:Y = ¬(A + B) 或 Y = A ↓ B
- 真值表:
A B Y = ¬(A + B) 0 0 1 0 1 0 1 0 0 1 1 0 - 逻辑符号:
- 国标符号:≥1(带小圆圈)
- 美国符号:NOR
4.3.2.2 特点与应用
- 或非门也是通用门,可以组合成任何其他逻辑门
- 常用于CMOS电路中,因为CMOS或非门的结构更简单
4.3.3 异或门
4.3.3.1 逻辑功能
- 定义:输入相异时输出为1,输入相同时输出为0
- 逻辑表达式:Y = A ⊕ B = A·¬B + ¬A·B
- 真值表:
A B Y = A ⊕ B 0 0 0 0 1 1 1 0 1 1 1 0 - 逻辑符号:
- 国标符号:=1
- 美国符号:XOR
4.3.3.2 特点与应用
- 异或门具有对称性,A ⊕ B = B ⊕ A
- 应用:加法器、比较器、奇偶校验等
4.3.4 同或门
4.3.4.1 逻辑功能
- 定义:输入相同时输出为1,输入相异时输出为0
- 逻辑表达式:Y = A ⊙ B = A·B + ¬A·¬B = ¬(A ⊕ B)
- 真值表:
A B Y = A ⊙ B 0 0 1 0 1 0 1 0 0 1 1 1 - 逻辑符号:
- 国标符号:=
- 美国符号:XNOR
4.3.4.2 特点与应用
- 同或门是异或门的反函数
- 应用:比较器、奇偶校验等
4.4 逻辑门的电气特性
4.4.1 输入输出电平
TTL门电路:
- 高电平范围:2.0V ~ 5.0V(通常用3.6V表示)
- 低电平范围:0V ~ 0.8V(通常用0.3V表示)
- 阈值电压:约1.4V
CMOS门电路:
- 高电平范围:0.7VDD ~ VDD
- 低电平范围:0V ~ 0.3VDD
- 阈值电压:约0.5VDD
4.4.2 扇入与扇出
- 扇入:逻辑门能够接收的输入信号数量
- 扇出:逻辑门能够驱动的同类逻辑门的数量
- TTL门:通常扇出为10
- CMOS门:扇出很大,取决于输出电流能力
4.4.3 传输延迟
- 定义:输入信号变化到输出信号变化的时间延迟
- 表示方法:tpHL(高电平到低电平的延迟)、tpLH(低电平到高电平的延迟)
- 典型值:
- TTL门:约10ns
- CMOS门:约100ns(低速)到1ns(高速)
4.4.4 功耗
- TTL门:静态功耗约10mW/门
- CMOS门:静态功耗极低(约nW/门),动态功耗与频率成正比
4.5 不同工艺的逻辑门
4.5.1 TTL门电路
4.5.1.1 基本结构
- 定义:晶体管-晶体管逻辑门
- 结构:由双极型晶体管组成
- 特点:速度快、驱动能力强、功耗较高
4.5.1.2 典型TTL门
74LS00:四2输入与非门
- 引脚图:14引脚DIP封装
- 功能:包含4个独立的2输入与非门
- 应用:数字电路的基本构建块
74LS04:六反相器
- 功能:包含6个独立的非门
- 应用:信号取反、电平转换
4.5.2 CMOS门电路
4.5.2.1 基本结构
- 定义:互补金属氧化物半导体逻辑门
- 结构:由PMOS晶体管和NMOS晶体管组成互补对
- 特点:功耗低、集成度高、抗干扰能力强、速度较慢(相对TTL)
4.5.2.2 典型CMOS门
CD4001:四2输入或非门
- 引脚图:14引脚DIP封装
- 功能:包含4个独立的2输入或非门
- 应用:低功耗数字电路
CD4069:六反相器
- 功能:包含6个独立的非门
- 应用:低功耗信号处理
4.5.3 TTL与CMOS的接口
4.5.3.1 TTL驱动CMOS
- 问题:TTL输出高电平(约3.6V)可能低于CMOS输入高电平要求(0.7VDD,当VDD=5V时为3.5V)
- 解决方法:
- 使用上拉电阻(将TTL输出端通过电阻接至VDD)
- 使用专用的电平转换芯片
4.5.3.2 CMOS驱动TTL
- 问题:CMOS输出电流可能不足以驱动TTL门
- 解决方法:
- 使用缓冲器(如CD4049、CD4050)
- 使用专用的电平转换芯片
4.6 逻辑门的表示方法
4.6.1 逻辑符号
- 国标符号:GB/T 4728标准
- IEC符号:国际电工委员会标准
- 美国符号:ANSI/IEEE标准
4.6.2 真值表
- 定义:列出所有输入组合对应的输出
- 特点:直观、全面,但对于多输入门,表格会变得很大
4.6.3 逻辑表达式
- 定义:用布尔代数表示输入输出关系
- 特点:简洁、便于化简,但不够直观
4.6.4 波形图
- 定义:时间域的输入输出关系
- 特点:直观展示信号的时序关系
4.6.5 卡诺图
- 定义:图形化表示逻辑函数
- 特点:便于化简逻辑函数
4.7 逻辑门的应用案例
4.7.1 用与非门实现其他逻辑门
与门:Y = ¬(¬(A · B))
或门:Y = ¬(¬A · ¬B) (摩根定律)
非门:Y = ¬(A · A)
或非门:Y = ¬(¬(¬A · ¬B))
异或门:Y = ¬(¬(A · ¬B) · ¬(¬A · B))
4.7.2 三人表决器
- 功能:三人投票,多数同意则通过
- 输入:A、B、C(1表示同意,0表示不同意)
- 输出:Y(1表示通过,0表示不通过)
- 逻辑表达式:Y = AB + AC + BC
- 电路实现:可以用3个与门和1个或门实现,或用与非门实现
4.7.3 奇偶校验器
- 功能:检测数据中1的个数是奇数还是偶数
- 输入:n位数据
- 输出:1位校验位
- 实现:使用异或门级联,n位数据需要n-1个异或门
4.8 逻辑门的测试
4.8.1 静态测试
- 方法:将输入接固定电平,测量输出电平
- 工具:万用表、逻辑笔
- 步骤:
- 检查电源和接地
- 依次测试所有输入组合
- 验证输出是否符合真值表
4.8.2 动态测试
- 方法:输入脉冲信号,观察输出波形
- 工具:示波器、信号发生器
- 步骤:
- 输入合适频率的脉冲信号
- 观察输出波形的形状和延迟
- 验证时序关系是否正确
4.9 常见问题与易错点
4.9.1 未使用的输入处理
- TTL门:未使用的输入不能悬空,应接高电平(通过电阻接VCC)或低电平
- CMOS门:未使用的输入不能悬空,应接高电平(VDD)或低电平(GND),否则会导致功耗增加和逻辑错误
4.9.2 电源和接地
- 问题:电源和接地连接不良会导致逻辑错误和噪声
- 解决方法:确保电源和接地连接可靠,使用去耦电容
4.9.3 信号传输延迟
- 问题:长导线或高速电路中,信号传输延迟可能导致时序问题
- 解决方法:使用短导线、匹配阻抗、调整时序
4.9.4 噪声干扰
- 问题:外部噪声可能导致逻辑门误触发
- 解决方法:使用屏蔽线、滤波电容、合理布线
4.10 逻辑门的发展趋势
- 高速化:提高逻辑门的工作频率
- 低功耗:降低逻辑门的功耗,适应移动设备需求
- 高集成度:在单个芯片上集成更多的逻辑门
- 混合工艺:结合不同工艺的优点,如BiCMOS(结合BJT和CMOS)
5. 组合逻辑电路
5.1 组合逻辑电路的基本概念
5.1.1 定义与特点
- 定义:输出仅取决于当前输入,与历史状态无关的逻辑电路
- 特点:
- 无记忆功能,输出状态只与当前输入状态有关
- 由逻辑门组成,不含存储元件
- 输入输出之间存在直接的逻辑关系
- 响应速度快,无反馈回路
5.1.2 一般结构
输入信号 → 组合逻辑电路 → 输出信号
5.1.3 表示方法
- 逻辑电路图
- 真值表
- 逻辑表达式
- 卡诺图
- 波形图
5.2 组合逻辑电路分析
5.2.1 分析目的
确定给定电路的逻辑功能,了解其输入输出关系
5.2.2 详细分析步骤
步骤1:确定输入输出变量
- 观察电路图,确定输入变量(通常为A、B、C等)
- 确定输出变量(通常为Y、Z等)
步骤2:写出逻辑表达式
- 从输入到输出,逐级写出每个门的输出表达式
- 最终得到输出与输入的逻辑表达式
步骤3:化简逻辑表达式
- 利用布尔代数或卡诺图化简逻辑表达式
- 得到最简与或式或其他形式
步骤4:列出真值表
- 根据化简后的逻辑表达式,列出所有输入组合对应的输出
- 通常输入变量按二进制顺序排列
步骤5:分析逻辑功能
- 根据真值表或化简后的表达式,分析电路的逻辑功能
- 用文字描述电路的功能
5.2.3 分析示例
示例:分析下图所示的组合逻辑电路
A ---|\
| & ---|\
B ---|/ |\
| & --- Y
C ---|\ |/
| & ---|
D ---|/
分析过程:
-
确定输入输出:输入为A、B、C、D,输出为Y
-
写出逻辑表达式:
- 第一个与门:Y1 = AB
- 第二个与门:Y2 = CD
- 第三个与门:Y = Y1 · Y2 = AB · CD
-
化简表达式:已为最简形式
-
列出真值表:
A B C D Y 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 -
分析逻辑功能:当且仅当A、B、C、D都为1时,输出Y才为1,因此该电路是一个4输入与门
5.3 组合逻辑电路设计
5.3.1 设计目的
根据逻辑需求,设计出实现该功能的组合逻辑电路
5.3.2 详细设计步骤
步骤1:分析逻辑需求
- 明确电路的输入和输出
- 确定输入输出的逻辑关系
- 定义输入输出变量(用字母表示)
步骤2:列出真值表
- 根据逻辑需求,列出所有输入组合对应的输出
- 输入变量按二进制顺序排列
- 输出变量根据逻辑关系填写
步骤3:写出逻辑表达式
- 根据真值表,写出输出变量的最小项之和表达式
- 形式:Y = Σm(…) (m为最小项编号)
步骤4:化简逻辑表达式
- 利用布尔代数或卡诺图化简逻辑表达式
- 得到最简与或式或其他所需形式
步骤5:选择逻辑门类型
- 根据化简后的表达式,选择合适的逻辑门类型(与门、或门、与非门等)
- 考虑电路的复杂度、成本、速度等因素
步骤6:画出逻辑电路图
- 根据化简后的表达式和所选逻辑门,画出逻辑电路图
- 注意门的扇入扇出限制
- 合理布局,使电路清晰易懂
5.3.3 设计示例
示例:设计一个半加器电路
设计过程:
-
分析逻辑需求:
- 半加器是实现两个1位二进制数相加的电路
- 输入:A、B(两个加数)
- 输出:S(和)、C(进位)
-
列出真值表:
A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 -
写出逻辑表达式:
- S = Σm(1, 2) = A¬B + ¬AB = A ⊕ B
- C = Σm(3) = AB
-
化简表达式:已为最简形式
-
选择逻辑门:
- 和S:异或门
- 进位C:与门
-
画出逻辑电路图:
A ---|\ | ⊕ --- S B ---|/ A ---|\ | & --- C B ---|/
5.4 常用组合逻辑电路
5.4.1 编码器
5.4.1.1 基本概念
- 功能:将输入的高电平信号转换为对应的二进制代码
- 分类:
- 普通编码器:任何时刻只有一个输入有效
- 优先编码器:允许多个输入同时有效,只对优先级最高的输入进行编码
5.4.1.2 普通编码器
2-1线编码器:
- 输入:2个(I0, I1)
- 输出:1位二进制代码(Y)
- 真值表:
I0 I1 Y 1 0 0 0 1 1 - 逻辑表达式:Y = I1
8-3线编码器:
- 输入:8个(I0-I7)
- 输出:3位二进制代码(Y2, Y1, Y0)
- 逻辑表达式:
Y2 = I4 + I5 + I6 + I7
Y1 = I2 + I3 + I6 + I7
Y0 = I1 + I3 + I5 + I7
5.4.1.3 优先编码器
8-3线优先编码器(74LS148):
- 功能:8个输入(I0-I7),3个输出(Y2-Y0)
- 优先级:I7 > I6 > … > I0
- 使能端:
- EI:输入使能(低电平有效)
- EO:输出使能(低电平有效)
- GS:编码状态标志(低电平有效,表示有编码输出)
- 真值表(部分):
EI I7 I6 I5 I4 I3 I2 I1 I0 Y2 Y1 Y0 GS EO 1 x x x x x x x x 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 x 1 0 1 0 1 … … … … … … … … … … … … … … 0 1 x x x x x x x 0 0 0 0 1
5.4.1.4 应用案例
键盘编码器:
- 将键盘的按键信号转换为对应的ASCII码
- 通常使用优先编码器,处理按键同时按下的情况
5.4.2 译码器
5.4.2.1 基本概念
- 功能:将输入的二进制代码转换为对应的输出信号
- 分类:
- 二进制译码器:将n位二进制代码译为2ⁿ个输出
- BCD译码器:将BCD码译为10个输出
- 显示译码器:将二进制代码译为七段数码管的驱动信号
5.4.2.2 3-8线译码器(74LS138)
功能:将3位二进制代码译为8个输出
引脚功能:
- 输入:
- A0-A2:3位二进制输入
- G1, G2A, G2B:使能端(G1高电平有效,G2A、G2B低电平有效)
- 输出:
- Y0-Y7:8个输出(低电平有效)
真值表(部分):
| G1 | G2A | G2B | A2 | A1 | A0 | Y0 | Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | x | x | x | x | x | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| x | 1 | x | x | x | x | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| x | x | 1 | x | x | x | 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 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
逻辑表达式:
Y0 = ¬(G1 · ¬G2A · ¬G2B · ¬A2 · ¬A1 · ¬A0)
Y1 = ¬(G1 · ¬G2A · ¬G2B · ¬A2 · ¬A1 · A0)
…
Y7 = ¬(G1 · ¬G2A · ¬G2B · A2 · A1 · A0)
5.4.2.3 显示译码器
BCD-七段显示译码器(74LS47):
- 功能:将BCD码译为七段数码管的驱动信号
- 输入:
- A0-A3:BCD码输入
- LT:灯测试端(低电平有效,所有段全亮)
- RBI:灭零输入端(低电平有效,熄灭无效的0)
- BI/RBO:消隐输入/灭零输出端(低电平有效)
- 输出:
- a-g:七段数码管驱动信号(低电平有效)
真值表(部分):
| LT | RBI | BI/RBO | A3 | A2 | A1 | A0 | a | b | c | d | e | f | g | 显示 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | x | 1 | x | x | x | x | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 8 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 灭 |
| 1 | x | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | x | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
| 1 | x | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 2 |
| … | … | … | … | … | … | … | … | … | … | … | … | … | … | … |
5.4.2.4 应用案例
数码管显示电路:
- 使用BCD-七段显示译码器将BCD码转换为七段数码管的驱动信号
- 用于数字仪表、计数器等显示设备
5.4.3 数据选择器
5.4.3.1 基本概念
- 功能:从多路输入数据中选择一路输出
- 分类:
- 4选1数据选择器
- 8选1数据选择器
- 16选1数据选择器
5.4.3.2 4选1数据选择器
功能:从4路输入中选择1路输出
引脚功能:
- 输入:
- D0-D3:4路数据输入
- A0-A1:地址输入(选择哪一路数据)
- EN:使能端(低电平有效)
- 输出:
- Y:输出
真值表:
| EN | A1 | A0 | Y |
|---|---|---|---|
| 1 | x | x | 0 |
| 0 | 0 | 0 | D0 |
| 0 | 0 | 1 | D1 |
| 0 | 1 | 0 | D2 |
| 0 | 1 | 1 | D3 |
逻辑表达式:
Y = ¬EN · (¬A1¬A0D0 + ¬A1A0D1 + A1¬A0D2 + A1A0D3)
5.4.3.3 8选1数据选择器(74LS151)
功能:从8路输入中选择1路输出
引脚功能:
- 输入:
- D0-D7:8路数据输入
- A0-A2:地址输入
- EN:使能端(低电平有效)
- 输出:
- Y:原码输出
- W:反码输出
应用:实现任意逻辑函数
- n变量逻辑函数可以用2ⁿ选1数据选择器实现
- 方法:将n-1个变量作为地址输入,剩下的1个变量作为数据输入
示例:用8选1数据选择器实现Y = A⊕B⊕C
- 将A、B作为地址输入(A2=A, A1=B)
- 数据输入:D0=0, D1=1, D2=1, D3=0, D4=1, D5=0, D6=0, D7=1
- 逻辑表达式:Y = ¬A¬B¬C + ¬AB¬C + A¬B¬C + AB¬C
5.4.4 加法器
5.4.4.1 半加器
- 功能:实现两个1位二进制数相加,不考虑来自低位的进位
- 输入:A、B(两个加数)
- 输出:S(和)、C(进位)
- 逻辑表达式:
S = A ⊕ B
C = AB
5.4.4.2 全加器
- 功能:实现两个1位二进制数相加,考虑来自低位的进位
- 输入:A、B(两个加数)、CI(来自低位的进位)
- 输出:S(和)、CO(向高位的进位)
- 逻辑表达式:
S = A ⊕ B ⊕ CI
CO = AB + ACI + BCI
5.4.4.3 多位加法器
串行进位加法器:
- 结构:将多个全加器串联,低位的进位输出连接到高位的进位输入
- 特点:
- 结构简单
- 速度慢(进位信号串行传递)
超前进位加法器(74LS283):
- 功能:4位二进制超前进位加法器
- 结构:
- 4个全加器
- 超前进位逻辑(提前计算出每一位的进位)
- 特点:
- 速度快(进位信号并行传递)
- 结构复杂
真值表:
| A3 | A2 | A1 | A0 | B3 | B2 | B1 | B0 | CI | S3 | S2 | S1 | S0 | CO |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| … | … | … | … | … | … | … | … | … | … | … | … | … | … |
5.4.4.4 应用案例
算术逻辑单元(ALU):
- 实现算术运算(加法、减法、乘法等)
- 实现逻辑运算(与、或、异或等)
- 计算机CPU的核心部件
5.4.5 数值比较器
5.4.5.1 基本概念
- 功能:比较两个二进制数的大小
- 输出:
- A > B
- A = B
- A < B
5.4.5.2 1位数值比较器
- 输入:A、B(两个1位二进制数)
- 输出:
- Y(A>B) = A¬B
- Y(A=B) = AB + ¬A¬B = A ⊙ B
- Y(A<B) = ¬AB
5.4.5.3 4位数值比较器(74LS85)
功能:比较两个4位二进制数的大小
引脚功能:
- 输入:
- A0-A3:4位二进制数A
- B0-B3:4位二进制数B
- IA>B, IA=B, IA<B:级联输入端(来自低位的比较结果)
- 输出:
- OA>B, OA=B, OA<B:比较结果输出
真值表(部分):
| A3 | B3 | A2 | B2 | A1 | B1 | A0 | B0 | IA>B | IA=B | IA<B | OA>B | OA=B | OA<B |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | x | x | x | x | x | x | x | x | x | 1 | 0 | 0 |
| 0 | 1 | x | x | x | x | x | x | x | x | x | 0 | 0 | 1 |
| A3=B3 | 1 | 0 | x | x | x | x | x | x | x | 1 | 0 | 0 | |
| A3=B3 | 0 | 1 | x | x | x | x | x | x | x | 0 | 0 | 1 | |
| A3=B3, A2=B2 | 1 | 0 | x | x | x | x | x | 1 | 0 | 0 | |||
| A3=B3, A2=B2 | 0 | 1 | x | x | x | x | x | 0 | 0 | 1 | |||
| A3=B3, A2=B2, A1=B1 | 1 | 0 | x | x | x | 1 | 0 | 0 | |||||
| A3=B3, A2=B2, A1=B1 | 0 | 1 | x | x | x | 0 | 0 | 1 | |||||
| A3=B3, A2=B2, A1=B1, A0=B0 | x | 1 | x | 0 | 1 | 0 | |||||||
| A3=B3, A2=B2, A1=B1, A0=B0 | 1 | 0 | x | 1 | 0 | 0 | |||||||
| A3=B3, A2=B2, A1=B1, A0=B0 | 0 | x | 1 | 0 | 0 | 1 |
应用:用于计算机中的比较指令、排序电路等
5.5 组合逻辑电路的竞争冒险
5.5.1 竞争与冒险的概念
竞争:输入信号通过不同路径到达输出的时间不同
冒险:由于竞争,在输出端产生的短暂的错误信号(毛刺)
5.5.2 冒险的类型
1. 0型冒险(偏1冒险):
- 正常输出应为1,但出现短暂的0
- 例如:Y = A + ¬A
2. 1型冒险(偏0冒险):
- 正常输出应为0,但出现短暂的1
- 例如:Y = A¬A
5.5.3 冒险的识别
代数法:
- 将逻辑表达式化简为与或式
- 若存在相邻的最小项,且这两个最小项只有一个变量不同,则可能存在冒险
卡诺图法:
- 画出逻辑函数的卡诺图
- 若存在两个相邻的1方格没有被同一组覆盖,则可能存在冒险
5.5.4 冒险的消除方法
1. 增加冗余项:
- 在逻辑表达式中增加冗余项,覆盖相邻的最小项
- 例如:Y = AB + ¬AC → 增加冗余项BC,得到Y = AB + ¬AC + BC
2. 引入选通脉冲:
- 在输出端引入选通脉冲,只有在稳定状态时才允许输出
- 选通脉冲的宽度和时间应合适,确保只在冒险结束后才打开
3. 使用滤波电容:
- 在输出端并联一个小电容(几十pF),滤除毛刺
- 适用于对输出波形要求不高的场合
4. 采用格雷码:
- 使用格雷码作为输入,相邻状态只有1位变化,减少冒险的可能性
5.6 组合逻辑电路的设计实例
5.6.1 全减器设计
功能:实现两个1位二进制数相减,考虑来自低位的借位
输入:A(被减数)、B(减数)、BI(来自低位的借位)
输出:D(差)、BO(向高位的借位)
真值表:
| A | B | BI | D | BO |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 1 |
逻辑表达式:
D = A ⊕ B ⊕ BI
BO = ¬A(B + BI)
逻辑电路图:
A ---|\
| ⊕ ---|\
B ---|/ | ⊕ --- D
|/
BI ---|/\
A ---|\
| ¬ ---|\
| & ---|\
B ---|\ | & --- BO
| & ---|
BI ---|/
5.6.2 8421BCD码转余3码电路
功能:将8421BCD码转换为余3码
输入:A、B、C、D(8421BCD码)
输出:W、X、Y、Z(余3码)
转换关系:余3码 = 8421BCD码 + 3
真值表:
| A | B | C | D | W | X | Y | Z |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
| 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
逻辑表达式:
W = A + BC + BD
X = B¬C¬D + ¬BC + ¬BD
Y = CD + ¬C¬D
Z = ¬D
逻辑电路图:
- 略(根据逻辑表达式绘制)
5.7 常见问题与易错点
5.7.1 设计时未考虑约束条件
- 问题:在设计具有约束条件的逻辑电路时,未考虑无关项
- 解决方法:合理利用无关项,化简逻辑表达式,减少门的数量
5.7.2 未考虑门的扇入扇出限制
- 问题:设计的电路中,门的输入数量超过扇入限制,或输出驱动的门数量超过扇出限制
- 解决方法:
- 对于扇入限制:使用扩展器或多级门电路
- 对于扇出限制:使用缓冲器或驱动器
5.7.3 未考虑竞争冒险
- 问题:设计的电路存在竞争冒险,导致输出出现毛刺
- 解决方法:采用增加冗余项、引入选通脉冲、使用滤波电容等方法消除冒险
5.7.4 逻辑表达式化简错误
- 问题:在化简逻辑表达式时出现错误,导致电路功能错误
- 解决方法:
- 多次检查化简过程
- 同时使用布尔代数和卡诺图化简,验证结果
- 通过真值表验证化简后的表达式
5.8 组合逻辑电路的发展趋势
- 高速化:采用高速工艺和电路结构,提高响应速度
- 低功耗:采用CMOS工艺和低功耗设计技术
- 高集成度:将多个组合逻辑电路集成在一个芯片上
- 可编程化:采用PLD、FPGA等可编程器件,提高设计灵活性
- 模块化:采用模块化设计,提高设计效率和可维护性
6. 时序逻辑电路
6.1 时序逻辑电路的基本概念
6.1.1 定义与特点
- 定义:输出不仅取决于当前输入,还与历史状态有关的逻辑电路
- 特点:
- 包含存储元件(触发器)
- 输出取决于当前输入和历史状态
- 具有反馈回路
- 可以实现时序控制和存储功能
6.1.2 结构组成
- 组合逻辑电路:处理输入信号,产生输出和触发器的驱动信号
- 存储电路:由触发器组成,存储电路的状态
- 时钟信号:控制存储电路状态转换的时间
6.1.3 分类
6.1.3.1 按触发方式分类
- 同步时序电路:所有触发器受同一时钟信号控制,状态转换在同一时刻发生
- 异步时序电路:触发器不受同一时钟信号控制,状态转换不在同一时刻发生
6.1.3.2 按逻辑功能分类
- 寄存器:存储多位二进制信息
- 计数器:对输入脉冲进行计数
- 序列检测器:检测特定的输入序列
- 移位寄存器:实现数据的移位操作
6.2 触发器
6.2.1 触发器的基本概念
- 功能:存储1位二进制信息的基本单元电路
- 特点:
- 具有两个稳定状态(0和1)
- 在触发信号作用下,可以从一个稳定状态转换到另一个稳定状态
- 触发信号消失后,保持新的状态不变
6.2.2 基本RS触发器
6.2.2.1 电路结构
- 由两个与非门交叉连接组成
- 输入:S(置位端)、R(复位端)
- 输出:Q、¬Q
6.2.2.2 逻辑符号
S ---|\
| &--- Q
¬Q ---|/\
|
|/\
Q ---|\
| &--- ¬Q
R ---|/
6.2.2.3 逻辑功能
-
真值表:
S R Qⁿ Qⁿ⁺¹ 功能 0 0 0 1 置1 0 0 1 1 置1 0 1 0 1 置1 0 1 1 1 置1 1 0 0 0 置0 1 0 1 0 置0 1 1 0 0 保持 1 1 1 1 保持 -
特性方程:
Qⁿ⁺¹ = S + ¬R·Qⁿ
约束条件:S·R = 1(与非门组成的基本RS触发器) -
状态转换图:
0 <---| |---> 1 | | |¬R | S | | | | |---> 0 |<---
6.2.3 同步RS触发器
6.2.3.1 电路结构
- 在基本RS触发器的基础上,增加两个与非门作为控制门
- 输入:S、R、CP(时钟信号)
- 输出:Q、¬Q
6.2.3.2 逻辑功能
-
真值表:
CP S R Qⁿ Qⁿ⁺¹ 功能 0 x x x Qⁿ 保持 1 0 0 0 0 保持 1 0 0 1 1 保持 1 0 1 0 0 置0 1 0 1 1 0 置0 1 1 0 0 1 置1 1 1 0 1 1 置1 1 1 1 0 x 不定 1 1 1 1 x 不定 -
特性方程:
Qⁿ⁺¹ = S·¬CP + ¬R·Qⁿ·CP
约束条件:S·R = 0(CP=1时)
6.2.4 主从RS触发器
6.2.4.1 电路结构
- 由两个同步RS触发器级联组成,主触发器和从触发器
- 时钟信号CP直接控制主触发器,经过反相后控制从触发器
6.2.4.2 工作原理
- CP=1时,主触发器接收输入信号,从触发器保持不变
- CP下降沿时,主触发器状态传送到从触发器,主触发器保持不变
6.2.5 D触发器
6.2.5.1 电路结构
- 在同步RS触发器的基础上,增加一个非门,将R端与S端连接
- 输入:D、CP
- 输出:Q、¬Q
6.2.5.2 逻辑功能
-
真值表:
CP D Qⁿ Qⁿ⁺¹ 功能 0 x x Qⁿ 保持 1 0 0 0 置0 1 0 1 0 置0 1 1 0 1 置1 1 1 1 1 置1 -
特性方程:
Qⁿ⁺¹ = D
6.2.5.3 边沿D触发器
- 触发方式:仅在CP的上升沿或下降沿触发
- 特点:抗干扰能力强,工作可靠
- 逻辑符号:CP输入端有小圆圈表示下降沿触发,无小圆圈表示上升沿触发
6.2.6 JK触发器
6.2.6.1 电路结构
- 在主从RS触发器的基础上,将Q和¬Q反馈到输入级
- 输入:J、K、CP
- 输出:Q、¬Q
6.2.6.2 逻辑功能
-
真值表:
CP J K Qⁿ Qⁿ⁺¹ 功能 0 x x x Qⁿ 保持 1 0 0 0 0 保持 1 0 0 1 1 保持 1 0 1 0 0 置0 1 0 1 1 0 置0 1 1 0 0 1 置1 1 1 0 1 1 置1 1 1 1 0 1 翻转 1 1 1 1 0 翻转 -
特性方程:
Qⁿ⁺¹ = J·¬Qⁿ + ¬K·Qⁿ
6.2.6.3 边沿JK触发器
- 触发方式:仅在CP的上升沿或下降沿触发
- 特点:功能完备,使用灵活
6.2.7 T触发器
6.2.7.1 电路结构
- 将JK触发器的J、K端连接在一起,作为T输入端
6.2.7.2 逻辑功能
-
真值表:
CP T Qⁿ Qⁿ⁺¹ 功能 0 x x Qⁿ 保持 1 0 0 0 保持 1 0 1 1 保持 1 1 0 1 翻转 1 1 1 0 翻转 -
特性方程:
Qⁿ⁺¹ = T·¬Qⁿ + ¬T·Qⁿ = T ⊕ Qⁿ
6.2.7.3 T’触发器
- T触发器的特殊情况,T恒为1
- 特性方程:Qⁿ⁺¹ = ¬Qⁿ
- 功能:每来一个时钟脉冲,状态翻转一次
6.2.8 触发器的逻辑功能转换
6.2.8.1 JK触发器转换为D触发器
- 方法:令J = D,K = ¬D
- 特性方程:Qⁿ⁺¹ = D·¬Qⁿ + D·Qⁿ = D
6.2.8.2 JK触发器转换为T触发器
- 方法:令J = T,K = T
- 特性方程:Qⁿ⁺¹ = T·¬Qⁿ + ¬T·Qⁿ = T ⊕ Qⁿ
6.2.8.3 D触发器转换为JK触发器
- 方法:D = J·¬Qⁿ + ¬K·Qⁿ
- 特性方程:Qⁿ⁺¹ = J·¬Qⁿ + ¬K·Qⁿ
6.3 寄存器
6.3.1 寄存器的基本概念
- 功能:存储多位二进制信息
- 组成:由多个触发器组成,每个触发器存储1位二进制信息
6.3.2 基本寄存器
6.3.2.1 电路结构
- 由多个D触发器并联组成
- 输入:n位数据Dₙ₋₁~D₀、CP
- 输出:n位数据Qₙ₋₁~Q₀
6.3.2.2 工作原理
- CP上升沿时,输入数据Dₙ₋₁~D₀存入触发器
- CP=0时,触发器保持原有状态
6.3.2.3 74LS373八D锁存器
- 功能:8位数据锁存器
- 引脚:
- D₀~D₇:8位数据输入
- Q₀~Q₇:8位数据输出
- G:锁存允许端(高电平有效)
- OE:输出允许端(低电平有效)
6.3.3 移位寄存器
6.3.3.1 单向移位寄存器
左移寄存器:
- 数据从最右端触发器的D端串行输入
- 每个触发器的Q端连接到相邻左边触发器的D端
- 工作原理:
- 第1个CP脉冲,数据存入最右端触发器
- 第2个CP脉冲,最右端触发器的数据移到相邻左边触发器,新数据存入最右端触发器
- 依此类推,经过n个CP脉冲,n位数据全部移入寄存器
右移寄存器:
- 数据从最左端触发器的D端串行输入
- 每个触发器的Q端连接到相邻右边触发器的D端
6.3.3.2 双向移位寄存器
4位双向移位寄存器(74LS194):
-
功能:可实现左移、右移、并行输入/输出、保持等功能
-
引脚:
- D₀~D₃:4位并行数据输入
- Q₀~Q₃:4位并行数据输出
- SR:右移串行输入
- SL:左移串行输入
- S₁、S₀:工作模式控制端
- CP:时钟端(上升沿有效)
- CR:清零端(低电平有效)
-
工作模式:
S₁ S₀ 工作模式 0 0 保持 0 1 右移 1 0 左移 1 1 并行输入
6.3.3.3 移位寄存器的应用
串行-并行转换:
- 串行输入,并行输出
- 用于数据通信中的串并转换
并行-串行转换:
- 并行输入,串行输出
- 用于数据通信中的并串转换
移位寄存器型计数器:
- 环形计数器:将移位寄存器的最后一位输出反馈到第一位输入
- 扭环形计数器:将移位寄存器的最后一位反相后反馈到第一位输入
6.4 计数器
6.4.1 计数器的基本概念
- 功能:对输入脉冲的个数进行计数
- 分类:
- 按计数方向:加法计数器、减法计数器、可逆计数器
- 按计数进制:二进制计数器、十进制计数器、任意进制计数器
- 按触发方式:同步计数器、异步计数器
6.4.2 异步计数器
6.4.2.1 异步二进制加法计数器
电路结构:
- 由多个JK触发器组成,每个触发器的J、K端接高电平(T’触发器)
- 低位触发器的Q端连接到高位触发器的CP端
工作原理:
- 每来一个CP脉冲,最低位触发器翻转
- 低位触发器从1变为0时,产生下降沿,触发高位触发器翻转
状态图:
000 → 001 → 010 → 011 → 100 → 101 → 110 → 111 → 000
6.4.2.2 异步十进制加法计数器
电路结构:
- 在4位异步二进制加法计数器的基础上,增加反馈逻辑
- 当计数到1010时,通过反馈逻辑使计数器清零
状态图:
0000 → 0001 → 0010 → 0011 → 0100 → 0101 → 0110 → 0111 → 1000 → 1001 → 0000
6.4.3 同步计数器
6.4.3.1 同步二进制加法计数器
电路结构:
- 由多个JK触发器组成,所有触发器的CP端连接在一起
- 低位触发器的Q端连接到高位触发器的J、K端
工作原理:
- 所有触发器在同一时钟脉冲作用下同时翻转
- 高位触发器的翻转条件是所有低位触发器都为1
特性方程:
- 对于第i位触发器,Jᵢ = Kᵢ = Qᵢ₋₁·Qᵢ₋₂·…·Q₀
6.4.3.2 同步十进制加法计数器
电路结构:
- 在4位同步二进制加法计数器的基础上,增加反馈逻辑
- 当计数到1001时,通过反馈逻辑使计数器在下次CP脉冲时回到0000
6.4.3.3 集成同步计数器
4位同步二进制计数器(74LS161):
-
功能:4位同步二进制加法计数
-
引脚:
- CP:时钟端(上升沿有效)
- CR:清零端(低电平有效)
- LD:置数端(低电平有效)
- EP、ET:使能端(高电平有效)
- D₀~D₃:并行数据输入端
- Q₀~Q₃:并行数据输出端
- CO:进位输出端
-
功能表:
CR LD EP ET CP 功能 0 x x x x 异步清零 1 0 x x ↑ 同步置数 1 1 0 x x 保持 1 1 x 0 x 保持(CO=0) 1 1 1 1 ↑ 计数
十进制同步计数器(74LS160):
- 功能与74LS161相似,但为十进制计数
- 计数范围:0000~1001
6.4.4 任意进制计数器的设计
6.4.4.1 反馈清零法
设计步骤:
- 选择合适的集成计数器
- 确定清零信号的产生条件
- 设计反馈逻辑电路
- 画出逻辑电路图
示例:用74LS161设计6进制计数器
- 74LS161是4位二进制计数器,计数范围0000~1111
- 6进制计数器的状态为0000~0101
- 当计数到0110时,产生清零信号
- 反馈逻辑:CR = ¬(Q₂·Q₁)
6.4.4.2 反馈置数法
设计步骤:
- 选择合适的集成计数器
- 确定置数信号的产生条件和置数数值
- 设计反馈逻辑电路
- 画出逻辑电路图
示例:用74LS161设计6进制计数器
- 选择置数数值为1010(10)
- 当计数到1111(15)时,产生置数信号
- 计数范围:1010~1111(6个状态)
- 反馈逻辑:LD = ¬(Q₃·Q₂·Q₁·Q₀)
6.4.4.3 级联法
设计步骤:
- 将多个集成计数器级联
- 确定各级计数器的计数进制
- 设计级联逻辑电路
- 画出逻辑电路图
示例:用两片74LS161设计256进制计数器
- 每片74LS161是16进制计数器
- 两片级联后,总计数进制为16×16=256
- 级联方式:将低位的CO端连接到高位的EP、ET端
6.5 时序逻辑电路的分析方法
6.5.1 同步时序逻辑电路的分析
分析步骤:
- 确定电路组成:识别触发器类型和组合逻辑电路
- 写出各方程:
- 输出方程:输出与输入、状态的逻辑关系
- 驱动方程:触发器输入与输入、状态的逻辑关系
- 状态方程:将驱动方程代入触发器的特性方程
- 列出状态表:
- 列出所有输入组合和状态组合
- 计算次态和输出
- 画出状态图:
- 以圆圈表示状态
- 以箭头表示状态转换
- 箭头旁标注输入/输出
- 画出时序图:
- 以时间为横轴,画出输入、状态、输出的波形
- 分析逻辑功能:
- 描述电路的逻辑功能
- 确定电路的类型(计数器、寄存器等)
6.5.2 分析示例
示例:分析下图所示的同步时序逻辑电路
CP ---| |
|FF0 |--- Q0
| |
|FF1 |--- Q1
| |
|FF2 |--- Q2
分析过程:
-
确定电路组成:
- 3个JK触发器,均接成T’触发器(J=K=1)
- 无输入信号,输出为Q2Q1Q0
-
写出各方程:
- 输出方程:Y = Q2Q1Q0
- 驱动方程:J0=K0=1, J1=K1=1, J2=K2=1
- 状态方程:Q0ⁿ⁺¹=¬Q0ⁿ, Q1ⁿ⁺¹=¬Q1ⁿ, Q2ⁿ⁺¹=¬Q2ⁿ
-
列出状态表:
Q2ⁿ Q1ⁿ Q0ⁿ Q2ⁿ⁺¹ Q1ⁿ⁺¹ Q0ⁿ⁺¹ Y 0 0 0 1 1 1 0 1 1 1 0 0 0 1 -
画出状态图:
000 <---| |---> 111 | | | 1/1 | 0/0 | | -
画出时序图:
CP: ↑ ↑ ↑ ↑ Q2: 0 1 0 1 0 1 Q1: 0 1 0 1 0 1 Q0: 0 1 0 1 0 1 Y: 0 1 0 1 0 1 -
分析逻辑功能:
- 该电路是一个3位二进制异步计数器
- 每来一个CP脉冲,状态翻转一次
- 输出Y在状态为111时为1,否则为0
6.6 时序逻辑电路的设计方法
6.6.1 同步时序逻辑电路的设计
设计步骤:
- 分析逻辑需求:
- 确定输入、输出和状态变量
- 定义状态含义
- 建立原始状态图和状态表:
- 根据逻辑需求,画出原始状态图
- 列出原始状态表
- 状态化简:
- 合并等价状态,减少状态数量
- 得到最简状态表
- 状态编码:
- 将状态用二进制代码表示
- 确定编码方案
- 选择触发器类型:
- 通常选择D触发器或JK触发器
- 求出输出方程和驱动方程:
- 根据状态表,写出输出方程
- 根据状态表和触发器类型,写出驱动方程
- 画出逻辑电路图:
- 根据输出方程和驱动方程,画出逻辑电路图
- 验证电路功能:
- 分析电路的逻辑功能,验证是否符合设计要求
6.6.2 设计示例
示例:设计一个同步十进制加法计数器
设计过程:
-
分析逻辑需求:
- 输入:CP
- 输出:Q3Q2Q1Q0
- 状态:0000~1001
-
建立原始状态图和状态表:
0000 → 0001 → 0010 → 0011 → 0100 → 0101 → 0110 → 0111 → 1000 → 1001 → 0000 -
状态化简:
- 已为最简状态
-
状态编码:
- 采用自然二进制编码
-
选择触发器类型:
- 选择JK触发器
-
求出输出方程和驱动方程:
- 输出方程:无外部输出
- 驱动方程:
J0=K0=1
J1=Q0·¬Q3, K1=Q0
J2=Q1Q0, K2=Q1Q0
J3=Q2Q1Q0, K3=Q0
-
画出逻辑电路图:
- 略(根据驱动方程绘制)
-
验证电路功能:
- 分析状态转换,验证是否符合十进制计数规律
6.6 时序逻辑电路的应用
6.6.1 序列信号发生器
功能:产生特定的二进制序列
分类:
- 移位寄存器型:由移位寄存器和反馈逻辑组成
- 计数器型:由计数器和组合逻辑组成
示例:产生序列信号00011101
设计过程:
- 确定序列长度:8位
- 选择移位寄存器长度:3位(2³=8)
- 设计反馈逻辑:D = Q2⊕Q0
- 初始状态:000
- 状态转换:000→001→011→111→110→101→010→100→000
6.6.2 序列检测器
功能:检测输入序列中是否包含特定的序列
分类:
- 重叠检测:允许检测到的序列与下一个序列重叠
- 非重叠检测:不允许检测到的序列与下一个序列重叠
示例:设计一个101序列检测器
设计过程:
- 定义状态:
- S0:初始状态
- S1:检测到1
- S2:检测到10
- S3:检测到101
- 画出状态图:
S0 --1/0--> S1 --0/0--> S2 --1/1--> S3 | | | | 0/0 1/0 0/0 0/0 | | | | v v v v S0 S1 S0 S1 - 选择触发器类型:D触发器
- 设计驱动方程和输出方程
- 画出逻辑电路图
6.7 常见问题与易错点
6.7.1 触发器的触发方式
- 问题:误将电平触发的触发器当作边沿触发使用
- 解决方法:仔细查看触发器的逻辑符号,注意CP输入端是否有小圆圈
6.7.2 异步清零与同步清零
- 问题:混淆异步清零和同步清零的区别
- 解决方法:
- 异步清零:不受时钟信号控制,清零信号有效时立即清零
- 同步清零:受时钟信号控制,清零信号有效时,在时钟脉冲作用下清零
6.7.3 状态化简不彻底
- 问题:状态化简时未合并所有等价状态
- 解决方法:
- 仔细分析状态表,找出所有等价状态
- 利用隐含表法进行状态化简
6.7.4 时序逻辑电路的竞争冒险
- 问题:时序逻辑电路中存在竞争冒险
- 解决方法:
- 采用同步时序电路,减少竞争冒险的可能性
- 在输出端增加滤波电容
- 采用格雷码编码,减少状态转换时的翻转次数
6.8 时序逻辑电路的发展趋势
- 高速化:采用高速触发器和逻辑门,提高时钟频率
- 低功耗:采用CMOS工艺和低功耗设计技术
- 高集成度:将多个时序逻辑电路集成在一个芯片上
- 可编程化:采用FPGA、CPLD等可编程器件,提高设计灵活性
- 模块化:采用模块化设计,提高设计效率和可维护性
7. 存储器与可编程逻辑器件
7.1 半导体存储器
7.1.1 存储器的基本概念
-
功能:存储二进制信息的器件
-
分类:
- 按存储介质:半导体存储器、磁存储器、光存储器
- 按存取方式:随机存取存储器(RAM)、只读存储器(ROM)、顺序存取存储器、直接存取存储器
- 按断电后信息是否丢失:易失性存储器、非易失性存储器
-
存储器容量:
- 表示方法:字数×位数
- 示例:1K×8位表示有1024个存储单元,每个单元存储8位二进制信息
- 单位转换:1K=1024,1M=1024K,1G=1024M
-
存储器的主要技术指标:
- 存储容量
- 存取速度(存取时间、存取周期)
- 功耗
- 可靠性
7.1.2 只读存储器(ROM)
7.1.2.1 基本结构
- 组成:
- 地址译码器:将输入的地址码转换为字选线信号
- 存储矩阵:由大量存储单元组成,存储二进制信息
- 输出缓冲器:增强带负载能力,控制数据输出
7.1.2.2 掩模ROM
-
定义:由厂家在生产过程中用掩模技术写入信息的ROM
-
特点:
- 信息永久存储,不可修改
- 批量生产时成本低
- 适用于固定程序和数据的存储
-
结构:
- 二极管ROM:用二极管的导通或截止表示存储的0或1
- 晶体管ROM:用晶体管的导通或截止表示存储的0或1
- MOS管ROM:用MOS管的导通或截止表示存储的0或1
7.1.2.3 可编程ROM(PROM)
-
定义:用户可以一次性编程的ROM
-
结构:
- 存储矩阵由熔断丝或反熔丝组成
- 未编程时,所有存储单元为1或0
- 编程时,通过大电流熔断熔断丝或击穿反熔丝,改变存储单元的状态
-
特点:
- 只能编程一次,不可擦除
- 适合小批量生产
7.1.2.4 可擦除可编程ROM(EPROM)
-
定义:可以多次擦除和编程的ROM
-
结构:
- 存储单元由浮栅MOS管(FAMOS)组成
- 未编程时,浮栅上无电荷,漏源极之间导通
- 编程时,通过高压电子注入浮栅,形成导电沟道
- 擦除时,用紫外线照射浮栅,使电子逸出
-
特点:
- 可以多次擦除和编程(通常1000次以上)
- 擦除时间长(约20分钟)
- 擦除时需要专用的紫外线擦除器
- 存储的信息在紫外线照射下会丢失,需要封装在带石英窗口的陶瓷外壳中
7.1.2.5 电可擦除可编程ROM(EEPROM)
-
定义:可以用电信号擦除和编程的ROM
-
结构:
- 存储单元由浮栅隧道氧化层MOS管(Flotox)组成
- 编程和擦除通过隧道效应进行
- 擦除时,在控制栅上加负电压,使浮栅上的电子返回衬底
- 编程时,在控制栅上加正电压,使电子注入浮栅
-
特点:
- 可以在线擦除和编程(通常10000次以上)
- 擦除时间短(毫秒级)
- 可以按字节擦除
- 不需要专用的擦除器
- 存储的信息可以长期保存(10年以上)
7.1.2.6 快闪存储器(Flash Memory)
-
定义:一种新型的EEPROM,具有更高的擦除和编程速度
-
结构:
- 存储单元由浮栅MOS管组成
- 擦除时,通过隧道效应使浮栅上的电子逸出
- 编程时,通过热电子注入使电子进入浮栅
-
特点:
- 可以快速擦除和编程(擦除时间毫秒级,编程时间微秒级)
- 可以按块擦除(通常64KB或128KB为一块)
- 存储容量大(从MB到GB级)
- 功耗低
- 可靠性高(擦写次数可达100万次以上)
-
应用:
- USB闪存盘
- 数码相机存储卡
- 手机内存
- 固态硬盘(SSD)
7.1.3 随机存取存储器(RAM)
7.1.3.1 静态RAM(SRAM)
-
定义:用触发器作为存储单元的RAM
-
结构:
- 存储单元:由6个MOS管组成的触发器
- 地址译码器:行地址译码器和列地址译码器
- 读写控制电路:控制数据的读出和写入
- 输入输出缓冲器:增强带负载能力
-
工作原理:
- 写入数据:地址信号选中存储单元,写入控制信号有效,数据写入触发器
- 读出数据:地址信号选中存储单元,读出控制信号有效,触发器的数据输出到数据总线
-
特点:
- 速度快(存取时间ns级)
- 不需要刷新电路
- 功耗高
- 集成度低
- 成本高
-
应用:
- 高速缓存(Cache)
- 寄存器组
- 静态存储器
7.1.3.2 动态RAM(DRAM)
-
定义:用电容作为存储单元的RAM
-
结构:
- 存储单元:由1个MOS管和1个电容组成
- 地址译码器:行地址译码器和列地址译码器
- 读写控制电路:控制数据的读出和写入
- 刷新电路:定期刷新存储单元中的数据
- 输入输出缓冲器:增强带负载能力
-
工作原理:
- 写入数据:地址信号选中存储单元,写入控制信号有效,MOS管导通,数据写入电容
- 读出数据:地址信号选中存储单元,读出控制信号有效,MOS管导通,电容上的电荷通过MOS管输出到数据总线
- 刷新:由于电容的漏电,存储的数据会逐渐丢失,需要定期刷新(通常每2ms刷新一次)
-
特点:
- 速度较慢(存取时间μs级)
- 需要刷新电路
- 功耗低
- 集成度高
- 成本低
-
应用:
- 计算机内存
- 图形卡内存
- 大容量存储器
7.1.3.3 SRAM与DRAM的比较
| 特性 | SRAM | DRAM |
|---|---|---|
| 存储单元 | 触发器 | 电容+MOS管 |
| 集成度 | 低 | 高 |
| 存取速度 | 快 | 慢 |
| 功耗 | 高 | 低 |
| 成本 | 高 | 低 |
| 刷新 | 不需要 | 需要 |
| 应用 | Cache、寄存器 | 主内存 |
7.1.4 存储器的扩展
7.1.4.1 位扩展
- 功能:增加存储器的位数
- 方法:将多个存储器芯片的地址线、控制线并联,数据线单独引出
- 示例:用2片1K×4位的RAM扩展为1K×8位的RAM
- 地址线:A0~A9并联
- 控制线:CS、WE、OE并联
- 数据线:第1片的D0D3作为低4位,第2片的D0D3作为高4位
7.1.4.2 字扩展
- 功能:增加存储器的字数
- 方法:将多个存储器芯片的数据线、控制线并联,地址线通过译码器扩展
- 示例:用2片1K×8位的RAM扩展为2K×8位的RAM
- 数据线:D0~D7并联
- 控制线:WE、OE并联
- 地址线:A0~A9并联,A10通过译码器控制芯片的CS端
7.1.4.3 字位同时扩展
- 功能:同时增加存储器的字数和位数
- 方法:结合位扩展和字扩展的方法
- 示例:用4片1K×4位的RAM扩展为2K×8位的RAM
- 首先将2片1K×4位的RAM位扩展为1K×8位的RAM
- 然后将2组1K×8位的RAM字扩展为2K×8位的RAM
7.2 可编程逻辑器件(PLD)
7.2.1 PLD的基本概念
-
定义:用户可以编程实现特定逻辑功能的集成电路
-
特点:
- 灵活性高,可根据需要编程
- 缩短设计周期,降低设计成本
- 便于修改和升级
- 集成度高,可靠性高
-
分类:
- 简单PLD:PROM、PLA、PAL、GAL
- 复杂PLD:CPLD、FPGA
7.2.2 PLD的基本结构
-
组成:
- 与阵列:产生乘积项
- 或阵列:产生逻辑函数
- 输入缓冲器:增强输入信号的驱动能力
- 输出缓冲器:增强输出信号的驱动能力,提供不同的输出结构
-
PLD的表示方法:
- 固定连接:用交叉点表示
- 可编程连接:用×表示
- 断开连接:无标记
7.2.3 可编程只读存储器(PROM)
-
结构:
- 与阵列:固定(全译码)
- 或阵列:可编程
-
工作原理:
- 与阵列产生所有可能的乘积项
- 或阵列通过编程选择需要的乘积项,实现逻辑函数
-
特点:
- 结构简单,成本低
- 与阵列固定,资源利用率低
- 适合实现组合逻辑函数
-
应用:
- 存储固定的数据和程序
- 实现简单的组合逻辑函数
7.2.4 可编程逻辑阵列(PLA)
-
结构:
- 与阵列:可编程
- 或阵列:可编程
-
工作原理:
- 与阵列通过编程产生需要的乘积项
- 或阵列通过编程选择需要的乘积项,实现逻辑函数
-
特点:
- 资源利用率高
- 结构复杂,成本高
- 适合实现复杂的组合逻辑函数
-
应用:
- 实现复杂的组合逻辑函数
- 设计专用集成电路(ASIC)
7.2.5 可编程阵列逻辑(PAL)
-
结构:
- 与阵列:可编程
- 或阵列:固定
-
工作原理:
- 与阵列通过编程产生需要的乘积项
- 或阵列固定,每个输出固定连接到若干个乘积项
-
特点:
- 结构简单,成本低
- 或阵列固定,灵活性有限
- 输出结构多样(组合输出、寄存器输出、双向I/O等)
-
应用:
- 实现中等复杂度的组合逻辑和时序逻辑函数
- 设计专用集成电路(ASIC)
7.2.6 通用阵列逻辑(GAL)
-
定义:一种电可擦除、可重复编程的PLD
-
结构:
- 与阵列:可编程
- 或阵列:固定
- 输出逻辑宏单元(OLMC):可配置为不同的输出结构
-
特点:
- 电可擦除、可重复编程(通常10000次以上)
- 输出逻辑宏单元可配置,灵活性高
- 可加密,防止非法复制
- 适合中小规模逻辑设计
-
应用:
- 实现各种组合逻辑和时序逻辑函数
- 设计中小规模专用集成电路
- 替代TTL和CMOS通用集成电路
7.2.7 复杂可编程逻辑器件(CPLD)
-
定义:由多个可编程逻辑块(LAB)和互连资源组成的PLD
-
结构:
- 可编程逻辑块(LAB):由多个宏单元组成
- 互连资源:连接各个LAB的信号路径
- I/O控制块:控制输入输出信号
-
工作原理:
- 每个宏单元包含与阵列、或阵列和触发器
- 宏单元通过互连资源连接,实现复杂的逻辑功能
- 编程时,通过配置存储器设置互连资源和宏单元的功能
-
特点:
- 集成度高(可达百万门级)
- 速度快(ns级)
- 编程简单,使用方便
- 适合实现复杂的组合逻辑和时序逻辑函数
- 可以在系统编程(ISP)
-
应用:
- 实现复杂的数字系统
- 设计大规模专用集成电路
- 替代中小规模ASIC
- 用于工业控制、通信、消费电子等领域
7.2.8 现场可编程门阵列(FPGA)
-
定义:由大量的可编程逻辑单元(CLB)、互连资源和I/O块组成的PLD
-
结构:
- 可编程逻辑单元(CLB):由查找表(LUT)和触发器组成
- 互连资源:包括可编程开关矩阵、互连线段和布线通道
- I/O块:控制输入输出信号
- 专用功能模块:如RAM、乘法器、锁相环(PLL)等
-
工作原理:
- 查找表(LUT)实现组合逻辑函数
- 触发器实现时序逻辑函数
- 互连资源连接各个CLB,实现复杂的逻辑功能
- 编程时,通过配置存储器设置互连资源和CLB的功能
-
特点:
- 集成度极高(可达千万门级)
- 速度快(ns级)
- 灵活性高,可以实现各种复杂的数字系统
- 可以在系统编程(ISP)
- 适合实现大规模、高复杂度的数字系统
- 成本高
-
应用:
- 实现大规模、高复杂度的数字系统
- 设计高性能专用集成电路
- 用于通信、计算机、消费电子、航空航天等领域
- 原型验证和快速产品开发
7.2.9 CPLD与FPGA的比较
| 特性 | CPLD | FPGA |
|---|---|---|
| 结构 | 基于乘积项 | 基于查找表 |
| 集成度 | 中等(数千到百万门) | 高(百万到千万门) |
| 速度 | 快(ns级) | 快(ns级) |
| 功耗 | 较高 | 较低 |
| 灵活性 | 较高 | 极高 |
| 编程方式 | 电可擦除 | SRAM(需要外部配置)或Flash |
| 适合应用 | 中等复杂度的数字系统 | 高复杂度的数字系统 |
| 成本 | 较低 | 较高 |
7.2.10 PLD的编程
-
编程工具:
- 硬件工具:编程器、下载电缆
- 软件工具:开发环境(如Quartus II、Vivado、ISE等)
-
编程语言:
- 硬件描述语言(HDL):VHDL、Verilog HDL
- 原理图输入
- 状态图输入
-
编程流程:
- 设计输入:用HDL或原理图描述逻辑功能
- 编译综合:将设计转换为门级网表
- 适配布局:将网表映射到具体的PLD器件
- 时序仿真:验证设计的时序性能
- 编程下载:将配置数据下载到PLD器件
- 测试验证:验证设计的功能和性能
7.2.11 PLD的应用
-
通信领域:
- 路由器、交换机
- 调制解调器
- 网络接口卡
-
计算机领域:
- 中央处理器(CPU)
- 图形处理器(GPU)
- 内存控制器
-
消费电子领域:
- 数字电视
- 智能手机
- 数码相机
-
工业控制领域:
- 可编程逻辑控制器(PLC)
- 工业自动化设备
- 机器人控制系统
-
航空航天领域:
- 卫星通信系统
- 导航系统
- 飞行控制系统
7.3 存储器与PLD的发展趋势
-
存储器的发展趋势:
- 存储容量不断增加
- 存取速度不断提高
- 功耗不断降低
- 非易失性存储器的广泛应用
- 新型存储器的研究(如阻变存储器、相变存储器等)
-
PLD的发展趋势:
- 集成度不断提高
- 速度不断提高
- 功耗不断降低
- 设计工具不断完善
- 专用功能模块的集成
- 可编程片上系统(SoPC)的发展
8. 数模与模数转换
8.1 概述
8.1.1 数模与模数转换的基本概念
- 模拟信号:连续变化的信号,如温度、压力、声音、图像等
- 数字信号:离散的信号,只有两种状态(0和1)
- 数模转换(D/A转换):将数字信号转换为模拟信号的过程
- 模数转换(A/D转换):将模拟信号转换为数字信号的过程
- 转换器:实现D/A或A/D转换的电路或器件
8.1.2 转换系统的基本组成
模拟-数字转换系统:
模拟信号 → 采样保持电路 → A/D转换器 → 数字信号
数字-模拟转换系统:
数字信号 → D/A转换器 → 模拟信号
8.1.3 转换器的主要技术指标
-
分辨率:转换器能够分辨的最小模拟信号变化量
- 表示方法:位数(n位)或百分比
- 计算公式:分辨率 = 满量程电压 / (2ⁿ - 1)
-
转换精度:转换结果与理论值的接近程度
- 绝对精度:实际输出与理论输出的最大偏差
- 相对精度:绝对精度与满量程的比值
-
转换速度:完成一次转换所需的时间
- 建立时间(D/A转换):从输入数字信号到输出稳定的时间
- 转换时间(A/D转换):从启动转换到输出稳定的时间
-
线性度:转换器的实际转换特性与理想直线的偏离程度
- 积分非线性(INL):实际转换曲线与理想直线的最大偏差
- 微分非线性(DNL):相邻两个转换点之间的实际间隔与理想间隔的偏差
-
量程:转换器能够处理的模拟信号范围
8.2 数模转换器(DAC)
8.2.1 DAC的基本原理
- 工作原理:将输入的数字信号转换为对应的模拟电压或电流
- 转换关系:
- 设数字输入为D = dₙ₋₁dₙ₋₂…d₁d₀(n位二进制数)
- 则模拟输出为:V₀ = Vᵣₑբ × (D / 2ⁿ)
- 其中Vᵣₑբ为参考电压
8.2.2 DAC的基本结构
- 组成:
- 参考电压源
- 数字输入寄存器
- 位权网络
- 求和放大器
8.2.3 常用DAC类型
8.2.3.1 权电阻网络DAC
电路结构:
- 由n个权电阻、n个电子开关和一个运算放大器组成
- 权电阻的阻值为R, 2R, 4R, …, 2ⁿ⁻¹R
- 电子开关由数字输入控制,将权电阻连接到参考电压或地
工作原理:
- 数字输入的每一位控制一个电子开关
- 权电阻网络将数字信号转换为加权电流
- 运算放大器将加权电流转换为模拟电压
特点:
- 结构简单
- 权电阻的阻值范围大,精度难保证
- 适合低分辨率DAC
8.2.3.2 R-2R梯形网络DAC
电路结构:
- 由n个R电阻、n个2R电阻、n个电子开关和一个运算放大器组成
- 电阻只有R和2R两种,精度易保证
工作原理:
- 电子开关由数字输入控制,将梯形网络的节点连接到参考电压或地
- 梯形网络将数字信号转换为加权电流
- 运算放大器将加权电流转换为模拟电压
特点:
- 电阻种类少,精度易保证
- 转换速度快
- 适合高分辨率DAC
- 应用广泛
8.2.3.3 权电流DAC
电路结构:
- 由n个恒流源、n个电子开关和一个运算放大器组成
- 恒流源的电流为I, I/2, I/4, …, I/2ⁿ⁻¹
工作原理:
- 数字输入的每一位控制一个电子开关
- 恒流源产生加权电流
- 运算放大器将加权电流转换为模拟电压
特点:
- 转换精度高
- 转换速度快
- 温度特性好
- 适合高精度DAC
8.2.3.4 倒T型R-2R DAC
电路结构:
- 由n个R电阻、n个2R电阻、n个电子开关和一个运算放大器组成
- 电子开关将梯形网络的节点连接到运算放大器的虚地或地
工作原理:
- 电子开关由数字输入控制
- 倒T型网络将数字信号转换为加权电流
- 运算放大器将加权电流转换为模拟电压
特点:
- 转换速度快(各节点电压恒定,开关切换时无建立时间)
- 电阻种类少,精度易保证
- 适合高速DAC
8.2.4 集成DAC
示例:DAC0832
- 功能:8位并行D/A转换器
- 结构:
- 双缓冲结构(输入寄存器和DAC寄存器)
- R-2R梯形电阻网络
- 电流输出
- 引脚:
- DI0~DI7:8位数字输入
- IOUT1、IOUT2:电流输出
- VREF:参考电压(-10V~+10V)
- RFB:反馈电阻端
- CS、WR1、WR2、XFER:控制端
- 工作方式:
- 单缓冲方式
- 双缓冲方式
- 直通方式
应用:
- 波形生成
- 数控电源
- 音频信号处理
- 电机控制
8.3 模数转换器(ADC)
8.3.1 ADC的基本原理
- 工作原理:将模拟信号转换为对应的数字信号
- 转换过程:
- 采样:在离散的时间点上对模拟信号进行采样
- 保持:保持采样得到的模拟电压
- 量化:将模拟电压转换为离散的数字量
- 编码:将量化后的数字量转换为二进制代码
8.3.2 ADC的基本结构
- 组成:
- 采样保持电路
- 量化编码电路
- 控制逻辑
8.3.3 采样定理
- 内容:为了能从采样信号中恢复原模拟信号,采样频率必须大于等于模拟信号最高频率的2倍
- 公式:fₛ ≥ 2fₘₐₓ
- 其中fₛ为采样频率,fₘₐₓ为模拟信号的最高频率
8.3.4 常用ADC类型
8.3.4.1 并行比较型ADC
电路结构:
- 由2ⁿ⁻¹个比较器、2ⁿ⁻¹个D触发器、一个优先级编码器和一个参考电压源组成
工作原理:
- 参考电压源产生2ⁿ⁻¹个参考电压
- 比较器将输入模拟电压与参考电压比较,产生比较结果
- D触发器锁存比较结果
- 优先级编码器将比较结果转换为二进制代码
特点:
- 转换速度极快(ns级)
- 结构复杂,集成度低
- 功耗大
- 适合高速、低分辨率ADC
8.3.4.2 逐次逼近型ADC
电路结构:
- 由采样保持电路、比较器、D/A转换器、逐次逼近寄存器(SAR)和控制逻辑组成
工作原理:
- 采样保持电路对模拟信号采样并保持
- SAR从最高位开始,依次设置每位的值,通过D/A转换器转换为模拟电压
- 比较器将D/A转换结果与输入模拟电压比较,确定该位的值
- 重复上述过程,直到确定所有位的值
特点:
- 转换速度快(μs级)
- 结构简单,集成度高
- 功耗低
- 适合中高速、中高分辨率ADC
- 应用广泛
8.3.4.3 双积分型ADC
电路结构:
- 由积分器、比较器、计数器、控制逻辑和参考电压源组成
工作原理:
- 第一次积分:对输入模拟电压积分一定时间
- 第二次积分:对参考电压反向积分,直到积分器输出为0
- 计数器记录第二次积分的时间,该时间与输入模拟电压成正比
特点:
- 转换精度高
- 抗干扰能力强(对工频干扰抑制能力好)
- 转换速度慢(ms级)
- 适合高精度、低速ADC
- 应用于数字万用表、测量仪器等
8.3.4.4 流水线型ADC
电路结构:
- 由多个级联的子ADC组成,每个子ADC转换n位
- 包含采样保持电路、子ADC、DAC和求和放大器
工作原理:
- 采样保持电路对模拟信号采样并保持
- 第一级子ADC转换高n位,DAC将其转换为模拟电压
- 求和放大器将输入模拟电压与DAC输出相减,得到残差电压
- 残差电压输入到下一级子ADC,转换次高n位
- 重复上述过程,直到转换完所有位
特点:
- 转换速度快(ns级)
- 分辨率高
- 功耗大
- 适合高速、高分辨率ADC
- 应用于通信、视频处理等领域
8.3.4.5 Σ-Δ型ADC
电路结构:
- 由Σ-Δ调制器和数字滤波器组成
工作原理:
- Σ-Δ调制器对输入模拟信号进行过采样和噪声整形
- 数字滤波器对调制器输出的高速低分辨率数字信号进行滤波和抽取
- 得到低速高分辨率的数字信号
特点:
- 转换精度极高
- 抗干扰能力强
- 转换速度慢
- 适合高精度、低速ADC
- 应用于音频处理、测量仪器等
8.3.5 集成ADC
示例:ADC0809
- 功能:8位8通道逐次逼近型ADC
- 结构:
- 8通道模拟多路开关
- 地址锁存与译码电路
- 比较器
- 8位D/A转换器
- 逐次逼近寄存器
- 三态输出锁存缓冲器
- 引脚:
- IN0~IN7:8路模拟输入
- ADDA、ADDB、ADDC:通道地址选择
- START:转换启动信号
- EOC:转换结束信号
- OE:输出使能信号
- CLOCK:时钟信号
- VREF(+)、VREF(-):参考电压
- D0~D7:8位数字输出
应用:
- 数据采集系统
- 工业控制
- 智能仪器仪表
- 消费电子
示例:ADS1256
- 功能:24位高精度Σ-Δ型ADC
- 特点:
- 分辨率高(24位)
- 转换精度高
- 抗干扰能力强
- 低功耗
- 应用:
- 高精度测量仪器
- 医疗设备
- 工业自动化
- 科学研究
8.4 转换器的选择与应用
8.4.1 转换器的选择原则
- 根据系统要求选择分辨率
- 根据系统要求选择转换速度
- 根据系统要求选择转换精度
- 考虑输入输出特性
- 考虑功耗和电源电压
- 考虑成本和可用性
8.4.2 转换器的应用实例
8.4.2.1 数字音频系统
组成:
- 麦克风:将声音转换为模拟电信号
- 前置放大器:放大模拟信号
- 低通滤波器:滤除高频噪声
- A/D转换器:将模拟信号转换为数字信号
- 数字信号处理器:处理数字信号
- D/A转换器:将数字信号转换为模拟信号
- 功率放大器:放大模拟信号
- 扬声器:将模拟信号转换为声音
8.4.2.2 数据采集系统
组成:
- 传感器:将物理量转换为模拟电信号
- 信号调理电路:放大、滤波、隔离等
- 采样保持电路:采样并保持模拟信号
- A/D转换器:将模拟信号转换为数字信号
- 微处理器:处理数字信号
- 存储器:存储数据
- 通信接口:传输数据
8.5 发展趋势
- 高分辨率:不断提高转换器的分辨率,满足高精度应用需求
- 高速化:不断提高转换速度,满足高速信号处理需求
- 低功耗:降低功耗,适合便携式设备和电池供电系统
- 集成化:将转换器与其他功能模块集成在同一芯片上,如集成微处理器、存储器、通信接口等
- 数字化:采用数字信号处理技术提高转换性能,如Σ-Δ型ADC
- 智能化:集成自校准、自诊断等功能,提高转换器的可靠性和易用性
9. 数字集成电路
9.1 集成电路分类
-
按集成度:
- SSI(小规模):1-10个门/片
- MSI(中规模):10-100个门/片
- LSI(大规模):100-10000个门/片
- VLSI(超大规模):>10000个门/片
-
按制造工艺:
- TTL(晶体管-晶体管逻辑):速度快,功耗较高
- CMOS(互补金属氧化物半导体):功耗低,集成度高,抗干扰能力强
9.2 TTL与CMOS电路的接口
- TTL驱动CMOS:需要提升TTL输出高电平(使用上拉电阻)
- CMOS驱动TTL:需要增加电流驱动能力(使用缓冲器)
10. 数字电路应用
10.1 数字系统设计流程
- 需求分析
- 功能设计
- 逻辑设计
- 电路实现
- 测试与验证
10.2 典型应用
- 数字计算机:CPU、内存、接口电路
- 通信系统:数字调制解调、编码解码
- 控制系统:数字控制器、PLC
- 消费电子:手机、电视、数码相机
- 仪器仪表:数字万用表、示波器
11. 实验与仿真
11.1 数字电路实验
- 实验设备:数字电路实验箱、示波器、信号发生器、万用表
- 实验内容:逻辑门测试、组合逻辑电路设计、时序逻辑电路设计
11.2 仿真软件
- Multisim:直观的电路仿真,适合入门
- Quartus II:FPGA开发,支持VHDL/Verilog
- Proteus:嵌入式系统仿真
12. 实际应用场景与工程实践注意事项
12.1 实际应用场景
12.1.1 计算机系统
- CPU:中央处理器,包含算术逻辑单元、控制器、寄存器等
- 内存:存储程序和数据,包括RAM、ROM、Cache等
- 主板:连接各个硬件组件,包含各种数字电路
- 接口电路:USB、HDMI、以太网等接口的数字电路
12.1.2 通信系统
- 调制解调器:实现数字信号和模拟信号的转换
- 路由器:实现网络数据的路由和转发
- 交换机:实现局域网内的数据交换
- 无线通信设备:手机、WiFi路由器等设备中的数字电路
12.1.3 工业控制
- PLC(可编程逻辑控制器):用于工业自动化控制的数字电路系统
- 传感器接口:将传感器信号转换为数字信号
- 电机控制:直流电机、步进电机、伺服电机的数字控制电路
- 工业总线:CAN、Profibus、Ethernet/IP等工业通信总线
12.1.4 消费电子
- 智能手机:包含处理器、内存、摄像头、触摸屏等数字电路
- 数字电视:数字信号处理、解码、显示驱动等电路
- 数码相机:图像传感器、图像处理、存储等电路
- 智能家居设备:智能音箱、智能灯泡、智能门锁等中的数字电路
12.1.5 医疗设备
- 心电图机:将心电信号转换为数字信号并显示
- 超声波诊断仪:超声信号的数字处理和图像生成
- 监护仪:生命体征的数字监测和显示
- 医疗成像设备:CT、MRI等设备中的数字电路
12.2 工程实践注意事项
12.2.1 电源设计
- 电源稳定性:使用稳压电源,确保电源电压稳定
- 电源滤波:在电源输入端和芯片电源引脚处添加滤波电容
- 电源完整性:确保电源和地的阻抗足够低,减少电源噪声
- 多电源设计:不同电压等级的电源要分开设计,避免串扰
12.2.2 接地设计
- 单点接地:低频电路采用单点接地,减少接地环路
- 多点接地:高频电路采用多点接地,减少接地阻抗
- 数字地与模拟地分离:避免数字电路的噪声影响模拟电路
- 接地平面:在PCB上使用接地平面,提高接地质量
12.2.3 信号完整性
- 传输线设计:高频信号采用传输线设计,控制特征阻抗
- 阻抗匹配:在信号源和负载端进行阻抗匹配,减少反射
- 信号串扰:保持信号线之间的距离,使用屏蔽线或差分信号
- 时钟设计:时钟信号单独布线,避免与其他信号交叉
12.2.4 电磁兼容(EMC)
- 电磁干扰(EMI):减少电路对外的电磁辐射
- 电磁敏感性(EMS):提高电路对外部电磁干扰的抵抗能力
- 屏蔽设计:对敏感电路进行屏蔽,减少电磁干扰
- 滤波设计:在输入输出端添加滤波器,滤除电磁干扰
12.2.5 PCB设计
- 布局设计:合理安排元器件位置,减少信号线长度
- 布线设计:遵循信号线的走向规则,减少电磁干扰
- 过孔设计:减少过孔的数量和阻抗,避免信号反射
- 散热设计:确保大功率元器件的散热良好
12.2.6 可靠性设计
- 冗余设计:关键电路采用冗余设计,提高系统可靠性
- 容错设计:设计容错机制,允许系统在部分故障时继续工作
- ESD保护:在输入输出端添加ESD保护电路,防止静电损坏
- 热设计:考虑温度对电路性能的影响,进行热设计
12.2.7 测试与验证
- 功能测试:验证电路的逻辑功能是否正确
- 时序测试:验证电路的时序性能是否满足要求
- 性能测试:验证电路的速度、功耗等性能指标
- 可靠性测试:进行温度循环、振动、冲击等可靠性测试
13. 常见问题解答与易错点分析
13.1 数制与编码常见问题
13.1.1 二进制小数转换精度问题
- 问题:某些十进制小数无法用有限位二进制小数精确表示
- 示例:(0.1)₁₀ = (0.0001100110011…)₂
- 解决方法:根据实际需要保留适当位数,常用4-8位二进制小数
13.1.2 十六进制字母大小写问题
- 问题:十六进制中的A-F与a-f混淆
- 解决方法:十六进制中字母大小写等价,但通常使用大写表示
13.1.3 补码运算溢出问题
- 问题:补码运算时可能产生溢出
- 解决方法:
- 检查最高位的进位和次高位的进位是否相同
- 使用更多位的补码表示
13.2 布尔代数与逻辑函数化简常见问题
13.2.1 公式化简错误
- 问题:误用布尔代数定律
- 示例:错误地认为A + B·C = (A + B)·C
- 解决方法:
- 熟练掌握布尔代数的基本定律
- 多次检查化简过程
- 使用卡诺图验证化简结果
13.2.2 卡诺图化简错误
- 问题:
- 分组大小不是2ⁿ
- 分组不包含所有1方格
- 没有选择最大的分组
- 没有考虑相邻的边界
- 解决方法:
- 严格遵循卡诺图化简规则
- 多次检查分组结果
- 使用不同的分组方式验证
13.3 逻辑门与组合逻辑电路常见问题
13.3.1 未使用的输入处理
- 问题:未使用的逻辑门输入悬空
- 解决方法:
- TTL门:未使用的输入应接高电平(通过电阻接VCC)或低电平
- CMOS门:未使用的输入应接高电平(VDD)或低电平(GND)
13.3.2 扇入扇出问题
- 问题:逻辑门的输入数量超过扇入限制,或输出驱动的门数量超过扇出限制
- 解决方法:
- 使用扩展器或多级门电路增加扇入
- 使用缓冲器或驱动器增加扇出
13.3.3 竞争冒险问题
- 问题:组合逻辑电路中存在竞争冒险,导致输出出现毛刺
- 解决方法:
- 增加冗余项
- 引入选通脉冲
- 使用滤波电容
- 采用格雷码编码
13.4 时序逻辑电路常见问题
13.4.1 触发器触发方式问题
- 问题:误将电平触发的触发器当作边沿触发使用
- 解决方法:仔细查看触发器的逻辑符号,注意CP输入端是否有小圆圈
13.4.2 异步清零与同步清零问题
- 问题:混淆异步清零和同步清零的区别
- 解决方法:
- 异步清零:不受时钟信号控制,清零信号有效时立即清零
- 同步清零:受时钟信号控制,清零信号有效时,在时钟脉冲作用下清零
13.4.3 时序电路中的竞争冒险问题
- 问题:时序电路中存在竞争冒险,导致状态错误
- 解决方法:
- 采用同步时序电路
- 在输出端增加滤波电容
- 采用格雷码编码
13.5 存储器与PLD常见问题
13.5.1 ROM与RAM的选择问题
- 问题:不确定何时使用ROM,何时使用RAM
- 解决方法:
- ROM:存储固定不变的数据和程序
- RAM:存储需要频繁读写的数据
13.5.2 PLD选型问题
- 问题:不知道选择哪种PLD(CPLD或FPGA)
- 解决方法:
- CPLD:适合中等复杂度、速度要求高的设计
- FPGA:适合大规模、高复杂度、灵活性要求高的设计
13.5.3 PLD编程问题
- 问题:PLD编程后功能不正确
- 解决方法:
- 检查设计输入是否正确
- 检查编译综合过程是否有错误
- 检查时序约束是否合理
- 进行功能仿真和时序仿真
13.6 数模与模数转换常见问题
13.6.1 采样定理应用问题
- 问题:采样频率不够,导致信号失真
- 解决方法:确保采样频率大于等于信号最高频率的2倍
13.6.2 转换器精度与分辨率问题
- 问题:混淆精度和分辨率的概念
- 解决方法:
- 分辨率:转换器能够分辨的最小模拟信号变化量
- 精度:转换结果与理论值的接近程度
13.6.3 参考电压问题
- 问题:参考电压不稳定,导致转换误差
- 解决方法:
- 使用高精度、高稳定性的参考电压源
- 对参考电压进行滤波和稳压
14. 总结与展望
14.1 数字电路发展趋势
- 集成度不断提高:Moore定律继续发挥作用,芯片集成度不断提高
- 速度不断提升:电路工作频率不断提高,数据传输速率不断提升
- 功耗不断降低:绿色电子成为趋势,低功耗设计技术不断发展
- 可编程逻辑器件的广泛应用:CPLD、FPGA等可编程器件在数字系统设计中的应用越来越广泛
- 数字与模拟混合电路(SoC):系统级芯片(SoC)集成了数字电路、模拟电路和微处理器
- 人工智能与数字电路结合:AI芯片、神经网络加速器等新兴数字电路不断涌现
- 量子计算:量子计算机的研究和发展为数字电路带来新的机遇和挑战
14.2 学习建议
- 掌握基本概念和定理:扎实掌握数字电路的基本概念、定理和分析设计方法
- 多做练习题:通过大量的练习题,熟练掌握逻辑函数化简、组合逻辑电路和时序逻辑电路的分析设计
- 重视实验和仿真:通过实验和仿真,提高动手能力和解决实际问题的能力
- 关注数字电路的新发展:关注数字电路领域的新技术、新器件和新应用
- 学习硬件描述语言:掌握VHDL或Verilog HDL,提高数字系统设计能力
- 参与项目实践:通过参与实际项目,积累工程实践经验
14.3 未来展望
数字电路作为现代电子技术的基础,将继续在各个领域发挥重要作用。随着人工智能、物联网、5G通信等新技术的发展,数字电路将面临新的挑战和机遇。未来的数字电路将更加集成化、高速化、低功耗化和智能化,为人类社会的发展做出更大的贡献。
附录
常用逻辑符号对照表
| 逻辑门 | 国标符号 | 美国符号 |
|---|---|---|
| 与门 | & | ∧ |
| 或门 | ≥1 | ∨ |
| 非门 | 1 | ¬ |
| 与非门 | ≥1 | NAND |
| 或非门 | ≥1 | NOR |
| 异或门 | =1 | XOR |
| 同或门 | = | XNOR |
常用集成电路引脚图
- 74LS00:四2输入与非门
- 74LS04:六反相器
- 74LS08:四2输入与门
- 74LS32:四2输入或门
- 74LS138:3-8线译码器
- 74LS151:8选1数据选择器
- 74LS161:4位同步二进制计数器
- 74LS194:4位双向移位寄存器
参考资料:
- 《数字电子技术基础》(阎石)
- 《数字电路》(康华光)
- 《Digital Design》(M. Morris Mano)
- 网络资源与在线课程
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐
所有评论(0)