如何用alu74181和三级先行进位位部件74182组成一个32位的alu

> 问题详情
用74181.和74182芯片构成小组内并行进位,小组间并行进位,大组间串行进位的32位ALU,需要74182芯片
悬赏:0&答案豆
提问人:匿名网友
发布时间:
用74181.和74182芯片构成小组内并行进位,小组间并行进位,大组间串行进位的32位ALU,需要74182芯片的片数为()。A.0B.1C.2D.3请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
网友回答(共2条)
匿名网友&&&&lv1&&&&提问收益:0.00&答案豆
匿名网友&&&&lv1&&&&提问收益:0.00&答案豆
您可能感兴趣的试题
1某机字长32位,它的存储容量为256 MB,按字节编址,则它的寻址范围大小为(&&)。A.256 MBB.(256-1)MBC.64 MBD.(64-1)MB2采用了虚拟存储器的计算机系统中,逻辑地址与物理地址相比(&&)。A.两者位数相等B.逻辑地址位数多C.物理地址位数多D.无法判断3下列关于RISC的叙述中,错误的是(&&)。A.RISC普遍采用微程序控制器B.RISC大多数指令在一个时钟周期内完成C.RISC的内部通用寄存器数量相对CISC多D.RISC的指令数、寻址方式和指令格式种类相对CISC少4下列寻址方式中,执行速度最快的是(&&)。A.立即数寻划B.直接寻址C.间接寻址D.寄存器间接寻址
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
享三项特权
享三项特权
享三项特权
选择支付方式:
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
常用邮箱:
用于找回密码
确认密码:君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
定点运算器的组成
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口您所在位置: &
&nbsp&&nbsp
优·计算机组成原理 定点运算器的组成和结构.doc 13页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:50 &&
你可能关注的文档:
··········
··········
计算机组成原理第八章定点运算器的组成和结构1.算术逻辑单元(简称ALU)? 针对每一种算术运算,都必须有一个相对应的基本硬件配置,其核心部件是加法器和寄存器。当需完成逻辑运算时,势必需要配置相应的逻辑电路,而ALU电路是既能完成算术运算又能完成逻辑运算的部件。一、ALU电路  下图是ALU框图。图中Ai和Bi为输入变量;Ki为控制信号,Ki的不同取值可决定该电路作哪一种算术运算或哪一种逻辑运算;Fi是输出函数。  现在ALU电路已制成集成电路芯片,如74181是能完成四位二进制代码的算逻运算部件ALUALU的基本逻辑结构是超前进位加法器,它通过改变加法器的进位产生函数G和进位传递函数P来获得多种运算能力。二、快速进位链为了提高运算速度,本节将通过对进位过程的分析设计快速进位链4位全加器如下图所示:将4个全加器相连可得4位加法器(图2.7),但其加法时间长。这是因为其位间进位是串行传送的。本位全加和Fi必须等低位进位Ci-1来到后才能进行,加法时间与位数有关。只有改变进位逐位传送的路径,才能提高加法器工作速度。解决办法之一是采用“超前进位产生电路”来同时形成各位进位,从而实行快速加法。我们称这种加法器为超前进位加法器。根据各位进位的形成条件,可分别写出Ci的逻辑表达式:C1=X1Y1+(X1+Y1)C0=G1+P1C0其中:Gi=Xi·Yi称为进位产生函数Pi=Xi+Yi称为进位传递函数Gi的意义是:当XiYi均为“1”时定会产生向高位的进位Pi的意义是:当Xi和Yi中有一个为“1”时,若同时低位有进位输入,则本位也将向高位传送进位。写成通用式为:C1=G1+P1C0C2=G2+P2C1=G2+P2(G1+P1C0)=G2+P2G1+P2P1C0C3=G3+P3G2+P3P2G1+P3P2P1C0C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0当全加器的输入均取反码时,它的输出也均取反码。(应用反演律采用与非、或非、与或非表示)将上式改写成如下:根据上式可画得“超前进位产生电路”及四位超前进位加法器的逻辑图如下图2.8。基本思想----------由全加器扩展开来:Fi=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi加入控制参数s0~s3,对输入进行控制.此时全加器的输入变为Xi,Yi一位全加器(FA)的逻辑表达式为逻辑表达式下图为控制参数s0~s3与输入量的关系:S0S1YiS2S3Xi00~Ai00101~AiBi01~Ai+~Bi10~Ai~Bi10~Ai+Bi11011~Ai由上表,可得Xi,Yi的逻辑表达式(化简后为)Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1Bi故:XiYi=Yi代入进位表达式,简化为:Cn+i+1=Yi+XiCn+i综上所述:ALU的某一位逻辑表达式可写为:Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1BiFi=Yi⊕Xi⊕Cn+ICn+i+1=Yi+XiCn+I4位之间采用先行进位,则由上式,每一位的进位公式可递推如下:第0位向第一位的进位:Cn+1=Y0+X0Cn第1位向第2位的进位:Cn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn第2位向第3位的进位:Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2Cn第3位向第4位的进位:Cn+4=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn设:G=Y3+Y2X3+Y1X2X3+Y0X1X2X3P=X0X1X2X3故:Cn+4=G+PCn这样,对一片ALU来说,可有三个进位输也,其中,G称为进位发生输出,P称为进位传送输出.在电路中多加这两个进位输出的目的是为了便于实现多片ALU之间的先行进位.(第0位的进位输入Cn可以直接传到最高位上去,从而实高速运算).下面通过介绍SN74181型四位ALU中规模集成电路了介绍ALU的原理。?它能执行16种算术运算和16种逻辑运算,M是状态控制端,M=H,执行逻辑运算;M=L执行算术运算。S0~S3是运算选择端,它决定电路执行哪种算术运算或逻辑运算。以正逻辑为例,B3~B0和A3~A0是两个操作数,F3~F0为输出结果。C-l表示最低位的外来进位,Cn+4是7418l向高位的进位;P、G可供先行进位使用。M用于区别算术运算还是逻辑运算;S3~S0的不同取值可实现不同的运算。例如,当M=1,S3~S0=0110时,74181作逻辑运算A⊕B;当M=0,S3~S0=0110时,74181作算术运算。由上表可见,在正逻辑条件下,M=0,S3~S0=0110,且C-l=1时,完成A减B减1的操作。若想完成A减B运算,可使C-l=0。需注意,74181算术运算是用补码实现的,其中减数的反码是由内部电路形成的,而末
正在加载中,请稍后...逻辑运算单元ALU
&&& ALU是计算机中执行各种算术和逻辑运算操作的部件,运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等造作,都称作算术逻辑部件(ALU).
ALU运算基本原理
&&& 计算机运行时,运算器的操作和操作种类由控制器决定.运算器处理的数据来自;处理后的结果数据通常送回存储器,或暂时寄存在运算器中.
&&& 数据运算器的处理对象是数据,所以数据长度和计算机数据表示方法,对运算器的性能影响极大.70年代常以1个、4个、8个、16个二进制位作为处理数据的基本单位.大多数通用计算机则以16、32、64位作为运算器处理数据的长度.能对一个数据的所有位同时进行处理的运算器称为并行运算器.如果一次只处理一位,则称为串行运算器.有的运算器一次可处理几位 (通常为6或8位),一个完整的数据分成若干段进行计算,称为串 并行运算器.运算器往往只处理一种长度的数据.有的也能处理几种不同长度的数据,如半字长运算、双倍字长运算、四倍字长运算等.有的数据长度可以在运算过程中指定,称为变字长运算.
&&& 按照数据的不同表示方法,可以有二进制运算器、十进制运算器、十六进制运算器、定点整数运算器、定点小数运算器、浮点数运算器等.按照数据的性质,有地址运算器和字符运算器等.
&&& 操作运算器能执行多少种操作和操作速度,标志着运算器能力的强弱,甚至标志着计算机本身的能力.运算器最基本的操作是加法.一个数与零相加,等于简单地传送这个数.将一个数的代码求补,与另一个数相加,相当于从后一个数中减去前一个数.将两个数相减可以比较它们的大小.
&&& 左右移位是运算器的基本操作.在有符号的数中,符号不动而只移数据位,称为算术移位.若数据连同符号的所有位一齐移动,称为逻辑移位.若将数据的最高位与最低位链接进行逻辑移位,称为循环移位.
&&& 运算器的逻辑操作可将两个数据按位进行与、或、异或,以及将一个数据的各位求非.有的运算器还能进行二值代码的16种逻辑操作.
&&& 乘、除法操作较为复杂.很多计算机的运算器能直接完成这些操作.乘法操作是以加法操作为基础的,由乘数的一位或几位译码控制逐次产生部分积,部分积相加得乘积.除法则又常以乘法为基础,即选定若干因子乘以除数,使它近似为1,这些因子乘被除数则得商.没有执行乘法、除法硬件的计算机可用程序实现乘、除,但速度慢得多.有的运算器还能执行在一批数中寻求最大数,对一批数据连续执行同一种操作,求平方根等复杂操作.
计算机运算的全面解析
&&& 由一位全加器(FA)构成的行波进位加法器,它可以实现补码数的加法运算和减法运算.但是这种加法/减法器存在两个问题:一是由于串行进位,它的运算时间很长.假如加法器由n位全加器构成,每一位的进位延迟时间为20ns,那么最坏情况下, 进位信号从最低位传递到最高位而最后输出稳定,至少需要n*20ns,这在高速计算中显然是不利的.二是就行波进位加法器本身来说,它只能完成加法和减法两种操作而不能完成逻辑操作.本节我们介绍的多功能算术/逻辑运算单元(ALU)不仅具有多种算术运算和逻辑运算的功能,而且具有先行进位逻辑, 从而能实现高速运算.
&&& 1.基本思想
&&& 一位全加器(FA)的逻辑表达式为
&&& Fi=Ai⊕Bi⊕Ci
&&& Ci+1=AiBi+BiCi+CiAi(2.35)
&&& 我们将Ai和Bi先组合成由控制参数S0,S1,S2,S3控制的组合函数Xi和Yi,然后再将Xi,Yi和下一位进位数通过全加器进行全加.这样,不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算.
&&& 因此,一位算术/逻辑运算单元的逻辑表达式为
&&& Fi=Xi⊕Yi⊕Cn+i
&&& Cn+i+1=XiYi+YiCn+i+Cn+iXi
&&&ALU的逻辑结构原理框图
&&& 上式中进位下标用n+i代替原来以为全加器中的i,i代表集成在一片上的ALU的二进制位数.对于4位一片ALU,i=0,1,2,3.n代表若干片ALU组成更大字长的运算器时每片电路的进位输入,例如当4片组成16位字长的运算器时,n=0,4,8,12.
&&& 2.逻辑表达式
&&& 控制参数S0 ,S1 ,S2 ,S3 分别控制输入Ai 和Bi ,产生Y和X的函数.其中Yi是受S0 ,S1控制的Ai和Bi的组合函数,而Xi是受S2 ,S3控制的Ai和Bi组合函数,其函数关系如表所示.
&&& 表 Xi,Yi与控制参数和输入量的关系
&&& 根据上面所列的函数关系,即可列出Xi和Yi的逻辑表达式
&&& Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai
&&& Yi=S0S1Ai+S0S1AiBi+S0S1AiBi
&&& 进一步化简并代入前面的求和与进位表达式,可得ALU的某一位逻辑表达式如下
&&& 4位之间采用先行进位公式,根据式(2.36),每一位的进位公式可递推如下:
&&& 第0位向第1位的进位公式为
&&& Cn+1=Y0+X0Cn
&&& 其中Cn是向第0位(末位)的进位.
&&& 第1位向第2位的进位公式为
&&& Cn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn
&&& 第2位向第3位的进位公式为
&&& Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2Cn
&&& 第3位的进位输出(即整个4位运算进位输出)公式为
&&& Cn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn
&&& G=Y3+Y2X3+Y1X2X3+Y0X1X2X3
&&& P=X0X1X2X3
&&& Cn+4=G+PCn&&& (2.37)
&&& 这样,对一片ALU来说,可有三个进位输出.其中G称为进位发生输出,P称为进位传送输出.在电路中多加这两个进位输出的目的,是为了便于实现多片(组)ALU之间的先行进位,为此还需一个配合电路,称之为先行进位(CLA),下面还要介绍.
&&& Cn+4是本片(组)的最后进位输出.逻辑表达式表明,这是一个先行进位逻辑.换句话说,第0位的进位输入Cn可以直接传送到最高位上去,因而可以实现高速运算.
&&& 用正逻辑表示的4位算术/逻辑运算单元(ALU)的图演示 点击演示,它是根据上面的原始推导公式用TTL电路实现的.这个期间的商业标号为74181ALU.
&&& 3.算术逻辑运算的实现
&&& 上演示图中除了S0-S3四个控制端外,还有一个控制端M,它使用来控制ALU是进行算术运算还是进行逻辑运算的.
&&& 当M=0时,M对进位信号没有任何影响.此时F 不仅与本位的被操作数Y和操作数X 有关,而且与本位的进位输出,即C 有关,因此M=0时,进行算术操作.
&&& 当M=1时,封锁了各位的进位输出,即C =0,因此各位的运算结果F 仅与Y 和X 有关,故M=1时,进行逻辑操作.
&&& 图2.11(b)示出了工作于负逻辑和正逻辑操作数方式的74181ALU方框图.显然,这个器件执行的正逻辑输入/输出方式的一组算术运算和逻辑操作与负逻辑输入/输出方式的一组算术运算和逻辑操作是等效的.
&&& 图2.11& 74181ALU的逻辑电路图和方框图
&&& 表2.5列出了74181ALU的运算功能表,它有两种工作方式.对正逻辑操作数来说,算术运算称高电平操作,逻辑运算称正逻辑操作(即高电平为"1",低电平为"0").对于负逻辑操作数来说,正好相反.由于S -S 有16种状态组合,因此对正逻辑输入与输出而言,有16种算术运算功能和16种逻辑运算功能.同样,对于负逻辑输入与输出而言,也有16种算术运算功能和16种逻辑运算功能.
&&& 表2.5 74181ALU算术/逻辑运算功能表
&&& 说明:(1)H=高电平,L=低电平.(2)*表示每一位均移到下一个更高位,即A*=2A
&&& 注意,表2.5中算术运算操作是用补示法来表示的.其中"加"是指算术加,运算时要考虑进位,而符号"+"是指"逻辑加".其次,减法是用补码方法进行的,其中数的反码是内部产生的,而结果输出"A减B减1",因此做减法时需在最末位产生一个强迫进位(加1),以便产生"A减B"的结果.另外,"A=B"输出端可指示两个数相等,因此它与其他ALU的"A=B"输出端按"与"逻辑连接后,可以检测两个数的相等条件.
&&& 4.两级先行进位的ALU
&&& 前面说过,74181ALU设置了P和G两个本组先行进位输出端.如果将四片74181的P,G输出端送入到74182先行进位部件(CLA),又可实现第二级的先行进位,即组与组之间的先行进位.
&&& 假设4片(组)74181的先行进位输出依次为P0,G0,G1P1,P2,G2,P3,G3,那么参考式(2.37)的进位逻辑表达式,先行进位部件74182CLA所提供的进位逻辑关系如下:
&&& Cn+x=G0+P0Cn
&&& Cn+y=G1+P1Cn+x=G1+G0P1+P0P1Cn
&&& Cn+z=G2+P2Cn+y=G2+G1P2+G0P1P2+P0P1P2Cn&&&&& (2.38)
&&& Cn+4 =G3+P3Cn+z=G3+G2P3+G1P1P2+G0P1P2P3+P0P1P2P3Cn
&&& =G*+P*Cn
&&& P*=P0P1P2P3
&&& G*=G3+G2P3+G1P1P2+G0P1P2P3
&&& 根据以上表达式,用TTL器件实现的成组先行进位部件74182的逻辑电路图如所示其中G* 称为成组进位发生输出,P*称为成组进位传送输出. 点击演示
&&& 下面介绍如何用若干个74181ALU位片,与配套的74182先行进位部件CLA在一起,构成一个全字长的ALU.
&&& 下图示出了用两个16位全先行进位部件级联组成的32位ALU逻辑方框图.在这个电路中使用了八个74181ALU和两个74182CLA器件.很显然,对一个16位来说,CLA部件构成了第二级的先行进位逻辑,即实现四个小组(位片)之间的先行进位,从而使全字长ALU的运算时间大大缩短.
&&& 图2.13 用两个6位全先行进位部件级联组成的32位ALU
基于单片机PICmicro单片机中的ALU简单介绍
&&& PICmicro包含一个8位 ALU 和一个8位工作寄存器. ALU是一个通用的算术逻辑单元,它对工作寄存器和数据寄存器中的数据进行算术和布尔运算.
&&& ALU 是8 位宽,能够进行加、减、移位和逻辑操作.除非特别指明,算术运算一般是以2 的补码形式进行.在 2 个操作数的指令中,典型情况下,其中一个操作数是在工作寄存器(W寄存器)中,另一个操作数放在一个数据寄存器中或是一个立即数.在单操作数指令中,操作数放在W寄存器中或某个数据寄存器中.
&&& W寄存器是一个8 位宽、用于 ALU 运算的工作寄存器,它是一个不可寻址的寄存器.根据所执行的指令,ALU 可以影响状态寄存器中的进位标志位 C、辅助进位标志位DC 和全零标志位Z. 在减法操作中, C和DC位就分别作为借位和辅助借位之反.例如指令SUBLW 和 SUBWF.
基于VHDL语言的8位ALU IP核设计
&&& 1& 引言
&&& 随着技术的发展,和复杂CPLD的出现,使得电子系统的设计者利用与器件相应的电子CAD软件,在实验室里就可以设计自己的专用ASIC器件.这种可编程ASIC不仅使设计的产品达到小型化、集成化和高可靠性,而且器件具有用户可编程特性,大大缩短了设计周期,减少了设计费用,降低了设计风险.目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述﹑综合﹑优化﹑仿真与验证,直到生成器件,实现电子设计自动化.其中电子设计自动化()的关键技术之一就是可以用硬件描述语言(HDL)来描述硬件.VHDL是用来描述从抽象到具体级别硬件的工业标准语言,它是由美国国防部在20世纪80年代开发的HDL,现在已成为IEEE承认的标准硬件描述语言.VHDL支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的再利用等优点.利用VHDL的这些优点和先进的EDA,我们可以自己来设计微机中的算术逻辑单元.
&&& 2& 系统简介
&&& 本课题采用公司的MAX+plusⅡ10.0设计平台,以超高速集成电路硬件描述语言VHDL(Very high speed integrated
Description Language)为系统逻辑描述的唯一表达方式,采用自顶向下的设计原则,对ALU模块进行设计.同时,为了测试、仿真的需要,本课题打算采用目前使用最为广泛的MCS-51系列的ALU为设计蓝本,设计完成后得到的IP核将是在功能上和MCS-51系列单片机的ALU相兼容且具有通用性的8位微机的ALU.
&&& 算术、逻辑运算模块的功能是按照给出的指令,对来自数据、程序存储器、累加器A以及程序状态字的相关位的数据,进行相关的算术和逻辑运算.整个模块将用纯组合来实现.图1是用VHDL语言对ALU模块进行描述的设计层次图.由图中可以看出整个ALU由6个模块组成:加/减法器,乘法器、除法器、十进制、逻辑运算器以及一个多路选择器.其中加/减法器又可以分成两个子模块.下面分别介绍它们各自的VHDL语言的实现.
&&& 图1& ALU设计层次图
&&& 3& 系统现实
&&& 3.1 加/减法器
&&& 将加/减法器分成两个子模块,一是为了节约资源.一般的多位加法器都以4位全加器集连而成,而不采用直接设计多位全加器的办法,这样可以大大减少对FPGA/CPLD器件逻辑单元的消耗量.二是因为MCS-51中有一个辅助进位标志、一个进位标志还有一个溢出标志,将一个8位加/减法器分成两个4位的加/减法器的集连,有利于对标志位的处理.子模块Addsub_Cy是一个完整的4位全加/减器,用VHDL语言设计全加/减器很简单,在此不加详述.Addsub_ OV_Cy则与Addsub_Cy稍又不同,它多一个溢出标志的输出位.在MCS-51中,在进行加法或者减法运算时,当位6和位7不同时有进位或借位时,溢出标志OV将置位.因此在设计Addsub_OV_Cy时,当位2和位3不同时有进位或借位时,溢出标志的输出位将会输出高电平.为实现这一目标,有必要在进程中使用中间变量,而后运用一个逻辑表达式来给溢出标志赋值.Addsub_Cy和Addsub_OVCy两个模块的源程序经过MAX+ plusⅡ编译、综合之后就可以形成符号文件.这种符号文件就是一个元件,它将自动加载在用户的元件库中,用户随时可以调用.ALU模块中的加/减法器Addsubcore就是利用这两个元件组合而成.组合的方式有两种,一是利用MAX+plusⅡ中的图形编辑器,运用连线的方式实现;二是运用VHDL语言的元件例化语句实现.前者的优点是直观,对于简单的器件,很比较容易看出电路的走向,但是对于输入输出端口较多的器件,则显得零乱,而且连线也很容易出错.对于输入输出端口较多的器件,后者则有其优势.本文中对底层元件的调用全部采用VHDL语言的元件例化语句实现.使用这种方式,首先必须对需要调用的底层元件进行例化,例化可以在上层的源程序中进行,也可以在自定义的程序包中进行.由于在程序包中例化可以在任何地方调用,所以这里采用后一种例化方法.在整个兼容MCS-IP核设计中,建立了一个统一的程序包mc8051_p,在这个包中例化了所设计的所有模块.在最顶层的设计文件中调用包中的元件,就可以形成最终的8051IP核.经过例化后的元件就可以使用映射语句调用以组合出新的元件.新的元件Addsubcore,其符号如图2所示.Cy_O(0)表示的是辅助进位标志,Cy_O(1)表示的是进位标志.ADDSUB_I表示加减指令("1"加,"0"减).
&&& 图2是对Addsubcore的加、减法器功能进行软件仿真的仿真结果,由图中可以清楚的看出,加、减法器计算结果以及标志的输出均正确,完全满足设计要求.
&&& 图2 Addsubcore的加法、减法器功能仿真图
&&& 3.2& 乘法器
&&& 乘法器将完全采用并行结构.并行结构的特点是运算速度快.不足是将消耗过多的逻辑门.并行乘法结果在现在的一些主流(例如数字信号)中得到广泛应用,因此,为了提高芯片的整体能力,本次设计采用了并行结构来设计乘法器.由于MAX+plusⅡ的VHDL语言编译器支持整数乘法,所以,VHDL语言编写并行乘法器非常简单,其结构体甚至只需要一个语句即可-将输入的标准逻辑矢量变换成unsigned类型后,直接相乘后送给输出信号即可.乘法器对OV标志位的影响将在Alumux模块中反映出来,而其本身并不象Addsuncore模块那样有输出引脚来指示标志位.
&&& 3.3& 除法器
&&& 由于MAX+ plusⅡ的VHDL语言编译器只支持除数为2n(n为自然数)的除法运算,因此设计除法器不可能象设计乘法器那么简单.好在MAX+plusⅡ中为了增加原件库的灵活性,为一些常用的功能模块提供了参数化的元件,这些元件的规模以及具体功能可以由用户直接指定,如同可编程元件.这一类元件就是MAX+plusⅡ中的LPM,即-可调参数元件.可调参数元件不仅可以使用原理图的方法进行调用,而且还可以作为一个底层设计元件,用VHDL的文本方式调用.在MAX+plusⅡ的LPM库中有除法器,因此,使用LPM库中的除法器将是最为简便的方法.与乘法器一样,除法器对OV标志位的影响将在Alumux模块中反映出来,其本身也没有指示标志位的引脚.
&&& 3.4& 十进制调整器
&&& 十进制调整指令是对累加器A中的值进行十进制调整,使A中的结果为2位BCD码数.调整的基本规则为:
&&& 若(A3-0)&9且(A7-4)&=9则(A3-0)=(A3-0)+6,(A7-4)=(A7-4)+7;
&&& 若(A3-0)&9且(A7-4)&& 9则(A3-0)=(A3-0)+6,(A7-4)=(A7-4)+1;
&&& 非以上两种情况,则有:
&&& 若 Ac=1,则(A3-0)=(A3-0)+6;
&&& 若(A7-4)&9或C=1,则(A7-4)=(A7-4)+6.
&&& 注意:只要累加器A的高四位(A7-4)经过调整,那么进位标志位就要被置位.但是该指令不影响辅助进位标志和溢出标志.由以上规则很容易编写出本模块的VHDL程序.图3是十进制调整器DA功能仿真图.由图可以看出,DA调整器完全满足MCS-51单片机的DA指令的要求.
&&& 图3 十进制调整器DA的功能仿真图
&&& 3.5& 逻辑运算器
&&& 逻辑运算器实现MCS-51单片机的各种逻辑运算功能.MCS-51单片机的逻辑指令一共有24条,但其实实现的逻辑功能却只有9种,真是各种逻辑指令还有不同的寻址方式而已.因此,逻辑运算器只需要实现9种逻辑运算功能即可,这9种功能分别是:"与"、"或"、"异或"、"循环左移"、"带进位位循环左移"、"循环右移"、"带进位位循环右移"、"比较"、"取反".到底在每一次操作中对输入的操作数进行哪一种逻辑运算,由的命令决定,很显然,命令至少必须由一个4位的逻辑矢量表示.模块的结构体与前面的几个算术运算模块一样,都由单一进程实现,所有的输入信号都是该进程的敏感信号.由于要从多种不同的语句的系列中选择其中之一执行,故使用VHDL中的CASE语句最合适.图4是逻辑运算器的功能仿真图.其命令的1到9分别对应着上述9种逻辑运算功能.
&&& 3.6& 多路选择器
&&& 图4 逻辑运算器的功能仿真图
&&& 多路选择器是算术、逻辑运算模块的核心.它根据来自控制器的指令,将来自和程序存储器的数据,分配给各种运算模块进行运算,同时要将运算结果和各种标志位输出.由于有不同的寻址方式,所以本来只进行5种算术运算和9种逻辑运算的51系列单片机却一共有48条算术、逻辑类运算指令(算术类24条、逻辑类24条).但是不管用什么寻址方式,送往算术逻辑单元的操作数只可能来自ACC、ROM、RAM.例如51单片机中的3条加法指令:(ADD& A, Rn)、(ADD& A,&& @Ri)和(ADD A, direct)对于ALU模块来说时一样的,他们的作用就是让累加器A与RAM中的内容相加(在此,以ADD_ACC_RAM表示),结果存在A中.依此类推,将所有的算术、逻辑类指令都以此规则进行处理,那么48条算术、逻辑类指令将被综合为31条,31条指令中包括增加的"比较"和"直接寻址RAM的内容取反"的操作指令,MCS-51中本来没有"比较"的操作指令,但是却有比较转移指令,因此"比较"的计算是必须进行的,同样,增加了"直接寻址RAM的内容取反"指令,也是为别的指令服务的.这样就可以用一个5位的逻辑矢量作为输入ALU模块的操作码,由它指示进行何种操,同时也是根据它来决定从ROM和控制器的输入数据的流向.不过为了方便以后扩展算术、逻辑指令,在这里我使用的是6位的逻辑矢量来表示输入的操作码.一方面,多路选择器接收来自控制器、ROM的指令和数据(累加器A,RAM的数据都由控制器输出),按指令的要求将其输出给ALU中的各个运算模块;另一方面,多路选择器也要接收ALU中的各个运算模块计算的结果,按指令要求,将结果送往控制器.所以在多路选择器中必须有引脚接收所有其他ALU组成模块的输出作为其本身的输入信号,同时还要有输出信号为所有其他ALU组成模块提供输入信号.虽然本模块的输出、输入端口很多,但是其实现并不困难.其结构体由两个进程组成,一个进程为的作用是为各个计算单元提供输入信号,另一个进程的作用是将各个计算模块计算所得的结果输出,同时,乘法器、除法器对溢出标志位的影响也将在这个进程中进行处理.限于篇幅,不加详述.
&&& 至此,组成ALU的所有模块已经介绍完毕,将它们组合起来就可以形成所需要的ALU模块了.组合的方式仍然采用使用VHDL映射语句调用例化元件的方法.图5是对ALU模块进行功能仿真的结果之一,它实现的分别是ACC乘以RAM的内容、ACC除以RAM的内容以及ACC自增"1"三种运算.
&&& 图5 算术逻辑单元功能仿真图
&&& 完成了软件仿真以后,就可以谈过Altera公司的EDA实验工具以及MAX+plusⅡ将设计文件转化为硬件的实现.笔者采用ACEX 1K系列器件 EP1K100QC 208-2来实现最终的ALU模块电路,经硬件测试,符合设计要求.
&&& 4& 结束语
&&& EDA技术的出现从根本上改变了以往数字电路的设计模式,使电路设计由硬件设计转变为软件设计,这样提高了设计的灵活性,降低了电路的复杂程度,修改起来也很方便.利用VHDL设计的灵活性,我们可以在实验室利用先进的EDA工具,反复调试所设计的电路,直到达到设计要求.本课题设计出的具有通用性的8位微机的算术逻辑单元电路不仅通过了软件仿真,而且其所有功能已经通过了硬件测试,所以其不仅是一个成熟的软IP核,也是一个成熟的硬IP核.
基于FPGA的算术逻辑单元ALU设计
&&& 随着的发展,的应用已经越来越广泛,且用可编程代替传统的普通已成为一种发展的趋势.可编程逻辑器件FPGA以其高集成度、高速度、开发周期短、稳定性好而受到了人们的青睐,并得到了广泛的应用.由于算术逻辑单元(ALU)在运算中对系统性能要求很高,而采用中小规模的集成设计的系统既庞大又存在稳定性的问题.因此,用可编程逻辑器件FPGA来实现算术逻辑单元是一个很好的选择.而硬件描述语言(HDL)是使用可编程逻辑器件的不可缺少的,所以本文选用VHDL语言.并以设计4位算术逻辑单元为例,来实现算术逻辑单元的功能,又通过纯组合和超级进位方法的应用,使得在高速可编程逻辑器件FPGA的基础上,实现了算术逻辑单元在速度上的进一步优化.
&&& 1.加减法模块(Addsub) 本设计中减法运算通过加补码的方式由加法器实现,这样可以简化系统 前进位(有关超前进位的内容可参阅文献[1]的应用,使得加法器速度受进位限制的问题得到解决.
&&& 源程序如下:
&&& 2.乘法模块和除法模块(Mul,Div) 乘法、除法模块也采用了纯组合逻辑电路的设计.比时序逻辑构成的乘除法器在速度上具有优势.编程原理采用通过逐位相加减的方法来实现.乘法模块源程序如下:
&&& 3.系统仿真
&&& 最后采用VHDL语言中的例化语句对上述各模块进行整合,并对其进行仿真,得到了预期的效果.实现了ALU的各项功能.仿真图如图3所示.
&&& 4.结 语
&&& 随着技术的发展,可编程逻辑器件FPGA和VHDL语言在硬件电路设计中,越来越显示出其优越性,本设计即是一个很好的验证.通过实际的应用和日常的实验中的使用,该ALU系统体现出了良好的稳定性,在速度上也能很好的满足系统的要求.
结构简单的低压低功耗ALU单元设计
&&& 1.引言
&&& 随着手持式个人通讯系统等的发展,低压低功耗高吞吐量的需求越来越多,因此低功耗和元件的设计已经变成了主流.ALU是微最重要的组成部分,其中全加器电路是所有运算电路的基本单元,设计低功耗快速加法器单元是获得低功耗高速运算电路的关键.ALU单元的设计标准是多种多样的,数量显然是一个主要的关注点,因为它极大的影响了功能单元ALU的设计复杂性.另外两个重要的却又相互矛盾的因素是功耗和速度.与功耗降低相关的一个因素是电路能工作的最低电压, 还有一个是晶体管的数量,而全加器晶体管的数量又极大的影响了ALU单元的晶体管数量,因此全加器的设计也是ALU设计中必须重点考虑的一部分.对于已有的全加器的设计按照种类来分有静态C电路,动态电路,传送管和传输门逻辑.其中全静态CMOS电路是最传统的,但需要28个管子.动态电路能极大的减少晶体管的数量但是短路功耗却很大;使用传送门逻辑是一个可选的降低电路复杂性的方案.在中基于传送门和反向器的全加器设计中各使用了20和16个晶体管,为了得到更少管子的全加器,在中基于XOR/XNOR的传送门组成的全加器只用了14个管子,在中,介绍了一个基于传输管的静态能量恢复全加器(SERE),它只使用了10个管子,且不管它自称的功耗小,这个设计相比同类的设计来讲速度比较慢,同时这个设计不能用来级连,因为在低电压下工作时有多阀值损失问题.在中一种新的基于选择电路的10管全加器设计被提出,然而这个设计也同样有多阀值损失问题,以至于不能在低电压级连模式下正确的工作,前面提到的10管全加器都是基于图1的原理来的.文中的ALU单元将采用一种新的10管全加器,它可以减轻阀值损失问题,这个设计可以在使用少量管子的情况下组成快速的并行加法器(RCA)同时保持较低的能量损耗,另外,这个设计可以在较低的工作电压下正确运行.
&&& 图1 .现有的10管全加器结构
&&& 2.新的基于CLRCL全加器的ALU单元
&&& 首先考虑全加器的设计,全加器的逻辑表达式为:
&&& Sum=(A⊙B)·Cin+(A⊕B) ·!Cin Count=(A⊕B) ·Cin+(A⊙B) ·A
&&& 可以看出有两个基本的模型需要使用――XOR和2选1选择器.一个XOR/XNOR功能用传送门逻辑只用四个管子就可以达到,一个2选1选择器可以用两个管子实现.但是这些电路都有不同程度的阀值电压损失,所以在使用时必须小心,文中将采用一种新的全加电路,这个全加器的特点是进位逻辑电平恢复称之为(Complementary and Level Restoring Carry Logic or CLRCL).目的是为了减小电路的复杂性和达到快速的级连运作.为了避免进位链的多阀值电压损失,为此重写全加器的和以及进位逻辑公式:
&&& Sum =(A⊕Cin) ·!Cout+(A⊙Cin) ·B Count =(A⊕Cin) ·B+(A⊙Cin) ·A
&&& 改进后的电路图如图2.其中MUX的电路如图3所示.这样设计的合理之处在于以下几点:首先,避免了使用有阀值损失的信号作为下一个单元的控制信号,这是在现有的10管全加器中普遍存在的问题,这将导致在电路级连的时候有多阀值电压损失从而使电路不能正确工作;第二,在传送管链中去除了没有缓冲的进位信号传送.根据Elmore公式,传送延迟时间跟级连的传送门数目是二次方的关系.即使是中等数目的级连长度,这样的延迟也是不能忍受的.
&&& 图2.新的1位ALU单元电路图
&&& 图3 .MUX 的MOS电路图
&&& 正如图2中全加器部分电路所示,XNOR电路采用了一个2选1选择器加一个反向器来实现,这个反向器的功用有三个:第一,反向器INV1可以用来补偿输出传送门输出电压的损失,这个输出将用来与另外两个2选1选择器一起实现和以及进位功能,这样和以及进位信号的阀值电压损失可以控制在一个|V t|;第二,反向器INV2在进位链中充当了一个的作用,从而加速了进位的传送;第三,同时这个反向器提供了一个进位的互补信号(!Count)供下一级电路使用.这样全部的全加器部分电路就只需要10个管子(5个PMOS和5个NMOS),这是目前我们所知的最少的实现全加器电路的晶体管数目.
&&& 在逻辑与或的功能部分,采用了两个信号来控制(Cnt2和Cnt3)(Figure 2所示),当全加器的和信号以及逻辑与/或功能信号产生后,再使用一个2选1选择器(控制信号为Cnt1),共使用了三个控制信号实现了全加及逻辑与/或的功能(见Table 1),使用了两个用传送门实现的2选1选择器串联后,这个电路会有两个阀值电压的损失,不过这并不影响最终电路的正确操作,因为两个阀值电压的损失在3.3v的工作电压下还是可以正确工作.
&&& 至于左移、右移和SWAP功能可以通过传输门来实现(见Figure 2右部分),通过不同的控制信号可以轻易的实现这些功能.
&&& 前面提到了本文中提出的电路会有两个阀值电压的损失,为了后续电路的正确工作我们可以加一个电平恢复电路,同时这个电路还可以加快电路的传送速度(见Figure 2右半部分),在此恢复电路中我们使用了一个控制信号(Cnt4)来实现三态门的功能以控制信号的输出与否.加上这部分电路后输出信号会取反,在许多处理器中信号采用的是补码形式,而这为补码的实现提供了便利.
&&& 3. 电路分析和仿真结果
&&& 一些其他的全加器设计将用来和本文的全加器比较,因为设计的目标是降低电路的复杂性和提高电路的速度以及能量损耗的降低,所以主要关注于门数少并基于传送门的全加器之间的比较.已有的全加器总结如下表2.
&&& 在0.35um工艺下仿真一些10管的全加器的DC特性,其中Vdd为3.3v,反向器的(W/L)p=1.4um/0.35um 以及(W/L)n=0.7um/0.35um(table3).另外,此电路在1.9v的电压下依然可以正确工作,这为进一步降低功耗提供了一个很好的途径.
&&& 对整个电路进行DC分析,得到整个电路的功耗为12.12 uw,延时1.5ns,仿真结果见图5.另外在AC方面,这个电路的工作频率也是比较高的.
&&& 图5 . 电路仿真结果
&&& 4.结论
&&& 本文提出了一种新的1位的ALU单元.所提议的ALU单元在DC方面,可以在很低的工作电压下工作,功耗小且速度快;在AC方面,由于采用了CLRCL全加器可以工作在很高的频率下.同时,比较了现有的一些全加器的性能,可以看到文中的CLRCL电路不仅使用的晶体管的数目较少,同时它的功耗和速度性能也是比较优良的,极大的提高了1位ALU的性能.
现在有1099人对本文发表评论
<form onsubmit="if(document.getElementById('content').value.length500){alert('评论不能少于三个字符,大于500个字符!');document.getElementById('content').focus();}" action="/common/comment_post.aspx" method="post">
Copyright & 2007- Corp.All Rights Reserved. 版权所有 经营许可证编号: 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:9-8016 QQ: | MSN: |}

我要回帖

更多关于 先行进位加法器原理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信