普通高等教育“十一五”国家级规划教材
普通高等院校计算机类专业规划教材·精品系列
数字逻辑
(第三版)
朱 勇 主 编
王 君 姜志鹏 副主编
普通高等教育“十一五”国家级规划教材
普通高等院校计算机类专业规划教材·精品系列
数字逻辑
(第三版)
朱 勇 主 编
王 君 姜志鹏 副主编
内 容 简 介
本书根据普通高等学校计算机专业教学大纲精神,以及数字电路与逻辑设计课程的特点编
写而成,全面系统地阐述了数字电路与逻辑设计的基本理论、基本概念、基本方法以及现代逻
辑设计技术。全书共分 8 章:数制与编码、逻辑代数基础、组合逻辑、同步时序逻辑、脉冲产
生电路、数/模与模/数转换电路、编程逻辑及数字系统综合设计。本版增加了小视频和图片,
升级为立体教材。
本书的编者是长期从事高校数字逻辑课程教学的骨干教师,并有丰富的数字系统设计经验
与相关项目工程背景。书中不仅对经典逻辑理论作了详细地论述,同时也考虑到当今数字电路
与逻辑设计的发展趋势,介绍了当今先进的逻辑设计方法与技术,如 PLD(可编程逻辑器件)、
HDL(硬件描述语言)、SoC(片上系统)、EDA(电子设计自动化)技术等。
本书理论联系实际,适合作为高等学校计算机及其相关专业本科教材,也可作为相关专业
高职高专教材和工程科研人员的参考用书。
图书在版编目(CIP)数据
数字逻辑/朱勇主编. —3 版. —北京:中国铁
道出版社,2019.1
普通高等院校计算机类专业规划教材. 精品系列 普
通高等教育“十一五”国家级规划教材
ISBN 978-7-113-25303-5
Ⅰ. ①数… Ⅱ. ①朱… Ⅲ. ①数字逻辑-高等学校-
教材 Ⅳ. ①TP302.2
中国版本图书馆 CIP 数据核字(2018)第 295164 号
书 名:数字逻辑(第三版)
作 者:朱 勇 主编
策 划:周海燕 读者热线:(010)63550836
责任编辑:周海燕
封面设计:刘 颖
责任校对:张玉华
责任印制:郭向伟
出版发行:中国铁道出版社(100054,北京市西城区右安门西街 8 号)
网 址:http://www.tdpress.com/51eds/
印 刷:三河市航远印刷有限公司
版 次:2007 年 12 月第 1 版 2019 年 1 月第 3 版 2019 年 1 月第 1 次印刷
开 本:787mm×1092 mm 1/16 印张:18.25 字数:440 千
书 号:ISBN 978-7-113-25303-5
定 价:49.00 元
版权所有 侵权必究
凡购买铁道版图书,如有印制质量问题,请与本社教材图书营销部联系调换。电话:(010)63550836
打击盗版举报电话:(010)51873659
《数字逻辑》伴随着读者厚爱,走过了风风雨雨十年历程。本次改版(第三版)使该书升级
为多媒体立体化教材:全书多处增加了小视频和图片。读者只要扫描书中二维码就可以得到相关
概念、芯片、实验以及实例讲解,如同编者亲临。此外,将原 Altera 实践环节改编为 Modelsim 仿
真软件,使得读者可以通过仿真软件学习逻辑设计,以适应更多专业的学生;原 Altera 部分作为
附录,保持了版本的兼容性。
数字逻辑课程的主旨在于训练学生的逻辑思维能力,掌握运用形式化方法来描述客观世界,
为学习计算机硬件课程打下扎实基础。本书着眼于培养读者分析问题和解决问题的能力。对每一
个逻辑问题的讲述做到条理清晰、深入浅出,尽量避免就事论事,从而达到举一反三的效果。每
章均列举了相当数量的例题,以加深读者对基本概念的理解,掌握基本方法的运用。最终以 MIPS
CPU 综合逻辑描述与设计作为总结,期望能对学生能力有质的提高,同时为计算机系统设计打下
基础。
本教材除了全面详尽地论述经典数字逻辑外,还具有以下四个特色:
(1)可编程逻辑技术:介绍业界 PLD 领军企业 Xilinx 和 Altera(Intel 收购)的 CPLD、FPGA
硬件芯片,以及 HDL 逻辑设计语言。
(2)EDA 仿真:介绍业界最流行的仿真软件 Modelsim 及其仿真应用。
(3)CPU 设计实例:阐述学界经典 CPU MIPS 基本设计原理及其逻辑仿真。
(4)小视频:生动地讲解了相关概念、芯片、实验以及实例,增加读者的感性认识。
全书共分 8 章,主要包括数制与编码、逻辑代数基础、组合逻辑、同步时序逻辑、脉冲产生
电路、数/模与模/数转换电路、编程逻辑和数字系统综合设计。
全书由朱勇任主编,王君、姜志鹏任副主编。具体分工如下:朱勇编写数制与编码、编程逻
辑及数字系统综合设计部分,高晓清编写同步时序逻辑、脉冲产生电路和数/模与模/数转换电路
部分,曾西洋编写逻辑代数基础与组合逻辑部分,王君负责实验视频录制以及文档管理工作,
姜志鹏编写 Modelsim 仿真软件使用及其实例仿真。还要感谢吴官东、黄潇、孙爱珂、杨慧鑫提
供 CPU 逻辑仿真以及视频解说和图片处理工作。
对于教材中的不妥之处,敬请同仁和读者批评指正。
编 者
2018 年 10 月于金陵
PREFACE
第三版前言
随着 IC(集成电路)工艺和计算机硬件技术的飞速发展以及两者的相互渗透,数字逻辑设计
方法发生了很大的变化:元件规模从简单逻辑功能的分离器件到实现复合逻辑以及通用功能的中
大规模 IC,器件类型从通用逻辑器件到 ASIC(专用集成电路)以及 PLD 半用户定制电路,设计
模式也从传统的以基本具体的逻辑单元搭建数字电路的方式到采用硬件语言抽象描述数字系统
的 EDA 设计环境。因此《数字逻辑》教程必须顺应当前主流技术的发展,达到与时俱进。
数字逻辑教程的主旨在于训练学生的逻辑思维能力,掌握运用形式化方法描述客观世界的能
力,为学习计算机硬件课程打下扎实基础。本书着眼于培养读者分析问题和解决问题的能力。对
每一个逻辑问题的讲述做到条理清晰、深入浅出,尽量避免就事论事,从而达到举一反三的效果。
每章均列举了相当数量的例题,以加深基本概念的理解,掌握基本方法的运用。
本教材除了全面详尽地论述经典数字逻辑外,还增添了非常具有实用价值的三个特色部分:
(1)可编程逻辑。可编程逻辑器件及其设计方法是对逻辑设计的一个重要补充,而且发展
相当迅猛。纵观最新出版的数字逻辑教材,这部分的分量越来越重。笔者非常认同当前现状,结
合多年的可编程逻辑研究与设计经验,详细阐述了可编程原理、可编程器件和可编程设计方法。
避免了某些教科书只蜻蜓点水地介绍一些抽象的可编程原理,或罗列几个可编程器件的表面文章
做法。
(2)EDA 设计。在校学生学完课程后往往动不了手,极大地影响了学习兴趣,这也是为什
么同学们学习软件的兴趣高于硬件的原因之一。本书以国内最为流行的 Protel 设计环境为例,讲
述电路的整个设计流程,使得在学完数字逻辑基础知识后,就可以设计、制作数字电路 PCB 了。
(3)综合实例。最能体现实用性的内容就是本书最后给出的两个设计实例。它们贯穿了整
个数字逻辑设计的完整过程,不仅仅是理论上的,而且包括实践过程。可以说,如果读者完全掌
握这个过程,他就已经能够担任产品研发工程师了。同时,这两个实例也可以作为数字逻辑课程
的设计题目。
全书共分 9 章:数制与编码、逻辑代数基础、组合逻辑、同步时序逻辑、异步时序逻辑、脉
冲产生电路、数/模与模/数转换电路、编程逻辑和 EDA 设计。全书由朱勇教授主编,并编写数制
与编码、编程逻辑及 EDA 部分,高晓清编写同步时序逻辑、异步时序逻辑、脉冲产生电路和数/
模与模/数转换电路部分,曾西洋编写逻辑代数基础与组合逻辑部分。还要感谢王文斌、周 、湜
杨琳、陈笑春、计臣、周游、李泾、施静、夏玲为本教材的出版提供了帮助。
对于教材中的不妥之处,敬请同仁和读者批评指正。
编 者
2007 年 11 月
PREFACE
第一版前言
本书第一版被教育部评为普通高等教育“十一五”国家级规划教材。
随着 IC(集成电路)工艺和计算机硬件技术的飞速发展以及两者的相互渗透,数字逻辑设计
方法发生了很大的变化:元件规模从简单逻辑功能的分离器件到实现复合逻辑的中大规模 IC 以
及 SoC,器件类型从通用逻辑芯片到 ASIC 以及 PLD 半用户定制电路,设计模式也从传统的以基
本具体的逻辑单元搭建数字电路的方式到采用硬件语言抽象描述和软硬件协同设计的 EDA 设计
环境。因此,《数字逻辑》教程必须顺应当前主流技术的发展,与时俱进。
数字逻辑课程与教材在不同的学校有不同的名称,不同的专业有不同的侧重点。编者经历了
二十余年的一线教学,参与教材编写也已逾十年,深刻体会到这门课程的发展。与 IT 相关的专
业,如计算机、电子、通信、自动化等中,硬件系统都是一个重要内容。如何在有限的篇幅里,
让学生掌握数字系统逻辑设计的基础知识与主流技术,具有综合应用能力,是编者的责任所在。
本教材全面详尽地论述经典数字逻辑(组合逻辑和时序逻辑)和现代逻辑设计(编程逻辑),
具有以下三个特色:
(1)可编程逻辑。可编程逻辑器件及其设计方法是对经典逻辑设计的一个重要补充,而且
发展相当迅猛。笔者非常认同当前现状,结合多年的 SoC 研究与设计经验,以较大的篇幅详细阐
述了可编程原理、可编程器件和可编程设计方法。避免了某些教科书只蜻蜓点水地介绍一些抽象
的可编程原理,或罗列几个可编程器件的表面文章做法。
(2)HDL 设计语言与 EDA 环境。HDL 是当今 SoC 设计的主流技术。教材全面介绍了 VHDL
语言基础以及典型用法,并给出了在 Quartus 环境下的设计流程。VHDL 语法介绍条理清楚,应
用实例由浅入深,设计环境图文并茂。
(3)CPU 综合数字系统。“单周期 CPU 描述与设计”实例将数字逻辑和计算机微结构很好
地融合在一起。数字逻辑是微处理器的设计基础,后者又为前者提供了广阔的应用和设计空间。
可以说,如果读者完全掌握这个过程,就具有担任产品研发工程师的实力了。同时,这些实例也
可以作为数字逻辑课程的设计题目。
本教材共分 9 章:数制与编码、逻辑代数基础、组合逻辑、同步时序逻辑、异步时序逻辑、
脉冲产生电路、数/模与模/数转换电路、编程逻辑和数字系统综合设计。全书由朱勇教授主编,
由高晓清、曾西洋副教授任副主编。其中,朱勇教授编写数制与编码、编程逻辑及数字系统综合
设计部分,高晓清副教授编写同步时序逻辑、异步时序逻辑、脉冲产生电路和数/模与模/数转换
电路部分,曾西洋副教授编写逻辑代数基础与组合逻辑部分。汪玉蓉、王文斌、周 、周游、 湜
杨琳、陈笑春、李泾为本教材的出版提供了帮助,在此一并表示感谢。
本教材适合作为高校计算机、电子信息、自动化等相关专业教材,以及从事相关领域工程技
术人员的参考书。
对于教材中的不妥之处,敬请同仁和读者批评指正。
编 者
2013 年 7 月
第二版前言
PREFACE
第 1 章 数制与编码 ...................................1
1-1 数字逻辑概述.................................... 1
1-1-1 数字系统.............................. 1
1-1-2 片上系统 .............................. 3
1-2 数制及其转换 .................................... 5
1-2-1 十进制 .................................. 5
1-2-2 二进制 .................................. 6
1-2-3 八进制 .................................. 6
1-2-4 十六进制 .............................. 6
1-2-5 数制转换 .............................. 7
1-3 带符号二进制数的代码表示 ........... 12
1-3-1 机器码与真值..................... 12
1-3-2 原码.................................... 12
1-3-3 反码.................................... 13
1-3-4 补码.................................... 14
1-3-5 数码运算 ............................ 15
1-4 编码 ................................................. 17
1-4-1 BCD 码................................ 17
1-4-2 格雷码 ................................ 18
1-4-3 奇偶检验码 ........................ 20
1-4-4 CRC 码................................ 20
1-4-5 ASCII 码 ............................. 21
小结 ........................................................... 22
习题 ........................................................... 22
第 2 章 逻辑代数基础..............................23
2-1 逻辑代数的基本定理和规则 ........... 23
2-1-1 逻辑代数公理..................... 23
2-1-2 逻辑代数定理..................... 23
2-1-3 逻辑代数规则..................... 25
2-2 逻辑函数的表示方法....................... 27
2-2-1 逻辑表达式 ........................ 27
2-2-2 真值表 ................................ 27
2-2-3 逻辑图 ................................ 28
2-3 逻辑函数表达形式与变换............... 28
2-3-1 积之和 ................................29
2-3-2 和之积 ................................29
2-3-3 最小项标准形式.................29
2-3-4 最大项标准形式.................31
2-4 逻辑函数的化简 ..............................34
2-4-1 与或式的化简.....................34
2-4-2 或与式的化简.....................36
2-5 卡诺图..............................................37
2-5-1 卡诺图构成 ........................37
2-5-2 典型卡诺圈 ........................39
2-5-3 卡诺图化简 ........................42
2-5-4 无关项的卡诺图表示 .........45
小结 ...........................................................46
习题 ...........................................................47
第 3 章 组合逻辑 ....................................49
3-1 门电路..............................................49
3-1-1 二极管、三极管门电路 .....49
3-1-2 TTL 门电路......................... 53
3-1-3 CMOS 门电路...................... 57
3-2 组合逻辑分析 ..................................59
3-2-1 分析步骤 ............................59
3-2-2 分析实例 ............................60
3-3 组合逻辑设计 ..................................62
3-3-1 设计步骤 ............................62
3-3-2 问题的描述 ........................62
3-3-3 设计实例 ............................65
3-3-4 不完全项设计.....................68
3-4 组合逻辑电路的险象.......................70
3-4-1 险象的产生 ........................70
3-4-2 险象的判断 ........................71
3-4-3 险象的解决 ........................72
3-5 常用的中规模组合逻辑构件的
使用 .................................................73
3-5-1 译码器 ................................74
目 录
CONTENTS hhh
2 数字逻辑(第三版)
3-5-2 编码器 ................................ 81
3-5-3 多路选择器 ........................ 83
3-5-4 比较器 ................................ 88
3-5-5 加法器 ................................ 90
3-5-6 ALU .................................... 93
小结 ........................................................... 98
习题 ........................................................... 99
第 4 章 同步时序逻辑............................102
4-1 时序逻辑结构模型 ........................ 102
4-1-1 结构模型 .......................... 102
4-1-2 时序电路的分类............... 104
4-2 触发器............................................ 104
4-2-1 RS 触发器......................... 104
4-2-2 D 触发器........................... 107
4-2-3 JK 触发器 ......................... 109
4-2-4 T 触发器 ........................... 113
4-2-5 不同类型时钟触发器间的
转换 ................................. 113
4-2-6 集成触发器的参数........... 118
4-3 同步时序逻辑分析 ........................ 119
4-3-1 特性函数 .......................... 119
4-3-2 激励表 .............................. 119
4-3-3 状态图、状态表............... 119
4-3-4 波形图 .............................. 121
4-3-5 分析实例 .......................... 121
4-4 同步时序逻辑设计 ........................ 126
4-4-1 原始状态图和状态表 ....... 127
4-4-2 状态表化简 ...................... 131
4-4-3 状态分配 .......................... 137
4-4-4 设计实例 .......................... 141
4-5 常用的中规模同步时序逻辑
构件的使用.................................... 145
4-5-1 寄存器 .............................. 145
4-5-2 计数器 .............................. 148
小结 ......................................................... 157
习题 ......................................................... 158
第 5 章 脉冲产生电路............................161
5-1 多谐振荡器 .................................... 161
5-1-1 TTL 环形振荡器 ............... 161
5-1-2 MOS 多谐振荡器 .............. 163
5-2 单稳态触发器 ................................ 164
5-3 施密特触发器 ................................ 166
5-4 555 定时器及其应用...................... 168
5-4-1 555 定时器 ....................... 168
5-4-2 单稳态触发器................... 169
5-4-3 多谐振荡器 ...................... 170
5-4-4 施密特振荡器................... 171
小结 ......................................................... 172
习题 ......................................................... 172
第 6 章 数/模与模/数转换电路 ...............174
6-1 数/模转换电路 ............................... 174
6-1-1 权电阻网络 DAC .............. 174
6-1-2 倒 T 形电阻网络 DAC ...... 175
6-1-3 DAC 的主要技术指标 ...... 176
6-1-4 集成 DAC 举例 ................. 177
6-1-5 DAC 转换器应用举例 ...... 179
6-2 模/数转换电路 ............................... 181
6-2-1 逐次比较型 ADC .............. 184
6-2-2 双积分型 ADC .................. 187
6-2-3 ADC 的主要技术指标 ...... 189
6-2-4 集成 ADC 举例 ................. 189
6-2-5 ADC 应用举例 .................. 191
小结 ......................................................... 193
习题 ......................................................... 193
第 7 章 编程逻辑 ..................................195
7-1 阵列示意图 .................................... 195
7-1-1 ROM.................................. 195
7-1-2 阵列示意图概述............... 196
7-2 CPLD .............................................. 198
7-2-1 PLA................................... 198
7-2-2 PAL................................... 199
7-2-3 GAL................................... 200
7-2-4 CPLD 简介 ........................ 201
7-2-5 CPLD 编程原理 ................ 203
7-3 FPGA .............................................. 204
7-3-1 FPGA 编程原理 ................ 204
目 录 3
7-3-2 Altera FPGA 典型结构...... 205
7-3-3 Xilinx FPGA 典型结构...... 209
7-4 VHDL ............................................. 212
7-4-1 VHDL 概述 ....................... 212
7-4-2 VHDL 基本结构 ............... 213
7-4-3 VHDL 数据类型与
表达式.............................. 214
7-4-4 VHDL 基本语句 ............... 219
7-4-5 ModelSim 仿真.................. 225
7-4-6 组合逻辑设计实例........... 231
7-4-7 时序逻辑设计实例........... 238
小结 ......................................................... 245
习题 ......................................................... 246
第 8 章 数字系统综合设计.....................247
8-1 设计流程........................................ 247
8-2 七段 LED 显示 ............................... 248
8-2-1 LED 显示原理 .................. 248
8-2-2 电路设计 .......................... 249
8-2-3 VHDL 设计 ....................... 250
8-3 交通灯控制 .................................... 252
8-3-1 系统需求 .......................... 252
8-3-2 状态分析 .......................... 253
8-3-3 系统设计 .......................... 253
8-3-4 模块 VHDL 描述 .............. 253
8-3-5 仿真与运行结果............... 258
8-4 ADC 0804 数据采集 ....................... 258
8-4-1 ADC 0804 时序 ................. 258
8-4-2 原理图 .............................. 259
8-4-3 VHDL 设计 ....................... 259
8-5 单周期 CPU 描述 ........................... 261
8-5-1 MIPS 处理器概述 ............. 261
8-5-2 指令描述 .......................... 262
8-5-3 微结构 .............................. 263
8-6 单周期 CPU 设计 ........................... 265
8-6-1 指令执行步骤................... 265
8-6-2 取指令(IF)逻辑设计.... 265
8-6-3 指令译码(ID)
逻辑设计.......................... 266
8-6-4 指令执行(EXE)
逻辑设计.......................... 270
8-6-5 存储器访问(MEM)
逻辑设计.......................... 270
8-6-6 结果写回(WB)
逻辑设计.......................... 270
8-6-7 系统逻辑设计及仿真 ....... 271
小结 ......................................................... 273
习题 ......................................................... 274
附录 A 逻辑符号对照表.........................275
附录 B Quartus II 开发环境...................278
参考文献.................................................282
数字系统包含两种类型的运算,即逻辑运算和算术运算。不论哪种运算都与数的关系十
分密切,因此了解数的表示形式和基本特征是大有必要的。计算机是数字系统中最常见、最
有代表性的设备,因此必须了解数在计算机系统中的表示方法和特征。
数字系统所处理的信息都是离散元素,这些离散元素可以有不同的表示形式,如十进制
数字、字母、标点符号等。现实生活中人类通常采用十进位计数制来表示数,但计算机不能
直接接受十进制。因此需要选择一种进位计数制来确定小数点及数的正、负符号在计算机中
的表示,同时人-机通信也需要进行数制转换。
本章重点介绍数字系统中数据的表示形式——数制与编码。
1-1 数字逻辑概述
1-1-1 数字系统
客观世界存在着各种物理信号,按其变化规律可以分为两种类型:一种是连续信号,另一种
是离散信号。
所谓连续信号是指在时间上和数值上均作连续变化的物理信号,例如温度、压力等。在工程
应用中为了便于处理和传输,通常用某一种连续信号去模拟另一种连续信号,例如用电压的变化
代替温度的变化等。因此,连续信号又称模拟信号,简称模拟量。直接对模拟量进行处理的电子
线路称为模拟电路。
所谓离散信号是指信号的变化在时间上和数值上都是离散的,或者说是不连续的。例如,学
生成绩记录、产品统计、电路开关的状态等。离散信号的变化可以用不同的数字表示,所以又称
数字信号,简称数字量。直接对数字量进行处理的电子线路称为数字电路,由于数字电路的各种
功能是通过逻辑运算和逻辑判断来实现的,所以又称数字逻辑电路或者逻辑电路。
通常以正弦波为例来说明模拟信号和数字信号。正弦波既能用连续方式表示也能用离散方式
表示,图 1-1 是其两种表示方式。
(a)模拟表示 (b)离散表示
图 1-1 正弦波的模拟表示和离散表示
图 1-1(b)中的离散信号可以表示为如表 1-1 所示的数字值。
数字系统已经成为日常生活中重要的组成部分。在人们周围可以发现无数个数字硬件的例子,
如自动播音器、CD 播放机、电话系统、PC 以及视频游戏机等,这样的例子举不胜举。
简单地说,数字系统是一个能对数字信号进行加工、传输和存储的实体,它由实现各种功能
第 章 1 数制与编码
u
O π 2π
u
O π 2π
2 数字逻辑(第三版)
的数字逻辑电路相互连接而成。数字系统是仅仅用数字来“处理”信息以实现计算和操作的电子
网络。但是,数字系统中所用的数字是来自于特别的数制系统,该数制系统只有两个值:0 和 1。
此特征定义了二进制系统中数字的本身(0 和 1),称为比特(bit),简称“二进制数字”。虽然这
似乎十分简单,但是由于只使用 0 和 1 来完成所有的计算和操作,所有数字系统的设计实际上
是相当复杂的。
表 1-1 正弦波的离散数字值(X 坐标单位为度)
X Y X Y X Y X Y
0 0 90 1 180 0 270 −1
18 0.31 108 0.95 198 −0.31 288 −0.95
36 0.59 126 0.81 216 −0.59 306 −0.81
54 0.81 144 0.59 234 −0.81 324 −0.59
72 0.95 162 0.31 252 −0.95 342 −0.31
数字系统必须完成如下任务:
① 将现实世界的信息转换成数字系统可以理解的二进制“语言”。
② 仅用数字 0 和 1 完成所要求的计算和操作。
③ 将处理的结果以用户可以理解的方式返回给现实世界。
数字系统模型如图 1-2 所示。
图 1-2 数字系统模型
整个系统划分为控制电路和受控电路两大部分。
① 控制电路是数字系统模型的核心部分,由记录当前逻辑状态的时序电路和进行逻辑运算
的组合电路组成。它可根据控制器的外部输入信号,由受控电路送回的反馈信号以及控制电路内
部的当前状态来控制逻辑运算的进程,向受控电路和系统外部发出各种控制信号。
② 受控电路(数据处理器)由一些组合电路和时序电路组成。它可根据控制电路发出的控
制信号对输入的数据信号进行处理并输出,同时,还将反映受控器自身状态并将控制要求的信号
反馈给控制器。控制器是数字系统的核心,根据其内部功能可以建立图 1-3 所示的控制器模型。
控制器的模型可清楚地表明控制器内部电路的类型及连接关系,它是逻辑电路设计的基本依
据。控制器逻辑电路设计的主要任务包括:状态寄存器的选择、状态值分配、次态译码电路设计
和输出译码电路设计。
输入信号 输
入 控制电路
控制信号
反馈信号 受控电路 输
出
输出信号
公共电路
第 1 章 数制与编码 3
图 1-3 控制器模型
1-1-2 片上系统
20 世纪 90 年代末期,芯片制造工艺更加先进,集成度越来越高,不同用途的数字功能单元
和处理器核心可以集成在一块芯片中实现,使得整个系统进入片上系统(System on Chip,SoC)
发展时代。目前,SoC 也是嵌入式系统设计与实现的一个重要技术手段。
SoC 是以 IP 核复用为基础,以软硬件协同设计为主要设计方法的芯片设计
技术。其关键是利用经过验证的 IP,并成功地把 IP 集成到 SoC 系统中。
1.IP 核设计与复用
IP 核有软核和硬核两种类型。前者以可综合的硬件描述语言(HDL)代码
的形式交付;后者则用制定的工艺进行了功耗、面积或者性能的优化,以 GDSII
格式交付。成功地开发 SoC IP 核结构,需要做到:
(1)硬化:优化配置并使软 IP 硬化
IP 硬化过程就是在标准规定的速度、功率和范围内以目标工艺实现 IP。该实现必须能够提供
准确的建模、自动化方法、工艺易于移植,以及具有基于业界标准的电子设计自动化(EDA)工
具。硬化过程首先需要 IP 供应商提供高质量 RTL(寄存器传输级)描述,并且提供一套完整的
GDSII 设计实现方案。
(2)建模:高度精确地为硬化的软 IP 自动建模
典型的 SoC 设计流程包括:
① 功能模型必须代表系统仿真中的 IP 核周期特征,并且能够在门级仿真中支持精确到比特
的 RTL 仿真和时序注释。此外,还应消除仿真器特殊结构和接口,在仿真环境中便于移植。
② 时序模型具备所有的时序特点。IEEE 的 IP 核测试语言(CTL),定义了嵌入式 IP 核和 SoC
的测试接口,为 SoC 互联和逻辑提供了可测试性。
③ 物理模型是 IP 核具体物理实现的抽象,必须准确表述:元件占用面积、接口引脚/端口数
量、线路障碍、电源和接地。
④ 功率模型描述了 IP 核功耗,必须忠实反映静态和动态功耗、I/O 端口和内部节点的开关状
态、I/O 端口和内部节点的状态、运行方式、电压和温度等条件以及电容负载和输入瞬变时间。
(3)集成:将模型综合到 SoC 设计流程中
选择 IP 核时首要考虑的因素是 IP 与目标系统的配合程度。为了使开发的 IP 核能够高效地集
成到新的设计中去,设计复用和标准化是必由之路。IP 集成必须解决的重要问题有:在系统结构
设计和模块划分时,选择合适的片上总线结构和 IP 库;模块间的接口协议要尽可能简单,接口定
义尽可能与国际上通用的接口协议一致;慎重考虑时钟分布以及电源、地线的走线,针对关键路
现态信号
反馈信号
输入信号
次态
译码
电路
状态
寄存器
控制
信号
译码
电路
送至
控制器的
控制信号
送至
系统外的
控制信号
SoC
4 数字逻辑(第三版)
径的优化要投入较大精力;注重积累集成的经验。对于成功地集成的 IP,应该进一步完善,同时
记录下来形成技术文档。
(4)验证:IP 核是否符合设计者的想法
IP 核验证技术包括:
① 目的性验证:目的是验证设计者所预想的功能是否在设计中得到正确实现。通常,它在
最高抽象层次上完成。其最终结果是建立一个所谓的“黄金模型”,该模型可以作为整个设计过程
中各种更加详细的设计视图的参考基准。
② 等效性验证:目的是验证在设计过程中生成的不同层次的设计功能是否与“黄金模型”
功能相一致。
③ IP 验证:指对单个 IP 的功能进行验证的过程,即单元测试。
④ 集成验证:指对包含一个或多个 IP 的 SoC 进行功能验证的过程,即 SoC 的系统级验证。
其重点放在 IP 的连接和相互作用上,验证所用模型应能精确地仿效 IP 接口。
可供复用的 IP 核既要有其功能描述文件用以说明核的功能时序要求等,还要有设计实现和验
证两个方面的文件,即还应包含实现 IP 核的 RTL 源代码或网表文件,以及用于 IP 核实现后逻辑
验证的仿真模型和测试向量。其设计流程主要包括设计规约与划分、子模块的规范与设计、测试台
开发、时序检测和集成等步骤。在选择 IP 核时要考虑多方面的因素,如与目标系统的配合程度、
成本以及上市的紧迫性、与其他模块的兼容性、系统功能、IP 核的质量及其支持性(标准的遵从
程度、未来发展的蓝图、易用性获取 IP 授权效率、合作厂商的可依赖程度)集成的难度等。
2.软硬件协同设计
软/硬件协同设计不仅是一种设计技术,同时也是一种新的设计方法学,其核心问题是在设计
过程中协调软件子系统和硬件子系统。与传统的嵌入式系统设计方法不同,软/硬件协同设计强调
软件和硬件设计开发的并行性和相互反馈,克服了传统方法中把软件和硬件分开设计所带来的种
种弊端,协调软件和硬件之间的制约关系,达到系统高效工作的目的。它提高了设计抽象的层次,
拓展了设计覆盖的范围;与此同时还强调利用现有资源,即重用构件和 IP 核,缩短系统开发周
期,降低系统成本,提高系统性能,保证系统开发质量。嵌入式系统软/硬件协同设计方法学主要
包括:系统建模、软/硬件协同综合、协同仿真、协同验证、设计功能和性能指标评价技术、SoC 测
试调度技术等方面,并且还分为不同的设计层次。
(1)协同综合技术
嵌入式系统是软件/硬件一体化的系统,其中功能既可以由硬件来完成,也可以由软件来实现。
硬件速度快,而软件成本低,这就需要权衡系统的时间、成本等性能指标之间的关系。决定系统
各个模块由硬件完成或是软件实现是一项非常重要的工作,这个划分系统软/硬件的过程被称为协
同综合或者协同划分。
(2)协同验证技术
在系统设计的各个阶段根据系统性能指标要求对设计方案综合评价,以验证系统的合理性和
可行性。协同验证的研究主要有两个方向,即仿真验证和形式化验证。仿真验证方法是用硬件描
述语言 HDL 完成硬件子系统的描述,完成系统软硬件的联合调试,纠正其中的设计错误;形式化
验证方法是建立被验证系统的数学模型,然后用数学方法证明被验证系统的正确性以及各种性能
指标是否满足要求。
(3)性能指标评价技术
嵌入式系统是以应用为中心、对系统功能和性能指标(成本、面积、功耗、实时性)都有严
第 1 章 数制与编码 5
格要求的专用计算机系统。标准评价各性能指标是保证嵌入式系统需求的必要条件。
(4)测试调度问题
随着设计复杂度的增加,SoC 上重用的 IP 数量越来越多,为了缩短芯片测试的时间,需要
尽可能并行地测试芯片上的 IP 核。将 IP 核输入/输出端动态分配到同一测试总线上,允许它们同
时进行测试,即在设计中进行测试调度。
SoC 是将若干处理器单元和外设集成在一起的一个系统组成,可以为应用提供高集成度的芯
片解决方案。因此,将系统调度与控制、数字信号处理等功能集成在一块芯片中实现是信息技术
发展的必然趋势。
1-2 数制及其转换
人们常用一组符号并根据一定的规则来表示数值的大小,这些符号和规则构成了不同的进位
计数制,简称数制。
数制在日常生活中到处可见,例如普遍使用的十进制以及用于计时的六十进制和十二进制等。
根据冯·诺依曼的“存储程序”思想,人们在电子计算机中引入了二进制,为了便于二进制的书
写和记忆,人们又引入了八进制和十六进制。
广义地说,一种进位计数制包含基数和位权两个基本因素。
基数是指计数制中所用到的数字符号的个数。在基数为 r 的计数制中,包含 0,1,…,r−1,
共 r 个数字符号,进位规律是“逢 r 进一”,称为 r 进位计数制,简称 r 进制。
位权是指在一种进位计数制表示的数中,用来表明不同数位上数值大小的一个固定常数。不
同数位有不同的位权,某一个数位的数值等于这一位的数字符号乘以与该位对应的位权。r 进制
的位权是 r 的整数次幂。例如,十进制数的位权是 10 的整数次幂,其个位的位权是 100
,十位的
位权是 101
,……
一般来说,对任意的 r 进制而言,数 N 的表示方法有以下两种:
(1)位置计数法
() . r nn m ( 1 2 10 1 2 )r N a a aa a a a = ⋅⋅⋅ − − −− − " (1-1)
(2)多项式表示法,又称按权展开式
1 10 1 2
1 10 1 2
1
( ) n m r n m
n i i
i m
N a r ar ar a r a r a r
a r
− −− − − −− −
−
=−
= ⋅ ++⋅+ ⋅ + ⋅ + ⋅ ++ ⋅
= ⋅ ∑
" "
(1-2)
式(1-1)、式(1-2)中,n 为整数部分的位数,m 为小数部分的位数,ai 为数字符号(0≤ai≤r−1),
r 为进位计数制基数,r
i
为 ai 位上的权值。
1-2-1 十进制
基数 r =10 的进位计数制称为十进制。十进制数使用的数字符号有 10 个,即 0,1,2,3,4,
5,6,7,8,9,进位规律是“逢十进一”。十进制数的位权是 10 的整数次幂。
任意十进制数 D 可以表示为
10 1 1 0 1 2 ( )10
1 10 1 2
1 10 1 2
1
() .
10 10 10 10 10 10
10
n m
n m n m
n i
i
i m
D D DD D D D
D DD D D D
D
− −− −
− −− − − −− −
−
=−
=
= ⋅ ++ ⋅ + ⋅ + ⋅ + ⋅ ++ ⋅
= ⋅ ∑
" "
" "
(1-3)
6 数字逻辑(第三版)
式(1-3)中,n 为整数部分的位数,m 为小数部分的位数,Di 为数字符号(0≤Di≤9),10 为进
位计数制基数,10i
为 Di 位上的权值。
【例 1-1】十进制数 2004.98 可以表示为
3210 1 2 (2004.98) 2 10 0 10 0 10 4 10 9 10 8 10 10 − − =× +× +× +× +× +×
1-2-2 二进制
基数 r =2 的进位计数制称为二进制。二进制数只有 0 和 1 两个数字符号,进位规律是“逢二
进一”。二进制数的位权是 2 的整数次幂。任意二进制数 B 可以表示为
2 1 10 1 2 ( )2
1 10 1 2
1 10 1 2
1
() .
2 22 2 2 2
2
n m
n m n m
n i
i
i m
B B BB B B B
B BB B B B
B
− −− −
− −− − − −− −
−
=−
=
= ⋅ ++⋅+ ⋅ + ⋅ + ⋅ ++ ⋅
= ⋅ ∑
" "
" "
(1-4)
式(1-4)中,n 为整数部分的位数,m 为小数部分的位数,Bi 为数字符号(Bi=0,1),2 为进位
计数制基数,2i
为 Bi 位上的权值。
【例 1-2】二进制数 11010.11 可以表示为
43 21 0 1 2 (11010.11) 1 2 1 2 0 2 1 2 0 2 1 2 1 2 2 − − =× +× + × +× + × +× +×
二进制数的运算十分简单,其运算规则如下所示。
加法规则:0+0=0 0+1=1 1+0=1 1+1=0(进位为 1)
减法规则:0−0=0 0−1=1(借位为 1) 1−0=1 1−1=0
乘法规则:0×0=0 0×1=0 1×0=0 1×1=1
除法规则:0÷1=0 1÷1=1
1-2-3 八进制
基数 r =8 的进位计数制称为八进制。八进制数使用的数字符号有 8 个,即 0,1,2,3,4,5,
6,7,进位规律是“逢八进一”。八进制数的位权是 8 的整数次幂。任意八进制数 C 可以表示为
8 1 10 1 2 ( )8
1 10 1 2
1 10 1 2
1
() .
8 88 8 8 8
8
n m
n m n m
n i
i
i m
C C CC C C C
C CC C C C
C
− −− −
− −− − − −− −
−
=−
=
= ⋅ ++ ⋅+ ⋅+ ⋅ + ⋅ ++ ⋅
= ⋅ ∑
" "
" "
(1-5)
式(1-5)中,n 为整数部分的位数,m 为小数部分的位数,Ci 为数字符号(0≤Ci≤7),8 为进位
计数制基数,8i
为 Ci 位上的权值。
【例 1-3】八进制数 204.53 可以表示为
210 1 2 (204.53) 2 8 0 8 4 8 5 8 3 8 8 − − =× +× +× +× +×
1-2-4 十六进制
基数 r =16 的进位计数制称为十六进制。十六进制数使用的数字符号有 16 个,即 0,1,2,3,
4,5,6,7,8,9,A,B,C,D,E,F,进位规律是“逢十六进一”。十六进制数的位权是 16
第 1 章 数制与编码 7
的整数次幂。任意十六进制数 H 可以表示为
16 1 1 0 1 2 ( )16
1 10 1 2
1 10 1 2
1
() .
16 16 16 16 16 16
16
n m
n m n m
n i
i
i m
H H HH H H H
H HH H H H
H
− −− −
− −− − − −− −
−
=−
=
= ⋅ ++ ⋅ + ⋅ + ⋅ + ⋅ ++ ⋅
= ⋅ ∑
" "
" "
(1-6)
式(1-6)中,n 为整数部分的位数,m 为小数部分的位数,Hi 为数字符号(Hi=0~9,A~F),16
为进位计数制基数,16i
为 Hi 位上的权值。
【例 1-4】十六进制数 2EB5.C9 可以表示为
3 2 10 1 2 (2EB5.C9) 2 16 14 16 11 16 5 16 12 16 9 16 16 − − =× + × + × +× + × +×
表 1-2 列出了与十进制数 0~15 对应的二进制、八进制、十六进制数。
表 1-2 十进制数与二、八、十六进制数对照表
十 进 制 数 二 进 制 数 八 进 制 数 十六进制数
0 0000 00 0
1 0001 01 1
2 0010 02 2
3 0011 03 3
4 0100 04 4
5 0101 05 5
6 0110 06 6
7 0111 07 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
1-2-5 数制转换
1.二、八、十六进制数转换为十进制数
二进制、八进制、十六进制数转换成十进制数非常简单,只须采用多项式替
代法,即将 2n
(n =1,3,4)进制数写成按权展开式,再按十进制运算规则求和,
即可得到与 2n 进制数等同的十进制数。
【例 1-5】将二进制数 11010.11 转换成十进制数。
解: ( ) 43 21 0 1 2
2 10 (11010.11) 1 2 1 2 0 2 1 2 0 2 1 2 1 2 26.75 − − =× +× + × +× + × +× +× =
【例 1-6】将八进制数 204.5 转换成十进制数。
进制转换
8 数字逻辑(第三版)
解: ( ) 210 1
8 10 (204.5) 2 8 0 8 4 8 5 8 132.625 − =× +× +× +× =
【例 1-7】将十六进制数 EB5.C 转换成十进制数。
解: ( ) 2 10 1
16 10 (EB5.C) 14 16 11 16 5 16 12 16 3765.75 − = × + × +× + × =
注意:十六进制数转换成十进制数时,应将其字母 A~F 转换成相应的十进制数。
2.十进制数转换为二、八、十六进制数
十进制数转换成 2n
(n =1,3,4)进制数时,需将待转换的数分成整数部分和小数部分,分
别按基数除法和基数乘法进行转换。
(1)整数转换
十进制整数部分采用基数除法,即“除 2n 取余”进行转换。把十进制整数 N 除以 2n
,取余数
计为 K0,作为相应 2n 进制数的最低位,把得到的商再除以 2n
,再取余数计为 K1,作为 2n 进制数
的次低位,……,依此类推,直至商为 0,取余数计为 Km-1,作为 2n 进制数的最高位。这样可得
到与十进制整数 N 对应的 m 位 2n 进制整数 Km-1…K1K0。
【例 1-8】将十进制数 45 转换为二进制数。
余数
2 45 … 1 (K0) 低位
2 22 … 0 (K1)
2 11 … 1 (K2)
2 5 … 1 (K3)
2 2 … 0 (K4)
2 1 … 1 (K5) 高位
0
即(45)10 = (101101)2
【例 1-9】将十进制数 380 转换成八进制数和十六进制数。
余数
8 380 … 4 (K0) 低位
8 47 … 7 (K1)
8 5 … 5 (K2) 高位
0
余数
16 380 … 12(C) (K0) 低位
16 23 … 7 (K1)
16 1 … 1 (K2) 高位
0
解:
解:
即(380)10 = (574)8
第 1 章 数制与编码 9
即(380)10 = (17C)16
注意:十进制数转换成十六进制数时,应将整数部分 10~15 转换成相应的字母 A~F。
(2)小数转换
十进制小数部分采用基数乘法,即“乘 2n 取整”进行转换。把十进制小数乘 2n
,取其整数部
分记为 K−1,作为 2n 进制小数的最高位,然后将所得的乘积的小数部分乘 2n
,并再取整数部分记
为 K-2,作为 2n 进制小数的次高位,……,依此类推,直至小数部分为 0 或达到所要求的精度为
止,取整数部分记为 K−m。这样可得到与 N 对应的 m 位 2n 进制小数 0.K-1 K-2…K-m。
【例 1-10】将十进制数 0.3125 分别转换成二进制、八进制和十六进制小数。
整数部分 ×
0.3125
2
高位 (K-1) 0 …
×
(0).6250
2
(K-2) 1 …
×
(1).2500
2
(K-3) 0 …
×
(0).5000
2
低位 (K-4) 1 … (1).0000
整数部分 ×
0.3125
8
高位 (K-1) 2 …
×
(2).5000
8
低位 (K-2) 4 … (4).0000
整数部分 ×
0.3125
16
(K-1) 5 … (5).0000
即(0.3125)10 = (0.5)16
注意:所得乘积中的整数不再参加连乘。
值得注意的是,不是每个十进制小数都能用有限位 2n 进制小数精确表示。这时,只能根据
精度要求,求出相应的 2n 进制位数近似地表示即可。一般地,当要求 2n 进制取 m 位小数时,
可求出 m+1 位,然后对最低位作舍入处理(二进制 0 舍 1 入,八进制 3 舍 4 入,十六进制 7 舍
8 入)。
【例 1-11】将十进制数 0.6 分别转换成二、八、十六进制数(保留 4 位小数)。
解:
即(0.3125)10 = (0.0101)2
即(0.3125)10 = (0.24)8
10 数字逻辑(第三版)
整数部分 ×
0.6
2
(K-1) 1 …
×
(1).2
2
(K-2) 0 …
×
(0).4
2
(K-3) 0 …
×
(0).8
2
(K-4) 1 …
×
(1).6
2
(K-5) 1 … (1).2
转换成二进制数时,第 5 位为 1 则入,若为 0 则舍,所以精确到小数点后 4 位的结果为(0.6)10
= (0.1010)2。
整数部分 ×
0.6
8
(K-1) 4 …
×
(4).8
8
(K-2) 6 …
×
(6).4
8
(K-3) 3 …
×
(3).2
8
(K-4) 1 …
×
(1).6
8
(K-5) 4 … (4).8
转换成八进制数时,第 5 位大于等于 4 则入,若小于等于 3 则舍,所以精确到小数点后 4 位
的结果为(0.6)10 = (0.4632)8。
整数部分 ×
0.6
16
(K-1) 9 …
×
(9).6
16
(K-2) 9 …
×
(9).6
16
(K-3) 9 …
×
(9).6
16
(K-4) 9 …
×
(9).6
16
(K-5) 9 … (9).6
解:
第 1 章 数制与编码 11
转换成十六进制数时,第 5 位大于等于 8 则入,若小于等于 7 则舍,所以精确到小数点后 4
位的结果为(0.6)10 = (0.999A)16。
此外,当一个十进制数既有整数部分,又有小数部分时,则转换时分别进行转换,再将转换
的结果合并。
【例 1-12】将十进制数 45.3125 转换成二进制数。
解:(45.3125)10 = (45)10+(0.3125)10
= (101101)2+(0.0101)2
= (101101. 0101)2
3.二进制、八进制、十六进制数间的转换
二进制数、八进制数和十六进制数的基数都是 2n
(n =1,3,4),1 位 2n 进制数所能表示的数
值恰好等于 n 位二进制数所能表示的数值,即八(23
)进制中的基本数字符号 0~7 正好和 3 位二进
制数的 8 种取值 000~111 对应,十六(24
)进制中的基本数字符号 0~9,A~F 正好和 4 位二进制
数的 16 种取值 0000~1111 对应。所以二进制数与 2n
(n =3,4)进制数之间的转换可以按位进行。
(1)二进制数转换成八、十六进制数
将二进制数转换成 2n
(n =3,4)进制数的具体方法是以小数点为界,分别向左、右按 n 位进
行分组,最后不满 n 位的则补 0,将每组以对应的 2n 进制数代替,即为等值的 2n 进制数,这也称
为 n 分法。
【例 1-13】将二进制数 10110001101011.1111001 分别转换成八进制和十六进制数。
解:
二进制 (0)10 110 001 101 011 . 111 100 1(00)
八进制 2 6 1 5 3 . 7 4 4
即 (10110001101011.1111001)2 = (26153.744)8
二进制 (00)10 1100 0110 1011 . 1111 001(0)
十六进制 2 C 6 B . F 2
即 (10110001101011.1111001)2 = (2C6B.F2)16
知道上述方法后,将十进制数转换为十六、八进制数时也可分步进行。先将十进制数转换成
二进制数,再将二进制数转换成八进制数或十六进制数。
(2)八进制、十六进制数转换成二进制数
将八进制、十六进制数转换为二进制数为上述方法的逆过程。
【例 1-14】将八进制数 673.124 转换成二进制数。
解:
八进制 6 7 3 . 1 2 4
二进制 110 111 011 . 001 010 1(00)
即 (673.124)8 = (110111011.0010101)2
【例 1-15】将十六进制数 306.D 转换成二进制数。
12 数字逻辑(第三版)
解:
十六进制 3 0 6 . D
二进制 (00)11 0000 0110 . 1101
即 (306.D)16 = (1100000110.1101)2
通过以上讨论,知道十、二、八、十六进制数任何两者之间都可进行相互转换。而其中涉及
的方法不外 3 种:多项式替代法、基数乘除法和 n 分法。熟练掌握这 3 种方法即可将任何一种数
制的数转化成其他数制的数。
1-3 带符号二进制数的代码表示
以上讨论的数都未涉及符号,可认为都是正数。在进行算术运算时,必然涉及数的符号问题。
1-3-1 机器码与真值
人们通常在数值的前面加“+”表示正数(“+”通常也可以省略),加“−”表示负数,如:
(+5)10 = (+101)2
(−7) 10 = (−111)2
上述这种表示称为符号数的真值。
在数字系统中,符号和数值一样是用 0 和 1 来表示的,一般将数的最高位作为符号位,通常
用 0 表示正,用 1 表示负。这种将符号和数值统一编码表示的二进制数称为机器数或机器码。常
用的机器码主要有原码、反码和补码 3 种。
1-3-2 原码
原码又称为符号-数值表示。用原码表示真值时,第一位为符号位,正负数的符号位分别用“0”
“1”表示,其余各位不变。正数的原码是其本身,负数的原码与负数的区别是增加一位用 1 表示的符
号位。而 0 在原码表示中有两种形式“+0”和“−0”。下面给出原码的数学公式定义。
1.定点小数原码的定义
设二进制小数 X = ±0.x-1x-2…x-m,则其原码定义为
(0 1) [ ] 1 ( 1 0)
X X
X
X X
⎧ = ⎨
⎩ − −原
-
-
<
<
(1-7)
注意:这里 X 在计算机中需要(m +1)位来存储。
【例 1-16】求 X1 = +0.1011001,X2 = −0.1011001 的原码。
解:[X1]原= 0.1011001
[X2]原= 1− (−0.1011001)
= 1+0.1011001
= 1.1011001
一般情况下,对于正小数有[X]原 = 0.x-1x-2…x-m,对于负小数有[X]原 = 1.x-1x-2…x-m,对于小
数 0 有“+0”和“−0”之分,故小数“0”的原码可以表示成 0.0…0 或 1.0…0。
第 1 章 数制与编码 13
2.整数原码的定义
设二进制整数 X = ±xn-1xn-2…x0,则其原码定义为
(0 2 ) [ ]
2 ( 2 0)
n
n n
X X
X
X X
⎧⎪ = ⎨
⎪⎩ − −原
-
-
<
<
(1-8)
注意:这里的 2n 表示二进制数,X 在计算机中需要 n +1 位来存储。
【例 1-17】求 X1 = +1001011,X2 = −1001011 的原码。
解:[X1]原 = 01001011
[X2]原 = 27
− (−1001011)
= 10000000 + 1001011
= 11001011
一般情况下,对于正整数有[X]原 = 0x n−1x n−2…x0,对于负整数有[X]原 = 1x n−1x n−2…x0。同样,
整数“0”的原码也有两种形式,即 0 0…0 或 1 0…0。
由上面可知,真值表示与原码表示形式很相似,故由真值求原码简单易懂。但计算机用原码
实现加减运算则较为复杂。假如要建立一个原码加法的数字逻辑电路,此电路必须首先判断加数
的符号,才能确定进行何种操作。如果加数的符号相同,它就将两数的真值相加,然后在结果前
加上相同的符号;如果加数的符号不同,它必须先比较两数的真值的大小,然后用大数减去小数,
再把大数的符号赋给结果。可见这些“加”“减”“比较”会使逻辑电路变得相当复杂。而这些工
作对于反码和补码运算的电路来说要简单很多。
1-3-3 反码
反码又称对 1 的补码,简称“1 补”。用反码表示时,左边第一位也是符号位,符号位为 0 表
示正数,符号位为 1 表示负数。对于负数,反码的数值是将原码数值按位求反,即 1 变 0,0 变 1;
对于正数,反码的数值与原码相同,即与真值也相同。0 的反码表示也有两种形式。
1.定点小数反码的定义
设二进制小数 X = ±0.x-1x-2…x-m,则其反码定义为
(0 1) [ ] 2 2 ( 1 0) m
X X
X
X X −
⎧⎪ = ⎨
⎪⎩ +− −
反
-
-
<
<
(1-9)
注意:这里的 2−m 表示二进制数,X 在计算机中需要 m +1 位来存储。
【例 1-18】求 X1 = +0.1011001,X2 = −0.1011001 的反码。
解:[X1]反 = 0.1011001
[X2]反 = 2+(−0.1011001)−2−7
= 10−0.1011001−0.0000001
= 1.0100110
一般情况下,对于正小数有[X]反 = 0.x-1x-2…x-m,对于负小数有[ ] 1. X xx x 反 = −− − 1 2" m ,对
于 0 也有“+0”和“−0”之分,故小数“0”的反码可以表示成 0.0…0 或 1.1…1。
14 数字逻辑(第三版)
2.整数反码的定义
设二进制整数 X = ±xn-1xn-2…x0,则其反码定义为
[X]反 1
(0 2 )
2 1 ( 2 0)
n
n n
X X
X X +
⎧⎪ = ⎨
⎪⎩ +− −
-
-
<
<
(1-10)
注意:这里的 2n+1 表示二进制数,X 在计算机中需要 n +1 位来存储。
【例 1-19】求 X1 = +1001011,X2 = −1001011 的反码。
解:[X1]反 = 01001011
[X2]反 = 28
+(−1001011) −1
= 100000000−1001011−1
= 10110100
一般情况下,对于正整数有[X]反 = 0xn−1x n−2…x 0,对于负整数有[] 1 X xx x 反 = n n − − 12 0 " ,整数
“0”的反码也有两种形式,即 00…0 或 11…1。
1-3-4 补码
补码又称对 2 的补码或基数的补码,简称“2 补”。在补码表示法中,正数的表示同原码和反
码的表示相同,而负数的补码的符号位为 1,数值部分是将原数值按位求反,并在最低位加 1。0
的补码是唯一的。
1.定点小数补码的定义
设二进制小数 X = ±0.x-1x-2…x-m,则其补码定义为
[X]补
(0 1)
2 ( 1 0)
X X
X X
⎧ = ⎨
⎩ + −
-
- -
< (1-11)
【例 1-20】求 X1 = +0.1011001,X2 = −0.1011001 的补码。
解:[X1]补 = 0.1011001
[X2]补 = 2+(−0.1011001)
= 10−0.1011001
= 1.0100111
一般情况下,对于正小数有[X]补 = 0.x-1x-2…x-m,对于负小数有[X]补 = 10.00…0−0.x-1 x-2…x - m
=1. 2 1 2 m xx x m − −− − " + ,对于小数“0”而言,其补码是唯一的,即[+0]补=[−0]补 = 0.0…0。
2.整数补码的定义
设二进制整数 X = ±xn-1xn-2…x0,则其补码定义为
[X]补 1
(0 2 )
2 ( 2 0)
n
n n
X X
X X +
⎧⎪ = ⎨
⎪⎩ + −
-
- -
< (1-12)
注意:这里的 2n+1 表示二进制数,X 在计算机中需要(n +1)位来存储。
【例 1-21】求 X1 = +1001011,X2 = −1001011 的补码。
第 1 章 数制与编码 15
解:[X1]补 = 01001011
[X2]补 = 28
+(−1001011)
= 100000000−1001011
= 10110101
一般情况下,对于正整数有[X]补 = 0xn−1x n−2…x0,对于负整数有[X]补 =1 1 xx x n n − − 12 0 " + ,同样,
整数“0”的补码也是唯一的,即[+0]补=[−0]补 = 0 0…0。
从定义还可看出补码的数域比原码和反码的数域大。
1-3-5 数码运算
上面介绍了带符号数的 3 种表示法,它们的形成规则不同,算术运算的方法也不相同。
用原码来计算时,其加减法有不同的规则,所以使用起来很不方便,使用补码和反码的目的
就是使加减法可以统一起来。
在补码和反码运算规则中,把减去一个数看成加上一个负数,并把该负数用补码或反码表示
出来,然后按照加法规则进行运算,当然结果也为补码或反码。在补码、反码运算中,符号位也
被看成一位数码,并与数值位一样参与加法运算,所得结果的符号位也就是正确结果的符号位,
但前提是结果不超出有效的数值范围。
补码和反码运算的差异在于:在补码运算时,符号位产生的进位要丢掉;而在反码运算时,
符号位产生的进位要加到数值位的最低位上去。
【例 1-22】求 Z = X−Y。其中,X=+1011010,Y=+0011001。
解:(1)原码运算
[X]原 = 01011010 [Y]原 = 00011001
因为|X|>|Y|,所以将 X 作被减数,Y 作减数,差值为正(与 X 符号相同)。
−
0
0
1
0
0
0
1
1
1
1
0
0
1
0
0
1
0 1 0 0 0 0 0 1
即[Z]原 = 01000001,其真值为 Z = +1000001。
(2)反码运算
反码运算的规则是两数和的反码等于两数的反码之和,两数差的反码可以用两数反码的加法
来实现,即
[X+Y]反 = [X]反 +[Y]反 (1-13)
[X−Y]反 = [X]反 +[−Y]反 (1-14)
[X]反 = 0101 1010 [−Y]反 = 1110 0110
+
0
1
1
1
0
1
1
0
1
0
0
1
1
1
0
0
+
(1) 0 1 000000
1
0 1 0 0 0 0 0 1
即[Z]反 = 0100 0001,其真值为 Z = +100 0001。
16 数字逻辑(第三版)
运算时,符号位和数值一起参加运算,若符号位产生了进位,则此进位应加至和的最低位,
称为循环进位。
反码比原码运算更方便,因为它可用加法代替减法,而且符号位不用单独处理,但它有两个
缺点:一是数 0 在反码系统中有+0 和−0 之分,给运算器设计带来麻烦;二是反码加法运算后,
需判断是否需要循环进位,而完成循环进位又相当于再进行一次加法操作,影响运算速度。
(3)补码运算
补码的运算规则为
[X+Y]补 = [X]补 +[Y]补 (1-15)
[X−Y]补 = [X]补+[−Y]补 (1-16)
[X]补= 01011010 [−Y]补= 11100111
+
0
1
1
1
0
1
1
0
1
0
0
1
1
1
0
1
舍弃
(1) 0 1000001
即[Z] 补 = 01000001,其真值为 Z = +1000001。
补码和反码一样符号位也参加运算,不用单独处理;补码运算完全克服了反码运算的缺点:
一是运算时若符号位产生进位,要将进位丢掉,不用循环进位;二是 0 的补码有唯一性,不会给
运算器的识别和运算带来不便,从而简化了电路的设计与实现。
【例 1-23】求 Z = X−Y。其中,X=+0010110,Y=+1011001。
解:(1)原码运算
[X]原 = 00010110 [Y]原 = 01011001
因为|X|<|Y|,所以将 Y 作被减数,X 作减数,差值为负(与 Y 符号相同)。
−
0
0
1
0
0
0
1
1
1
0
0
1
0
1
1
0
0 1 0 0 0 0 1 1
即[Z]原 = 11000011,其真值为 Z = −1000011。
(2)反码运算
[X]反 = 00010110 [−Y]反 = 10100110
+
0
1
0
0
0
1
1
0
0
0
1
1
1
1
0
0
1 0 1 1 1 1 0 0
即[Z]反 = 10111100,其真值为 Z = −1000011。
(3)补码运算
[X]补= 00010110 [−Y]补= 10100111
+
0
1
0
0
0
1
1
0
0
0
1
1
1
1
0
1
1 0 1 1 1 1 0 1
即[Z]补 = 10111101,其真值为 Z = −1000011。
第 1 章 数制与编码 17
1-4 编 码
所谓编码是指用一组二进制数去表示某一指定的信息。人们日常生活中使用各种各样的信息,
如数值、文字、字母、视频、音频、图形、图像等,这些信息要在计算机中进行处理,就必须进
行编码。本节主要介绍二-十进制编码、可靠性编码和字符编码。
1-4-1 BCD 码
在计算机中,为了既满足系统中使用二进制数的要求,又适应人们使用十进制数的习惯,所
以在数字系统的输入/输出中仍采用十进制数,这样就产生了用 4 位二进制代码对 1 位十进制数字
进行编码的方法,这种编码称为十进制数的二进制编码,简称二-十进制编码,又称 BCD 码(Binary
Coded Decimal)。
二-十进制编码有多种不同的编码方法,不同的方法形成不同的 BCD 码,如 8421BCD 码、
2421BCD 码、余 3 码等,其中 8421BCD 码是最常见的一种,简称 8421 码。通常情况下,若不加
以特别说明,BCD 码就是指 8421 码。
1.8421 码
8421BCD 码的编码方法是:将每个十进制数用 4 位二进制数表示,且指定按序排列的二进制
数的前 10 种代码依次表示十进制数的 0~9。8421BCD 码具有 3 个特点:
① 有权性。每位都有固定权值,从左到右各位的权分别为 8(23
)、4(22
)、2(21
)、1(20
),
这也是其名称的来由。设 1 位十进制数 N 的 8421 码为 x3x2x1x0,将其按权展开,则
N = 8x3+4x2+2x1+x0 (1-17)
【例 1-24】求 8421BCD 码 0101 对应的十进制数。
解:8421BCD 码 0101 的按权展开式为
N = 8×0+4×1+2×0+1×1 = 4+1 = 5
即 8421BCD 码 0101 表示十进制数 5。
② 奇偶性。当十进制数为奇数时,对应的 8421BCD 码的最低位为 1;反之为 0。故采用 8421BCD
码容易判别奇偶。
③ 非一一对应性。因为十进制数有 0~9 共 10 个数码,所以表示 1 位十进制数,至少需要 4
位二进制数(23
<10<24
)。但这样就有 6 种组合多余,因为 4 位二进制数可产生 24
=16 种组合。故
在 8421 BCD 码中的 1010~1111 这 6 个代码没有相应的十进制数码与之对应,也就是说不允许出
现这 6 个代码。
8421 码和十进制数之间的转换是一种直接按位(按组)转换,例如:
(13)10 = (00010011)BCD
(0001011101010000)BCD = (1750)10
2.余 3 码
余 3 码是另一种 BCD 码,它是由 8421 码加 3 后形成的。因为 8421 码中无 1010~1111 这 6
个代码,所以余 3 码中无 0000~0010、1101~1111 这 6 个代码。余 3 码不具有有权性,但具有自
补性,是一种“对 9 的自补码”。
【例 1-25】用余 3 码对(28)10 进行编码,并求(28)10 对 9 的补数。
18 数字逻辑(第三版)
解:2、8 对应的余 3 码分别是 0010+0011=0101,1000+0011=1011。
即(28)10 = (0101 1011)余 3。
因为余 3 码具有自补性,故对其按位求反即可得对 9 的补数。
(0101 1011)9 补 = (1010 0100) 余3 = (71) 10
即(28)9 补 = (71)10。
为方便查找,在表 1-3 中给出 3 种常用的二-十进制编码(BCD 码)。
表 1-3 常用的二-十进制编码(BCD 码)
十 进 制 数 8421 码 余 3 码 2421 码
0 0000 0011 0000
1 0001 0100 0001
2 0010 0101 0010
3 0011 0110 0011
4 0100 0111 0100
5 0101 1000 1011
6 0110 1001 1100
7 0111 1010 1101
8 1000 1011 1110
9 1001 1100 1111
1-4-2 格雷码
由于人为或非人为的原因,代码在计算机或其他数字系统中形成、传送和运算过程中都有可
能出现错误。于是人们在提高计算机本身的可靠性的同时,也创造了一些可靠性编码。它们令代
码本身具有一种特征或能力,使得代码在形成中不容易出错,或代码在出错时容易被发现,甚至
能查出出错的位置并予以纠正。格雷码就是一种可靠性编码。
在一组数的编码中,若任意两个相邻的代码只有 1 位二进制数不同,则称这种编码为格雷码
(Gray Code),另外由于最大数与最小数之间也仅 1 位数不同,即“首尾相连”,因此又称循环码。
在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用 8421 码,则数
0111 变到 1000 时 4 位均要变化,而在实际电路中,4 位的变化不可能绝对同时发生,则计数中可
能出现短暂的其他代码(1100、1111 等)。在特定情况下可能导致电路状态错误或输入错误,使
用格雷码可以避免这种错误。格雷码也有多种编码形式,如表 1-4 所示。
表 1-4 几种格雷码与二进制码对照表
十进制数 二进制码 典型格雷码 十进制格雷码(1) 十进制格雷码(2) 步进码
0 0000 0000 0000 0000 00000
1 0001 0001 0001 0001 00001
2 0010 0011 0011 0011 00011
3 0011 0010 0010 0010 00111
4 0100 0110 0110 0110 01111
第 1 章 数制与编码 19
续表
十进制数 二进制码 典型格雷码 十进制格雷码(1) 十进制格雷码(2) 步进码
5 0101 0111 1110 0111 11111
6 0110 0101 1010 0101 11110
7 0111 0100 1011 0100 11100
8 1000 1100 1001 1100 11000
9 1001 1101 1000 1000 10000
10 1010 1111 — — —
11 1011 1110 — — —
12 1100 1010 — — —
13 1101 1011 — — —
14 1110 1001 — — —
15 1111 1000 — — —
表 1-4 中典型格雷码具有代表性。若不作特别说明,格雷码就是指典型格雷码,它可从二进
制码转换而来。
在说明这种转换之前,先介绍一种逻辑运算“模 2 加”,又称“异或运算”或“半加”,即不
考虑进位的加法,运算符号是“⊕”。其运算规则如下:
0⊕0=0 1⊕1=0 0⊕1=1 1⊕0=1
从二进制码转换成格雷码的规则如下:设二进制码为 B=Bn−1…Bi+1Bi…B0,对应的格雷码为
G=Gn−1…Gi+1Gi…G0,则
Gn−1=Bn−1,Gi=Bi+1⊕Bi (1-18)
【例 1-26】已知二进制码为 1110,求其对应的格雷码。
1 1 1 0 二进制码 B
↓ Ì ↓ Ì ↓ Ì ↓
↓ ⊕ ⊕ ⊕
↓ ↓ ↓ ↓
1 0 0 1 格雷码 G
即二进制码 1110 对应的格雷码为 1001。
反之,若已知一组格雷码,也可以方便地求出对应的二进制码,方法如下:
Bn−1=Gn−1,Bi=Bi+1⊕Gi (1-19)
【例 1-27】已知格雷码为 1110101,求其对应的二进制码。
1 1 1 0 1 0 1 格雷码 G
↓ ↓ ↓ ↓ ↓ ↓ ↓
↓ ⊕ ⊕ ⊕ ⊕ ⊕ ⊕
↓ Ê ↓ Ê ↓ Ê ↓ Ê ↓ Ê ↓ Ê ↓
1 0 1 1 0 0 1 二进制码 B
即格雷码 1110101 对应的二进制码为 1011001。
解:
解:
20 数字逻辑(第三版)
1-4-3 奇偶检验码
奇偶检验码是在计算机存储器和其他通信设备中广泛采用的可靠性编码,它由若干个信息位
加一个检验位构成,其中检验位的取值(0 或 1)将使整个代码中的“1”的个数为奇数或为偶数。
若“1”的个数为奇数则称为奇检验;若“1”的个数为偶数则称为偶检验。表 1-5 给出带奇偶检
验的 8421 码。
表 1-5 奇偶检验的 8421 码
8421 奇检验码 8421 偶检验码 十 进 制 数
信 息 位 检 验 位 信 息 位 检 验 位
0 0000 1 0000 0
1 0001 0 0001 1
2 0010 0 0010 1
3 0011 1 0011 0
4 0100 0 0100 1
5 0101 1 0101 0
6 0110 1 0110 0
7 0111 0 0111 1
8 1000 0 1000 1
9 1001 1 1001 0
奇偶检验码的一个主要特点是具有发现一位出错的能力。但是奇偶检验码不能确定哪一位出
错,因而不具有自动纠正能力。由于两位出错的概率远小于一位出错的概率,因而奇偶检验码仍
不失为一种增加设备不多而收益不少的实用可靠性编码。
1-4-4 CRC 码
循环冗余检验码(Cyclic Redundancy Check,CRC)。它不仅具有检错能力,还具有纠错能力,
被广泛地应用于磁盘驱动器和数据网络。
CRC 码中采用“模 2 运算”,即加减无进位或借位。CRC 码中引入了代码多项式的概念,即
将一个二进制序列与代码多项式一一对应。如二进制序列 101100111 对应代码多项式为
86521 Mx x x x x x () 1 =+++ ++
CRC 码是由 k 位信息位与 r 位检验位组成。k 位信息位对应 k−1 阶代码多项式 M(x),给定 r
阶的检验多项式 G(x),则发送方编码方法是将 M(x)乘 xr
(即将对应的二进制码序列左移 r 位),再
除以 G(x),所得商式为 q(x),余式为 R(x),即
() () ( ) () ()
r M x x Rx
q x Gx Gx
⋅ = + (1-20)
最后发送的码为 n+r 阶代码多项式 T(x),即
() () () () () r Tx M x x Rx qx Gx = ⋅± = ⋅ (1-21)
接收方解码方法是将接收到的多项式 T(x)除以 G(x),如果余数为 0,则说明传输中无错误发
生,否则说明传输有误。
第 1 章 数制与编码 21
【例 1-28】已知生成多项式为 1011,设信息码为 1100,求其 CRC 码。
解:根据题意可知
G(x) = x
3
+x+1 r=3
M(x) = x
3
+x
2
根据式(1-20)有
( ) ( )
3 23 6 5
3 2
33 3
( )
( ) 11 1
Mx x x x x r x xx
xxx
G x x x xx xx
+ ⋅ +
= = = + ++
++ ++ ++
所以 R(x) = x,即 10,则:CRC 码为T(x) = M (x)⋅ x ± R(x) = 1100010 r 。
1-4-5 ASCII 码
前面涉及的编码都仅局限于数码,没涉及字符,但在计算机中字符、文字以及特殊符号都必
须用二进制代码来表示。用于各种字符(包括字母、数字、标点符号、运算符号及其他特殊符号)
的二进制代码称为字符编码。
美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)是国际上
通用的字符代码。它采用 7 位二进制编码,使用时加第 8 位作为奇偶检验位,共表示 128 种字符,
其中包括 10 个十进制数码,26 个英文字母和一定数量的专用符号以及 33 个控制字符。ASCII 码
的编码规则如表 1-6 所示。
表 1-6 ASCII 码表
低 4 位 高3位 b6b5b4
b3b2b1b0 000 001 010 011 100 101 110 111
0 0 0 0 NUL DLE SP 0 @ P ` p
0 0 0 1 SOH DC1 ! 1 A Q a q
0 0 1 0 STX DC2 " 2 B R b r
0 0 1 1 ETX DC3 # 3 C S c s
0 1 0 0 EOT DC4 $ 4 D T d t
0 1 0 1 ENQ NAK % 5 E U e u
0 1 1 0 ACK SYN & 6 F V f v
0 1 1 1 BEL ETB ' 7 G W g w
1 0 0 0 BS CAN ( 8 H X h x
1 0 0 1 HT EM ) 9 I Y i y
1 0 1 0 LF SUB * : J Z j z
1 0 1 1 VT ESC + ; K [ k {
1 1 0 0 FF FS , < L \\ l |
1 1 0 1 CR GS - = M ] m }
1 1 1 0 SO RS . > N ^ n ~
1 1 1 1 SI US / ? O _ o DEL
22 数字逻辑(第三版)
小 结
本章主要介绍了数制及其转换、带符号的二进制数的代码表示及编码。
进位计数制是用一组统一的符号和规则来表示数的方法。一种进位计数制包含两个基本因素:
基数和位权。对于任意进制数都有两种表示方法,即位置计数表示法和多项式表示法。二进制数、
八进制数、十六进制数与十进制数可两两进行转换。
其次介绍了机器数的 3 种形式:原码、补码、反码。原码表示法简单直观,易变换,但进行
加、减运算较复杂,其减法不能用加法替代,故实现原码所需逻辑电路较复杂、效率较低。反码
和补码表示法可将减法变成加法,且不用单独考虑符号位,实现方便。但反码采用“循环进位”
比补码复杂。
最后介绍了数码和字符的代码表示即编码。给出了二-十进制编码、可靠性编码以及字符编码。
习 题
1. 什么是数字信号?什么是模拟信号?试各举一例。
2. 把下列数写成按权展开式形式。
(1)(541.72)10 (2)(11011.101)2 (3)(52.36)8 (4)(D89.A3)16
3. 将下列二进制数分别转换成十进制数、八进制数和十六进制数。
(1)1010101 (2)0.1101 (3)1010.01
4. 将下列数转换成十进制数。
(1)(10110.0101)2 (2)(16.5)16 (3)(26.24)8
5. 将下列十进制数转换成二、八、十六进制数(精确到小数点后 4 位)。
(1)84.75 (2)43 (3)0.6
6. 如何判断一个二进制正整数 B = b7b6b5b4b3b2b1b0 能否被(4)10 整除?
7. 试比较原码、反码和补码各自的优缺点。
8. 写出下列各数的原码、反码和补码(用 8 位表示)。
(1)+0.110 1000 (2)−000 1011
9. 已知[N]补=1.011 0100,求[N]原、[N]反和 N。
10. 分别用原码、反码和补码完成如下运算(用 8 位表示)。
(1)0000 1011−0001 0110
(2)0.101 1000−0.010 1100
(3)0.101 0000 + 0.101 1000
11. 求下列十进制数的 8421BCD 码和余 3 码。
(1)875 (2)7025
12. 试用余 3 码和格雷码分别表示下列各数。
(1)(247)10 (2)(110110)2
英国数学家 George Boole 于 1854 年提出了将人的逻辑思维规律和推理过程归结为一种
数学运算的代数系统,即布尔代数(Boolean Algebra)。1938 年,贝尔实验室研究员 Claude E.
Shannon 将布尔代数的一些基本前提和定理应用于继电器电路的分析与描述上,称为二值布
尔代数,即开关代数,又称逻辑代数。
逻辑代数是研究二值逻辑运算的基本数学工具,它广泛地应用于数字系统的分析和设计
中。本章着重介绍逻辑代数的基本概念、基本定律和规则,逻辑函数的表示及逻辑函数的化简。
2-1 逻辑代数的基本定理和规则
逻辑代数中通常用拉丁字母 A,B,C,…表示变量,取值只能是 0 和 1,且 0 和 1 不表示具
体数量的大小,只表示两种不同的逻辑状态,因而这种变量叫逻辑变量。逻辑代数中基本运算只
有“与”“或”“非”3 种。
逻辑代数 L 是一个封闭的代数系统,它由一个变量集 K,常量 0 和 1,以及“与”“或”“非”
3 种基本运算构成,记为
L K{ , 0, 1, , , }− = + i
2-1-1 逻辑代数公理
公理是基本的假定,它是客观存在的抽象,无须证明。但是逻辑代数的公理可以用真值表进
行检验。下面给出的是一组比较简单的公理:
公理 1 交换律: A + B B A AB BA =+ =
公理 2 结合律: ( ) ( ) ( ) ( ) A + B C A B C AB C A BC +=+ + =
公理 3 分配律: A + ( ) ( )( ) ( ) BC A B A C A B C AB AC =+ + += +
公理 4 0-1 律: 0 1
1 1 0 0
A AA A
A A
+ = ⋅=
+ = ⋅=
公理 5 互补律: A A AA + = ⋅= 1 0
2-1-2 逻辑代数定理
根据上述的公理,可以推导出下列常用的定理:
定理 1 重叠定理: A + A A AA A = =
证明: A + = ⋅+ ⋅ AA A 1 1 (0−1 律)
=⋅+ A (1 1) (分配律)
= ⋅ A 1 (“或”运算法则)
= A (0−1 律)
该定律说明一个变量多次自加或自乘的结果仍为自身,即逻辑代数中不存在倍乘和方幂
运算。
第 章 2 逻辑代数基础
24 数字逻辑(第三版)
定理 2 吸收定理 I: A AB A A A B A + = += ( )
证明: A + = ⋅+ ⋅ AB A A B 1 (分配律)
=⋅+ A (1 ) B (分配律)
= ⋅ A 1 (0−1 律)
= A (0−1 律)
该定理说明如果逻辑表达式中的某一项包含了式中另一项,则该项多余。
定理 3 吸收定理 II: A + =+ + = AB A B A A B AB ( )
证明: A + =+ + AB A A A B ( )( ) (分配律)
=1( ) ⋅ + A B (互补律)
= A + B (0−1 律)
定理 4 吸收定理 III: AB AB A A B A B A + = + += ( )( )
证明: AB AB A B B += + ( ) (分配律)
= ⋅ A 1 (互补律)
= A (0−1 律)
定理 5 复原定理(非非律): A = A
证明:令 A = X ,因而存在唯一的 X ,使得
XA X A = += 0, 1 (互补律)
但 AA A A = += 0, 1 (互补律)
由互补律可知 X = A
即 A = A
该定理表征了“否定之否定等于肯定”这一规律。
定理 6 多余项定理:
( )( )( ) ( )( )
AB AC BC AB AC
A BACB C A BA C
++=+
+ + +=+ +
证明:
( )
CB
(1 ) (1 )
AB AC BC AB AC BC A A
AB AC BCA BC A
AB AC ABC A
AB C AC B
AB AC
++=++ +
=++ +
=++ +
= ++ +
= +
该定理说明当逻辑表达式中的某变量(如 A)分别以原变量和反变量的形式出现在两项中时,
该两项的其余部分组成的第三项(如 BC)必定为多余项,可从式中去掉。
推论: 1 2
( )( )( ) ( )( ) 1 2
n
n
AB AC BCX X X AB AC
A BACB C X X X A BAC
++ =+
+ + ++ + + + = + +
"
"
推论说明若第三项中除了前两项的剩余部分外,还含有其他部分,它仍是多余项。
定理 7 反演定律(摩根定律): A+= =+ B AB AB A B
(0−1 律)
(分配律)
(交换律)
(分配律)
(互补律)
第 2 章 逻辑代数基础 25
证明:令 X AB = + , Y AB = ,则
X Y A B AB +=++
= ++ ++ [( ) ][( ) ] A B AAB B (分配律)
= ++ ++ [( ) ][( ) ] A A BBB A (交换律、结合律)
=+ + (1 )(1 ) B A (互补律)
=1 (0−1 律)
XY A B AB = + ( )
= AAB BAB + (分配律)
= 0 0 ⋅ +⋅ B A (互补律)
= 0 (0−1 律)
因为 X Y + =1,且 XY = 0 ,则 X Y = (互补律)
即 A + B AB =
摩根定理是一个十分重要的定理,它证明了变量进行“与”和“或”运算时的互补效应,在
进行逻辑函数化简以及逻辑变换时非常有用。
推论(n 变量摩根定理):
X X X X X X XX X X X X 0 1 1 0 1 1 01 1 0 1 1 + ++ = = + ++ " "" " nn n n −− − −
以上定理的证明还可以通过真值表进行,读者可自行尝试。
2-1-3 逻辑代数规则
逻辑代数还有 3 条重要规则:代入规则、反演规则和对偶规则。它们与基本公理、基本定理
构成完整的逻辑代数系统。下面分别予以介绍。
1.代入规则
任何一个含有变量 Xi 的等式,若将所有出现 Xi 的位置都代之以统一逻辑函数 h,等式仍然成
立。已知
f X X X X gX X X X ( , ,, ,, ) ( , ,, ,, ) 01 1 01 1 "" "" in in − = −
函数 h 是一任意逻辑函数,如果用 h 替换等式两边的 Xi,则等式仍然成立,即
f X X h X gX X h X ( , , ,, , ) ( , , ,, , ) 01 1 01 1 "" "" n n − = −
证明:由于函数 h 与逻辑变量一样只有 0 或 1 两种取值,而且当 h 取 0 或 1 时等式成立,所
以,代入规则必然成立。
代入规则在推导公式中有重要意义。利用这条规则可以将逻辑代数基本定律中的变量用任意
逻辑函数代替,从而推导出更多公式。
利用代入规则可以证明 n 变量的摩根定理,即
X X X X X X XX X X X X 0 1 1 0 1 1 01 1 0 1 1 + ++ = = + ++ """ " nn n n − −− −
证明:由于 X0 0 + = A XA
将 A=X1+B 代入,则可得
X X B X XB 0 1 01 + +=
而
26 数字逻辑(第三版)
将 B=X2+C 代入,则可得
X X X C XXXC 0 1 2 012 + + +=
依此类推,则得
X X X XX X 0 1 1 01 1 + ++ = " " n n − −
2.反演规则
原函数求反函数的过程称为反演。求任何函数的反函数时,可将该函数的所有变量和常量(0
和 1)取反,并将运算符“+”变为“· ”、“· ”变为“+”,即可得反函数,即若
f fX X X = + ( , , , , 0, 1, , ) 01 1 " n− •
则 fX X X fX X X ( , , , , 0, 1, , ) ( , , , , 1, 0, , ) 01 1 01 1 " " n n − − + • • = +
反演规则又称香农定理(Shannon Theorem)。这一规则实际上是反演律以及代入规则的推广
结果。
【例 2-1】已知函数 Y A BC D =+ + ( )( ) ,求其反函数。
解:根据反演规则可求得其反函数为
Y AB CD = +
【例 2-2】已知函数 Y A B CD E G =+ + [ ( )],求其反函数。
解一:根据反演规则可求得其反函数为
Y A B C DE G =+ + + [( ) ]
解二:如果应用反演定理和代入规则求解该题,可得
[ ( )]
( )
( )
Y A B CD E G
A B CD E G
A B CD E G
=+ +
=++ +
=+ +
[( ) ]
[ ]
[( ) ]
A B CD E G
A B CDE G
A B C DE G
=+ + +
=+ +
=+ + +
可见,两种方法求解的结果相同,但反演规则求解要简单得多。在使用反演规则时,要特别
注意必须保持原有的运算次序,必要时加上各种括号。
3.对偶规则
对偶函数的定义是:将逻辑函数表达式 f 中所有的“+”变为“· ”、“· ”变为“+”,“0”
变为“1”、“1”变为“0”,而逻辑变量保持不变,则所得的新函数称为原函数的对偶函数,记为
f '。即若
f fX X X = + ( , , , , 0, 1, , ) 01 1 " n− •
则 f' X X X f X X X ( , , , , 0, 1, , ) ( , , , , 1, 0, , ) 01 1 01 1 " " n n − − + • • = +
【例 2-3】已知函数 Y A BC D =+ + ( )( ) ,求其对偶函数。
第 2 章 逻辑代数基础 27
解:根据对偶规则,其对偶数为
Y' AB CD = +
【例 2-4】已知函数 Y=A[ ( )] B CD E G + + ,求其对偶函数。
解:根据对偶规则,其对偶数为
Y' A B C D E G =+ + + [( ) ]
求一个函数的对偶函数 Y' 和求其反函数 Y 的区别在于:求 Y' 时逻辑变量不变,所以一般
Y' Y ≠ 。
在特殊情况下, Y ' 和 Y 也可能相等。例如 Y AB AB = + , Y Y A BA B ' ( )( ) = =+ + 。此时,
称函数 Y 为自对偶函数。
对偶规则是指如果两个逻辑函数表达式相等时,那么它们的对偶式也相等。若
f X X X gX X X ( , ,, ) ( , ,, ) 01 1 01 1 " " n n − = −
则 f X X X gX X X '( , , , ) '( , , , ) 01 1 01 1 " " n n − = −
读者已经注意到,在前面的公理和定理中公式是成对出现的,它们互为对偶式。在证明定理
时,只需证明其中一个公式,另一个公式可根据对偶规则自行得到。
例如摩根定理,已经证明了 A + B AB = ,则根据对偶规则,就可得
AB AB = +
2-2 逻辑函数的表示方法
逻辑函数的常见表示方法有逻辑表达式、真值表、卡诺图和逻辑图 4 种,各种表示方法之间
可以相互转换。其中真值表是逻辑函数的最基本形式,从真值表可以导出逻辑表达式及卡诺图。
本节重点介绍逻辑表达式和真值表,而卡诺图将在 2-5 节详细介绍。
2-2-1 逻辑表达式
逻辑表达式是由逻辑变量及“与”“或”“非”3 种运算符构成的式子。例如:
( )( )
Y AB
Y AB AC
Y A BC D
= +
= +
=+ +
2-2-2 真值表
真值表是一种表格表示法。真值表实际上是利用穷举法描述逻辑函数。由于任意逻辑变量只
有两种取值可能,故 n 个逻辑变量共有 2n 种有限的可能取值组合,因而可对一个函数求出所有输
入变量取值下的函数值,并用表格记录,这样的表格即为真值表。
简言之,真值表的结果由逻辑变量的所有可能的取值组合按二进制数码顺序给出。
【例 2-5】求两变量函数 Y AB = + 的真值表。
解:函数 Y AB = + 的真值表如表 2-1 所示。
28 数字逻辑(第三版)
【例 2-6】求三变量函数Y = AB + AC 的真值表。
解:函数 Y AB AC = + 的真值表如表 2-2 所示。
表 2-1 函数Y AB = + 的真值表 表 2-2 函数Y AB AC = + 的真值表
A B Y A B C Y
0 0 1 0 0 0 0
0 1 0 0 0 1 1
1 0 1 0 1 0 0
1 1 1 0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
【例 2-7】求四变量函数 Y A BC D =+ + ( )( ) 的真值表。
解:函数 Y A BC D =+ + ( )( ) 的真值表如表 2-3 所示。
表 2-3 函数Y A BC D =+ + ( )( ) 的真值表
A B C D Y A B C D Y
0 0 0 0 1 1 0 0 0 0
0 0 0 1 0 1 0 0 1 0
0 0 1 0 1 1 0 1 0 0
0 0 1 1 1 1 0 1 1 0
0 1 0 0 1 1 1 0 0 1
0 1 0 1 0 1 1 0 1 0
0 1 1 0 1 1 1 1 0 1
0 1 1 1 1 1 1 1 1 1
2-2-3 逻辑图
逻辑函数表示的逻辑关系可以用逻辑
电路来实现。用逻辑符号画出的电路图称为
逻辑图,如图 2-1 所示。对逻辑符号和逻辑
图的具体介绍将在第 3 章中给出。
2-3 逻辑函数表达形式与变换
一个逻辑命题可以用多种形式的逻辑函数来描述,这些逻辑函数的真值表都是相同的。如果
以函数式中所含的变量乘积项的特点以及乘积项之间的逻辑关系来分类,逻辑函数表达式可以分
成与或、或与、与非、或非、与或非、或与非等形式,各种形式之间可以相互变换。
例如,函数Y = AB + AB 可以表达为
图 2-1 Y AB C = ⊕ 逻辑图
A
B
C
&
=1
电子系统设计
第 2 章 逻辑代数基础 29
( )( )
Y AB AB
A BA B
AB AB
ABAB
AB A B
= +
=+ +
=
=+++
= +
="
与或式
或与式
与非式
或非式
与或非式
2-3-1 积之和
所谓“积之和”又称“与或”表达式,是指一个函数表达式由若干个积项的和组成,即若干
个与项进行或运算形成的表达式。例如:
Y A AB ABC =+ +
式中,A、 AB 、 ABC 都是积项(与项)。
2-3-2 和之积
所谓“和之积”又称“或与”表达式,是指一个函数表达式由若干个和项的积组成,即若干
个或项进行与运算形成的表达式。例如:
Y AA B A B C = + ++ ( )( )
式中, A、 、 ABABC + ++ 都是和项(或项)。
2-3-3 最小项标准形式
逻辑函数表达式有多种表达形式,从真值表导出的逻辑函数表达式将是一种标准形式,即逻
辑函数的最小项之和式或最大项之积式。
1.最小项
设有 n 个逻辑变量,它们组成的与项中每个变量或以原变量形式或以反变量形式出现一次,
且仅出现一次,此与项称为 n 个变量的最小项。
由最小项定义可知,n 个变量可构成 2n 个最小项。为了书写方便,通常用 mi 表示最小项。例
如三变量的 8 个最小项可表示如表 2-4 所示。
表 2-4 三变量最小项
A B C 最 小 项 代 号
0 0 0 ABC m0
0 0 1 ABC m1
0 1 0 ABC m2
0 1 1 ABC m3
1 0 0 ABC m4
1 0 1 ABC m5
1 1 0 ABC m6
1 1 1 ABC m7
确定下标 i 的规则是:当变量按一定顺序(A, B, C, …)排好后,用 1 代替原变量,用 0 代替
30 数字逻辑(第三版)
反变量,由此得到一个二进制数,其对应的十进制数即为下标值 i。
从上表还可以看出最小项具有如下性质。
性质 1:任意一个最小项,相应变量有且只有一组取值使这个最小项的值为 1。换言之,最
小项不同,其值为 1 的变量取值组合也不同。
性质 2:任意两个最小项之积必为 0,记为
mi·mj = 0 (i≠j)
性质 3:n 个变量的全部最小项之和为 1,记为
2 1
0
1
n
i
i
m
−
=
∑ =
2.函数的最小项标准形式
前面提到函数的积之和(与或)表达式,如果构成函数的积之和表达式中每一个乘积项(与
项)均为最小项,则称之为最小项之和标准式。例如:
Y A B C ABC ABC ABC ABC (,, ) =+++
是一个最小项之和标准式,为了书写方便,上式可记为
3 Y ABC m m m m m ( , , ) (2,3,5,7) =+++= 7532 ∑
式中,上标 3 表示函数的变量数,在变量数确定的情况下可以省略。
3.一般与或式转换成最小项标准式
如果给定的函数为一般的与或表达式,可以反复利用公式 A = += + A B B AB AB ( ) 配项将之
转换成最小项标准式。
【例 2-8】将函数 Y A B C AB AC BC (,, ) =++ 转换成最小项标准式。
解:利用与项中没有出现的变量进行配项,根据分配律得
(,, )
( )( )( )
(3,4,5,7)
Y A B C AB AC BC
AB C C A B B C A A BC
ABC ABC ABC ABC ABC ABC
ABC ABC ABC ABC
m
=++
= ++ + ++
=+++++
=+++
= ∑
4.由真值表导出最小项标准式
如果给定函数用真值表表示,显然真值表每一行变量的组合对应一个最小项。如果对应该行
的函数值为 1,则函数的最小项标准式中应包含对应该行的最小项;如果对应该行的函数值为 0,
则函数的最小项标准式中不包含对应该行的最小项。表 2-5 给出了 Y(A,B,C)和 Y 的真值以及对应
的最小项代号。
表 2-5 函数 Y(A,B,C)和Y 的真值表
A B C Y Y 最 小 项
0 0 0 0 1 m0
0 0 1 1 0 m1
0 1 0 0 1 m2
0 1 1 1 0 m3
第 2 章 逻辑代数基础 31
续表
A B C Y Y 最 小 项
1 0 0 1 0 m4
1 0 1 1 0 m5
1 1 0 0 1 m6
1 1 1 1 0 m7
显然,由表 2-5 可以方便地得
Y ABC m ( , , ) (1,3,4,5,7) = ∑
Y ABC m ( , , ) (0,2,6) = ∑
从上例中可以看出,由三变量组成的最小项不是包含在 Y(A,B,C)中,就是包含在 Y ABC (,, ) 中。
推广到一般的情况,对于 n 个变量的函数 Y,它共有 2n 个最小项,这些最小项不是包含在 Y
的最小项标准式中,就是包含在Y 的最小项标准式中。
用逻辑代数可以证明
2 1
02 1 02 1
0
( , ,, ) ( , ,, ) 1
n
n n ni
i
YX X X YX X X m
−
− −
=
" " + == ∑
【例 2-9】已知函数 4 Y m = ∑ (0,2,4,7,13) ,求其反函数。
解:函数 Y 包含最小项(0, 2, 4, 7, 13),那么最小项(1, 3, 5, 6, 8, 9, 10, 11, 12, 14, 15)一定
包含在Y 中,即
4 Y m = ∑ (1, 3, 5, 6, 8, 9, 10, 11, 12, 14, 15)
2-3-4 最大项标准形式
1.最大项
设有 n 个逻辑变量,它们组成的和项中每个变量或以原变量形式或以反变量形式出现一次,
且仅出现一次,此和项称为 n 个变量的最大项。
由最大项定义可知,n 个变量可构成 2n 个最大项。为了书写方便,通常用 Mi 表示最大项。例
如三变量的 8 个最大项可表示如表 2-6 所示。
表 2-6 三变量最大项
A B C 最 大 项 代 号
0 0 0 A+ B C+ M0
0 0 1 ABC + + M1
0 1 0 A + B C+ M2
0 1 1 A + B C+ M3
1 0 0 A + B C+ M4
1 0 1 A + B C+ M5
1 1 0 A + B C+ M6
1 1 1 A + B C+ M7
32 数字逻辑(第三版)
确定下标 i 的规则与最小项相反:当变量按一定顺序(A, B, C, …)排好后,用 0 代替原变量,
用 1 代替反变量,由此得到一个二进制数,其对应的十进制数即为下标值 i。
从表 2-6 还可以看出最大项具有如下性质。
性质 1:任意一个最大项,相应变量有且只有一组取值使这个最大项的值为 0。换言之,最
大项不同,其值为 0 的变量取值组合也不同。
性质 2:任意两个最大项之和必为 1,记为
Mi + Mj = 1 (i≠j)
性质 3:n 个变量的全部最大项之积为 0,记为
0
2 1
0
∏ =
−
=
n
i
M i
性质 4:同变量数下标相同的最大项和最小项互为反函数,即
,
,
i i ii
i i ii
mM Mm
mM Mm
= =
∑ ∑ = = ∏ ∏
2.函数的最大项标准形式
前面提到函数的和之积(或与)表达式,如果构成函数的和之积表达式中每一个和项(或项)
均为最大项,则称之为最大项之积标准式。例如:
Y ABC A B C A B C A B C A B C ( , , ) ( )( )( )( ) = ++ ++ ++ ++
是一个最大项之积标准式,为了书写方便,上式可记为
3 Y ABC M M M M M ( , , ) (0,2,4,5) = = 0245 ∏
式中,上标 3 表示函数的变量数,在变量数确定的情况下可以省略。
3.一般或与式转换成最大项标准式
如果给定的函数为一般的或与表达式,可以反复利用公式 A = A BB A B A B + =+ + ( )( ) 配项
将之转换成最大项标准式。
【例 2-10】将函数 Y ABC A B A C ( , , ) ( )( ) =+ + 转换成最大项标准形式。
解:利用或项中没有出现的变量进行配项,根据分配律得
( , , ) ( )( )
( )( )
( )( )( )( )
( )( )( )
(0,2,3)
Y ABC A B A C
A B CC A BB C
A BCA BCA BCA BC
A BCA BCA BC
M
=+ +
= ++ + +
= ++ ++ ++ ++
= ++ ++ ++
= ∏
4.由真值表导出最大项标准式
如果给定函数用真值表表示,显然真值表每一行变量的组合对应一个最大项。如果对应该行
的函数值为 0,则函数的最大项标准式中应包含对应该行的最大项;如果对应该行的函数值为 1,
则函数的最大项标准式中不包含对应该行的最大项。表 2-7 给出了 Y(A,B,C)和Y 的真值以及对应
的最大项代号。
第 2 章 逻辑代数基础 33
表 2-7 函数 Y(A,B,C)和Y 的真值表
A B C Y Y 最大项
0 0 0 0 1 M0
0 0 1 0 1 M1
0 1 0 1 0 M2
0 1 1 0 1 M3
1 0 0 1 0 M4
1 0 1 1 0 M5
1 1 0 0 1 M6
1 1 1 0 1 M7
显然,由表 2-7 可以方便地得
( , , ) (0,1,3,6,7)
( , , ) (2,4,5)
Y ABC M
Y ABC M
=
=
∏
∏
从上例中可以看出,由三变量组成的最大项不是包含在 Y(A,B,C)中,就是包含在 Y ABC (,, ) 中。
推广到一般的情况,对于 n 个变量的函数 Y,它共有 2n 个最大项,这些最大项不是包含在 Y
的最大项标准式中,就是包含在Y 的最大项标准式中。
用逻辑代数可以证明
2 1
02 1 02 1
0
( , ,, ) ( , ,, ) 0
n
n n ni
i
YX X X YX X X M
−
− −
=
" " ⋅ == ∏
【例 2-11】已知函数 4 Y M = ∏ (1,3,4,6,10) ,求其反函数。
解:函数 Y 包含最大项(1, 3, 4, 6, 10),那么最大项(0, 2, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15)一
定包含在Y 中,即
4 Y M = ∏ (0, 2, 5, 7, 8, 9, 11, 12, 13, 14, 15)
5.最小项标准式与最大项标准式的关系
同一逻辑函数可以用最小项标准式表示,也可以用最大项标准式表示,两者之间也可以相互
转换。
【例 2-12】已知函数的最小项标准式为 Y ABC m ( , , ) (1,3,4,5,7) = ∑ ,求其最大项标准式。
解:对原函数两边求反,得 Y ABC m ( , , ) (0,2,6) = ∑ ,再对 Y ABC (,, ) 求反,得
026
026
Y ABC m ( , , ) (0,2,6)
mmm
mmm
=
=++
=
∑
根据真值表,可得出 Y 的最大项标准式为 Y ABC M M M M ( , , ) (0,2,6) = = 026 ∏ 。
由此,可得到同一函数的最小项标准式与其最大项标准式之间的关系
Y ABC m M ( , , ) (1,3,4,5,7) (0,2,6) = = ∑ ∏
推广到一般情况,同一逻辑函数的一种标准式(原式)转换成另一种标准式式,互换 n
∑m 和
34 数字逻辑(第三版)
n
∏M 符号,并在符号后列出原式中缺少的那些数字。换言之,若将所示下标{0, 1, …, 2n
−1}看
成全集,则 n
∑m 和 n
∏ M 的下标集合互为补集。例如:
4 4 Ym M = = ∑ (1,3,4,5,7) (0,2,6,8,9,10,11,12,13,14,15) ∏
逻辑函数的最小项标准式及最大项标准式与该函数的真值表有着密切的关系,一个逻辑函数
的最小项标准式及最大项标准式都是唯一的。
2-4 逻辑函数的化简
同一逻辑函数有着不同的表达式,不同的表达式对应着实现此函数的不同逻辑电路。逻辑电
路设计者总是希望在保证技术指标满足需求的条件下,选用最简的逻辑电路,这就要求得到的逻
辑函数表达式最简。把逻辑函数转换成最简表达式的过程称为逻辑函数化简,或最小化。
门级最简需满足下列条件之一:
① 最简与或式:与项的数目最少、每个与项的变量数最少。
② 最简或与式:或项的数目最少、每个或项的变量数最少。
满足了上述条件之一,就可以使逻辑电路的门数最少、门的输入端数最少、门的级数最少。
因此这种化简又称门级最简,或门级最优。
逻辑函数的化简方法有 3 种:代数法、卡诺图法和蕴涵法。代数法化简是利用逻辑代数的基
本定律和规则简化逻辑函数表达式。代数法技巧性强,要求能熟练掌握并灵活运用逻辑代数的基
本定律和规则。
2-4-1 与或式的化简
与或式化简常用的公式主要有 5 个:
A A 1
A AB A
AB AB A
A AB A B
AB AC BC AB AC
+ =
+ =
+ =
+ =+
++=+
根据代入规则,这些常用公式可以演化出多种形式。例如,由
A + =+ AB A B
可推得
A + =+ AB A B
所谓化简过程就是应用代入规则,把某子函数看成一个变量,进而应用公式简化。在这一过
程中经常需要变换子函数的形式,以便能够应用公式进行简化。常用的方法有以下 5 种。
1.吸收法
利用公式 A + = AB A和 A + =+ AB A B ,消去多余变量。
【例 2-13】化简函数 Y AB AB C D E = + + ( ) 。
解:根据公式 A + AB A = 得
第 2 章 逻辑代数基础 35
[ ]
( )
1( )
Y AB AB C D E
AB C DE
AB
=+ +
= ++
=
【例 2-14】化简函数 Y AB AC BC =++ 。
解:根据公式 A + AB A B = + 得
( )
Y AB AC BC
AB A BC
AB ABC
AB C
=++
= ++
= +
= +
2.并项法
利用公式 AB AB A + = ,两项合并为一项且消去一个变量。
【例 2-15】化简函数 Y ABCD ABCD ABCD ABCD =+++ 。
解:根据公式 AB AB A + = 得
() ()
Y ABCD ABCD ABCD ABCD
ABD C C ABD C C
ABD ABD
BD
=+++
= ++ +
= +
=
3.消去法
利用多余项定理 AB AC BC AB AC ++=+ ,消去多余项。
【例 2-16】化简函数 Y AC ADE CD =+ + 。
解:根据多余项定理,得
Y AC ADE CD
AC CD AD ADE
AC CD
=+ +
=+++
= +
4.配项法
当无法使用可用公式时,可先增加一些项,再利用增加项消去多余项,最终减少总的项数。
一是利用互补律1 = + A A ,增加项数,二是利用公式多余项定理 AB AC AB AC BC +=++ ,增
加项数。
【例 2-17】化简函数 Y AB BC BC AB =+++ 。
解一:根据互补律,得
()( )
( )( )( )
Y AB BC BC AB
AB BC BC A A AB C C
AB ABC BC ABC ABC ABC
AB BC AC
=+++
= + + ++ +
=+ ++ + +
=++
解二:根据多余项定理,得
36 数字逻辑(第三版)
( )
( )( )
Y AB BC BC AB
AB BC BC AB AC
AB AC BC BC AC AB
AB AC BC
=+++
=+ + ++
= ++ + ++
=++
5.综合法
以上方法并不孤立,通常在化简一个函数时要综合利用多种方法。
【例 2-18】化简函数 Y AB AC BC BC BD BD ADE F G = +++++ + + ( )。
( )
( )
Y AB AC BC BC BD BD ADE F G
ABC BC BC BD BD ADE F G
= +++++ + +
= ++++ + +
A BC BC BD BD ADE F G ( )
A BC BC BD BD
A BC BC BD BD CD
A BC BD CD
=+ + + + + +
=+ + + +
=+ + + + +
=+ + +
或者
=+ + + A BC BD CD
2-4-2 或与式的化简
或与式的化简有 3 种方法。
1.常规法
常规法化简类似于或与的化简,化简中常用的公式主要有
( )( )
( )
( )
( )( )( ) ( )( )
A BA B A
AA B A
A A B AB
A BACB C A BAC
+ +=
+ =
+ =
+ + +=+ +
2.二次对偶法
利用对偶规则,先求出对偶式,再将对偶式化简为最简与或式,最后再求一次对偶,则得到
最简或与式。
【例 2-19】将函数 Y AA B B C B C =+ + + ( )( )( ) 化简成最简或与式。
解:先求其对偶函数 Y'为
( )
Y' A AB BC BC
A B BC C
A B
=+ + +
=++ +
= +
再次求对偶,得
Y Y' ' AB = = ( )
第 2 章 逻辑代数基础 37
3.二次求反法
利用反演规则,先求出反函数,再将反函数化简成最简与或式,再求一次反,则得到最简或
与式。
【例 2-20】将函数 Y AB AB AC BD = ++ + 化简成最简或与式。
解:先求其反函数Y 为
( )( )( )( )
( )( )( )
( )( )
Y A BA BACB D
AB AB A C B D
AB ABC ABC B D
AB ABCD
=+ + + +
=+ + +
=+ + +
= +
再次求反函数,得
Y Y A BA B C D == + +++ ( )( )
从上述的代数法化简看出,它主要是应用逻辑代数中的基本公式和规则,以及一定的技巧,
没有严格的规则可循,得到的结果是否是最简也难以判断。
2-5 卡 诺 图
卡诺图(Karnaugh Map)是逻辑函数真值表的一种图形表示。利用卡诺图可以有规律地化简
逻辑函数表达式,并能直观地写出逻辑函数的最简式。卡诺图化简法又称图形化简法。
2-5-1 卡诺图构成
卡诺图是一种平面方格阵列图,n 个变量的卡诺图由 2n 个小方格构成。卡诺图是真值表图形
化的结果,n 个变量函数的真值表是用 2n 行的纵列依次给出变量的 2n 种取值,每行的取值与一个
最小项对应;而 n 个变量函数的卡诺图是用二维图形中 2n个小方格的坐标值给出变量的 2n种取值,
每个小方格与一个最小项对应。
图 2-2 为二变量卡诺图,它由 4 个方格组成。图 2-2(b)表明各个方格与这两变量的关系。
每一列和每一行上的 0 和 1 分别代表变量 A 和 B 的值。类似,可以画出三、四、五变量的卡诺图,
它们由 2n
(n=3,4,5)个方格构成,如图 2-3 所示。
A A
A
B 0 1
A
B 0 1
0 m0 m2 0 AB AB
B{ 1 m1 m3 B{ 1 AB AB
(a) (b)
图 2-2 二变量卡诺图的构成
为表示方便,图中小方格也可省略最小项符号 m 而只标明下标。变量沿坐标轴方向按循环码
的规律进行取值。如图 2-3(a)中,变量 AB 的取值依次是 00、01、11、10,也可以依次取为 10、
11、01、00 等,但此时最小项与小方格的对应关系发生了变化,应该作出相应的调整。五变量卡
诺图可看做是由两个四变量卡诺图组成,而六变量卡诺图可看做是由 4 个四变量卡诺图所组成,
因为其比较复杂并且用得不多,所以不再给出。
38 数字逻辑(第三版)
A A
AB
C 00 01 11 10
AB
CD 00 01 11 10
0 m0 m2 m6 m4 00 m0 m4 m12 m8
C 1 m1 m3 m7 m5 01 m1 m5 m13 m9
11 m3 m7 m15 m11
D
B C
10 m2 m6 m14 m10
B
(a)三变量卡诺图 (b)四变量卡诺图
A
ABC
DE 000 001 011 010 100 101 111 110
00 m0 m4 m12 m8 m16 m20 m28 m24
01 m1 m5 m13 m9 m17 m21 m29 m25
11 m3 m7 m15 m11 m19 m23 m31 m27
E
D
10 m2 m6 m14 m10 m18 m22 m30 m26
C C
(c)五变量卡诺图
图 2-3 三、四、五变量卡诺图的构成
从以上各卡诺图可看出:卡诺图上变量的排列有一定的规律性。假定把彼此只有一个变量不
同,且这个不同变量互为反变量的两个最小项称为相邻最小项,那么卡诺图上变量的排列规律将
使最小项的相邻关系能在图形上清晰地反映出来。根据此定义,可发现在卡诺图中只存在 3 种最
小项间的相邻关系。
(1)几何相邻
即几何位置上相邻的最小项,如四变量卡诺图中与 m0的相邻最小项 m1和 m4,这些最小项对
应的小方格与 m0 对应的小方格分别相连。
(2)相对相邻
如四变量卡诺图中 m0的相邻最小项中的 m2和 m8。m0和 m2处在同一列的两端,m0和 m8处在
同一行的两端,它们之间的位置都是“相对的”。
(3)重叠相邻
如五变量卡诺图中的 m3 与 m1、m2、m7为几何相邻,与 m11相对相邻,与 m19则是重叠相邻。
对这种情形,可将卡诺图左右两边的矩形重叠,凡上下重叠的最小项即为重叠相邻,只有 5 个及
其以上变量的卡诺图中可能存在重叠相邻。
总之,卡诺图的构成有两大特点。
① n 个变量的卡诺图由 2n 个小方格组成,小方格与最小项一一对应。
② 卡诺图上处在相邻、相对、重叠位置的小方格所代表的最小项为相邻最小项。
B B
第 2 章 逻辑代数基础 39
2-5-2 典型卡诺圈
1.逻辑函数在卡诺图上的表示
当逻辑函数表达式是“最小项之和”的形式时,只要在卡诺图上找出那些与给定逻辑函数包
含的最小项相对应的小方格,并标以 1,其余标 0,即得到该函数的卡诺图。
例如,Y AB m m (,) = +1 3 的卡诺图如图 2-4 所示;又如,Y ABC m ( , , ) (1,3,5) = ∑ 的卡诺图如
图 2-5 所示。
当逻辑函数是与或表达式,则要找出与各项所对应的方格(可能不止一个),并在这些方格中
标以 1,其余的方格标 0。
例如,Y A B C D ABC CD (,, , ) = + ,ABC 对应的方格为 0111 和 0110,CD 对应的方格为 0011、
0111、1111、1011,它的卡诺图如图 2-6 所示。
A
B 0 1
AB
C 00 01 11 10
0 0 0 0 0 0 0 0
1 1 1 1 1 1 0 1
图 2-4 Y AB m m (,) = +1 3 图 2-5 Y ABC m ( , , ) (1,3,5) =∑ 图 2-6 Y A B C D ABC CD (,,, ) = +
的卡诺图 的卡诺图 的卡诺图
当逻辑函数表达式为其他形式时,可将其变换成上述形式后再作卡诺图。
根据上述讨论,若某小方格为 1,说明逻辑函数包含对应的最小项,否则就不包含。通常将
卡诺图上填 1 的小方格称为 1 方格,填 0 的小方格称为 0 方格。
2.卡诺圈
根据定律 AB AB A + = 和相邻最小项的定义可知,两相邻最小项可以合并为一项并消去一个
变量,如三变量相邻最小项 ABC 和 ABC 可合并为 AC 。
卡诺图能直观地反映最小项的相邻关系。用卡诺图化简逻辑函数的基本原理是通过把卡诺图上表
征相邻最小项的小方格“圈”在一起进行合并,从而达到用一个简单的“与”项代替若干最小项的目
的。通常把用来覆盖那些能由一个简单“与”项代替的若干最小项的“圈”称为卡诺圈。
(1)二变量卡诺图的典型卡诺圈
图 2-7 给出了二变量卡诺图的典型卡诺圈。
A
B 0 1
A
B 0 1
A
B 0 1
A
B 0 1
A
B 0 1
0 1 0 0 0 0 0 1 0 0 1 0 0 1 1
1 0 0 1 1 1 1 1 0 1 1 1 1 1 1
(a) (b) (c) (d) (e)
图 2-7 二变量典型卡诺圈
AB
CD 00 01 11 10
00 0 0 0 0
01 0 0 0 0
11 1 1 1 1
10 0 1 0 0