上海大学 Verilog 设计 32位浮点加法器设计

上海大学   Verilog 设计 32位浮点加法器设计
上海大学   Verilog 设计 32位浮点加法器设计

32位浮点加法器设计

32位浮点加法器设计 苦行僧宫城 摘要:运算器的浮点数能够提供较大的表示精度和较大的动态表示范围,浮点运算已成为现代计算程序中不可缺少的部分。浮点加法运算是浮点运算中使用频率最高的运算。因此,浮点加法器的性能影响着整个CPU的浮点处理能力。文中基于浮点加法的原理,采用Verilog硬件描述语言设计32位单精度浮点数加法器,并用modelsim对浮点加法器进行仿真分析,从而验证设计的正确性和可行性。 关键词:浮点运算浮点加法器 Verilog硬件描述语言 Studying on Relation ofTechnology and Civilization 苦行僧宫城 (School of Mechatronic Engineering and Automation, Shanghai University, Shanghai , China) Abstract: The floating-point arithmetic provides greater precision and greater dynamic representation indication range, with floating point calculations have become an indispensable part of the program. Floating-point adder is the most frequently used floating point arithmetic. Therefore, the performance of floating point adder affecting the entire CPU floating point processing capabilities. In this paper the principle-based floating-point addition, Verilog hardware description language design 32-bit single-precision floating-point adder and floating-point adder using modelsim simulation analysis in order to verify the correctness and feasibility of the desig 小组成员及任务分配: 1浮点数和浮点运算 1.1浮点数 浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。 1.2浮点格式 常用的浮点格式为IEEE 754 标准,IEEE 754 标准有单精度浮点数、双精度浮点数和扩展双精度浮点数3 种,单精度为32 位,双精度为64 位,扩展双精度为80 位以上,位数越多精度越高,表示范围也越大。在通常的数字信号处理应用中,单精度浮点数已经足够用了,本文将以它为例来设计快速浮点加法器。单精度浮点数如图1所示。 其中s为符号位,s为1 时表示负数,s为0时表示正数;e为指数,取值范围为[1,254],0和255表示特殊值;f有22位,再加上小数点左边一位隐含的1总共23位构成尾数部分。 1.3 浮点运算 浮点加法运算由一些单独的操作组成。在规格化的表示中,对于基为2的尾数的第1个非0位的1是隐含的,因此,可以通过不存储这一位而使表示数的数目增加。但在进行运算时不能忽略。浮点加法一般要用以下步骤完成: a) 指数相减:将2个指数化为相同值,通过比较2个指数的大小求出指数差的绝对值ΔE。 b) 对阶移位: 将指数较小的操作数的尾数右移ΔE位。 c) 尾数加减:对完成对阶移位后的操作数进行加减运算。

实验一四位串行进位加法器的设计实验报告

实验一四位串行进位加法器的设计 一、实验目的 1.理解一位全加器的工作原理 2.掌握串行进位加法器的逻辑原理 3.进一步熟悉Quartus软件的使用,了解设计的全过程, 二、实验内容 1.采用VHDL语言设计四位串行进位的加法器 2.采用画原理图的方法设计四位串行进位加法器 三、实验步骤 1、使用VHDL语言设计 1.打开File—>New Project Wizard输入文件名adder4保存在D盘内,打开File—>New—>VHDL File,从模版中选择库的说明,use语句的说明,实体的说明,结构体的说明,编写VHDL代码,然后保存、编译。打开File—>New—>Other File—>Vector Waveform File,查找引脚,从Edit中选择End Time 输入40、ns 保存。从Assignments—>Settings—>Simulator Settings —>Functional 然后Processing—>Generate Functional Simnlation Netlist —>确定。选择Start Simulation保存最后的波形图,打开File —>close关闭工程。 底层文件: LIBRARY ieee;

USE fadder IS PORT ( a, b,cin : IN STD_LOGIC; s, co : OUT STD_LOGIC ); END fadder; ARCHITECTURE arc1 OF fadder IS BEGIN s<=a xor b xor cin; co<=((a xor b)and cin)or(a and b); END arc1; 顶层文件: LIBRARY ieee; USE adder4 IS PORT ( c0: IN STD_LOGIC; a,b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); s : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); c4 : OUT STD_LOGIC );

四位超前进位加法器原理

超前进位加法器原理 74283为4位超前进位加法器,不同于普通串行进位加法器由低到高逐级进位,超前进位加法器所有位数的进位大多数情况下同时产生,运算速度快,电路结构复杂。其管脚如图1所示: 图1 74283管脚图 其真值表如下所示: 表1 4位超前进位加法器真值表

由全加器的真值表可得S i 和C i 的逻辑表达式: 定义两个中间变量G i 和P i : 当A i =B i =1时,G i =1,由C i 的表达式可得C i =1,即产生进位,所以G i 称为产生量变。若P i =1,则A i ·B i =0,C i =C i-1 ,即P i =1时,低位的进位能传 送到高位的进位输出端,故P i 称为传输变量,这两个变量都与进位信号无关。 将G i 和P i 代入S i 和C i 得: 进而可得各位进位信号的逻辑表达如下:

根据逻辑表达式做出电路图如下: 逻辑功能图中有2输入异或门,2输入与门,3输入与门,4输入与门,2输入或门,3输入或门,4输入或门,其转化成CMOS晶体管图如下:

电路网表如下: *xor 2 .subckt xor2 a b c d f mxorpa 1 a vdd vdd pmos l=2 w=8 mxorpb f d 1 vdd pmos l=2 w=8 mxorpc 2 b vdd vdd pmos l=2 w=8 mxorpd f c 2 vdd pmos l=2 w=8 mxorna f a 3 0 nmos l=2 w=4 mxornb 3 b 0 0 nmos l=2 w=4 mxornc f c 4 0 nmos l=2 w=4 mxornd 4 d 0 0 nmos l=2 w=4 .ends xor2 *and2 .subckt and2 a b f mandpa f a vdd vdd pmos l=2 w=4 mandpb f b vdd vdd pmos l=2 w=4 mandna f a 1 0 nmos l=2 w=4 mandnb 1 b 0 0 nmos l=2 w=4 .ends and2 *and3 .subckt and3 a b c f mandpa f a vdd vdd pmos l=2 w=4 mandpb f b vdd vdd pmos l=2 w=4 mandpc f c vdd vdd pmos l=2 w=4 mandna f a 1 0 nmos l=2 w=6 mandnb 1 b 2 0 nmos l=2 w=6 mandnc 2 c 0 0 nmos l=2 w=6 .ends and3 *and4 .subckt and4 a b c d f mandpa f a vdd vdd pmos l=2 w=4 mandpb f b vdd vdd pmos l=2 w=4 mandpc f c vdd vdd pmos l=2 w=4 mandpd f d vdd vdd pmos l=2 w=4 mandna f a 1 0 nmos l=2 w=8 mandnb 1 b 2 0 nmos l=2 w=8 mandnc 2 c 3 0 nmos l=2 w=8 mandnd 3 d 0 0 nmos l=2 w=8 .ends and4

基于流水线结构的浮点加法器IP核设计

万方数据

陋的论文得到两院院士关注l软件时空 后选择其尾数进入右移模块.如图2a所示。该部分的功能是使移部件和指数修止部件分别进行左移操作和指数修止,并最后两个数的指数位相同.以便进行尾数部分的加法运算。输出整个浮点加法运算的结果。指数修正部件在收到移位位数图2a中,E1、E2分别为两操作数的指数部分,M1、M2为对信号后。会将较大的指数Ex减去移位位数作为最后的指数输应的尾数部分,Ex为两指数中较大的一个指数,Rm为尾数右出。该两部分如图3b所示。 移位数,rsa为需要进行右移操作的尾数,adl为进入加法器的图中lnum为前导判断出的左移位数。inan为左移后的尾另一个操作数的尾数。数部分.Exp为修正后的指数部分;V表示指数溢出,UF表示指3.3右移部分及指数加1部分数下溢.它们用于标志位。 该部分是流水线的第二级。需要右移的尾数在进入右移网络后右移。在尾数相加时有可能会出现溢出的情况,因此需要对在第一级中输出的指数加“l”操作.其结果作为尾数溢出时输出的指数.gapExl。Ex_v表示在Ex加“l”时,指数溢出,也就是浮点数相加时上溢的情况。该部分如图2b所示。 毕南串 ●thlhh,棚 (a)(b) 图2指数对阶及右移网络 3.4加法部件 加法部件的延时向来都在浮点加法器中起关键的作用。此时,尾数部分的加法就可以按照定点数来处理r。定点加法器的常用算法中有行波进位(RCA),超前进位(CLA),和选择进位(CSA)算法。行波进位结构简单,硬件开销少,但进位串行逐级向前传递.在位宽较大时时延会变得难以忍受:而超前进位结构消除了进位逐级传递的效应.且各级的进位输出将同时产生,其速度也最快.但硬件开销也最大;选择进位(CSA)结构则将进位链分组并行。组间采用串行方式连接。每组有两条路径,进位输入为…0’和“l”的丽种情况,通过两条路径同时计算。一旦该组进位输入信号到来,通过多路选择器就可选择出正确的进位输出及和输出.其速度和硬件开销都介于RCA和CLA之间,而在位宽较小的情况下(如32位)时,其速度与CLA相差不大,因此本文中采用CSA结构。该部分如图3a所示。在Dc综合后,该部件的延时为1.56ns.为整个浮点加法器中的关键路径。啦槎 (a)(b) 图3加法器及尾数规格化 3.5规格化部件及指数修正部件 规格化部件和指数修正部件分为两级流水线,第四级流水线主要产生前导…0’或…1’的判断.经过编码产生移位位数信号。与IEEE754数据格式不同的是.在做前导判断的时候,IEEE754只需要检查第一个“l”的位置.而1'I格式是要对与符号数的相反数进行查询.其过程相对复杂,因此本文将该部分单独作为一级流水线处理。第五级流水线则将移位信号送入左 4结论 本文设计的是一种高速浮点加法器的IP软核,使用SMIC提供0.18unlCMOS丁艺单元库并采用Synopsys公司的DesignCoinpiler软件进行综合后发现。如果使用传统的加法器结构,整个设计的关键路径延时为6.3ns.其最高理论运行频率为158MHz.综合后的单元面积为65859um2。而采用本文的加法器结构、算法以及使用流水线分层后,关键路径的延时仅为1.56ns.工作频率可达500MHz以上,单元面积为66742um2。由此可见.在单元面积并未明显增加的基础上。本文方法大幅度的提高了加法器的性能。图4为使用NC—Verilog软件。采用周期为2ns的时钟仿真综合后电路的仿真波形。 本文作者创新点:对传统加法器进行5级流水线合理划分.达到设计高速浮点加法器的目的。 幽4电路仿真波形图 参考文献 『llR.VK.P{llai,D.AL—Khalili,A.J.AL—KhaliliandS.Y.A.Shah.AlowPowerApproachtoFloatingPointAdderDesignforDSPAp?-plications.JounalofVLSISignalProcessing27,195-213,2001[2]DenzilFemandes,VijayRaj,NarsimhanDoriswamy.ASynthesisToolBasedDesignofA1l1MHzCMOSFloatingPointAdderWithBuiltInTestability.IEEE1993 【31D.Narasimhan,D.Femandes,V.K.R且j_J.Dorenbosch,M.Bowden,V.S.KapoorA100MHzFPGABasedFloatingPointAdder.IEEE19930—7803—0826-3/93 【4]NEILBURGESS.NewModelsofPrefixAdderTopologies.Jour-nalofVLSISignalProcessing40,125—141,2005. 【5]TMS320C3xUser’sGuide.2004. 『61钟冬庆。嵌入式DSP处理器的体系结构设计。微计算机信息,2006,10Z:70一71. 作者简介:夏杰(1981一),男(汉),江苏江阴人,江南大学信息工程学院.硕士,研究方向为数字电路设计。 Biography:XIAJie,male(ban),Jiangyin,Jiangsu,Informationde?partmentofJiangnanUniversity,Master,MajorinDigitalCircuitDesign. (214122无锡江南大学信息工程学院)夏杰宣志斌 (214035无锡中国电子科技集团第58研究所)薛忠杰 通讯地址:(214122无锡江南大学信息工程学院)夏杰 (收稿日期:2008.7.25)(修稿日期:2008.9.15)(多目自控嗣邮局订阅号:82-946 36。元,年一193—  万方数据

EDA FPGA设计实例 四位加法器(含源程序)

EDA FPGA 四位加法器设计说明:程序使用原件例化语句编写。 半加器程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY bjq IS PORT(A,B:IN STD_LOGIC; Y,Co:OUT STD_LOGIC); END bjq; ARCHITECTURE bjqbehv OF bjq IS SIGNAL c,d:STD_LOGIC; BEGIN c<=A OR B; d<=A NAND B; Co<=NOT d; Y<=c AND d; END bjqbehv; 全加器程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY qjq IS

PORT(Ci,A,B:IN STD_LOGIC; S,Co:OUT STD_LOGIC); END qjq; ARCHITECTURE qjqbehv OF qjq IS BEGIN S<=A XOR B XOR Ci; Co<=(A AND B) OR (A AND Ci) OR (B AND Ci); END qjqbehv; 加法器例化程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jfq4 IS PORT(A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); Co:OUT STD_LOGIC); END jfq4; ARCHITECTURE jfq4behv OF jfq4 IS COMPONENT qjq PORT(Ci,A,B:IN STD_LOGIC; S,Co:OUT STD_LOGIC); END COMPONENT; COMPONENT bjq PORT(A,B:IN STD_LOGIC; Y,Co:OUT STD_LOGIC); END COMPONENT; SIGNAL C0,C1,C2:STD_LOGIC; BEGIN u1:bjq PORT MAP(A(0),B(0),Y(0),C0); u2:qjq PORT MAP(C0,A(1),B(1),Y(1),C1); u3:qjq PORT MAP(C1,A(2),B(2),Y(2),C2); u4:qjq PORT MAP(C2,A(3),B(3),Y(3),Co); END ARCHITECTURE jfq4behv; 兄弟加qq 352995783,技术交流。 暮落 2011年12月2日

西安邮电大学Verilog 四位超前进位全加器

西安邮电大学Verilog HDL实验报告(二) ——带超前进位的四位全加器 学院名称:电子工程学院 班级:电子 学生姓名: 学号:

实验题目带超前进位的四位全加器 一、实验内容 设计的一个带超前进位的四位全加器。 二、实验步骤 1、在ModelSim软件中对激励模块和设计模块进行书写和编译; 2、对编译好的模块进行仿真。 三、源代码: 1、主程序 module fulladd4(sum, c_out, a, b, c_in); output [3:0] sum; output c_out; input [3:0] a,b; input c_in; wire p0,g0,p1,g1,p2,g2,p3,g3; wire c4,c3,c2,c1; xor a1(p0,a[0],b[0]); xor a2(p1,a[1],b[1]); xor a3(p2,a[2],b[2]); xor a4(p3,a[3],b[3]); and b1(g0,a[0],b[0]); and b2(g1,a[1],b[1]); and b3(g2,a[2],b[2]); and b4(g3,a[3],b[3]); and d1(e1,p0,c_in); or f1(c1,e1,g0); and d2(e2,p1,g0);and d3(e3,p1,p0,c_in);or f2(c2,g1,e2,e3); A nd d4(e4,p2,g1);and d5(e5,p2,p1,g0);and d6(e6,p2,p1,c_in);or f3(c3,g2,e4,e5,e6); and d7(e7,p3,g2);and d8(e8,p3,p2,g1);and d9(e9,p3,p2,p1,g0);and d10(e10,p3,p2,p1,p0,c_in);or f4(c4,g3,e7,e8,e9,e10); xor m0(sum[0],p0,c_in); xor m1(sum[1],p1,c1); xor m2(sum[2],p2,c2); xor m3(sum[3],p3,c3); and n1(c_out,c4,c4); endmodule 2、激励程序 module fulladd4_tb;

超前进位加法器设计报告

存档资料成绩: 华东交通大学理工学院 课程设计报告书 所属课程名称EDA课程设计 题目超前进位加法器设计 分院 专业班级 学号 学生姓名 指导教师 2013 年7月2日

目录 第一章设计内容与要求 (3) 第二章超前进位加法器设计原理 (3) 第三章详细设计流程 (4) 3.1.创建工程文件 (4) 3.2.程序的编译 (5) 3.3.波形的仿真 (7) 第四章设计结果分析 (11) 第五章源程序代码 (12) 第六章心得体会 (14) 第七章参考文献 (15)

第一章设计内容与要求 加法运算是最重要也是最基本的运算,所有的其他基本运算,如减、乘、除运算最终都能归结为加法运算。但因为加法运算存在进位问题,使得某一位计算结果的得出和所有低于他的位相关。因此为了减少进位传输所消耗的时间,提高计算速度,人们设计了多种类型的加法器,如跳跃进位加法器、进位选择加法器、超前进位加法器等。本设计采用的是超前进位加法器。通过Verilog 设计一个超前8位加法器。 要求在Quartus II软件下,利用Verilog编程完成层次式电路设计,电路中的元件可以用Verilog设计也可以用库元件连线构成再封装。8位超前进位加法器,借助EDA工具中的综合器,适配器,时序仿真器和编程器等工具进行相应处理。适配采用Cyclone系列的EP1C6Q240C8。 要求综合出RTL电路,并进行仿真输入波形设计并分析电路输出波形. 试比较并阐述数据类型reg型和wire型的区别。 第二章超前进位加法器设计原理 将n个全加器相连可得n位加法器,但是加法时间较长。解决的方法之一是采用“超前进位产生电路”来同时形成各位进位,从而实现快速加法。超前进位产生电路是根据各位进位的形成条件来实现的 首先对于1位加法器基本位值和与进位输出为1;如果a,b有一个为1,则进位输出等于cin; 令G=ab,P=a+b,则有: Cout==ab+(a+b)cin=G+P?cin 由此可以G和P来写出4位超前进位链如下(设定四位被加数和加数为A

32位浮点数加法设计仿真实验报告

32位浮点数加法设计仿真实验报告 名字:李磊学号:10045116 班级:10042211 32位浮点数的IEEE-754格式 单精度格式 IEEE.754标准规定了单精度浮点数共32位,由三部分组成:23位尾数f,8位偏置指数e,1位符号位s。将这三部分由低到高连续存放在一个32位的字里,对其进行编码。其中[22:0]位包含23位的尾数f;[30:23]位包含8位指数e;第31位包含符号s {s[31],e[30:23],f[22:0]} 其中偏置指数为实际指数+偏置量,单精度浮点数的偏置量为128,双精度浮点数的偏置量为1024。 规格化的数:由符号位,偏置指数,尾数组成,实际值为1.f乘2的E-128次方 非规格化的数:由符号位,非偏置指数,尾数组成,实际值为0.f乘2的E次方 特殊的数:0(全为零),+无穷大(指数全为1,尾数为0,符号位为0),-无穷大(指数 全为1,尾数为0,符号位为1),NAN(指数全为1,尾数为不全为0) 浮点数加法器设计 设计思路: 1.前端处理,还原尾数 2.指数处理,尾数移位,使指数相等 3.尾数相加 4.尾数规格化处理 5.后端处理,输出浮点数 具体设计: 设计全文: module flowadd(ix, iy, clk, a_en, ost,oz); input ix, iy, clk, a_en; output oz, ost; wire[31:0] ix,iy; reg[31:0] oz;

wire clk,ost,a_en; reg[25:0] xm, ym, zm; reg[7:0] xe, ye, ze; reg[2:0] state; parameter start = 3'b000, //设置状态机 zerock = 3'b001, exequal = 3'b010, addm = 3'b011, infifl = 3'b100, over = 3'b110; assign ost = (state == over) ? 1 : 0; /*后端处理,输出浮点数*/ always@(posedge ost) begin if(a_en) oz <= {zm[25],ze[7:0],zm[22:0]}; end always@(posedge clk) //状态机 begin case(state) start: //前端处理,分离尾数和指数,同时还原尾数 begin xe <= ix[30:23]; xm <= {ix[31],1'b0,1'b1,ix[22:0]}; ye <= iy[30:23]; ym <= {iy[31],1'b0,1'b1,iy[22:0]}; state <= zerock; end zerock: begin if(ix == 0) begin {ze, zm} <= {ye, ym}; state <= over; end else if(iy == 0) begin {ze, zm} <= {xe, xm}; state <= over; end else

4位超前进位加法器设计讲解学习

4位超前进位加法器 设计

、、 模拟集成电路分析与设计课程设计报告 题目4位超前进位加法器设计 学院(部)电控学院 专业电子科学与技术 班级 学生姓名 学号

前言 20世纪是IC迅速发展的时代。计算机等信息产业的飞速发展推动了集成电路(Integrated Circuit—IC)产业。大多数超大规模集成电路(Very Large Scale IC—VLSI)在日常生活中有着广泛的应用。在这些广泛应用的运算中,加法器是组成这些运算的基本单元。在高性能微处理器和DSP处理器中,加法器的运算时间至关重要。加法器运算常常处于高性能处理器运算部件的关键路径中,特别是在算术逻辑单元中加法器的运算时间对处理器的速度起着决定性的作用。随着微处理器的运算速度越来越快,对快速加法器的需求也越来越高。 当今,加法器的设计面临两大课题,首先是如何降低功耗。随着便携式IC产品例如MP3播放器,手机和掌上电脑等的广泛使用,要求IC工程师对现有运算模块的性能作进一步改进,尤其是在电路的功耗和尺寸方面。由于现在相应的电池技术难以和微电子技术的发展速度匹敌,这使得IC设计师遇到了许多限制因素,比如高速,大吞吐量,小尺寸,低功耗等。因此,这使得研究低功耗高性能加法单元持续升温。另一方面就是如何提高加法器的运算速度。因为加法运算存在进位问题,使得某一位计算结果的得出和所有低于它的位相关。因此,为了减少进位传输所耗的时间,提高计算速度,人们设计了多种类型的加法器,如超前进位加法器曼彻斯特加法器、进位旁路加法器、进位选择加法器等。它们都是利用各位之间的状态来预先产生高位的进位信号,从而减少进位从低位向高位传递的时间。 本文首先介绍了的加法器的类型以及其工作原理,然后重点分析了超前进位加法器的组成结构、结构参数以及

用verilog编写的32位超前进位加法器代码

//超前进位加法器 `define word_size 32 `define word [`word_size-1:0] `define n 4 `define slice [`n-1:0] `define s0 (1*`n)-1:0*`n `define s1 (2*`n)-1:1*`n `define s2 (3*`n)-1:2*`n `define s3 (4*`n)-1:3*`n `define s4 (5*`n)-1:4*`n `define s5 (6*`n)-1:5*`n `define s6 (7*`n)-1:6*`n `define s7 (8*`n)-1:7*`n module c_adder (a,b,cin,s,cout); //顶层模块 input`word a,b; input cin; output`word s; output cout; wire[7:0] gg,gp,gc; // wire[3:0] ggg,ggp,ggc; // wire gggg,gggp; // //first level bitslice i0(a[`s0],b[`s0],gc[0],s[`s0],gp[0],gg[0]); bitslice i1(a[`s1],b[`s1],gc[1],s[`s1],gp[1],gg[1]); bitslice i2(a[`s2],b[`s2],gc[2],s[`s2],gp[2],gg[2]); bitslice i3(a[`s3],b[`s3],gc[3],s[`s3],gp[3],gg[3]); bitslice i4(a[`s4],b[`s4],gc[4],s[`s4],gp[4],gg[4]); bitslice i5(a[`s5],b[`s5],gc[5],s[`s5],gp[5],gg[5]); bitslice i6(a[`s6],b[`s6],gc[6],s[`s6],gp[6],gg[6]); bitslice i7(a[`s7],b[`s7],gc[7],s[`s7],gp[7],gg[7]); //second level cla c0(gp[3:0],gg[3:0],ggc[0],gc[3:0],ggp[0],ggg[0]); cla c1(gp[7:4],gg[7:4],ggc[1],gc[7:4],ggp[1],ggg[1]); assign ggp[3:2]=2'b11; assign ggg[3:2]=2'b00; //third level cla c2(ggp,ggg,cin,ggc,gggp,gggg); assign cout=gggg|(gggp&cin); endmodule

实验二一位8421BCD码加法器的设计

实验二一位8421BCD码加法器的设计 一、实验目的 1. 理解四位加法器7483和四位比较器7485的工作原理及使用 2. 掌握一位8421BCD码加法器的工作过程 3. 进一步熟悉Quartus软件的使用,了解设计的全过程, 二、实验内容 1.采用画原理图的方法设计一位8421BCD码加法器。要求使用四位 加法器7483和四位比较器7485及必要的逻辑门电路。 三、分析过程 7483是四位二进制加法器,其进位规则是逢16进1。而8421BCD 码表示的是十进制数,进位规则是逢10进1。用7483将两个1位BCD码相加时,当和小于等于9时,结果正确;当和大于9时,需加6进行修正。 实验中要求使用7483、7485及必要的逻辑门完成。由于7483通过输出引脚C4 S3 S2 S1 S o输出二进制的和,7485是四位比较器,关键在于如何通过7483及7485的输出判断何时应对结果修正以及如何修正。 由于两个1位十进制数相加时,和的取值范围是0—18,将该范围内各数值对应的二进制数和8421BCD码列表,以便寻找何时应对结果修正以及如何修正

从表中分析可得出如下结论: 当7483输出的二进制数的和为0---9时,即S3 S2 S1 SO W 9时结果正确,不需修正;当和为10-----15时S3 S2 S1 S)> 9时,需加6 修正,此种情况可将7483的输出S3 S2 S1 S0送入7485的输入引脚A3 A2 A1 A0 ,将1001(即卩9)送入7485另一组输入引脚B3 B2 B1 B0, 若7485的输出A> B=1,则说明需加6修正;当和为16、17、18时,结果需加6修正。此种情况7483的输出S3 S2 S1 S)v 9,但C4=1。 综合以上分析,当7483输出的二进制数的和S3 S2 S1 S)> 9或 C4=1时结果需修正。此修正的条件可通过7485的输出A> B和7483 输出的C4通过逻辑或门(OR1获得。当OR1输出为1时需修正,当OR1输出为0时不需修正。(分析出何时应对结果修正)

超前进位加法器的设计分解

沈阳航空航天大学 课程设计报告 课程设计名称:计算机组成原理课程设计课程设计题目:超前进位加法器的设计院(系):计算机学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 完成日期:2014年01月10日

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (2) 1.1设计原理 (2) 1.2设计思路 (3) 1.3设计环境 (3) 第2章详细设计方案 (4) 2.1顶层方案图的设计与实现 (4) 2.1.1顶层方案的整体设计 (4) 2.1.2元器件选择和引脚锁定 (5) 2.2功能模块的设计与实现 (6) 2.2.1 八位超前进位加法器的设计与实现 (6) 2.3功能仿真调试 (8) 第3章编程下载与硬件测试 (10) 3.1编程下载 (10) 3.2硬件测试及结果分析 (10) 参考文献 (12) 附录 (13)

第1章总体设计方案 1.1 设计原理 将n个全加器相连可得n位加法器,但是加法时间较长。解决的方法之一是采用“超前进位产生电路”来同时形成各位进位,从而实现快速加法。超前进位产生电路是根据各位进位的形成条件来实现的。 四位超前进位加法器的设计: ①只要满足下述两个条件中的任一个,就可形成C1,(1)X1,Y1均为1;(2)X1,Y1任一个为1,且进位C0为1。由此,可以得到C1的表达式为:C1=X1*Y1+(X1+Y1)*C0; ②只要满足下述条件中任一个即可形成C2,(1)X2,Y2均为1;(2)X2,Y2任一为1,且X1,Y1均为1;(3)X2,Y2任一为1,同时X1,Y1任一为1,且C0为1。由此,可以得到C2的表达式为:C2=X2*Y2+(X2+Y2)*X1*Y1+(X2+Y2)*(X1+Y1)*C0; ③同理,有C3,C4表达式如下: C3=X3*Y3+(X3+Y3)*X2*Y2+(X3+Y3)*(X2+Y2)*X1*Y1 +(X3+Y3)*(X2+Y2)*(X1+Y1)*C0; C4=X4*Y4+(X4+Y4)*X3*Y3+(X4+Y4)*(X3+Y3)*X2*Y2 +(X4+Y4)*(X3+Y3)*(X2+Y2)*X1*Y1+(X4+Y4)*(X3+Y3)*(X2+Y2)*(X1+Y1)*C0。 引入进位传递函数Pi和进位产生函数Gi。它们的定义为: Pi=Xi+Yi Gi=Xi*Yi P1的意义是:当X1,Y1中有一个为1时,若有进位输入,则本位向高位传送此进位,这个进位可以看成是低位进位越过本位直接向高位传递的。G1的意义是:当X1,Y1均为1时,不管有无进位输入,本位定会产生向高位的进位。 将Pi、Gi代入C1到C4式子中,便可得到: C1=G1+P1*C0;式(1.1.1)

四位串行进位加法器设计

集成电路CAD课程设计报告 四位串行加法器设计 1串行进位加法器简介 1.1加法器实现多为二进制数相加的电路,称为加法器。根据进位方式不同,有串行进位加法器和超前进位加法器之分。采用串行进位方式,优点是电路简单,连接方便;缺点是运算速度不高。 原理:把四个全加器(例如两片74LS183)依次级联起来,便可构成四位串行进位加法器。因此四位串行进位加法器的设计可以分以下两步进行:(1)全加器设计;(2)将全加器级联,构成四位串行进位加法器 (a)(b) 图(1)四位串行加法器7483 1.2 图2为四位串行加法器7483逻辑图

图(2)四位串行加法器 2 四位串行进位加法器的设计实现: 2.1 输出级电路设计 与TTL电路兼容驱动10个TTL ①输出高电平时|IoH|<=20uAV oHmin=4.4V ②输出低点平时|IoH|<=20mAV oHmax=0.4V ③输出级充放电时间tr=tf 计算电路如图3所示 ①以15个PF的电容负载代替10个TTL电路来计算tr、tf ②输入V为的前一级的输出被认为是理想的输出,即:

ViL=Vss,ViH=Vdd ③计算电流时,负载为电流负载,有拉电流的灌电流。 图3 (1)CMOS N 管(W/L )N 的计算: 当输入为高电平时(Vi=Vdd ),N 管导通后级TTL 电路有较大的灌电流输入,此时(表示成对称形式) 使方括号中的值和栅电容Cox 及电子迁移率un 为最小值: o u t 00f f [] 200200)()(2V V V V V V C L W I tn i s tn ox N n dsn -----? ?? ??=μm ax 0m in 2 ox SiO ox t C εε= 2 30m ax 0m in - ??? ? ? ?=T T n n μμ

超前进位加法器设计

湖南师范大学职业技术学院(工学院)实验数据报告单 实验课程:计算机组成原理 实验题目:超前进位加法器设计 实验日期: 2011年 10 月 25 日 专业:计算机科学与技术年级:09级班级:04班姓名:涂小康学号:2009180414 一.实验目的 (1)掌握超前进位加法器的原理及其设计方法。 (2)熟悉CPLD应用设计及EMA软件的使用。 二.实验内容 (1)设计电路原理图. (2)了解加法器的工作原理,掌握超前进位产生电路的设计方法. (3)正确将电路原理图下载到试验箱中. (4)正确通过实验箱连线实现4位二进制数的相加并得到正确结果 三.实验原理 加法器是执行二进制加法运算的逻辑部件,也是CPU运算器的基本逻辑部件(减法可以通过补码相加来实现)。加法器又分半加器和全加器,不考虑低位的进位,只考虑两个二进制数相加,得到和以及向高位进位的加法器叫半加器,而全加器是在半加器的基础上又考虑了低位进来的进位信号。 串行加法器运算速度慢,其根本原因是每一位的结果就要依赖于低位的进位,因而可以通过并行进位的方式来提高效率。只要能设计出专门的电路,使得每一位的进位能够并行地产生而与低位的运算情况无关,就能解决这个问题。可以对加法器进位的逻辑表达式做进一步的推导: C o=0 C i+1=A i B i+A i C i+B i C i=A i B i+(A i+B i)C i 设 G i=A i B i P i=A i+B i 则有: C i+1=g i+p i C i =g i+p i(g i-1+p i-1C i-1) =g i+p i(g i-1+p i-1(g i-2+p i-2C i-2)) … =g i+p i g i-1+p i p i-1g i-2+…+p i p i-1… p1p0+p i p i-1…p1p0C0 由于g i、p i只和A i、B i有关,这样C i=1就只和A i、A i-1、…、A0,B i、B i-1、…、B0及C0有关。所以各位的进位C i、C i-1…、C1就可以并行产生,这种进位就叫超前进位。 根据上面的推导,随着加法器位数的增加,越是高位的进位逻辑电路就会越复杂,逻辑器件使用也就越多。事实上我们可以继续推导进位的逻辑表达式,使得某些基本逻辑单元能够复用,且能照顾到进位位的并行产生。 定义:G i,j=g i+P i g i-1+p i p i-1g i-2+…+p i p i-1…p j+1g j P i,j=p i p i-1…p j+1p j 则有 G i,j=g i P i,j=p i

超前进位加法器设计实验实验

《计算机组成原理》实验报告 实验序号:四实验项目名称:超前进位加法器设计实验xx 1xx 姓名xx 专业、班XX 实验地点XX 指导教师xx 实验时间XX 一、实验目的及要求 (1) 掌握超前进位加法器的原理及其设计方法。 (2) 熟悉CPLD 应用设计及EDA 软件的使用。 二、实验设备(环境)及要求 PC 机一台,TD-CM3+或TD-CMX 实验系统一套。 三、实验内容与步骤 (1) 根据上述加法器的逻辑原理使用Quartus II 软件编辑相应的电路原理图并进行编译,其在EPM1270 芯片中对应的引脚如图1-2-7 所示,框外文字表示I/O 号,框内文字表示该引脚的含义(本实验例程见‘安装路径\Cpld\Adder\Adder.qpf’工程)。 (2)关闭实验系统电源,按图1-2-8 连接实验电路,图中将用户需要连接的信号用圆圈标明。

(3) 打开实验系统电源,将生成的POF 文件下载到EPM1270 中去。 (4) 以CON 单元中的SD17…SD10 八个二进制开关为被加数A,SD07…SD00 八个二进制开关为加数B,K7 用来模拟来自低位的进位信号,相加的结果在CPLD 单元的L7…L0 八个LED灯显示,相加后向高位的进位用CPLD 单元的L8 灯显示。给A 和B 置不同的数,观察相加的结果。 四、实验结果与数据处理 如在SD17...SD10中输入1111 1001,在SD07...SD00中输入1001 1111,在实验箱中可看到用来模拟低位与高位的进位信号K7、L8灯变亮,同时可看到A01...A08与L7...L0上的显示分别为1001与1000。 五、分析与讨论(心得) 这个实验是上个实验的扩展,进一步加深了我对运算器的认识。现实生活中我们也要学会对已有的知识的一种扩展补充,进一步加深对已有知识的巩固,并探索其更深层次的东西,设计出与众不同的东西来。这个算法的核心是把8 位加法器分成两个 4 位加法器,先求出低 4 位加法器的各个进位,特别是向高4 位加法器的进位 C 4 。然后,高4 位加法器把 C 4 作为初始进位,使用低4 位加法器相同的方法来完成计算。每一个 4 位加法器在计算时,又分成了两个 2

快速浮点加法器的FPGA实现

—202 — 快速浮点加法器的FPGA 实现 郭天天,张志勇,卢焕章 (国防科技大学ATR 实验室,长沙 410073) 摘 要:讨论了3种常用的浮点加法算法,并在VirtexII 系列FPGA 上实现了LOP 算法。实验结果表明在FPGA 上可以实现快速浮点加法器,最高速度可达152MHz ,资源占用也在合理的范围内。 关键词:浮点加法器;移位器;前导1预测;FPGA FPGA Implementation of Fast Floating-point Adder GUO Tiantian, ZHANG Zhiyong, LU Huanzhang (ATR Lab, NUDT, Changsha 410073) 【Abstract 】Three commonly used Floating-point addition algorithms are discussed, and the LOP algorithm is implemented on VirtexII series FPGA. The implementing results show that the fast floating-point adder can be implemented on FPGA, the highest running frequency is 152MHz and the area cost is rational compare to the entire resources. 【Key words 】Floating point adder ;Shifter ;Leading-one predicator ;FPGA 计 算 机 工 程Computer Engineering 第31卷 第16期 Vol.31 № 16 2005年8月 August 2005 ·开发研究与设计技术· 文章编号:1000—3428(2005)16—0202—03 文献标识码:A 中图分类号:TP302 浮点加/减法是数字信号处理中的一个非常频繁并且非常重要的操作。在现代数字信号处理应用中,浮点加减运算几乎占到全部浮点操作的一半以上。浮点算法比定点算法更复杂,占用更多资源。目前在大多数数字信号处理系统中,一般都是由DSP 芯片来完成浮点运算。用DSP 芯片完成浮点运算的好处是容易实现,精度高,缺点是加重DSP 芯片的负担,系统速度可能会受到影响。在某些情况下需要使用专门的浮点处理部件才能满足系统要求。 FPGA 具有可编程、资源丰富、开发周期短、小批量成本低等优点,它已经成为数字电路研究开发的一种重要实现形式,并广泛应用于各种数字信号处理系统当中。原来在FPGA 中实现浮点处理部件是很困难的,主要是由于早期的FPGA 速度较慢,资源较少,浮点算法对它来说过于复杂。例如一个32位的浮点加法器就要占用Altera 8188 72%的资源,时钟频率最大只有10MHz [1],这样的效果当然不能令人满意。近年来随着集成电路工艺水平的不断提高,以及体系结构方面的发展,FPGA 的容量、速度、资源等方面都有了很大的提高。例如Xilinx 公司最新的FPGA 已经采用90nm 工艺,最高时钟频率达到420MHz ,容量达到1 000万逻辑门以上,内部还包括处理器、数字锁相环、块RAM 、大量的寄存器等多种资源,支持多种I/O 接口标准[6]。FPGA 的速度和容量已经不再是瓶颈了,所以研究浮点处理部件的FPGA 实现具有很强的实际意义。 本文将介绍在Xilinx 公司的VirtexII 系列FPGA 上快速浮点加法器的一种实现形式。 1 浮点格式 常用的浮点格式为IEEE 754标准,IEEE 754标准有单精度浮点数、双精度浮点数和扩展双精度浮点数3种,单精度为32位,双精度为64位,扩展双精度为80位以上,位数越多精度越高,表示范围也越大。在通常的数字信号处理应用中,单精度浮点数已经足够用了,本文将以它为例来设计快速浮点加法器。单精度浮点数如图1所示。 图1 IEEE 754单精度浮点数格式 其中s 为符号位,s 为1时表示负数,s 为0时表示正数;e 为指数,取值范围为[1,254],0和255表示特殊值;f 有22位,再加上小数点左边一位隐含的1总共23位构成尾数部分。由它表示的浮点数v 的值如下式所示。 (127)(1)2(1.)s e v f ?=??? 32位浮点数可以表示的范围为38 38 1.210 3.410?+±×?±×。在某些情况下可能不需要32位的精度,那么可以用24位或者16位来表示浮点数,如16位浮点数表示如图2所示。 图2 16位浮点数格式 16位浮点数v 的值如下式所示。 (31)(1)2(1.)s e v f ?=??? 16位浮点数可以表示的范围为9 10 8.581510 6.98510?±×?±×。 2 浮点加法器算法 浮点加法一般包括求阶差、对阶、尾数求和、规格化和舍入等步骤,具体的算法在各种文献[1,2]上都有详细的叙述,这里就不再一一介绍了。目前比较常用的浮点加法有3种[3],如图3所示。图中用到的符号描述如下: a E , b E :加数a 和加数b 的指数; a M ,b M :加数a 和加数b 的尾数; diff :两个指数的绝对差,diff =b a M M ?; 作者简介:郭天天(1974—),男,博士生,主研方向为ASIC 与实时系统、DSP 与FPGA 应用等;张志勇,博士生;卢焕章,教授、博导 定稿日期:2004-07-08 E-mail :ttguo0452@https://www.360docs.net/doc/b616434382.html, 位数位数

相关文档
最新文档