基于VHDL语言的位加法器的设计

上传人:hs****ma 文档编号:485442527 上传时间:2023-10-29 格式:DOC 页数:11 大小:1.43MB
返回 下载 相关 举报
基于VHDL语言的位加法器的设计_第1页
第1页 / 共11页
基于VHDL语言的位加法器的设计_第2页
第2页 / 共11页
基于VHDL语言的位加法器的设计_第3页
第3页 / 共11页
基于VHDL语言的位加法器的设计_第4页
第4页 / 共11页
基于VHDL语言的位加法器的设计_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于VHDL语言的位加法器的设计》由会员分享,可在线阅读,更多相关《基于VHDL语言的位加法器的设计(11页珍藏版)》请在金锄头文库上搜索。

1、基于 VHDL 语言的位加法器的设计 作者: 日期:1 个人收集整理 勿做商业用途基于 VHDL 语言的8位加法器的设计作者:吴中友(陕理工物理 电子信息科学与技术专业07级1班,陕西 汉中 723000)指导教师:蒋嫒摘要 利用VHDL言语,实现两个4位并行进位加法器,然后将其级联成为一个8位加法器,再实现一个二进制转换成十进制动态显模块,以显示相加结果,并在仿真软MAX+plus II中进行仿真。关键词 VHDL、加法器、MAX+plus IIDesign of 8-bit Adder based on VHDL Wu Zhongyou(Department of Physics,Shaa

2、nxi University of Technology,Hanzhong,Shaanxi 723000)Tutor:Jiang YuanAbstract: using VHDL, and the road to achieve two 4bit adder, and then cascade into an 8bit adder, and then converted to decimal binary to achieve a dynamic explicit module to display the sum of the results, and the simulation soft

3、ware MAX + plus II for simulation.Key words VHDL, adder, MAX + plus II0. 引言加法器是用来实现加法的器件,即它是产生数的和的装置.加数和被加数为输入,和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。加法器常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用,是计算机进行算术逻辑运算的基本部件。研究加法器的实现对于电子硬件设计及其的理论发展的认识和理解具有重要意义。1. 设计原理加法器是数字系统中的基本逻辑器件.为了节省系统资源,减法器和硬件乘法器一般都由加法器来构成。但宽

4、位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器.通常,并行加法器比串行级联加法器的资源占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。实验及事实证明,4位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4位二进制并行加法器级联构成是较好的折中选择。因此,8位加法器采用两个4位二进制并行加法器级联而成。1.1. 实现框图1.1

5、.1. 四位加法器的实现框图如图1.1.1所示,四位加法器采用四个一位全加器级连成串行进位加法器.图1.1四位串行进位加法器其中CSA为一位全加器,A和B为加法器的输入位串,对于四位加法器则位宽为4位,D为加法器输出位串,位宽和输入位串相同,C为进位输入(Ci)或输出(Co)。1.1.2. 减小运算的延迟显然,对于图1.1.1 这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟相当大,运算效率低。由于运算的延迟主要是由进位延迟引起的,所以减少进位的延迟对提高运算速度非常有效。采用图1。1.2所示方法,将进位中的迭代关系去掉,则各位彼此独立,进位传播不复存在。因此,总的延迟是两级门

6、的延迟。这样便可大大减小运算的延迟,从而提高运算效率,实现高速运算.图1.2四位加法器的超前进位的实现图1.2 为四位加法器的超前进位的实现原理图,其中,G表示进位生成位串,与输入位宽相同,P表示进位传输位串,与输入位宽相同。其意义为:如G为1,则必定产生进位,若P为1,则向高位传输进位。当进行加法运算时,G = A and B,P = A or B;当进行减法运算时,G = A and (not B),P = A or (not B).根据图1。2可得到四位加法器的各级进位输出为:C0 = G0 or P0 and CiC1 = G1 or P1 and Co = G1 or P1 and

7、G0 or P1 and P0 and CiC2 = G2 or P2 and C1 = G2 or P2 and G1 or P2 and P1 and G0 or P2 and P1 and P0 and CiC3 = G3 or P3 and C2 = G3 or P3 and G2 or P2 and G1 or P2 and P1 and G0 or P2 and P1 and P0 and CiCo = C3D = A and B and C = (A and ) Xor (A or B) Xor C = G Xor P Xor C上式中 and 为与操作,or 为或操作,not

8、为非操作,Xor 异或操作。1.1.3. 八加法器的实现框图8位加法器采用两个4位二进制并行加法器级联而成。四位加法器采用四个一位全加器级连成串行进位加法器,实现框图如图1。3所示。图1。3 用两个并行四位加法器实现一个八位加法器2. 计设过程要实现8位加法器,需要三个子程序:1。四位加法器;2。二进制转十进制显示模块;3.动态显示模块。2.1. 设计思路利用VHDL言语,实现两个4并行进位加法器,然后将其级联成为一个8位加法器,再实现一个十进制动态显模块,以显示加数、被加数以及相加结果,并在MAX + plus II 中进行仿真。十进制动态显示模块可以通过设计一个9位二进制转换成十进制的显示

9、子程序,并采用分频来实现。2.1.1. 四位二进制并行加法器的设计运用四个全加器级连成串行进位加法器。程序如下:LIBRARY IEEE;USE IEEE。STD_LOGIC_1164.ALL;USE IEEE。STD_LOGIC_UNSIGNED.ALL;ENTITY ADD4 IS PORT(A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CI:IN STD_LOGIC; CO:OUT STD_LOGIC; SO:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY ADD4;ARCHITECTURE H1 OF ADD4 IS

10、BEGIN PROCESS(A,B) IS VARIABLE CQ,QQ,SQ:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN QQ(0):=NOT(A(0)XOR(NOT(B(0))));SQ(0):=NOT(QQ(0) XOR (NOT(CI); IF (A(0) XOR B(0))=1) THEN CQ(0):=CI; -低位相加并产生进位。 ELSE CQ(0):=A(0); END IF; QQ(1):= NOT(A(1) XOR (NOT(B(1))));SQ(1):=NOT(QQ(1) XOR (NOT(CQ(0))); -第二位于前一进位相加,并产生进位

11、。 IF((A(1) XOR B(1)=1) THEN CQ(1):=CQ(0); ELSE CQ(1):=A(1); END IF; QQ(2):= NOT(A(2) XOR (NOT(B(2)));SQ(2):= NOT(QQ(2) XOR (NOT(CQ(1)); IF ((A(2) XOR B(2))=1) THEN CQ(2):= CQ(1); ELSE CQ(2):=A(2); END IF; QQ(3):= NOT(A(3) XOR (NOT B(3)));SQ(3):= NOT(QQ(3) XOR (NOT(CQ(2)));-前一位进位与高位相加并产生进位。 IF ((A(3)

12、 XOR B(3))=1) THEN CQ(3):= CQ(2); ELSE CQ(3):=A(3); END IF; CO=CQ(3);SO=SQ; END PROCESS;END ARCHITECTURE H1;2.2.2 四位并行加法器波形四位加法器的波形如形如图2。1所示,由图可知仿真结果与理论实际相符。2。1 四位并行加法器波形图3. 转换显示模块的设计3.1. 二进制转换成十进制并显示加法器得到的和为二进制,设计以下二进制到十进制转换显示程序使它显示为十进制.程序如下:LIBRARY IEEE;USE IEEE。STD_LOGIC_1164。ALL;USE IEEE.STD_LOG

13、IC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY LOOK ISPORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 0); CLK3:IN STD_LOGIC; SMG:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY LOOK;ARCHITECTURE ONE OF LOOK ISSIGNAL AI,BI,CI: INTEGER RANGE 0 TO 9;SIGNAL XI: STD_LOGIC_VE

14、CTOR(2 DOWNTO 0);SIGNAL LED7S1: STD_LOGIC_VECTOR(20 DOWNTO 0);SIGNAL DI: INTEGER RANGE 0 TO 512;BEGIN DI=CONV_INTEGER(D); PROCESS(DI) IS VARIABLE A,B,C: INTEGER RANGE 0 TO 9; BEGIN A:=DI REM 10; -把整型数的个位赋值给A B:=(DIA) REM 100)/10; -把整型数的十位赋值给B C:=(DI-A10*B)/100; -把整型数的百位赋值给C AI=A;BI=B;CI=C; END PROCESS; PROCESS(AI) IS

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号