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

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

32位浮点加法器设计

摘要:浮点数具有数值范围大,表示格式不受限制的特点,因此浮点数的应用是非常广泛的。浮点数加法运算比较复杂,算法很多,但是为了提高运算速度,大部分均是基于流水线的设计结构。本文介绍了基于IEE754标准的用Verilog 语言设计的32位浮点加法器,能够实现32位浮点数的加法运算。虽然未采用流水线的设计结构但是仍然对流水线结构做了比较详细的介绍。 关键字:浮点数,流水线,32位浮点数加法运算,Verilog 语言设计

32-bit floating point adder design

Cao Chi,Shen Jia- qi,Zheng Yun-jia

(School of Mechatronic Engineering and Automation, Shanghai University, Shanghai ,China ) Abstract://沈佳琪搞定

Key words :float; Assembly line; 32-bit floating-point adder 浮点数的应用非常广泛,无论是在计算机还是微处理器中都离不开浮点数。但是浮点数的加法运算规则比较复杂不易理解掌握,而且按照传统的运算方法,运算速度较慢。因此,浮点加法器的设计采用了流水线的设计方法。32位浮点数运算的摄入处理采用了IEE754标准的“0舍1入”法。

1. 浮点数的介绍

在处理器中,数据不仅有符号,而且经常含有小数,即既有整数部分又有小数部分。根据小数点位置是否固定,数的表示方法分为定点表示和浮点表示。浮点数就是用浮点表示法表示的实数。浮点数扩大了数的表示范围和精度。浮点数由阶符、阶码E 、数符、尾数N 构成。任意一个二进制数N 总可以表示成如下形式:N=。通常规定:二进制浮点数,其尾数数字部分原码的最高位为1,叫作规格化表示法。因此,扩大数的表示范围,就增加阶码的位数,要提高精度,就增加尾数的位数。浮点数表示二进制数的优势显而易见。

(阶符)

(阶码)

(数符)

(尾数)

31 30 23 22 0 32位浮点数:

64位浮点数:

在IEEE754标准格式表示的32位浮点数中,S 表示浮点数的符号位,0表示正数,1表示负数;M 表示尾数,共23位,用小数表示,小数点放在尾数域的最前面;E 表示阶码,共8位,采用移码方式表示正负指数。移码方法对两个指数的大小的比较和对阶操作比较方便。采用这种方式时,浮点数的指数真值e 变成阶码E 时,应将指数e 加上一个固定的偏移地址127(二进制数01111111),即E=e+127。在IEEE754标准中,一个规格化的32位浮点数X 的真值可表示为

X =(-1)s

×(1.M)×2

E-127

e =E-127

一个规格化的64位浮点数x的真值为

S E M S E M

X=(-1)s

×(1.M)×2

E-1023

e=E-1023

为提高数据的精度,当尾数的值不为0时,尾域的最高有效位为1,否则修改阶码同时左右移动小数点,使其变成规格化表示的浮点数。这一过程称之为规格化表示。当浮点数的尾数为零时,不论阶码为何值或者阶码的值遇到比它所能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数当做零值。原码非0值浮点数的尾数值最高位必定为1,在保存浮点数时,通过尾数左移(小数点向右移动)把该位去掉,用同样多的位数能多存一位二进制数,有利于提高数据表示精度,这种处理方案称之为隐藏位技术。32位浮点数的表示范围有限,超过该范围的浮点数会产生溢出。溢出分为正上溢和负上溢。

2.32位浮点数加法运算

浮点数的加法运算与二进制数直接进行加法运算区别是很大的。浮点数的加法运算分为以下几个步骤:

(1)0操作数的检查;

(2)比较阶码大小并完成对阶;

(3)尾数进行加法运算;

(4)结果进行规格化处理;

(5)舍入处理;

(6)溢出处理。

0操作数的检查是判断两个数据是否为零,若有一个数据为0则直接输出结果;比较两个数据的阶码大小,并通过尾数的移动来改变阶码使其相等。对阶的过程要遵循阶码小的向阶码大的数对齐,小阶的尾数右移,每右移一位,阶码加一。尾数求和运算与一般二进制数的加法运算相同;在尾数相加后得到的数可能不是规格化的数,为了提供运算的精度,就必须对求和的结果进行规格化处理。当运算结果溢出时,进行右归。左归时阶码做减法,右归时阶码做加法。在IEEE754标准中,舍入处理提供了四种方法:(1)就近舍入:实质上就是通常所说的“四舍五入”。

(2)朝0舍入:朝数轴原点方向舍入,就是简单的截尾。无论尾数是正数还是负数,截尾都使取值的绝对值比原值的绝对值小。

(3)朝+∞舍入:对正数来说,只要多余位不全为0则向最低有效位进1;对负数来说则是简单的截尾。

(4)朝—∞舍入:处理方法与朝+∞舍入情况相反。对正数来说只要多余位不全为0则简单截尾;对负数来说,向最低有效位进1。

(5)与一般二进制数的加法运算相似,浮点数的加法运算也要是否溢出。尾数之和出现01.xxxx或10.xxxx时,并不表示溢出,只有将此数进行右归后,再根据

阶码来判断浮点运算结果是否溢出。一般说浮点是否溢出均是指上溢(正上溢、下上溢)。因此,浮点数是否溢出可由阶码来决定。

从以上加法的运算过程可以看出,浮点数加法运算步骤较多,体系结构相对比

较复杂,目前比较常见的浮点加法器的结构有标准算法结构、LOP算法结构、双

通道算法结构。一般的标准算法结构首先比较阶数,得到阶差,根据阶差进行

尾数的移位,然后送入定点加法器进行尾数相加,规格化单元对结果进行规格

化,在规格化单元里有一个前导1检测电路,可检测出尾数中第一个1的位置,

后移位器根据此位置对尾数进行左移,同时减去相应的值。

LOP算法与标准算法的区别在于它采用前导1预测电路代替了前导1检测电路代

替了前导1检测电路。LOP电路可以与尾数加法并行执行,这样减少整个系统的

延迟。

双通道算法的结构有两个并行的数据通道,当指数差大于1时,选择far通道,

指数对阶分配较长时间,尾数运算结果规范化时的移位分配较少的时间,否则

选择close通道,此时尾数最多移一位,甚至不用移位,这样可以去掉前移位

器。在以上3种算法中,一般的标准算法延迟较大,但占用资源最少;双通道

算法虽然延迟较小,但占用资源最多。在进行后续的流水线设计时,由于结构

复杂,因而不利于流水线寄存器的插入和流水级数的划分,从而导致了时序速

度的下降。LOP算法的速度和面积介于两者之间。

综合比较以上三种算法以及自己知识的局限性,因此采用一般的标准算法来进

行32浮点数运算加法器的设计。

3.流水线设计结构

流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分为

若干个步骤,而且是整个数据处理是“单流向”的,即没有反馈或者是迭代运

算,前一个步骤的输出是下一个步骤的输入则可以考虑采用流水线设计方法提

系统的工作频率。流水线设计的结构如图所示:

其基本结构为:将适当划分的单个操作步骤单流向串联起来。流水线操作的特点和要求是,从时间上看数据流在各个步骤的处理是连续的。如果将每个操作步骤简化假设为通过一个D触发器,那么流水线操作就类似一个移位寄存器组,数据流依次流经D触发器,完成每个步骤的操作。流水线时序设计如下图:

Step1 Step2 Step3

a1 a2

Step1 Step2 Step3

b1 b2 a3

Step1 Step2 Step3

c1 c2 c3 a4

流水线设计的关键在于整个设计时序的合理安排。要求每个操作步骤的划分合理。如果前级操作时间恰好等于后级操作时间,设计最为简单,前级的输出直接汇入后级的输入即可。如果前级操作时间大于后级的操作时间,则需要对前级的输出数据适当缓存,才能汇入后级的输入端。如果前级操作时间恰好小于后级的操作时间,则必须通过复制逻辑,将数据分流,或者在前级对数据采用存储、后处理方式,否则会造成后级数据溢出。

流水线的处理方式相当于复制了处理模块,所以通过这种方式设计的芯片频率较高。在本文

中32位浮点加法器的设计虽然没有采用流水线的设计结构,但是仍然从中得到了启发。4.32位浮点加法器的Verilog设计

在进行Verilog语言设计32位浮点加法器时,要先画出流程图。在画流程图之前,要理顺32位浮点加法器的顺序步骤,在此基础上画出其程图如图:

从流程图可以看出,浮点加法运算器的完成可以分成阶码和尾数两部分。阶码只有加减运算(左右移位),而尾数则有加减乘除4种运算。因此,浮点加法运算器主要由两个定点运算部件组成,一个是阶码运算部件来完成阶码加减,以及控制对阶时小阶的尾数右移次数和规格化时对阶码的调整;另一个是尾数运算部件来完成尾数的加减运算并判断尾数是否已规格化。除了这两个主要的运算部件之外,还需要一个溢出电路来判断是否溢出。根据以上的流程图和分析,可以大致画出运算电路的结构图:

两个操作数的阶码部分,分别放在寄存器E1和E2中,它们与并行加法器相连可以计算E1±E2。阶码比较是通过E1-E2来实现的,相减结果放在计数器E。然后按E的符号来决定哪一个阶码较大,并用E来控制其中一个尾数的移位次数。E每递减1次,相应的尾数右移一位,直到E=0为止。一旦尾数调整完毕,就可按通常的加、减方法处理,并将其结果的阶码放入E寄存器中。在画出浮点加法运算器的内部电路后,就可以用Verilog语言来编写程序了。在编写的程序中使用的是同步有限状态机来实现电路的功能的。同步有限状态机的编写在理顺了浮点加法运算的运算步骤之后,很容易可以得到电路的几个状态,以及各个状态之间相互跳并的条件。在弄清楚各个状态之间的跳并条件之后很容易就可以画出有限状态机的状态迁移图。通过有限状态机的迁移图,可以比较方便的写出状态机的Verilog语言描述。再结合电路结构框图,把电路的各部分功能加以实现填充到状态机中就完成了32位浮点加法器的Verilog语言设计。此时,可以用软件进行仿真测试,得到仿真波形如下图:

图中ix,iy为数据输入信号clk为时钟信号,reset为复位信号,oz为数据输出信号,ofw 为判断是否溢出的信号输出。

同步有限状态机的源代码和测试程序代码如下:

//同步有限状态机代码----------------------module floatadder(clk,reset,ix,iy,oz,ofw);//定义模块端口;

input clk,reset;//时钟、复位信号;

input[31:0]ix, iy;//输入信号;

output[31:0]oz;//输出信号;

output ofw; //溢出位信号;

reg[31:0]oz;

reg[23:0]xm,ym,zm;//定义尾数;

reg[7:0]xe,ye,ze; //定义阶码

reg zs;//定义输出信号符号位

reg mc;//尾数相加溢出位

reg[2:0] state,nextstate;//状态

parameter start =3'b000,

zerock=3'b001,

exequal=3'b010,

addm =3'b011,

infifl=3'b100,

zerofl=3'b101,

over=3'b110;

assign ofw=(state==over)?1:0;//判断溢出位 //每一个时钟产生一个可能的状态变化

always@(posedge clk)

if(!reset)

state<=start;

else

state<=nextstate;

//产生下一个状态的组合逻辑

always@(state)

case(state)

start:

begin

xe<=ix[30:23];

xm<={1'b1,ix[22:0]};

ye<=iy[30:23];

ym<={1'b1,iy[22:0]};

nextstate<= zerock;

end

//操作数检查,判断操作数是否为0;

zerock:

begin if(xm==0)

begin

{ze,zm}<={ye,ym};

nextstate<=over;

end

else

if(ym==0)

begin

{ze,zm}<={xe,xm};

nextstate<=over;

end

else

nextstate<=exequal;

end

//对阶操作,使阶码相等;

exequal:

begin

if(xe==ye)

nextstate<=addm;

else

if(xe>ye)

begin

ye<=ye+1; //阶码左移,阶码加1;

ym<={1'b0,ym[23:1]};

if(ym==0)

begin

zm<=xm;

ze<=xe;

zs<=ix[31];

oz<={zs,xe,zm[23:1]};

nextstate<=over;

end

else

nextstate<=exequal;

end

else

begin

xe<=xe+1; //阶码左移,阶码加1; xm<={1'b0,xm[23:1]};

if(xm==0)

begin

zm<=ym;

ze<=ye;

zs<=iy[31];

oz<={zs,ze,zm[23:1]}; nextstate<=over;

end

else

nextstate<=exequal;

end

end

//尾数求和运算;

addm:

begin

ze<=xe;

if(iy[31])

{mc,zm}<=xm+(~ym);

else

{mc,zm}<=xm+ym;

if(zm==24'b0)

nextstate<=over;

else

nextstate<=infifl;

end

//结果规格化操作;

infifl:

begin

if(mc)

begin

zm<={mc,zm[23:1]};

ze<=ze+1;

zs<=ix[31];

oz<={zs,ze,zm[22:0]};

if(ze==8'b1111_1111) //溢出 nextstate<=over;

else

nextstate<=zerofl;

end else

nextstate<=zerofl;

end

//结果做舍入处理;

zerofl:

begin

if(zm[23]==1'b1)

begin

zm<={1'b0,zm[23:1]};// << 向左移位;

ze<=ze-1;

zs<=ix[31];

oz<={zs,ze,zm[22:0]};

nextstate<=zerofl;

end

else

if(zm[23:22]==2'b0)

begin

zm<={zm[22:0],1'b0}; // >> 向右移位;

ze<=ze+1;

zs<=ix[31];

oz={zs,ze,zm[22:0]};

if(ze==8'b1111_1111)

nextstate<=over;

else

nextstate<=zerofl;

end

else

nextstate<=over;

end

over:

begin

end

default:state<=start;

endcase

endmodule

参考文献:

[1]崔云娟.基于FPGA浮点运算器的设计及其在雷达中的应用[D].西安:西安电子科技大学,2007:18-21.

[2]吉伟,黄巾,杨靓,黄士坦.基于FPGA的32位浮点加法器的设计[J].微电子学与计算机,2008,25(6):209-211.

[3]杨靓,徐伟,黄士坦.FPGA上浮点加/减法器的设计[J].计算机工程与应用,2003,2(24) ,39-41.

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日

实验一-加法器的设计与实现讲解

实验项目二:简单计算器设计与实现基本要求: 1. 能够实现加减运算 2. 能够实现乘法运算 扩展要求: 1.能够实现除法运算 一、实验目的 利用原件例化语句完成一个8位加法器的设计。 二、实验环境 Quartus II 开发系统 三、实验内容 1、掌握层次化设计的方法; 2、掌握一位全加器工作原理; 3、掌握用VHDL文本输入法设计电子线路的详细流程; 4、掌握元件例化语句用法; 5、熟悉软硬件设计验证方法。 四、实验过程 设计思想: 8位二进制加法器可以由8个全加器通过级联的方式构成。根据全加器级联的原理,用VHDL设计一个8位二进制数的加法器,可以先设计一个一位全加器,然后利用一位全加器采用元件例化的方式实现加法器。 实验步骤: 1、设计一个全加器 新建工程,建立源文件,输入VHDL设计文件,如下图所示:

完成设计文件输入后,保存文件,对文件进行编译、仿真,以下是仿真结果,如图所示: 由图可知仿真结果正确。 2、元件例化 把VHDL设计文件转为原理图中使用的元件。在文件菜单File中选择Creat/Update选项,单击Create Symbol File for Current File 选项,系统自动生成相应的元件标号。 重复新建文件的操作,选择Block Diagram/Schmatic File 选项,新建一个原理图文件,在添加元件列表中可以看到自动生成的元件,选择full_adder这个元件添加到原理图中,如下图所示:

3、完成顶层图的设计 用生成的元件标号,完成顶层图的设计。这里有两种方法,一种是直接用原理图设计,根据原理图设计工具的使用方法,完成顶层文件的设计,这个方法比较复杂,所以这里选择另一种方法,通过VHDL设计文件。 继续建立源文件,输入VHDL设计文件,如下图所示: 依照上述步骤,保存文件,对文件进行编译、仿真,以下是仿真结果,如图所示:

西安邮电大学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

加法器设计介绍

加法器设计介绍 算术逻辑部件主要处理算术运算指令和逻辑运算指令,它的核心单元是加法器。这个加法器是影响算术逻辑部件整体性能的关键部分,因为几乎所有的算术运算和逻辑运算,都要通过它来完成。 加法器结构包括串行进位加法器(Carry Ripple Adder,CRA)、进位跳跃加法器(cany skip Adder,CKA),以及较高速度的进位选择加法器(carry select Adder,CSA)、超前进位加法器(Can 了Look—a}lead Adder,CLA)和并行前缀加法器(Parallel Prcfix Adder)等。 串行进位加法器(CRA) 串行进位加法器是最简单、最基本的加法器结构。串行进位加法器的进位像水波一样依次通过每位,因此也称为“行波进位加法器”。它每次只能进行一位运算,因此速度很慢。 如下图所示 进位跳跃加法器(CKA) 进位跳跃加法器是串行进位加法器的改进结构。它将整个加法器分为几个组,如果某组的所有进位传播信号都为“1”,则将该组的进位输入直接传送到输出,而不需要进行进位运算。这个过程好像进位做了一个跳过该组的动作,因此称为进位跳跃加法器。 为了实现跳跃进位,每组需要增加一个多路选择器和一个与门,这种结构可以提高加法器的运算速度,但是,速度的提高只有在某些特定的情况下才会出现。如下图所示

进位选择加法器(CSA) 进位选择加法器采用资源复制的基本思想,用硬件来换取速度。它将整个加法器分为几 个组,每组有两条路径,进位输入为“O”和“1”的两种情况通过两条路径同时计算。一 旦该组进位输入信号到来,通过多路选择器选择正确的进位输出与和值。如下图所示 由于采用了前瞻的思想,因此进位选择加法器的速度有很大提高。如果整个加法器分为 M 组,则运算延时可由第一组进位延时、M 个多路选择器的延时及一个和产生延时相加得到。进位选择加法器虽然具有较快的速度,但由于它采用了资源复制的方法,因此实现代价 也成倍增加。 一般的进位选择加法器每组具有相同的位数,延迟也与位数成线性关系,称为“线性进 位选择加法器”。如果不把每组设置为相同的位数,而是从低位到高位组内位数逐渐增大, 例如第一组2 位,第二组3 位,等三组4 位,等等。这种逐组位数加长的方法使加法器结构具有亚线性延迟的特性。经过计算,这种结构的延迟与位数的平方根成正比,因此称为“平 方根进位选择加法器”。

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时不需修正。(分析出何时应对结果修正)

实验一半加器的设计

实验一半加器设计 一、实验目的 1、了解和学习Quartus II 5.1 软件设计平台。 2、了解EDA的设计过程。 3、通过实例,学习和掌握Quartus II 5.1 平台下的图形输入法 4、学习和掌握半加器的工作和设计原理。 二、实验仪器 PC机,操作系统为Windows2000/XP,本课程所用系统均为WindowsXp下同),Quartus II 5.1 设计平台。 三、实验原理 加法器是构成算术运算器的基本单元,有来自低位的进位将两个1位二进制数相力口,称为半加。实现半加运算的电路叫做半加器。 按照二进制加法运算规则可以列出如表1-1所示的半加器真值表。其中A、B是两个加数,S是相加的和,CO是相加高位的进位。将S、CO和A、B的关系写成逻 辑表达式如下: S 二AB AB = A: B CO 二AB 四、实验步骤 1、启动Quartus II 5.1 :在Windows操作系统下,单击"开始”,选择"程序”,再选择"altera ”选项下的"Quartus II 5.1 ”命令。 2、新建工程:在File菜单中选择New Project Wizard …,弹出对话框如图1-1所示

图1 — 1 在这个对话框中,第一行是需要你指定项目保存的路径,支持含中文字符的路径,第二行是 需要你为这个项目取一个名称,第三行是需要你为这个项目的顶层实体取个名称,如实验不 需要使用芯片,这三个设定好后,点击“ finish ”。(如何使用芯片及各参数设定将在实验 3 中讲到)出现如下界面

在File 菜单中选择New,出现一个对话框如图 1 — 2 图1 — 2 选择 Block Diaqram/Schematic File ,然后点击 "OK ”。 ft QuBEtus TK - £:7>uuiiKn!x mJ 5D 3i E x/tafi/|Krii/ 3/d D ? - -£Bl?i£kl .MFj tils £di L £LM * frajiiri,占■■LfriaAB tiaLi [lain Ukl? □ GS ? 筍而訂 T 旦才?曙涉C ?轿峙fe ? 0 IkCLTJ^ dm AI .TO 'i. SyriE-Hi/i Pltionti^j k /i B I-A J "Vt'-mmy 扎 CiifcdiWkniW 扎 Eiot 人行WM J Nfrlrtfl? p 暑讣1 F4t IN IK TiRii Fl EH. "V |础 1■■中■ | Mb 图1 — 3 4、 保存文件:选菜单File'Save ,在弹出的Save As 对话窗口中,指定存放文件类型、 文件夹和文件名。这一步也可以放在图形设计完成后进行。 5、 原理图设计输入: (1 )元器件符号放置 通过Edit->lnsert Symbol 插入元器件或点击图板左侧的快捷键 卜' I Symbol,或双击图板 3 、新建文件 \ l±

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

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

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

四位串行进位加法器设计

集成电路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 μμ

相关文档
最新文档