薛宏熙《数字逻辑设计》cha课件_第1页
薛宏熙《数字逻辑设计》cha课件_第2页
薛宏熙《数字逻辑设计》cha课件_第3页
薛宏熙《数字逻辑设计》cha课件_第4页
薛宏熙《数字逻辑设计》cha课件_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2008.11,1,第4章数的表示方法和算术运算电路,【课前思考】【学习指南】4.1数制和编码4.2无符号数的加法运算4.3有符号数的表示方法和算术运算4.4用EDA工具设计算术运算电路示例【本章小结】,2008.11,2,4.1数制和编码,日常生活中最常见的数据表示形式是十进制数,与此同时也存在大量的其它数制。例如12英寸为1英尺是十二进制;60秒为1分钟是六十进制;24小时为1天是二十四进制。数字电路只可能有2个稳定状态(H/L),因此数字系统内部采用二进制数也合乎逻辑。把数据转换为一组代码(这里特指二进制代码)称为编码。,2008.11,3,数的位置表示法,十进制数2758.12可以表示为:(2758.12)10=2103+7102+5101+8100+110-1+210-2十进制数的一般形式:(D)10=dn-1dn-2did1d0.d-1d-m可以表示为:式(4-1)中:下标i代表数字di的位置,pi是十进制数第i位数字的权。十进制数中每一位di有10种可能的取值,并且其权重为10的幂,故称其为以10为基的数。,2008.11,4,数的位置表示法(续),二进制数的一般形式:式(4-2)中:下标i代表数字bi的位置,pi是二进制数第i位数字的权。二进制数中每一位bi有2种可能的取值,并且其权重为2的幂,故称其为以2为基的数。,2008.11,5,数的位置表示法(续),r进制数的一般形式:式(4-3)中:下标i代表数字si的位置,pi是r进制数第i位数字的权。r进制数中每一位si有r种可能的取值,并且其权重为r的幂,故称其为以r为基的数。,2008.11,6,数的位置表示法(续),r进制数第i位数字si的权值为pi,属于有权编码。(与此相对的是无权编码)数字系统中常用的数制:提醒:二进制数中某一位bi的单位为比特(bit),比特的取值可为0或1,这里的0或1具有数值的意义。第1章中谈及布尔函数和布尔变量时,布尔变量的取值也可用0或1表示,但那时0的含义是假,1的含义是真。,2008.11,7,二进制数与十进制数的相互转换,二进制数转换为十进制数:式(4-2)是二进制数与十进制数相互转换的数学基础例:,2008.11,8,二进制数与十进制数的相互转换(续),十进制数转换为二进制数:通常把整数部分与小数部分分别处理整数部分:(1)将十进制整数除以2,所得余数即为对应二进制数最低位的值;(2)将上次所得商再除以2,所得余数即为对应二进制数次低位的值;(3)重复执行第(2)步的操作,直到商为0时为止。余数构成二进制数每一位的值。,例:,(45)10=(101101)2,2008.11,9,二进制数与十进制数的相互转换(续),十进制数转换为二进制数:整数部分转换简略的形式:,例:(45)10=(101101)2,2008.11,10,二进制数与十进制数的相互转换(续),十进制数转换为二进制数(续):小数部分:(1)将十进制小数乘以2,所得乘积的整数部分(0或1)即为对应二进制小数最高位的值;(2)将上次所得乘积的小数部分再乘以2,所得乘积的整数部分即为对应二进制小数次高位的值;(3)重复执行第(2)步的操作,直到乘积的小数部分为0或所得小数部分已满足精度要求时为止。,例:,(0.6875)10=(0.1011)2,2008.11,11,二进制数与八进制数的相互转换,八进制数的二进制编码:3位二进制数对应于1位八进制数,2008.11,12,二进制数与八进制数的相互转换(续),二进制数转换为八进制数:3位二进制数对应于1位八进制数,转换算法非常简单:(1)以小数点为分界线,分别向左和向右每3位看作一组。注意,遇到不足3位时将其补足3位,向左扩展时向高位补0,向右扩展时向低位补0。(2)把每一组的二进制码替换为对应的八进制码。例:,2008.11,13,二进制数与八进制数的相互转换(续),八进制数转换为二进制数:(1)以小数点为分界线,分别向左和向右对每一八进制码进行转换。(2)把每一八进制码替换为对应的二进制码。注意,转换后的二进制码必须是3位,例如28应转换为0102,而不是102。例:,2008.11,14,二进制数与十六进制数的相互转换,十六进制数的二进制编码:4位二进制数对应于1位十六进制数,2008.11,15,二进制数与十六进制数的相互转换(续),二进制数转换为十六进制数:4位二进制数对应于1位十六进制数,转换算法非常简单:(1)以小数点为分界线,分别向左和向右每4位看作一组。注意:遇到不足4位时将其补足4位,向左扩展时向高位补0,向右扩展时向低位补0。(2)把每一组的二进制码替换为对应的十六进制码。例:,2008.11,16,二进制数与十六进制数的相互转换(续),十六进制数转换为二进制数:(1)以小数点为分界线,分别向左和向右对每一十六进制码进行转换。(2)把每一十六进制码替换为对应的二进制码。注意,转换后的二进制码必须是4位,例如316应转换为00112,而不是112。例:,2008.11,17,十进制数的二进制编码,用二进制代码表示十进制数称为二十进制码或BCD码(BinaryCodedDecimal,BCD)。4位二进制代码可以代表24=16种状态,而十进制数只需要10种状态,因此需要舍弃其中6种状态不用。8421码:8421分别代表各位的权值。最高位的权值为8、次高位为4、再次为2、最低位为1。,2008.11,18,十进制数的二进制编码(续),余3码:是一种无权码。,2008.11,19,十进制数的二进制编码(续),十进制数的有权编码示例:,2008.11,20,格雷码,格雷码是一种无权码,其特点为任何2个相邻的代码之间只在某1位上取值不同。此特点在某些场合特别有用,可以减少代码变换过程中发生错误的机会,是一种高可靠性编码。右图为二进制数反射格雷码。反射码和二进制数之间的对应关系:,2008.11,21,格雷码(续),十进制数反射格雷码示例:,2008.11,22,字符编码,数字系统中,0和1不仅可以代表数字,而且可以进行组合用于表示字母、运算符以及控制符等。为了在各种数字系统之间方便地交换信息,必须使用统一的编码方案,目前被广泛使用的是ASCII码。(AmericanStandardCodeforInformationInterchange)ASCII码由7位二进制代码组成,共27=128个字符:英文字母:大写、小写字母各26个,共52个;数字(09):10个;专用符号:34个;控制符号:32个。,2008.11,23,字符编码ASCII码,2008.11,24,奇偶校验码,奇偶校验编码的规则:奇校验编码:编码结果中含奇数个1。偶校验编码:编码结果中含偶数个1。例:,2008.11,25,奇偶校验码(续),奇偶校验码是一种最简单的、能发现某些错误的编码。应用举例:信息发送/接收过程中采用偶校验检错:,2008.11,26,奇偶校验码(续),以偶校验编码为例,说明数据编码、传送及检错的过程:发送方给原始数据b6b5b4b3b2b1b0增加1个偶校验位b7,构成8位的偶校验编码。b7=b6b5b4b3b2b1b0(4-5)发送方把8位的偶校验编码b7b6b5b4b3b2b1b0发送出去。接收方收到8位的偶校验编码b7b6b5b4b3b2b1b0。接收方校验电路的输出信号为check,用来检查8位数据中取值为1的个数是否为偶数:check=b7b6b5b4b3b2b1b0(4-6)若为偶数(check=0),表明数据传送过程中没有发生错误,简单地将偶校验位去掉即得原始数据;若为奇数(check=1),表明数据传送过程中发生错误,接收方发出报警信号。,2008.11,27,奇偶校验码(续),偶校验的形成及校验电路:根据式(4-5)可以得到发送方的偶校验位(b7)形成电路;根据式(4-6)可以得到接收方的偶校验(check)电路,2008.11,28,4.2无符号数的加法运算,无符号数代表数的绝对值,或者是省略了符号的正数。1位全加器的实现:,2008.11,29,4位行波进位加法器,优点:结构简单、造价较低;缺点:进位信号由低位向高位逐级传递,当加法器的长度n较大时(例如32或64),进位信号的传播延时很大。改进思路:先行进位加法器进位链。,2008.11,30,加法器的先行进位进位链,2008.11,31,加法器的先行进位进位链(续),实例:4位加法器中每一位(i=03)的进位信号分析:,2008.11,32,4位加法器的先行进位进位链(续),根据布尔表达式(4-8)、(4-9)、(4-10)和(4-11)画出先行进位链的原理图。,2008.11,33,4位加法器的先行进位进位链(续),符号图:分析:低位进位信号c0到达进位链输出端(c4,c3,c2,c1)所经历的传播路径长度大体相同,因而延迟时间也大体相同。对于处于相对高位的c4来说,其延迟时间缩小!随着i的增大,ci的布尔表达式复杂度增大,相应电路的复杂度也增大,因此这种把ci逐级展开的方法不可能无限制地继续下去。当加法器的长度n较大时,可将其分组,组与组之间可以采用行波进位的方法,或在组间也采用先行进位的方法。,2008.11,34,4位先行进位加法器,2008.11,35,BCD码形式的十进制数加法运算,例:1位8421码十进制数加法器手工设计:有多种方法可供选择,例如列出真值表,写出相应的布尔表达式,最后导出电路图。(由于输入变量个数多达9个,此设计过程可能比较繁琐)借助普通的二进制数加法器,再加上辅助的修正电路构成目标电路。,2008.11,36,例:1位8421码十进制数加法器,图4.9初步设想:,2008.11,37,例:1位8421码十进制数加法器(续),校正条件分析:输入变量X和Y的取值为(09),再加上可能存在的低位进位cin,因而加法运算结果的取值范围为(019)。由于普通的4位二进制数加法器是逢16进位,而十进制数加法器是逢10进位,因而需要对4_adder_1的输出(Z和c)进行修正,修正的具体要求见表4.11(见下页)。仔细分析表4.11可以得出校正的判别条件和应采取的校正措施:,2008.11,38,例:1位8421码十进制数加法器(续),表4.11,2008.11,39,图4.9的改进,图4.9中的多路器可以省略,改进后的方案示于图4.10。,2008.11,40,图4.10的改进,图4.10中起校正作用的二进制数加法器4_adder_2只是实现加6(即二进制代码0110)或加0的运算,其长度可以缩短,改进后的方案示于图4.11。,2008.11,41,一个3位十进制数加法器的实例,2008.11,42,启示,想通过手工设计得到一个理想的结果,十分不易。精心设计和一般练习的效果大不相同。通过EDA工具设计数字电路省时省力。EDA工具提供的库元件一般都是精心制作的佳品。,2008.11,43,4.3有符号数的表示方法和算术运算,有符号定点数的编码方法:定点数:小数点的位置固定,常用的2种形式是:小数点放在最低位之后,这种形式表示的是整数。小数点放在最高位之前,这种形式表示的小数。从数学的观点出发,这2种形式没有本质的差别,仅仅相差一个比例系数。以下叙述中把小数点放在最低位之后,符号位放在最高位之前。,2008.11,44,二进制定点数的原码表示形式,小数点的位置只是一种约定,并不需要专门的硬件作标记。,2008.11,45,二进制定点数的原码表示形式(续),原码加法流程图:,2008.11,46,二进制定点数的补码表示形式,设二进制定点数X的表示形式为:X=0 xn-2xn-3xix0(字长n位,最高位为0)由X求X补的规则:当X为正数时,X补=X=0 xn-2xn-3xix0当X为负数时,(按位求反后末位加1)由以上规则求出的X补的最高位为符号位:符号位为0代表正数;符号位为1代表负数。,2008.11,47,二进制定点数的补码表示形式(续),由X求X补举例:【例4.1】:X=+01101,求X补:X为正数,X补=X=01101【例4.2】:X=01101,求X补:X为负数,第1步:对X按位求反:0110110010第2步:末位加1:1001010011,2008.11,48,二进制定点数的补码表示形式(续),由X补求X的规则:X补的符号位为0(正数)时,X补=X(二者相同)X补的符号位为1(负数)时,求X分2步走:第1步:包括符号位在内按位求反;第2步:在第1步的结果上末位加1,再在数值前添加负号。【例4.3】:X补=10011,求X:第1步:包括符号位在内按位求反:1001101100第2步:末位加1,再添负号:0110001101,2008.11,49,补码的加法运算,补码加法运算规则:,补码加法中的“溢出”问题:【例】:X=01011,Y=01000X补=01011,Y补=01000执行补码加法:X+Y补=01011+01000=10011结果不正确,因为2个正数相加的结果绝不应该是负数!分析原因:本例字长5位,而本例的(X+Y)超过了字长所能表示的范围。,2008.11,50,补码加法运算(续),发现“溢出”的方法(方法之一):把操作数X补和Y补的符号位向左扩展1位,并且新扩展的符号位与原来的符号位取值相同。即X补和Y补的字长由原来的n位扩展到(n+1)位。补码加法运算规则不变,即补码中各位(包括2个符号位在内)按照同样规则参加运算。若运算结果的2个符号位取值不同,表示运算结果“溢出”(应当发出报警信号);否则运算结果正常。,2008.11,51,补码加法运算(续),补码加法示例:,2008.11,52,补码加法运算(续),补码加法示例:,2008.11,53,补码加法运算(续),补码加法示例:,2008.11,54,补码加法运算(续),一个补码加法器的实例:,2008.11,55,补码的减法运算,补码减法运算规则:,为了发现运算过程中是否发生“溢出”,继续采用双符号位的补码形式。表示对Y补执行求补操作,即第1步:包括符号位在内按位求反;第2步:末位加1。,2008.11,56,一个补码加法/减法器的实例,由于补码加法与补码减法的流程相差甚少,唯一的差别是补码减法操作中需要对Y补多作一次求补操作。,2008.11,57,一个补码加法/减法器的实例,由于补码加法与补码减法的流程相差甚少,唯一的差别是补码减法操作中需要对Y补多作一次求补操作。广泛应用!,2008.11,58,二进制定点数的反码表示形式,由X求X反的规则:X为正数时,X反=X=0 xn-2xn-3xix0X为负数时,由以上规则求出的X反的最高位为符号位,符号位为0代表正数,符号位为1代表负数。【例4.8】:X=+01101,求X反:X为正数,X反=X=01101【例4.9】:X=01101,求X反:X为负数,X反=10010(按位求反),2008.11,59,二进制定点数的反码表示形式,由X反求X的规则:X反的符号位为0(正数)时,X反=X(二者相同)X反的符号位为1(负数)时,将X反按位求反,再在数值前面添加负号“”。【例4.10】:X反=10011,求X:第1步:包括符号位在内按位求反:1001101100第2步:在数值前面添加负号:0110001100,2008.11,60,反码的加法运算,为便于判断“溢出”,也采用双符号位。,2008.11,61,反码加法示例,设X=(5)10=(0101)2,Y=(6)10=(0110)2,求X+Y反双符号位X反=111010,Y反=111001,2008.11,62,反码的减法运算,2008.11,63,反码减法运算示例,设X=(5)10=(0101)2,Y=(6)10=(0110)2,求XY反双符号位表示,X反=111010,Y反=111001,:手工计算的准备工作:Y反|反=000110;,2008.11,64,4.4用EDA工具设计算术运算电路示例,补码形式的加法/减法器:输入信号:x(3.0)和y(3.0)是补码形式的有符号二进制数(1个符号位),sub_add是加法/减法的控制信号。输出信号:s(3.0)代表运算结果,是补码形式的有符号二进制数(1个符号位);overflow是溢出报警信号。,2008.11,65,补码形式的加法/减法器(续),VHDL行为描述:,2008.11,66,补码形式的加法/减法器(续),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论