版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章运算处理电路6学时2025/7/231学习目标与内容学习目标掌握限位条件下,数的表示及其运算理解数(符号和小数点)在数字电路中的表示掌握算术运算电路分析设计1位加法
多位加法乘法掌握数值比较电路、移位操作电路结构理解缩减式电路设计方法学习内容无符号数、有符号数,定点数、浮点数在有限位时的表示算术运算的溢出判断算术运算电路1位二进制加法/减法电路多位二进制加法电路BCD加法/减法电路乘法电路数值比较电路移位操作电路缩减式电路设计2025/7/2327.1数的表示与运算数字电路的低/高电平表示0/1。多个数字信号按一定方式排列,即可表示一组数值2025/7/233数的位置表示法01010101010101D6D0时间十进制数,无符号数/有符号数,整数/小数等都可以写成由0和1构成的数字组而0和1分别用电信号的低电平和高电平表示01010101101000000010010100101011110001110100011并行数据0100011,1100011,…串行数据01010101010101信号按位置排列7.1数的表示与运算限位数:位数有限且位数固定的数,如64位处理器的数据位数r进制的m位数,共有rm个,称rm为总数,最小数是m个0,最大数是m个最大数符4位十进制数的最小数000010,最大数999910,总数104(=10000)个电路中表示的数一定是有限位数的数(可表达,可实现,电路结构,成本)2025/7/234无符号数
有符号数无符号数:仅表示数值大小的数。m位r进制无符号数:0~(rm-1)有符号数:符号位
数值位。
m位有符号数:1位符号,m-1位数字,也称原码。m位r进制表示范围是-(rm-1-1)~+(rm-1-1)数字电路只能表达和处理二进制数符号在数字电路中的表示——最高位(0:正数,1:负数)2025/7/235反数对于限位数,如果两个数相加的结果是最大数,那么其中一个数是另外一个数的反数。D反数=(rm-1)-D,或D+D反数=rm-1若原数为正,则反数为负。若原数为负,则反数为正。十进制正负号的数值化表示:正号用0表示,负号用9表示求反数的方法:按位求“反”(包括符号位)(037)10的反数是(962)10,表示为(037)10反数=(999)10-(037)10=(962)10;(01001101)2的反数是(10110010)2表示为(01001101)2反数=(11111111)2-(01001101)2=(10110010)22025/7/236补数对于限位数,如果两个数相加的结果是数据个数的总数,那么其中一个数是另一个数的补数,或直接称为基r的补数。m位r进制数D的补数表示为D补数,则D补数=rm-D,或D+D补数=rm(=0,模rm)求补数的方法:反数+1。或按位:最低位求补数,其余各位求反数(包括符号位)。对于二进制数:从最低位往高位查探,出现1时,该位1及其所有低位0保留不变,其余所有高位求反(037)10的补数是(963)10,表示为(037)10补数=(1000)10-(037)10=(963)10;(01011011)2的补数是(10100101)2,表示为(01011011)2补数=(100000000)2
-(01011011)2=(10100101)2(10110100)2的补数是(01001100)2,表示为(10110100)2补数=(100000000)2-(10110100)2=(01001100)22025/7/237反数10100100反数01001011有符号数的原码、反码表示原码:符号
数值(SignMagnitude)表示法。m位有符号数的原码:符号1位,数值m-1位反码m位二进制反码dm-1dm-2…d1d0的数值大小:D=-dm-1×(2m-1-1)+dm-2×2m-2+…+d1×21+d0×20m位二进制反码所表示的数值范围:-(2m-1-1)~+(2m-1-1)正数的反码与原码一致。(01110101)2SM的反码表示为:(01110101)2SM=(01110101)2反码负数的反码:符号位不变,数值位按位求反。(10110110)2SM的反码表示为:(10110110)2SM=(11001001)2反码。0的反码:+0,-0,即00000,111112025/7/238
正数:原码、反码相同按位取反原码数值反码数值负数:(符号位不变)例:(+29)10=(011101)2SM,(-42)10=(1101010)2SM有符号数的补码表示补码m位二进制补码dm-1dm-2…d1d0的数值:D=-dm-1×2m-1+dm-2×2m-2+…+d1×21+d0×20m位带符号二进制数的补码所表示的数值范围:-2m-1~+(2m-1-1)正数的补码与原码一致。(01110101)2SM的补码表示为:(01110101)2SM=(01110101)2补码负数的补码:符号位不变,数值位从低位往高位找1,该1及其所有低位的0保持不变,其余数值高位按位求反;或反码加1。(10110110)2SM的补码表示为:(10110110)2SM=(11001010)2补码。或(10110110)2SM=(11001001)2反码+1=(11001010)2补码0的补码表示唯一,即0000。10000表示负得最多的数,不具有相同位数对应的原码数。其表示的原码数是(-16)102025/7/239
正数:原码、补码相同负数:(符号位不变)按位取反加1补码数值原码数值有符号数的原码、反码、补码表示原码——直观。0的表示不唯一,且运算繁琐反码——不直观,0的表示不唯一。但运算较方便补码——不直观。0的表示唯一,运算方便2025/7/2310反码,补码是同一个数(原码)的不同表示形式反数,补数是与原数不同的数
正数:原码、反码、补码相同按位取反原码数值反码数值负数:(符号位不变)按位取反加1补码数值原码数值(D反码)反码=D原码。(D补码)补码=D原码已知X补码,求(-X)补码?方法一:由X补码求出原码XSM,变符号,(-X)SM再表示为(-X)补码例1:(x)2补码=(01011101)2补码,知x是正数,(x)2SM=(01011101)2SM(-x)2SM=(11011101)2SM,则(-x)2补码=(10100011)2补码例2:(x)2补码=(11100110)2补码,知x是负数,(x)2SM=(10011010)2SM,(-x)2SM=(00011010)2SM,即-x是正数!则(-x)2补码=(00011010)2补码方法二:求补数,即对给定数(补码形式)求补数,得到给定数的负数的补码X补码、(-X)补码分别是X、-X的补码表示形式,是不同的2个数(但存在正负关系)。一个数的补数是与之有关系的另外一个数。(不能纠结于对“补码求补数”是啥。)例1:(x)2补码=(01011101)
2补码则(-x)2补码=(10100011)
2补码例2:(x)2补码=(11100110)2补码则(-x)2补码=(00011010)2补码2025/7/2311补数:最低位往高位,第一个1及低位0保持不变,其余高位取反补数补数((x)2补码)补数=(-x)2补码位扩展与截除位扩展无符号数:前面添0有符号数:反码和补码----符号扩展,原码呢?位截除(截位)无符号数:前面0可直接截除,非0位不可截除有符号数:反码和补码:前k位相同,可截除最前k-1位位数不够时,不扩位,则溢出2025/7/2312符号位后,数值位前,添07.1.2定点数与浮点数
2025/7/2313(a)11101010——数字电路系统中的格式,波形对应的数字(b)1110.1010——书写格式(c)23+22+21+2-1+2-3=14.625——相应的数据值定点数的表示111001100110011010011001
100110101110.01100110.0110
1001.10011001.1010带符号数原码
绝对值
带符号数反码
带符号数补码定点数-6.375的表示数字电路系统中的格式书写格式定点数原码、反码、补码的示例例7-1
分别写出十进制数87.25,-79,-59.625的二进制原码、反码和补码(+87.25)10SM=(01010111.01)2SM(+87.25)10SM=(01010111.01)2反码(+87.25)10SM=(01010111.01)2补码(-79)10SM=(11001111)2SM(-79)10SM=(10110000)2反码(-79)10SM=(10110001)2补码(-59.625)10SM=(1111011.101)2SM(-59.625)10SM=(1000100.010)2反码(-59.625)10SM=(1000100.011)2补码如果要求为限位数:整数12位,小数4位,原码、反码、补码又如何?(+87.25)10SM=(000001010111.0100)2SM(+87.25)10SM=(000001010111.0100)2反码(+87.25)10SM=(000001010111.0100)2补码(-79)10SM=(100001001111.0000)2SM(-79)10SM=(111110110000.1111)2反码(-79)10SM=(111110110001.0000)2补码(-59.625)10SM=(100000111011.1010)2SM(-59.625)10SM=(111111000100.0101)2反码(-59.625)10SM=(111111000100.0110)2补码2025/7/2314浮点数定点数的不足:限位数时,数值范围和数值精度不可兼得浮点数:类似科学计数法2025/7/2315Seeeeeeeeeemmmmmmmmmmmm符号位阶码尾数
S是符号位,0表示正数,1为负数。M称为尾数,是取值范围为[0,1)的多位二进制小数。E是阶码,用有偏编码表示的无符号整数,C是与阶码位数有关的偏移常数
IEEE754的浮点数定义
类型总位数符号位数阶码位数尾数(小数)位数数值范围短浮点数161510~±m1×10±4单精度浮点数321823~±m2×10±38双精度浮点数6411152~±m3×10±308扩展浮点数128115112~±m4×10±4932注:m1,m2,m3,m4均为小于10的数二进制浮点数:幂次转换将尾数归一化:“1.mmm…”,但隐含“1.”不予表示和存储单精度的阶码偏移常数(127)10,双精度浮点数的阶码偏移常数是(1023)10例7-2
将十进制数-342.125表示为单精度的浮点数(342.125)10转换为二进制:(342.125)10=(101010110.001)2=(1.01010110001)2×28——归一化为1.------指数8加上偏移常数(127)10,得到阶码(8)10+(127)10=(135)10=(10000111)22025/7/231611000011101010110001000000000000符号位阶码尾数IEEE754标准对特殊数的浮点表示数符号阶码尾数0×0000000000000000000000000000000∞01111111100000000000000000000000-∞11111111100000000000000000000000NaN×11111111非零7.1.3运算与溢出判断无符号数运算进位/借位由于限位数而直接扔掉,出错!要么位扩展,要么另外存储或标识,后续再处理无符号数加法/减法算式2025/7/2317二进制加0110+)110110011二进制减1011-)01100101八进制加2104+)37536057八进制减5203-)36411342十六进制加3B39+)604D9B86十六进制减1BC7-)8A39918E1无符号数乘法/除法算式0110×)1101011010011100110+)0110000010000100-)10111011010111100-)1011进位Carry借位Borrow101100111010+)01100110101110001101001011010+)1011101010011+)011010101011+)011010001104位加法器实现12位数的加法BCD码运算BCD逢10进1,而4位二进制逢16进1,差值需要加6/减6修正计算机系统要么分别定义二进制运算和BCD码运算指令,要么添加BCD码修正指令2025/7/231801000010+)010101001001011001000111+)010101101001110110100011+)011010010110-)001010000110111000110110-)010110011101110142549610011000+)011101101000011109876475696283659-)01100110100068+)01100110101110100174+)0110100000011103-)0110011001110111771BCD加法修正:相加结果BCD码位大于9,或有进位,则再加6BCD减法修正:相减时BCD码位有借位,则再减6BCD加法修正时产生的进位,需要再加入到高位,高位因此而大于9时,则高位需再加6BCD码(4位二进制)为一整体!有符号数(原码)运算原码加法运算if(同符号)
相加且符号不变elseif(符号相异){
数值比较
数值大的减去数值小的
结果符号与数值大的符号一致}原码减法运算if(符号相异)
相加且符号与原被减数一致elseif(符号相同){
数值比较
数值大的减去数值小的
结果符号与数值大的符号一致}2025/7/2319有无其他方法进行加/减运算?且无需判断正/负号,无需比较数值大小有符号数(反码)运算反码运算过程:先将待加减的数都用反码表示,符号与数值位同等对待,按二进制加减运算规则实现运算,最高位的进位需折转到最低再加入,得到的结果是反码(±A)反码±(±B)反码=C反码,即:反码+反码
反码,反码-反码
反码2025/7/2320需要二次加法/减法溢出判断的规律是什么?不同表示形式的数不能加/减,如原码+反码;补码+反码(D反码)反码=D原码反码0100+)10001100十进制数+4+)-7-3反码0101+)01001001十进制数+5+)+4-6+)1反码1101+)101010111十进制数-2+)-5-71000+)1反码0110+)110010010十进制数+6+)-3+30011溢出-)1反码0100-)11010111十进制数+4-)-2+60110反码1100-)01100110十进制数-3-)+6+6溢出溢出反码1010+)100110011十进制数-5+)-6-11+)10100有符号数(补码)运算补码运算过程:先将待加减的数都用补码表示,符号与数值位同等对待,按二进制加减运算规则实现运算,得到的结果是补码(±A)补码±(±B)补码=C补码,即:补码+补码
补码,补码-补码
补码2025/7/23211100+)101010110十进制数-4+)-6-10+6舍去CO0110-)10111011十进制数+6-)-5+11-5BO正-负=负溢出负+负=正溢出溢出标识V=CI⊕CO思考:添加结果的位数,能否解决溢出问题?无符号数加(减)法呢?补码10110
原码11010=(-10)101101+)011010011十进制数-3+)+6+3舍去CICO1101+)111011011十进制数-3+)-2-5舍去CICO0100-)111010110十进制数+4-)-2+6舍去BIBO0111-)00100101十进制数+7-)+2+5最高进位丢弃,任何时候结果都正确?当最高位和次高位都有进(借)位,或都没进(借)位时,不溢出当最高位或次高位有进(借)位时,即只有一处进(借)位时,溢出(D补码)补码=D原码保留4位有符号数加减运算,采用补码形式!减法变为加法运算加/减运算合并为单一加法
只需加法电路,既可实现加法,也可实现减法(±A)补码-(±B)补码=,需先由(B)补码求出(-B)补码,或由(-B)补码求(B)补码即求(±B)补码的补数,得到,从而将减法变为加法算法过程被减数A、减数B表示为补码求(B补码)的补数,得到-B的补码(-B)补码相加,得结果(补码)验证结果。结果求补码,得原数(D补码)补码=D原码2025/7/2322(±A)补码
+(+B)补码第11页PPT:对给定数(补码形式)求补数,得到给定数的负数的补码(+B)补码定点数加减运算运算采用补码,而不用原码、也不用反码补码既无需像原码那样判断符号再选择加/减运算方式,也无需像反码那样将最高位的进位折转到最低位相加补码无需区分符号位与数值位,符号、数值完全相同的运算方式。从而可将无符号数、有符号数无差别对待,同一电路实现。原始数据为无符号,结果也为无符号;原始数据为带符号数(补码),结果也为带符号数(补码)补码可将减法变换为加法,从而将加、减电路合二为一。补码溢出判断方式简单2025/7/2323有符号数-4+)-6-101100+)101010110CO溢出标识V=CI⊕CO进位1=16无符号数12+)106溢出V=0⊕1=1进位C=10101+)00100111有符号数+5+)+2+7无符号数5+)27溢出V=0⊕0=0进位C=0保留4位定点数与浮点数运算定点数前述都是纯整数加法带小数的运算
小数点对齐,方法同上原码方便于乘法和除法运算,而补码方便于加法和减法运算浮点数先对阶,然后尾数相加/减法(原码),再归一化2025/7/23247.2.11位二进制加法/减法运算电路半加器表达式:CO=X⸱YS=X’⸱Y+X⸱Y’=X⊕Y全加器表达式:CO=X’⸱Y⸱CI+X⸱Y’⸱CI+X⸱Y⸱CI’+X⸱Y⸱CI=X⸱Y+X⸱CI+Y⸱CIS=X’⸱Y’⸱CI+X’⸱Y⸱CI’+X⸱Y’⸱CI’+X⸱Y⸱CI=X⊕Y⊕CI2025/7/2325半加器真值表被加数加数和XYCOS0000010110011110COXYS(a)电路图(b)电路符号(c)适于级联的电路符号半加器电路及其符号&=1SCOXY∑SCOXY∑全加器真值表被加数加数进位输入和XYCICOS0000000101010010111010001101101101011111moduleAdd_half(sum,c_out,a,b);inputa,b;outputsum,c_out;
assign{c_out,sum}=a+b;endmodule全加器电路图和电路符号2025/7/2326COXYS(a)电路图(b)电路符号(c)适于级联的电路符号全加器电路及其符号CISCOXYCISCOXYCI∑&&&≥1=1=1∑用半加器实现的全加器电路CIXYCOS&=1&=1≥1moduleAdd_full(c_out,sum,a,b,c_in);inputa,b,c_in;outputsum,c_out;wirew1,w2,w3;Add_halfP1(w2,w1,a,b);Add_halfP2(w3,sum,c_in,w1);or(c_out,w3,w2);endmodulemoduleAdd_half(a,b,c_out,sum);inputa,b;outputc_out,sum;xor(sum,a,b);and(c_out,a,b);endmodule
CO=X’⸱Y⸱CI+X⸱Y’⸱CI+X⸱Y⸱CI’+X⸱Y⸱CI=X⸱Y+X⸱CI+Y⸱CIS=X’⸱Y’⸱CI+X’⸱Y⸱CI’+X⸱Y’⸱CI’+X⸱Y⸱CI=X⊕Y⊕CI二进制减法器半减器的逻辑函数表达式:BO=X’⸱YS=X’⸱Y+X⸱Y’=X⊕Y全减器的逻辑函数表达式:BO=X’⸱Y’⸱BI+X’⸱Y⸱BI’+X’⸱Y⸱BI+X⸱Y⸱BI=X’⸱Y+X’⸱BI+Y⸱BIS=X’⸱Y’⸱BI+X’⸱Y⸱BI’+X⸱Y’⸱BI’+X⸱Y⸱BI=X⊕Y⊕BI2025/7/23271位二进制减法运算真值表全减器真值表
半减器真值表被减数减数借位输入差
被减数减数差XYBIBOSXYBOS00000000000111011101011100101110110010001
10100
11000
11111
1BOXYS(a)全减器电路图(b)半减器电路图1位二进制减法电路BIBOS&&&≥1=1=11=1&XY7.2.2多位二进制加法运算电路m位串行(行波)进位加法器延迟时间:tPD=tXY-C+(m-2)×tCI-CO+tCI-S式中tXY-C为最低位输入X0或Y0到进位输出C1的延迟时间,tCI-CO为中间级进位输入CI到进位输出CO的延迟时间,tCI-S为最高位进位输入Cm-1到结果输出Sm-1的延迟时间2025/7/2328Ym-1m位串行进位加法器Xm-1Y0X0Y3X3Y2X2Y1X1S3Sm-1C0=0S2Cm-1CmC4C3C1C2S0S1…SCOXYCI∑SCOXYCI∑SCOXYCI∑SCOXYCI∑SCOXYCI∑COXYSCI&&&≥1=1=1多位加法器的Verilog描述moduleadder_n(X,Y,c_in,S,c_out);//m位加法器#(parameterm=8)input[m-1:0]X,Y;inputc_in;output[m-1:0]S;outputc_out;wire[m:0]C;assignC[0]=c_in;assignc_out=C[m];genvarg;generate
for(g=0;g<m;g=g+1)
full_adderBitn_1(X[g],Y[g],C[g],S[g],C[g+1]);endgenerateendmodulem位加法器的Verilog行为描述如下:moduleadder_nx#(parameterm=8)(X,Y,c_in,S,c_out);//m位加法器行为描述input[m-1:0]X,Y;inputc_in;output[m-1:0]S;outputc_out;assign{c_out,S}=X+Y+c_in;endmodule2025/7/2329串行进位加/减法电路(X)补码-(Y)补码=(X)补码+(-Y)补码。(Y)补码
(-Y)补码S为0,加法运算。S为1,减法V为带符号运算溢出标识,Cm/Bm为无符号运算进位/借位标识2025/7/2330Ym-1m位串行进位加法/减法器Xm-1Y0X0Y3X3Y2X2Y1X1S3Sm-1SS2Bm-1B4B3B1B2S0S1…SCOXYCI∑SCOXYCI∑SCOXYCI∑SCOXYCI∑SCOXYCI∑=1=1=1=1=1=1V减法器BO’=(X+Y’)(X+BI’)(Y’+BI’)=X⸱Y’+X⸱BI’+Y’⸱BI’S=X⊕Y’⊕BI’加法器CO=X⸱Y+X⸱CI+Y⸱CIS=X⊕Y⊕CI=1Cm/Bm全减器的表达式BO=X’⸱Y+X’⸱BI+Y⸱BIS=X⊕Y⊕BIY,BI,BO都取反(-Y)2补码=((Y)2补码)补数=((Y)2补码)反数+1,即Y’+1串行进位加/减法电路——讨论多一点减法变加法的验证,带符号数时(补码)若X补码=0101,Y补码=0010。原始减法运算X补码-Y补码=0101-0010=0011Y补码(-Y)补码:0010
1110。加法器运算X补码+(-Y)补码=0101+1110=0011与上式结果一致X补码=0101,Y补码=1011。原始减法X补码-Y补码=0101-1011=1010正数减去负数,结果为负数
溢出Y补码(-Y)补码:1011
0101。加法器X补码+(-Y)补码=0101+0101=1010正数加正数,结果为负数
溢出无符号数时:减
加1110=0011,且最高进位1⊕1(S)=0,无借位(510-2100101=1010,且最高进位0⊕1(S)=1,有借位(510-1110)
借1=24=16,16+5-11=102025/7/2331Ym-1Xm-1Y0X0Y3X3Y2X2Y1X1S3Sm-1SS2Bm-1B4B3B1B2S0S1…SCOXYCI∑SCOXYCI∑SCOXYCI∑SCOXYCI∑SCOXYCI∑=1=1=1=1=1=1V=1Cm/Bm0101-)001000110101+)111010011丢掉最高位0101+)11100011最高有进位0101+)01011010最高无进位4位加/减器的Verilog描述moduleAddSub(inputS, //select0=add,1=subtractinput[3:0]A,B,outputreg[3:0]F,outputregUnsigned_Overflow,outputregSigned_Overflow);reg[4:0]TempF;always@(SorAorB)beginif(S==0)begin//additionTempF={1'b0,A}+{1'b0,B};//zeroextendAandBF=TempF[3:0];
Unsigned_Overflow
=TempF[4];为何没用次高位的进位和最高位的进位判断溢出?//Signedoverflow=MSBofA'B'For
ABF'
Signed_Overflow=((!A[3])&(!B[3])&(TempF[3]))|
((A[3])&(B[3])&(!TempF[3]));//原数都为正而结果为负,或原数都为负而结果为正endelsebegin//subtractTempF={1'b0,A}-{1'b0,B};//zeroextendAandBF=TempF[3:0];
Unsigned_Overflow
=TempF[4];//Signedoverflow=MSBofAB'F'or
A'BF
Signed_Overflow
=((A[3])&(!B[3])&(!TempF[3]))|
((!A[3])&(B[3])&(TempF[3]));//说明理由?endendendmodule如何理解带符号运算溢出的语言描述2025/7/2332BCD码加法器二进制加法运算基础上,判断并修正二进制结果为11XX2或1X1X2时,再加6(01102)修正2025/7/2333SCOXYCI∑SCOXYCI∑≥1BCD码加法器Y0X0Y3X3Y2X2Y1X1S3CinS2Cout0S0S1=1SCOXYCI∑&&SCOXYCI∑SCOXYCI∑SCOXYCI∑01000111+)010101101001110110100011+)0110+)01101000000114756103先行(超前)进位加法进位产生项Gi=Xi⸱Yi,加数、被加数都为1,必有进位进位传播项Pi=Xi+Yi,加数、被加数有1个为1,传递进位进位表达式Ci+1=Xi⸱Yi+(Xi+Yi)⸱Ci=Gi+Pi⸱Ci分别有:C1=G0+P0⸱C0=G0C2=G1+P1⸱C1=G1+P1⸱G0C3=G2+P2⸱C2=G2+P2⸱(G1+P1⸱G0)=G2+P2⸱G1+P2⸱P1⸱G0…Cm+1=Gm+Pm⸱Cm=Gm+(Pm⸱Gm-1)+…+(Pm⸱Pm-1⸱…⸱Pi+1⸱Gi)+…+(Pm⸱…⸱P2⸱G1)+(Pm⸱…⸱P2⸱P1⸱G0)进位不依赖于任何低进位。各进位的延迟都是三级门延迟2025/7/2334先行进位逻辑先行进位Ci产生结构图XiYiXYSiCi=1=1CO=X’⸱Y⸱CI+X⸱Y’⸱CI+X⸱Y⸱CI’+X⸱Y⸱CI=X⸱Y+X⸱CI+Y⸱CIS=X’⸱Y’⸱CI+X’⸱Y⸱CI’+X⸱Y’⸱CI’+X⸱Y⸱CI=X⊕Y⊕CI优点:加法器延时不随位数增加而增加缺点:门扇入系数大并行前缀加法器m位加法的进位层次化地分为L位的子集,并组成递归树形结构,送前缀运算单元进行运算,输出各进位信号包括预处理、前缀进位链和后处理预处理电路进位传播Pi,i=Xi+Yi进位产生信号Gi,i=Xi⸱Yi2025/7/23350:-11514131211109876543210-1X15Y15X0Y0X8Y8……14:1314:1114:714:-113:1113:713:-112:1112:712:-111:711:-110:910:710:-19:79:-18:78:-17:-16:56:36:-15:35:-14:34:-13:-12:12:-11:-1S01514131211109876543210S15S7……图例iXiYiGi:iPi:iiSiYiGi-1:-1Xij:kPi:kPk-1:jGi:kGk-1:jPi:jGi:j16位前缀加法器结构图=1=1≥1&&&≥1并行前缀加法器前缀进位链电路(log2m级)Gi,j=Gi,k+Pi,k⸱Gk-1,j,Pi,j=Pi,k⸱Pk-1,j,k为满足i≤k<j的整数G-1,-1=0,P-1,-1=1,P0,0=1G0,-1=G0,0+P0,0⸱G-1,-1=G0,P0,-1=P0,0⸱P-1,-1=1G1,-1=G1,1+P1,1⸱G0,-1=G1+P1⸱G0,P1,-1=P1,1⸱P0,-1=P1G2,1=G2,2+P2,2⸱G1,1=G2+P2⸱G1,P2,1=P2,2⸱P1,1=P2⸱P1G2,-1=G2,1+P2,1⸱G0,-1=(G2+P2⸱G1)+P2⸱P1⸱G0,P2,-1=P2,1⸱P0,-1=P2⸱P1m位前缀加法器延迟为:tPA=tpg+tpg_pref×log2m+tXOR式中tpg为预处理单元延时,tpg_pref为前缀单元的延迟,tXOR为异或门延时折中解决了并行加法延时大和超前进位扇入大的缺点2025/7/23367.2.3乘法运算电路
2025/7/2337X3Y3X2Y2X1Y1X0Y0X3Y0X2Y1C11X2Y0X1Y1C10X1Y0X0Y1
X3Y1C12S13X2Y2C21S12X1Y2C20S11X0Y2
C13X3Y2C22S23X2Y3C31S22X1Y3C30S21X0Y3
C23X3Y3C32S33S32S31C33P6P5P4P7被乘数乘数部分积0部分积1第1行加法第1行和部分积2第2行加法第2行和部分积3第3行加法第3行和结果权重P2P1P0P32625242722212320X0Y0
S00S10S20S304位无符号二进制数乘法运算步骤全加器COXiYiSOX0Y0全加器C33X3Y3S33半加器C30X0Y3S30全加器C32X2Y3S32全加器C31X1Y3S31全加器C23X3Y2S23半加器C20X0Y2S20全加器C22X2Y2S22全加器C21X1Y2S21半加器X3Y1S13C13半加器C10X0Y1S10全加器C12X2Y1S12全加器C11X1Y1S11X3Y0X2Y0X1Y0X3X2X1X0Y0Y1Y2Y3P6P5P3P2P4P1P7P04位无符号二进制乘法器阵列结构0×0=00‧0=00×1=00‧1=01×0=01‧0=01×1=11‧1=1时序乘法器阵列乘法缺点:门电路多,面积大时序乘法:乘数低位为1?(相加)
移位模块化设计控制模块:数据加载,判断,相加否等控制信号数据通路:数据的搬移2025/7/2338乘法运算0111×110100001101部分积
乘数最低位为1+)011101111101再右移00111110最低位为0,再右移00011111最低位为1+)011110001111再右移+)011110110111再右移01000111最低位为101011011加被乘数加被乘数加被乘数结果移位相加实现的乘法运算被乘数部分积乘数⊕右移控制模块FSM∑寄存器组MUX数据通路命令状态数字系统分块框图乘积结果验证(01011011)2=(91)107×13=91时序乘法器2025/7/2339ResetSidleResetStartZeroLoadX,YSrunOverLowbitShiftAddShiftPzero1000001111
控制逻辑
XYProductLoadXYStartCLKReset
数据通路
PzeroAddShiftShiftZeroOverLowbit电路框图与接口信号算法状态机AlgorithmStateMachineVerilog代码见教材CPU的结构雏形时序乘法器moduleMultiplier#(parameterL_word=4)(Reset,Start,CLK,X,Y,Product,Over);inputReset,Start,CLK;input[L_word-1:0]X,Y;output[2*L_word:0]Product;outputOver;ControllerM0(.LoadXY(LoadXY),.Pzero(Pzero),.AddShift(AddShift),.Shift(Shift),.Start(Start),.Zero(Zero),.Lowbit(Lowbit),.Over(Over),.CLK(CLK),.Reset(Reset));DatapathM1(.Product(Product),.Zero(Zero),.Lowbit(Lowbit),.Over(Over),.X(X),.Y(Y),.LoadXY(LoadXY),.Pzero(Pzero),.AddShift(AddShift),.Shift(Shift),.CLK(CLK),.Reset(Reset));endmodule2025/7/2340
控制逻辑
XYProductLoadXYStartCLKReset
数据通路
PzeroAddShiftShiftZeroOverLowbit时序乘法器moduleController(LoadXY,Pzero,AddShift,Shift,Zero,Lowbit,Over,
CLK,Reset,Start);inputReset,Start,CLK,Zero,Lowbit,Over;outputregLoadXY,Pzero,AddShift,Shift;regstate,next_state;parameterS_idle=0,S_run=1;always@(posedgeCLK,posedgeReset)//状态更新if(Reset==1'b1)state<=S_idle;elsestate<=next_state;always@(state,Start,Zero,Lowbit,Over)begin//激励和输出Pzero=0;LoadXY=0;AddShift=0;Shift=0;
//初始化初值
case(state)
S_idle:if(!Start)next_state=S_idle;
elseif(Zero)beginPzero=1;next_state=S_idle;end
elsebeginLoadXY=1;next_state=S_run;endS_run:if(Over)next_state=S_idle;
elseif(Lowbit)beginAddShift=1;next_state=S_run;end
elsebeginShift=1;next_state=S_run;enddefault:next_state=S_idle;endcaseendendmodule2025/7/2341ResetSidleResetStartZeroLoadX,YSrunOverLowbitShiftAddShiftPzero1000001111
控制逻辑
XYProductLoadXYStartCLKReset
数据通路
PzeroAddShiftShiftZeroOverLowbit时序乘法器moduleDatapath#(parameterL_word=4,parameterL_count=3)(Reset,CLK,LoadXY,Pzero,
X,Y,
AddShift,Shift,Zero,Lowbit,Over,Product);inputReset,CLK,LoadXY,Pzero,AddShift,Shift;input[L_word-1:0]X,Y;outputZero,Lowbit,Over;outputreg[2*L_word:0]Product;reg[L_word-1:0]multiplicand;reg[L_count-1:0]counter;assignZero=(X==0)||(Y==0);//乘数、被乘数为0assignLowbit=Product[0];assignOver=(counter==L_word);//全部移完,结束always@(posedgeCLKorposedgeReset)if(Reset==1'b1)beginmultiplicand<='b0;Product<='b0;counter<='b0;endelsebeginif(Pzero)Product<=0;if(LoadXY==1)beginmultiplicand<=X;Product<=Y;counter<=0;endif(Shift)beginProduct<=Product>>1;counter<=counter+1;endif(AddShift)begin
Product<={Product[2*L_word:L_word]+multiplicand,Product[L_word-1:0]}>>1;counter<=counter+1;end
endendmodule2025/7/2342被乘数部分积乘数⊕右移有符号数乘法---布斯乘法器
2025/7/2343布斯编码例:求十进制数-65的布斯编码十进制数先变为二进制,(65)10=(1000001)2写出负数的补码,-6510的二进制补码为(10111111)2补按照布斯编码规则,在(10111111)2补后添一个0,然后依次组成位对,即可得到布斯编码为110000012025/7/2344补码带符号数的布斯编码10111111011000001添0布斯编码方法补码带符号数的布斯编码ym-1ym-2ym-3…yi…y2y1y00em-1em-2em-3…ei…e2e1e0添0布斯乘法器
2025/7/2345例7-4
用布斯算法分别实现十进制数-9×7,-9×-6的运算被乘数5位二进制,而乘数用4位二进制先求出被乘数X[=(-9)10]的补码为(10111)2补,符号扩展一位后为(110111)2补乘数Y[=(7)10]的二进制补码为(0111)2补,其布斯编码为1001部分积为10位2025/7/2346乘法运算-9×70000001001最低位为1-)1101110010011001乘数没移完,算术右移一位0001001100最低位为0,算术右移一位0000100110最低位为0,算术右移一位+)1101110000010011加被乘数X1111000001求得结果原值1110000011算术右移一位1000111111=-63减去被乘数X最低位为1乘数全移出,得结果(补码)乘法运算-9×-60000001110最低位为0,右移-)1101110000000111减去被乘数X0010010111算术右移一位0001001011最低位为1+)1101111110111011加被乘数X0000110110=54算术右移1111011101算术右移一位0001101101乘数移完,得结果最低位为1最低位为1-)110111减去被乘数X-6的原码1110补码1010布斯码11107.3.1数值比较电路等值比较,对应位异或2025/7/23471位比较器4位比较器,任何1个或多个位不相等,即不等DIFFX0Y0=1DIFF0X0Y0=1DIFF2X2Y2=1DIFF3X3Y3=1DIFF≥1DIFF1X1Y1=1若要得到相等比较结果的电路,电路结构?数值大小比较逻辑函数表达式:FX>Y=X⸱Y’FX=Y=X’⸱Y’+X⸱Y=X⊙Y=(X⊕Y)’=(X⸱Y’+X’⸱Y)’FX<Y=X’⸱YX(X3X2X1X0)和Y(Y3Y2Y1Y0)比较的过程:若X3>Y3,则X>Y;若X3<Y3,则X<Y;否则继续当X3=Y3时,若X2>Y2,则X>Y;若X2<Y2,则X<Y;否则继续依次类推当X3=Y3,且X2=Y2,且X1=Y1,且X0=Y0时,若无级联输入,则X=Y;若有级联输入,由级联输入决定比较结果的输出2025/7/2348一位二进制数值比较真值表输入输出XYFX>YFX=YFX<Y000100100110100110101位二进制数值比较器XYFX<YFX=YFX>Y1&≥1&1FX>Y=X3⸱Y3’+(X3⊙Y3)⸱X2⸱Y2’+(X3⊙Y3)⸱(X2⊙Y2)X1⸱Y1’+(X3⊙Y3)⸱(X2⊙Y2)⸱(X1⊙Y1)X0⸱Y0’FX<Y=X3’⸱Y3+(X3⊙Y3)⸱X2’⸱Y2+(X3⊙Y3)⸱(X2⊙Y2)X1’⸱Y1+(X3⊙Y3)⸱(X2⊙Y2)⸱(X1⊙Y1)X0’⸱Y0FX=Y=(A3⊙B3)·(A2⊙B2)·(A1⊙B1)·(A0⊙B0)比较器芯片4位比较器16位比较器:4位比较器级联2025/7/234974LS85比较器功能表输入输出X3Y3X2Y2X1Y1X0Y0IX>YIX=YIX<YFX>YFX=YFX<YX3>Y3××××××100X3<Y3××××××001X3=Y3X2>Y2×××××100X3=Y3X2<Y2×××××001X3=Y3X2=Y2X1>Y1××××100X3=Y3X2=Y2X1<Y1××××001X3=Y3X2=Y2X1=Y1X0>Y0×××100X3=Y3X2=Y2X1=Y1X0<Y0×××001X3=Y3X2=Y2X1=Y1X0=Y0100100X3=Y3X2=Y2X1=Y1X0=Y0001001X3=Y3X2=Y2X1=Y1X0=Y0×1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国医疗运动康复公园行业市场深度调研及发展趋势与投资前景预测研究报告
- 2026中国新能源汽车智能3D打印平台行业市场深度调研及发展趋势与投资前景研究报告
- 2026中国涡流泵企业融资渠道创新与资产证券化可行性分析
- 2026媒体版权行业市场竞争态势分析投资评估规划
- 2026中国物流行业智能化发展趋势研究及行业竞争力分析报告
- 2026全球mRNA疫苗生产技术转移与本地化生产可行性调研
- 2026中国智能船舶导航系统技术革新节能减排市场需求与效益分析报告
- 2026中国休闲食品行业品类创新与品牌建设研究报告
- 2026楼宇智控行业市场发展趋势深度分析研究行业市场分析报告
- 2026中国印刷包装行业包装材料市场投资发展前景研究报告
- 配电室安全运行日常管控规范
- 2026年高考广东卷物理高考真题(网络 收集版)(解析版)
- 交通法规学法减分题库及答案(2026年)
- 破碎机安全操作规程
- 2026年高考全国1卷语文高考真题含答案
- 重症医学科(ICU)脑出血术后护理指南
- JJG 596-2026 安装式交流电能表检定规程
- 河北河北省事业单位2025年面向新疆巴州兵团二师生源高校毕业生招聘15人笔试历年参考题库附带答案详解
- 【解题模型】专题05受力分析 摩擦力突变-2026高考物理(解析版)
- 眼镜验光员(四级)2025年考试真题及模拟试卷
- 泰康人寿新人岗前考试卷及答案解析
评论
0/150
提交评论