数字电路与系统设计(修订版)(txt+pdf+epub+mobi电子书下载)


发布时间:2021-08-02 16:42:17

点击下载

作者:丁志杰,赵宏图,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数字电路与系统设计(修订版)

数字电路与系统设计(修订版)试读:

前言

本书根据作者多年教学经验编写而成。虽然现代集成电路技术发展十分迅速,数字集成电路的功能越来越强大,但是其应用基础还是传统的数字电路的内容。本着加强基础的原则,本书重点讲述数字电路的分析与设计方法,简要介绍了电子信息类专业学生应该具备的数制与编码、逻辑门电路基础、波形的产生与整形、ADC/DAC及现代广泛应用的可编程器件方面的知识。只有打牢基础,才可能在实践中比较容易地学习、掌握新器件的使用方法,从而在求职、开发新产品等领域的竞争中立于不败之地。

为满足日益增长的对数字系统设计方法的需求,本书编写了一章数字系统设计方法的内容。

绝大多数半导体生产厂商发布的数据手册、可编程器件的开发工具、数字系统的软件仿真工具等都采用了ANSI/IEEE Std 91a-1991符号系统中的第二套,即特定符号系统。本着教学与实践相结合的原则,本书也采用了ANSI/IEEE Std 91a-1991符号系统中的特定符号系统,以方便读者查阅文献。

为方便双语教学,书中给出了部分所涉及的专业术语的英文名称。

本教材给出了丰富的例题,每一章后面的习题也比较丰富,以便于读者自学。本书可作为高等学校电子信息、通信工程、计算机科学与技术、电气工程及其自动化、机电工程等本科专业相关课程的教材,也可供相关领域的工程技术人员学习参考。

为适应教学模式、教学方法和手段的改革,本书配套电子课件、习题参考答案等,请登录华信教育资源网(http://www.hxedu.com.cn)注册下载。

本书第1章、第5章、第6章、第9章、第10章和第11章由丁志杰编写,第2章、第4章第3、4节、第7章由赵宏图编写,第3章、第4章第1、2、5节、第8章由梁淼编写。另外,焦定红、刘晓玫、焦逸展、赵其蕙、丁杨也参与了本书的部分编写工作。本书由丁志杰担任主编,负责全书的组织、策划、统稿和定稿工作。全书由程震先教授、张洪欣教授审阅。在审阅过程中,两位教授认真负责,在仔细阅读书稿的基础上提出了许多宝贵的建议,指出了一些错误、不妥之处,使我们受益匪浅。在此谨向两位教授致以崇高的敬意。

由于编者的水平有限,加上时间的仓促,书中难免会出现错误和不妥之处,敬请读者指正。作者2014年8月于北京

第1章 数制与编码

众所周知,在计算机系统中使用的是二进制数,而人类在日常生活中使用的则是十进制数。因此,当我们要将数据输入到计算机时,就需要进行数制转换(Base Conversion),将十进制转换为二进制;而当计算机将数据输出(显示、打印)时,则需要将二进制转换为十进制,因此我们必须熟悉二进制数和十进制数之间的转换。为记忆、阅读方便,人们还经常使用八进制和十六进制,因此我们也要熟悉它们与二进制及十进制之间的关系。

除了数字外,数字系统还要存储、处理一些字符,如字母、运算符、各种符号、汉字等,这就需要用二进制码去表示这些信息,以适应数字系统中的二进制。

1.1 数制

任意进制的数都是由若干位数字组成的,每位上的数字所表示的意义是不相同的,也就是它们的权不同。例如,十进制数的345.67所表示的意义为:21

也就是说,在345.67中,3的权为10,4的权为10,…

一般情况下,R进制的数N可表示为如下形式:

式中,R为基数,K为在0,1,…,R-1范围中取值的数字。这个i数的按权展开式为i

由式(1.2)可见,第i位上的数字K所表示的数的大小为K×R,iii这个R就是K 的权。整个数的大小是所有数字的加权之和。i

对于十进制有,d的取值范围i为0,1,…,9;

对于二进制有,b的取值范围为i0,1;

对于八进制有,q的取值范围为i0,1,…,7;

对于十六进制有,h的取值范i围为0,1,…,9,A,B,C,D,E,F。其中,A,B,C,D,E,F分别对应于十进制的10,11,12,13,14,15。

1.2 数制转换

1.2.1 二、八、十六进制到十进制的转换

根据数制(Number System)的定义,二、八、十六进制到十进制的转换用加权相加公式直接相加即可。210-1-2【例1.1】(101.001)=1·2+0·2+1·2+0·2+0·2+1·2-32=(5.125)1010-1-2【例1.2】(32.56)=3·8+2·8+5·8+6·8=(26.71875)81010-1【例1.3】(ED.A)=14·16+13·16+10·16=(237.625)16101.2.2 二、八、十六进制之间的转换

表1.1所示为对应十进制数0~15的二、八、十六进制数。表1.1 十、二、八、十六进制数对照表

观察表1.1中二进制数和八进制数之间的关系可知,每三位二进制数对应一位八进制数,由此可得二进制到八进制和八进制到二进制的转换方法。【例1.4】(10010111.1101)=(010 010 111.110 100)2=(227.64)28【例1.5】(227.64)=(010 010 111.110 100)8=(10010111.1101)22

例1.4说明了二进制到八进制的转换方法:小数点左边从右向左每三位一组,最左边一组不够三位时左边补0;小数点右边从左向右每三位一组,最右边一组不够三位时右边补0。然后按顺序分别写出每三位二进制数所对应的八进制数即可。例1.5说明了八进制到二进制的转换方法:将八进制数转换成二进制数时,只要将每位八进制数按顺序分别写成它们所对应的二进制数即可。注意,整数部分除最高位外,每个三位二进制数中最左边的0不能省略;小数部分除最低位外,每个三位二进制数中最右边的0也不能省略。

观察表1.1中二进制数和十六进制数之间的关系可以看出,每4位二进制数对应一位十六进制数。由此可得二进制到十六进制和十六进制到二进制的转换方法。【例1.6】(110110111.011)=(0001 1011 0111.0110)2=(1B7.6)216【例1.7】(1C7.6)=(0001 1100 0111.0110)16=(111000111.011)22

例1.6说明了二进制到十六进制的转换方法:小数点左边从右向左每4位一组,最左边一组不够4位时左边补0;小数点右边从左向右每4位一组,最右边一组不够4位时右边补0。然后按顺序分别写出每4位二进制数所对应的十六进制数即可。例1.7说明了十六进制到二进制的转换方法:将十六进制数转换成二进制数时,只要将每位十六进制数按顺序分别写成它们所对应的二进制数即可。注意,中间位的所有的0均不能省略。

八进制数到十六进制数之间的转换可以通过转换为二进制数作为中间过程来方便地完成。例1.8和例1.9说明了这个转换过程。【例1.8】(1C7.6)=(0001 1100 0111.0110)=(111 000 162111.011)=(707.3)28【例1.9】(707.3)=(111 000 111.011)=(0001 1100 820111.0110)=(1C7.6)2161.2.3 十进制到二、八、十六进制的转换

将十进制数转换到二、八、十六进制数时,要将整数部分和小数部分分别进行转换,整数部分用连除法,而小数部分用连乘法。

1.十进制数到二进制数的转换

整数部分转换用连除法,即用2去除所要转换的数,所得余数即为b;再用2去除上一步所得的商,所得余数为b,…,一直除到商01为0时为止。【例1.10】(59)=(?)102

所以(59)=(111011)。102

小数部分转换用连乘法,将小数部分乘以2,所得积的整数部分即为b;积的小数部分再乘以2,所得积的整数部分为b,…,一直-1-2乘到所要求的精度为止。【例1.11】(0.8125)=(?)102

所以(0.8125)=(0.1101)。102

例1.11中的小数部分最后可以乘到0,此时的转换是精确转换,即十进制数与转换后得到的二进制数相等。【例1.12】(0.62)=(?),要求小数点后精确到5位。102

所以(0.62)≈(0.10011)。102

例 1.12 中的小数部分永远乘不到 0,此时不能做精确转换,只-1-4-5能取近似值。转换误差为|0.62-0.10011|=0.62-(2+2+2)102=0.62-0.59375=0.02625。如果要求精度更高,可增加转换后小数的位数。【例1.13】(59.62)=(?),要求转换结果精确到小数点后5102位。

解:将整数、小数部分分别转换,如例1.10和例1.12所示,有

2.十进制数到八进制数和十六进制数的转换

方法一:与十进制数转换到二进制数类似,将十进制数转换到八进制数(十六进制数)时,整数部分连除以8(16),余数为q(h);小数部分连乘以8(16),整数部分为q(h)。ii-i-i【例1.14】(59)=(?)108

所以(59)=(73)。108【例1.15】(59)=(?)1016

所以(59)=(3B)。108【例1.16】(0.8125)=(?)108

所以(0.8125)=(0.64)。108

例1.16中的小数部分最后可以乘到0,此时的转换是精确转换,即十进制数与转换后得到的八进制数相等。【例1.17】(0.62)=(?),要求小数点后精确到5位。108

所以(0.62)≈(0.47534)。108

例1.17中的小数部分永远乘不到0,此时只能取近似值。

用方法一将十进制小数转换为十六进制小数的例子读者可自己练习。

方法二:先将十进制数转换为二进制数,再将二进制数转换为八进制数或十六进制数。

比较方法一与方法二可见,由于乘8(16)、除8(16)比乘2、除2在运算数时更复杂,所以用方法二可减轻心算负担;但用方法一运算的次数较少,也有优点。读者可自行确定使用那种方法。

1.3 二进制符号数的表示方法

所谓符号数,就是带正、负号的数。在数字系统中所有信息都是由二进制码表示的,数的正、负也由二进制码表示。本节介绍二进制符号数的表示方法(Signed Number Representation)。1.3.1 原码表示法

所谓原码表示法,就是用一位二进制数表示符号:0表示正数,1表示负数;而数的大小则以该数的绝对值表示。符号位通常放在最高位。如某数字系统中用8位存储器存放数据,其中最高位为符号位,其余7位为数的绝对值。例如:

以上例子说明:n 位数字系统采用原码表示法时所能表示的十进n-1n-1制数的范围为-(2-1)~+(2-1),其中0有两种表示形式:+0和-0。1.3.2 反码表示法

1.反码(1's Complement)

二进制数每一位上的数字不是0就是1。定义0的反码为1,1的反码为0。一个二进制数的反码定义为将二进制数的每一位分别求反而得到的二进制码。

2.符号数的反码表示法

所谓符合数的反码表示法,就是用一位二进制数表示符号:0表示正数,1表示负数;正数的大小用原码表示,而负数的大小则以该数的反码表示。符号位通常放在最高位。如某数字系统中用8位存储器存放数据,其中最高位为符号位,其余7位存放数的大小。例如:

以上例子说明:n位反码表示法所能表示的十进制数的范围为-n-1n-1(2-1)~+(2-1),其中0有两种表示法。1.3.3 补码表示法

1.补码(2's Complement)

设数N为有n位整数、m位小数的二进制数,则N的补码定义为:

由定义可知:N的补码与N的大小有关,还与位数n有关。8【例1.18】(11001)=2-11001=11100111补.88【例1.19】(11001.0101)=2-11001.0101=11100110.1011补.8

2.补码的求法

利用补码的定义式(1.3)当然可以求一个数的补码,但较为烦琐。补码有简单的求法,下面就是两种简单的求法。

方法一:将原码补足n位后求反加1即得其补码。【例1.20】 求二进制数N=10001的补码,设字长n=8位。

解:因为补码与位数有关,故先将数N的整数部分补齐为8位:N=00010001

对N求反:11101110

将求反后的数加1得:11101111

此即n=8时N的补码。

方法二:将原码补足n位后,从右往左第一个1及其右边的0不变,其余各位求反即得N的补码。【例1.21】 求二进制数N=10010的补码,设字长n=8位。

解:因为补码与位数有关,故先将数N补齐为8位:

其他各位求反 ↑ ↑ 最右边一个1及其右边的0不变

如果所给二进制数为小数,则应将其整数部分补齐为n位。

3.符号数的补码表示法

所谓符号数的补码表示法,就是用一位二进制数表示符号:0表示正数,1表示负数;正数的大小用原码表示,而负数的大小则以其绝对值的原码的补码表示。符号位放在最高位。如某数字系统中用8位存储器存放数据,其中最高位为符号位,其余各位存放数的大小。例如:

以上例子说明:+0和-0的补码一样,为全0;n位符号数的补码表n-1n-1示法所能表示的十进制数的范围为-2~+(2-1)。

求负数的补码时可以不特别考虑符号位,而将符号位作为一位数来处理。如在n=8时求-100101的补码,可以这样求:将100101补齐为8位00100101,其补码为11011011,其中最高位符号位为1,表明这是负数。

4.利用补码求符号数的加减运算

如果将加数和被加数均以其补码表示,则只用加法运算器就可完成加减运算。显然这样可以节省硬件,降低生产成本。运算时符号位与其他位一样参与运算。若符号位产生进位,则在结果中忽略该进位,不予考虑。【例1.22】 设n=8,有两个正数A=10011,B=1101。试用补码求A+B,A-B,B-A,-A-B。

解:(A)=00010011,(B)=00001101,(-A)补.8补.8=11101101,(-B)=11110011补.8补.8

例1.22说明,在运算时符号位如同其他位一样参与运算;运算结果若符号位有进位,则该进位位在结果中不予考虑;运算结果以补码形式表示。读者可验证结果的正确性。

为什么用补码相加可以做加减运算呢?下面给予证明。nn

设有两个n位正数N、N,则-N、-N的补码分别为2-N和2-12121N。在n位加法器中进行加减运算时共有如下4种情况:2

① N+N就是两个正数相加,结果为正数;12nn

② N-N=N+(2-N)=2-(N-N),结果取决于N-N的符12122121n号:如果N>N,则结果为负数,2-(N-N)就是-(N-N)的补212121nn码;如果N<N,则结果为2+(N-N),由于N-N>0,而2为第211212n-1位的进位,位于第n位(n位运算器的最高位为第n-1位)上,在n位运算器之外,所以结果为N-N,是正数;12

③ N-N,结果与N-N类似;2112

④-N-N=(2-N)+(2-N)=2+[2-(N+N)],其中第1个2 121212为第n-1位的进位,位于第n位上,在n位运算器之外,舍去不管;而n[2-(N+N)]就是负数-(N+N)的补码。1212

由此证明了用补码进行加减运算的正确性。

对于n=8的情况,当然运算结果不能超出8位补码所能表示的数值范围,否则会产生所谓的溢出,即运算结果发生错误。【例1.23】设n=8,有两个正数A=110011,B=1101101。试用补码求A+B,A-B,B-A,-A-B。

解:(A)=00110011,(B)=01101101,(-A)补.8补.8=11001101,(-B)=10010011补.8补.8

例1.23中,A+B的结果为负数,而-A-B的结果为正数,二者显然错了;而-A+B和A-B结果正确。

两个符号相异的数相加,结果的绝对值小于任一加数的绝对值,所以此时运算结果不会超出n位符号数的表示范围,即不会发生溢出。所以例1.23中A-B和-A+B运算结果肯定正确。

两个正数相加,由于两个数的符号位均为 0,所以符号位肯定不n-1会产生进位;如果此时两个数的绝对值之和不大于(2-1),则第n-2位(即最高数字位)就不会产生进位,运算结果就正确;如果此n-1时两个数的绝对值之和大于(2-1),则第n-2位就会产生进位,这个进位使第n-1位(即符号位)为1,结果成了负数,显然错了,例1.23中的A+B就是这种情况。

两个负数相加,由于两个数的符号位均为1,所以此时符号位(第n-1位)肯定有进位;如果此时第n-2位有进位,则运算结果为负数,结果正确;如果此时第n-2位无进位,则运算结果为正数,结果显然错了,例1.23中的-A-B就是这种情况。

综上所述,利用符号数的补码进行加减运算时,如果两个加数的绝对值之和大于n位符号数的表示范围,则A+B和-A-B的运算结果就会发生错误。这类错误称为溢出。溢出只发生在两个加数的符号位相同时。在设计加法器时必须考虑溢出问题,并在溢出时给出报警信号,以提示运算结果出错。

根据以上分析并观察例1.22和例1.23可知:当第n-1位(符号位)和第n-2位(最高数字位)不同时有进位(两个负数相加时)或不同时无进位(两个正数相加时)时有溢出发生。设计加法器时可根据这个原理设计溢出指示电路。1.3.4 符号数小结

本节介绍了符号数的三种表示法,对于加减运算最重要的是补码表示法。表1.2所示为n=8时对应十进制数-128~+127之间的二进制数的三种编码结果。表1.2 符号数的三种表示法

最后强调说明一下“补码”与“符号数的补码表示”之间的关系。求一个数的补码,与符号数无关,按1.3.3节中2所给的方法运算即可,在此只涉及求补码;而符号数的表示,则涉及两个概念:求补和符号数的表示。所以,习题1-9只是求补练习(所给的数只有正数);而习题1-10则是考求补和符号数的表示两个概念(所给的数既有正数,也有负数)。

1.4 二-十进制编码

数字系统中使用的是二进制数,而在许多场合特别是在输入(如键盘等)/输出(如显示、打印等)时需要处理十进制数。那么十进制数在机器里面是怎样表示的呢?这就是本节所要讨论的问题,即二-十进制码(Binary Coded Decimal,BCD)。

若要表示0~9这10个十进制数字,需要10种组合。三位二进制码只有8种组合,不够用;而4位二进制码有16种组合,可用。当然,位数大于4的任意多位二进制数均可用,但那样会造成资源浪费,故一般情况下均用4位二进制数对一位十进制数进行编码。用以表示十进制数字的二进制编码称为BCD码。从4位二进制码的16种组合中取10种去表示10个十进制数字,共有=16!/(10!·(16-10)!)种取法;而每种取法又有10!种分配方法;故共有16!/6!种可能的BCD编码方法可供选择,当然我们不可能全用。表1.3所示为几种常用的BCD码。表1.3 常用的BCD码续表

表1.3中,8421BCD、5421BCD和2421BCD三种编码为有权码,即它们从高到低的各位都有固定的权值(8421BCD码从高到低各位的权值分别为8、4、2、1,5421BCD和2421BCD的各位的权类似定义),而所有4位码加权相加的结果就是它所表示的十进制数字。而余3码和余3循环码则是无权码,因为它的各位没有固定的权值。观察表1.3可知,若是各位的权分别为8、4、2、1,则对应于同一个十进制数字,余3码比8421BCD码多3,余3码由此得名。

表1.3中的前10组编码分别对应十进制数字0~9,称为有效编码;而后6组没有对应任何十进制数字,没有任何意义,是无效的,故称为无效编码。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载