文档库 最新最全的文档下载
当前位置:文档库 › 基于FPGA的八位加法器

基于FPGA的八位加法器

基于FPGA的八位加法器
基于FPGA的八位加法器

课程实训报告

课程名称EDA 技术

设计题目基于FPGA的八位加法器院系名称机械电子工程学院

专业班级电子信息工程2014级

姓名

学号

成绩

指导教师

2016年12月

目录

1、设计目的、要求.................................................................................................................... - 2 -

1.1、设计目的.................................................................................................................... - 2 -

1.2、系统设计要求............................................................................................................ - 2 -

2、设计原理及相关硬件............................................................................................................ - 3 -

2.1、系统设计方案及原理................................................................................................ - 3 -

2.2、硬件原理.................................................................................................................... - 3 -

3、主要模块设计........................................................................................................................ - 5 -

3.1、模块Key-led............................................................................................................. - 5 -

3.2、模块Adder................................................................................................................. - 6 -

4、系统编译及仿真过程............................................................................................................ - 6 -

4.1、系统编译.................................................................................................................... - 6 -

4.2、仿真............................................................................................................................ - 7 -

5、硬件验证过程和分析............................................................................................................ - 8 -

5.1、引脚设置和保护........................................................................................................ - 8 -

5.2、硬件下载.................................................................................................................... - 8 -

5.3、硬件测试结果及分析................................................................................................ - 9 -

6、实验参考程序........................................................................................................................ - 9 -

6.1、模块key_led............................................................................................................. - 9 -

6.2、模块adder4b........................................................................................................... - 13 -

6.3、模块adder8b........................................................................................................... - 14 -总结 ......................................................................................................................................... - 15 -参考文献...................................................................................................................................... - 0 -附录 ........................................................................................................................................... - 1 -

1、设计目的、要求

1.1、设计目的

(1)了解并掌握一般设计方法,具备初步的独立设计能力;

(2)掌握用VerilogHDL语言程序的基本技能;

(3)提高综合运用所学的理论知识独立分析和解决问题的能力;

(4)进一步掌握EDA技术的开发流程;

(5)学习较复杂的数字系统设计方法。

(6)掌握QuartusⅡ软件系统的安装及基本使用方法。

(7)掌握EDA技术的层次化设计方法。

(8)掌握原理图输入方法。

(9)掌握8位并行加法器的设计原理。

1.2、系统设计要求

设计一个8位二进制并行加法器,它由两个4位二进制并行加法器级联而成。要求加数、被加数、和都在数码管上以十进制数显示出来。系统提供50MHZ频率的时钟源。

工具介绍:

软件:QuartusⅡ,是一综合设计环境,被称为SOPC(可编程单片系统)升级环境,它承接了原来Maxplus 3Ⅱ的全部设计功能和器件对象外还增加了许多新功能和新的 FPGA器件系列,包括一些适用于SOPC开发的大规模器件。相对于上述EDA工具,QuartusⅡ含有许多更具特色和更强的实用功能,大致有以下几点:

(1)QuartusⅡ与MATLAB/Simulink和Altera的DSP Builder,以及第三方的综合器和仿真器相结合,用于开发DSP硬件系统;

(2)QuartusⅡ与SOPC Builder结合用于开发Nios嵌入式系统;

(3)QuartusⅡ含实时调试工具、嵌入式逻辑分析式Signal TapⅡ。

(4)QuartusⅡ含一种十分有效的逻辑设计优化技术,即设计模块在FPGA 中指定区域内的逻辑锁定功能,Logic Lock技术。

硬件:计算机;MagicSOPC 创新教学实验开发平台 EL 教学实验箱 核心板PowerSOPC-2C35上所用FPGA 为Altrea 公司Cyclone II 系列的EP2C35F672C8,包含33216个逻辑单元(LEs ),483840 bits 的片上RAM ,还有475个用户可用I/O 口,封装为672-PinFPGA 。

2、设计原理及相关硬件

2.1、系统设计方案及原理

加法器是数字系统中的基本逻辑器件。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。在数字信号处理的快速运算电路中常常用到多位数字的加法运算,这时需要用到并行加法器。并行加法器比串行加法器快得多,电路结构也不太复杂。本实验中的8位加法器采用两个4位二进制并行加法器级联而成。该设计的顶层原理图如图2.1所示,主要由Key_led 和adder8b 两个模块组成。

2.2、硬件原理

1、 按键、LED 硬件原理

主板上具有 8 个独立按键和 8 个独立 LED ,电路如图 2.2

所示,电路中

低电平表示按键按下,低电平点亮 LED。

图2-2 按键及 LED 电路

2、七段动态显示数码管硬件原理

主板上七段数码管采用了两种方式,一种是动态显示,另一种是静态显示。动态显示的电路如图 2.3 所示,RP18 和 RP20 是段码上的限流电阻,位码由于电流较大,采用了三极管驱动。

从电路可以看出,数码管是共阳的,当位码驱动信号为 0 时,对应的数码管才能操作;当段码驱动信号为 0 时,对应的段码点亮。

图2-3 七段动态显示数码管电路

3、主要模块设计

3.1、模块Key-led

1、功能说明

按Key1- Key4,对应的数码管1-4的数加1,并由hex【15:0】输出,按下Key5- Key8,对应的发光二极管LED1-LED4的状态改变一次,并由bin【3:0】输出。LED5-LED8的状态由ledin【3:0】决定,数码管5-8的显示数由data【15:0】决定.

图3-1 按键原理图

2、模块说明:

Clock:系统时钟输入(50MHz);

Key【7:0】:按键输入(Key1- Key8);

ledin【3:0】:LED指示输入端(分别接LED5- LED8,高电平“1”LED亮);

data【15:0】:数码管显示输入端(经七段译码后送入数码管5-8显示(data 【15:12】):数码管5,data【11:8】:数码管2,hex【7:4】:数码管3,hex 【,3:0】:数码管4);

bin【3:0】:输入4位二进制,其值由LED4-LED1对应的指示(高电平“1”LED亮);

hex【15:0】:输入4组4位二进制,其值经七段译码后送至数码管1-4显示(hex【15:12】: 数码管1,hex【11:8】:数码管2,hex【7:4】:数码管3,hex 【3:0】:数码管4);

Seg【7:0】:数码管输出端;Dig【7:0】:数码管位输出。

3.2、模块Adder

图3-2

4、系统编译及仿真过程

4.1、系统编译

1)启动 Quartus II 建立一个空白工程,然后命名为 adder8b.qpf

2)新建 Verilog HDL 源程序文件 adder4b.v,输入程序代码并保存,进行综合编译,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

图4-1编译

3)新建 Verilog HDL 源程序文件 adder8b.v,输入程序代码并保存,进行综合编译,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

图4-2编译

4.2、仿真

4) 建立波形仿真文件(adder8.vwf)并进行功能仿真验证。

图4-3 波形仿真图

说明: a8+b8+c8=s8 ,两个加数(a8、b8)相加等于输出(s8),有进位(c8)加上进位(c8)再输出,即有输出进位(co8)又有进位(c8)时

FF+FF+1=FF;无输出进位(co8)无进位(c8)时,00+00=00.

5、硬件验证过程和分析

5.1、引脚设置和保护

1、选择目标器件并对相应的引脚进行锁定,这里选择的器件为altera 公司cycloneII系列的EP2C35F672C8芯片,引脚锁定方法如图5-1所列,将未使用的引脚设置为三态输入

图5-1引脚锁定

2、将adder.bdf设置为顶层实体,重新编译。

图5-2编译

5.2、硬件下载

将程序下载到FPGA器件中,按下key1-Key5观察数码管的状态,是否与设计相符。

图5-3硬件下载

5.3、硬件测试结果及分析

图5-4 功能图

说明:十六进制15加上十六进制49等于十六进制的5E,即实现八位硬件加法器功能。

6、实验参考程序

6.1、模块key_led

module key_led(clock,key,led,hex,bin,seg,dig,ledin,data);

input clock; //系统时钟(50MHz)

input [7:0] key; //按键输入(KEY1~KEY8)

output [7:0] led; //LED输出(LED1~LED8)

output [15:0] hex; //4位16进制数输出(在数码管1~4显示)output [3:0] bin; //4位2进制数输出(在LED1~LED4显示)

output [7:0] seg; //数码管段码输出

output [7:0] dig; //数码管位码输出

input [3:0] ledin; //LED显示输入(在LED5~LED8显示)

input [15:0] data; //数码管显示输出(在数码管5~8显示)

reg [15:0] hex_r;

reg [3:0] bin_r;

reg [7:0] seg_r;

reg [7:0] dig_r;

reg [16:0] count; //时钟分频计数器

reg [7:0] dout1,dout2,dout3,buff; //消抖寄存器

reg [2:0] cnt3; //数码管扫描计数器

reg [3:0] disp_dat; //数码管扫描显存

wire div_clk; //分频时钟,用于消抖和扫描

wire [7:0] key_edge; //按键消抖输出

//信号输出

assign hex = hex_r;

assign bin = bin_r;

assign seg = seg_r;

assign dig = dig_r;

assign led = ~{ledin,bin_r};

//时钟分频部分

always @(posedge clock)

begin

if (div_clk)

count <= 17'd0;

else

count <= count + 1'b1;

end

assign div_clk = (count > 17'd125000);

//按键消抖部分

always @(posedge clock)

begin

if(div_clk)

begin

dout1 <= key;

dout2 <= dout1;

dout3 <= dout2;

end

end

//按键边沿检测部分

always @(posedge clock)

begin

buff <= dout1 | dout2 | dout3;

end

assign key_edge = ~(dout1 | dout2 | dout3) & buff;

//4位16进制数输出部分

always @(posedge clock) //按键1 begin

if(key_edge[0])

hex_r[15:12] <= hex_r[15:12] + 1'b1;

end

always @(posedge clock) //按键2 begin

if(key_edge[1])

hex_r[11:8] <= hex_r[11:8] + 1'b1;

end

always @(posedge clock) //按键3 begin

if(key_edge[2])

hex_r[7:4] <= hex_r[7:4] + 1'b1;

end

always @(posedge clock) //按键4 begin

if(key_edge[3])

hex_r[3:0] <= hex_r[3:0] + 1'b1;

end

//4位2进制数输出部分

always @(posedge clock) //按键5 begin

if(key_edge[4])

bin_r[0] <= ~bin_r[0];

end

always @(posedge clock) //按键6

begin

if(key_edge[5])

bin_r[1] <= ~bin_r[1];

end

always @(posedge clock) //按键7

begin

if(key_edge[6])

bin_r[2] <= ~bin_r[2];

end

always @(posedge clock) //按键8

begin

if(key_edge[7])

bin_r[3] <= ~bin_r[3];

end

//数码管扫描显示部分

always @(posedge clock) //定义上升沿触发进程begin

if(div_clk)

cnt3 <= cnt3 + 1'b1;

end

always @(posedge clock)

begin

if(div_clk)

begin

case(cnt3) //选择扫描显示数据

3'd0:disp_dat = hex_r[15:12]; //第一个数码管

3'd1:disp_dat = hex_r[11:8]; //第二个数码管

3'd2:disp_dat = hex_r[7:4]; //第三个数码管

3'd3:disp_dat = hex_r[3:0]; //第四个数码管

3'd4:disp_dat = data[15:12]; //第五个数码管

3'd5:disp_dat = data[11:8]; //第六个数码管

3'd6:disp_dat = data[7:4]; //第七个数码管

3'd7:disp_dat = data[3:0]; //第八个数码管

endcase

case(cnt3) //选择数码管显示位

3'd0:dig_r = 8'b01111111; //选择第一个数码管显示

3'd1:dig_r = 8'b10111111; //选择第二个数码管显示

3'd2:dig_r = 8'b11011111; //选择第三个数码管显示

3'd3:dig_r = 8'b11101111; //选择第四个数码管显示

3'd4:dig_r = 8'b11110111; //选择第五个数码管显示

3'd5:dig_r = 8'b11111011; //选择第六个数码管显示

3'd6:dig_r = 8'b11111101; //选择第七个数码管显示

3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcase

end

end

always @(disp_dat)

begin

case(disp_dat) //七段译码

4'h0:seg_r = 8'hc0; //显示0

4'h1:seg_r = 8'hf9; //显示1

4'h2:seg_r = 8'ha4; //显示2

4'h3:seg_r = 8'hb0; //显示3

4'h4:seg_r = 8'h99; //显示4

4'h5:seg_r = 8'h92; //显示5

4'h6:seg_r = 8'h82; //显示6

4'h7:seg_r = 8'hf8; //显示7

4'h8:seg_r = 8'h80; //显示8

4'h9:seg_r = 8'h90; //显示9

4'ha:seg_r = 8'h88; //显示a

4'hb:seg_r = 8'h83; //显示b

4'hc:seg_r = 8'hc6; //显示c

4'hd:seg_r = 8'ha1; //显示d

4'he:seg_r = 8'h86; //显示e

4'hf:seg_r = 8'h8e; //显示f

endcase

end

endmodule

6.2、模块adder4b

module adder4b(c4, a4, b4, s4, co4);

input c4;

input [3:0] a4;

input [3:0] b4;

output [3:0] s4;

output co4;

wire [4:0] s5;

wire [4:0] a5;

wire [4:0] b5;

assign a5 = {1'b0, a4};

assign b5 = {1'b0, b4};

assign s5 = a5 + b5 + c4;

assign s4 = s5[3:0];

assign co4 = s5[4];

endmodule

6.3、模块adder8b

module adder8b(c8, a8, b8, s8, co8);

input c8;

input [7:0] a8;

input [7:0] b8;

output [7:0] s8;

output co8;

wire sc;

adder4b u1(.c4(c8), .a4(a8[3:0]), .b4(b8[3:0]),

.s4(s8[3:0]), .co4(sc));

adder4b u2(.c4(sc), .a4(a8[7:4]), .b4(b8[7:4]),

.s4(s8[7:4]), .co4(co8)); endmodule

总结

通过这次实训设计,使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。从仿真波形可以看出,本设计符合8位加法器的要求,由于是时序仿真,我们可以看到输出总有些许延迟,而且能看到输入改变的时候,输出会产生毛刺。通过本次实验,初步学习了Quartus II 软件的使用,应用了Verilog HDL语言进行了编程,巩固了理论知识。由于课前没有预习,造成上手有点慢,下次上课前一定好好预习。

参考文献

1.潘松黄建业《EDA技术与VHDL》清华大学出版社

2.康华光《电子技术基础数字部分》高等教育出版社

3.王锁平《电子设计自动化(EDA)教程》电子科技大学出版社

4.张文希谢明华《EDA技术实验指导书》

5.张明《Verilog HDL实用教程》电子科技大学出版社

附录

课程实训任务书姓名:学号:指导教师:

萍乡学院课程实训成绩评价表

指导教师:年月日

实验一 八位全加器的设计

电子科技大学电子工程学院标准实验报告(实验)课程名称EDA技术与应用 姓名:孙远 学号:2010021030002 指导教师:窦衡 电子科技大学教务处制表

实验一八位全加器的设计 一、预习内容 1.结合教材中的介绍熟悉QuartusⅡ软件的使用及设计流程; 2.八位全加器设计原理。 二、实验目的 1.掌握图形设计方法; 2.熟悉QuartusⅡ软件的使用及设计流程; 3.掌握全加器原理,能进行多位加法器的设计。 三、实验器材 PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干 四、实验要求 1、用VHDL设计一个四位并行全加器; 2、用图形方式构成一个八位全加器的顶层文件; 3、完成八位全加器的时序仿真。 五、实验原理与内容 1、原理: 加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。因此本实验中的8 位加法器采用两个4位二进制并行加法器级联而成。

2、实现框图: 1)四位加法器 四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示,其中CSA为一位全加器。显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。 通过对串行进位加法器研究可得:运算的延迟是由于进位的延迟。因此,减小进位的延迟对提高运算速度非常有效。下图是减少了进位延迟的一种实现方法。可见,将迭代关系去掉,则各位彼此独立,进位传播不复存在。因此,总的延迟是两级门的延迟,其高速也就自不待言。 2)八位加法器 用两个并行四位加法器实现一个八位加法器的框图如下:

四位超前进位加法器原理

超前进位加法器原理 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

8位全加器的设计

课程设计报告 课程名称数字逻辑课程设计 课题8位全加器的设计 专业计算机科学与技术 班级1202 学号34 姓名贺义君 指导教师刘洞波陈淑红陈多 2013年12月13日

课程设计任务书 课程名称数字逻辑课程设计 课题8位全加器的设计 专业班级计算机科学与技术1202 学生姓名贺义君 学号34 指导老师刘洞波陈淑红陈多审批刘洞波 任务书下达日期:2013年12月13日 任务完成日期:2014年01月21日

一、设计内容与设计要求 1.设计内容: 本课程是一门专业实践课程,学生必修的课程。其目的和作用是使学生能将已学过的数字电子系统设计、VHDL程序设计等知识综合运用于电子系统的设计中,掌握运用VHDL或者Verilog HDL设计电子系统的流程和方法,采用Quartus II等工具独立应该完成1个设计题目的设计、仿真与测试。加强和培养学生对电子系统的设计能力,培养学生理论联系实际的设计思想,训练学生综合运用数字逻辑课程的理论知识的能力,训练学生应用Quartus II进行实际数字系统设计与验证工作的能力,同时训练学生进行芯片编程和硬件试验的能力。 题目一4线-16线译码器电路设计; 题目二16选1选择器电路设计; 题目三4位输入数据的一般数值比较器电路设计 题目四10线-4线优先编码器的设计 题目五8位全加器的设计 题目六RS触发器的设计; 题目七JK触发器的设计; 题目八D触发器的设计; 题目九十进制同步计数器的设计; 题目十T触发器的设计; 每位同学根据自己学号除以10所得的余数加一,选择相应题号的课题。 参考书目 1 EDA技术与VHDL程 序开发基础教程 雷伏容,李俊,尹 霞 清华大学出版 社 978-7-302-22 416-7 201 TP312VH/ 36 2 VHDL电路设计雷伏容清华大学出版 社 7-302-14226-2 2006 TN702/185 3 VHDL电路设计技术王道宪贺名臣? 刘伟 国防工业出版 社 7-118-03352-9 2004 TN702/62 4 VHDL 实用技术潘松,王国栋7-8106 5 7-81065-290-7 2000 TP312VH/1 5 VHDL语言100 例详解 北京理工大学A SIC研究所 7-900625 7-900625-02-X 19 99 TP312VH/3 6 VHDL编程与仿真王毅平等人民邮电出版 社 7-115-08641-9 20 00 7 3.9621/W38V 7 VHDL程序设计教程邢建平?曾繁泰清华大学出版 社 7-302-11652-0 200 5 TP312VH/27 /3

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

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

4位超前进位加法器 设计

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

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

8位全加器设计

基于原理图的8位全加器设计 实验目的:熟悉利用Quartus II的原理图输入方法设计简单的组合电路,掌握层次化设 计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。 实验原理:一个8位全加器可以由8个1位全加器串行构成,即将低位加法器的进位输 出cout与相临的高位加法器的最低位输入信号cin相接。 试验任务:1.完成半加器和全加器的设计。 2.建立一个更高层次的原理图设计,利用以上获得的1位全加器构成8位全加器,完成编译、综合、适配、仿真和硬件测试。 实验步骤: 一、1位全加器设计 1.建立工程文件夹adder,路径d:\adder。 2.输入设计项目和存盘 原理图编辑输入流程如下: (1)打开Quartus II,选择file—>new命令,在弹出的窗口中选择block diagram/schematic file 选项,单击ok按钮后将打开原理图编辑窗口。 (2)在编辑窗口中的任何一个位置上右击,将弹出快捷菜单,选择inset—>symbol命令,将弹出元件输入对话框。 (3)单击“…”按钮,找到基本元件库路径d:/altera/90/quartus/libraries/primitives/logic项(假设软件安装在D盘),选中需要的元件,单击“打开”按钮,此元件即显示在窗口中,然后单击symbol窗口中的ok按钮,即可将元件调入原理图编辑窗口中。也可以在name栏输入需要的元件名。调入好元件和引脚后,连接好电路,再输入各引脚名。 (4)选择file—>save as命令,选择刚才为自己的工程建立的目录d:\adder,将已设计好的原理图取名为h_adder.bdf,并存盘此文件夹内。 3.将设计好的项目设置成可调用的元件 为了构成全加器的顶层设计,必须将以上设计的半加器h_adder.bdf设置成可调用的元件。在打开半加器原理图文件的情况下,选择file—>create/update—>create symbol file for current file命令,即可将当前文件h_adder.bdf变成一个元件符号存盘,以待高层次设计中调用。4.设计全加器顶层文件 打开一个原理图编辑窗口,方法同前。在新打开的原理图窗口中双击,在弹出的窗口中选择project选项,选择h_adder.bdf,并调入其他元件,连接好电路。以f_adder.bdf名存在同一路径d:\adder中。 二、8位全加器设计 1.将刚设计好的1位全加器设置成可调用的元件,方法同上。 2.调入元件,连接电路图,以8f_adder.bdf保存于同一路径d:\adder中的文件夹中。 3.将顶层文件8f_adder.bdf设置为工程。 4.编译与仿真 原理图与仿真波形分析:

四位二进制加法器课程设计

课题名称与技术要求 课题名称: 四位二进制加法器设计 技术要求: 1)四位二进制加数与被加数输入 2)二位数码管显示 摘要 本设计通过八个开关将A3,A2,A1,A0和B3,B2,B1,B0信号作为加数和被加数输入四位串行进位加法器相加,将输出信号S3,S2,S1,S0和向高位的进位 C3通过译码器Ⅰ译码,再将输出的Y3,Y2,Y1,Y0和X3,X2,X1,X0各自分别通过一个74LS247译码器,最后分别通过数码管BS204实现二位显示。 本设计中译码器Ⅰ由两部分组成,包括五位二进制译码器和八位二进制输出器。信号S3,S2,S1,S0和向高位的进位C3输入五位二进制-脉冲产生器,将得到的n(五位二进制数码对应的十进制数)个脉冲信号输入八位二进制输出器,使电路的后续部分得以执行。 总体论证方案与选择 设计思路:两个四位二进制数的输入可用八个开关实现,这两个二进制数经全加器求和后最多可以是五位二进制数。本题又要求用两个数码管分别显示求和结果的十进制十位和各位,因此需要两个译码器Ⅱ分别译码十位和

个位。综上所述,需要设计一个译码器Ⅰ,能将求和得到的五位二进制数译成八位,其中四位表示这个五位二进制数对应十进制数的十位,另四位表示个位。而译码器Ⅱ有现成的芯片可选用,此处可选74LS247,故设计重点就在译码器Ⅰ。 加法器选择 全加器:能对两个1位二进制数进行相加并考虑低位来的进位,即相当于3个1位二进制数相加,求得和及进位的逻辑电路称为全加器。或:不仅考虑两个一位二进制数相加,而且还考虑来自低位进位数相加的运算电路,称为全加器。 1)串行进位加法器 构成:把n位全加器串联起来,低位全加器的进位输出连接到相邻的高位全加器的进位输入。 优点:电路比较简单。 最大缺点:进位信号是由低位向高位逐级传递的,运算速度慢。 2)超前进位加法器 为了提高运算速度,必须设法减小或消除由于进位信号逐级传递所消耗的时间,于是制成了超前进位加法器。 优点:与串行进位加法器相比,(特别是位数比较大的时候)超前进位加法器的延迟时间大大缩短了。 缺点:电路比较复杂。 综上所述,由于此处位数为4(比较小),出于简单起见,这里选择串行进位加法器。 译码器Ⅱ选择 译码是编码的逆过程,将输入的每个二进制代码赋予的含意“翻译”过来,给出相应的输出信号。译码器是使用比较广泛的器材之一,主要分为:变量译码器和码制译码器,其中二进制译码器、二-十进制译码器和显示译码器三种最典型,使用十分广泛。显示译码器又分为七段译码器和八段

八位二进制加法器课程设计

长安大学电子技术课程设计 课题名称______________ 班级______________ 姓名______________ 指导教师 日期______________

前言 8位二进制加法器,它的功能主要是实现两个8位二进制数的相加,其结果的范围应该在00000000到111111110之间,即000到510之间。加法器在实际应用中占据着十分重大的地位,从我们呱呱坠地起,到小学,到初中,到高中,到大学,到工作,等等。我们能离开加法吗,不能!加法可以说是一切运算的基础,因此8位二进制加法器的设计是很有必要的。 那么我们如何设计一个8位二进制加法器呢?在实际应用中,我们通常输入的是十进制数,一个八位二进制数所对应的最大的十进制数是255,于是输入两个范围在000到255之间的数,首先通过二-十进制编码器将输入的三位十进制数的个位、十位、百位分别转换为8421BCD码,得到两个十二位字码,再通过加法器将它们相加,逢10进1,得到一个新的十二位字码,再用7447数字显示译码器将这个十二位字码还原到原来的三位十进制数。最后输出的就是一个三位十进制数,其范围在000到510之间。通过上述方法我们实现了八位二进制数的相加,从而达到了题目的要求。 为实现上述目的,我们需要查阅相关资料。通过查阅,理解以及加以运用,我们认识到了收集资料的不易性,但同时也得到了不少收获,可以说是有苦有甜。同时,虽然我们基本设计出了这个八位二进制加法器,但是不必可避免地会产生一些问题,比如说在连线上可能有更简便的途径,在元件的选用上可能还有其它更简便的方法,在控制上可能还不够精简,等等。我们希望在以后的实践中能找出更好的方法,也希望能吸取这次设计中的不足,逐渐改善。另外,在电子设计的过程中,与同组同学之间的合作配和是十分重要的。我在此次设计中也充分认识到这一点的重要性,我相信这次的电子设计能够为我们将来的工作奠定一定的基础。

超前进位加法器设计

湖南师范大学职业技术学院(工学院)实验数据报告单 实验课程:计算机组成原理 实验题目:超前进位加法器设计 实验日期: 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

用原理图方法设计8位全加器

实验报告一 一、实验目的 熟悉利用QuartusII的原理图输入方法设计简单电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。 二、实验内容 1.根据工作原理,完成1位半加器和全加器的设计; 2.建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成 编译、综合、适配、仿真。 三、实验环境 计算机、QuartusII软件 四、实验步骤 1.根据半加器工作原理,建立电路并仿真,并将元件打包。 (1)电路 (2)仿真: 仿真结果分析:S为和信号,当A=1,B=0或A=0,B=1时,和信号S为1,否则为0.当A=B=1时,产生进位信号,及CO=1。 (3)打包后的文件:

2.利用半加器构成一位全加器,并打包。 (1)电路 (2)仿真 仿真结果分析:CI为来自低位的进位,S=A xor B xor CI,即:当A,B,CI中有一位为高电平‘1’或者三位同时高电平为‘1’,则S=1,否则S=0;当A,B,CI有两位或者三位同为高电平‘1’时,产生进位信号CO=‘1’。 (3)打包后的文件 3.利用全加器构成8位全加器,并完成编译、综合、适配、仿真。 (1)电路

(2)仿真 仿真结果分析:八位全加器,和S分别与A,B 对应。当来自第七位的进位信号为‘1’、A 的最高位和B的最高位三者有两个位高电平‘1’时,则产生进位信号CO=‘1’。 五、实验结果与讨论 实验的仿真结果与预计的结果一致,所以所设计的电路是正确的。不足的地方有: 1、对软件还不够熟悉,所以操作的有点慢;

2、设计电路时,由于数字电路的知识有些开始淡忘了,所以应当及时去补 缺补弱。 六、总结 思考题:为了提高加法器工作速度,如何改进以设计的进位方式? 答:采用超前进位。串行加法器的第i位进位是由0~(i-1)决定的,而超前进位是事先得出每一位全加器的进位输出信号,而无需再从低位开始向高位逐位传递进位信号了,这就有效地提高了工作速度了。

利用Quartus II软件和原理图输入法设计八位加法器

摘要 Quartus II是最高级和复杂的,用于system-on-a-programmable-chip (SOPC)的设计环境。Quartus II提供完善的timing closure 和LogicLock 基于块的设计流程。QuartusII design是唯一一个包括以timing closure 和基于块的设计流为基本特征的programmable logic device (PLD)的软件。Quartus II 设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmed devices开发的统一工作流程。 本文介绍了微机上的QuartusⅡ软件系统的使用,并用该软件分别设计半加器,全加器,并编译连接设计一个8位加法器的过程。 关键词:8位加法器;EDA(电子设计自动化);QuartusⅡ(可编程逻辑软件)

目录 第1章概述 (1) 1.1EDA的概念 (1) 1.2硬件描述语言概述 (2) 第2章QUARTUS II (4) 2.1QUARTUSII概述 (4) 2.2QUARTUSII建立工程项目 (4) 2.3QUARTUSII建立原理图输入文件 (6) 2.4QUARTUSII层次化项目设计 (9) 第3章8位加法器设计 (12) 3.18位加法器分析 (12) 3.2设计过程 (12) 参考文献 (15) 结论 (16)

第1章概述 1.1 EDA的概念 EDA是电子设计自动化(Electronic Design Automation)的缩写,从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义。但从EDA技术的几个主要方面的内容来看,可以理解为EDA技术就是以计算机为工具,设计者在EDA软件平台上,以硬件描述语言为系统逻辑描述的主要表达方式完成设计文件,然后由计算机自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度[1]。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,至今已有30多年的历程。大致可以分为三个发展阶段。20世纪70年代的CAD(计算机辅助设计)阶段:这一阶段的主要特征是利用计算机辅助进行电路原理图编辑,PCB 布同布线,使得设计师从传统高度重复繁杂的绘图劳动中解脱出来。20世纪80年代的QAE(计算机辅助工程设计)阶段:这一阶段的主要特征是以逻辑摸拟、定时分析、故障仿真、自动布局布线为核心,重点解决电路设计的功能检测等问题,使设计能在产品制作之前预知产品的功能与性能[2]。20世纪90年代是EDA(电子设计自动化)阶段:这一阶段的主要特征是以高级描述语言,系统级仿真和综合技术为特点,采用“自顶向下”的设计理念,将设计前期的许多高层次设计由EDA工具来完成[3]。 1.1.1 EDA的发展 从目前的EDA技术来看,中国EDA市场已渐趋成熟,不过大部分设计工程师面向的是PC主板和小型ASIC领域,仅有小部分的设计人员工发复杂的片上系

四位超前进位加法器

1.课程设计名称 四位超前进位加法器 2.课程设计内容 设计一个四位加法器,要求要有超前进位,减小输出的延迟,采用0.13um 工艺设计。 3.课程设计目的 训练学生综合运用学过的数字集成电路的基本知识,独立设计相对复杂的数字集成电路的能力。 4.课程设计要求 4.1、按设计指导书中要求的格式书写,所有的内容一律打印; 4.2、报告内容包括设计过程、仿真的HSPICE网表,软件仿真的结果及分析、延时的手工计算; 4.3、要有整体电路原理图,仿真的波形图; 4.4、软件仿真必须要有必要的说明;要给出各个输入信号的具体波形和输出信号的测试结果。 4.5、写出对应的HSPICE设计网表,网表仿真结果符合设计要求。把仿真图形附在报告上。 4.6、设输入端的电容为C ,输出端的负载电容为5000C inv,从输入到输出任意找一通 inv 路,优化通路延时,手工计算确定通路中每个门对应的晶体管的尺寸。每组三个同学选择不能为同一通路。此部分的计算参数可采用书中第六章的参数。 4.7、各种器件的具体结构可参考阎石的《数字电子技术基础》一书。不允许有完全一样的报告,对于报告完全相同者,记为不及格。 5.使用软件 软件为HSPICE和COSMOS-SCOPE。 6.课程设计原理 由全加器的真值表可得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得: 进而可得各位进位信号的逻辑表达如下: 根据逻辑表达式做出电路图(如图):

八位加法器设计实验报告

实验四:8位加法器设计实验 1.实验目的:熟悉利用quartus原理图输入方法设计简单组合电路,掌握层次化设计方法。 2.实验原理:一个八位加法器可以由八个全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。 3.实验任务:完成半加器,全加器,八位加法器设计,使用例化语句,并将其设计成一个原件符号入库,做好程序设计,编译,程序仿真。 1)编译成功的半加器程序: module h_adder(a,b,so,co); input a,b; output so,co; assign so=a^b; assign co=a&b; endmodule 2)编译成功的全加器程序: module f_adder(ain,bin,cin,cout,sum); output cout,sum;input ain,bin,cin; wire net1,net2,net3; h_adder u1(ain,bin,net1,net2); h_adder u2(.a(net1),.so(sum),.b(cin),.co(net3));

or u3(cout,net2,net3); endmodule 3)编译成功的八位加法器程序: module f_adder8(ain,bin,cin,cout,sum); output [7:0]sum; output cout;input [7:0]ain,bin;input cin; wire cout0, cout1, cout2 ,cout3, cout4,cout5,cout6; f_adder u0(.ain(ain[0]),.bin(bin[0]),.cin(cin),.sum(sum[0]),.cout(cout0)); f_adder u1(.ain(ain[1]),.bin(bin[1]),.cin(cout0),.sum(sum[1]),.cout(cout1 )); f_adder u2(.ain(ain[2]),.bin(bin[2]),.cin(cout1),.sum(sum[2]),.cout(cout2 )); f_adder u3(.ain(ain[3]),.bin(bin[3]),.cin(cout2),.sum(sum[3]),.cout(cout3 )); f_adder u4(.ain(ain[4]),.bin(bin[4]),.cin(cout3),.sum(sum[4]),.cout(cout4 )); f_adder

8位全加器

目录 一、设计目的和要求 (1) 1.课程设计目的 (1) 2.课程设计的基本要求 (1) 3.课程设计类型 (1) 二、仪器和设备 (1) 三、设计过程 (1) 1.设计内容和要求 (1) 2.设计方法和开发步骤 (2) 3.设计思路 (2) 4.设计难点 (4) 四、设计结果与分析 (4) 1.思路问题以及测试结果失败分析 (4) 2.程序简要说明 (5) 五、心得体会 (9) 六、参考文献 (9)

一、设计目的和要求 1.课程设计目的 设计一个带进位的八位二进制加法计数器:要求在MAX+plusⅡ10.2软件的工作平台上用VHDL语言层次设计出一个带进位的八位二进制加法器,并通过编译及时序仿真检查设计结果。 2.课程设计的基本要求 全加器与带进位输入8位加法器设计要求我们通过8位全加器的设计掌握层次化设计的方法,充分理解全加器的设计过程,掌握一位全加器的程序,熟悉MAX+plusⅡ10.2软件的文本和原理图输入方法设计简单组合电路。 课程设计过程中要求能实现同步和异步的八位二进制全加器的设计。 3.课程设计类型 EDA课程设计 二、仪器和设备 PC机、MAX+plusⅡ10.2软件 三、设计过程 1.设计内容和要求 方法一: 1.原理图输入完成半加器和1位全加器的设计,并封装入库 2.层次化设计,建立顶层文件,由8个1位全加器串联构成8位全加器 3.每一层次均需进行编译、综合、适配及仿真 方法二: 1. 原理图输入完成一个四位全加器的设计 2.层次化设计,建立顶层文件,由2个4位全加器串联构成8位全加器 3.每一层次均需进行编译、综合、适配及仿真

2.设计方法和开发步骤 加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。 因此这次课程设计中的8 位加法器可采用两个4位二进制并行加法器级联而成。此外我们还讨论了由八个一位全加器串联构成的八位二进制全加器。设计中前者设计为同步加法器,后者设计为异步加法器。 3.设计思路 方法一:异步八位全加器 设计流程图如下: 图 1异步八位流程图

8位全加器的设计与实现

实验二 8位全加器的设计与实现 [实验目的] 1 掌握Quartus II 环境下原理图输入、编译综合、仿真、引脚锁定、下载及硬件 测试测试方法; 2 掌握Quartus II 对FPGA 的设计方法。 3 学习8位全加器原理图的设计,掌握Quartus II 原理图层次化设计方法。 [实验仪器] Pentium PC 机 、EDA 实验箱 各一台 Quartus II 6.0软件 [实验内容] 采用Quartus II 原理图输入方式及层次化设计方法设计8位全加器并进行器件编程、检测。 1. 完成全加器的设计(包括原理图输入、编译综合、适配、仿真并将它们设置成硬件符号入库)。 2. 建立顶层原理图文件。采用已产生的全加器元件设计一个8位串行全加器电路,并完成编译综合、适配、仿真和硬件测试。 一、一位全加器 每个全加器有三位输入,分别是加数A,B 和一个进位位CI 。将这三个数相加,得 出全加和数D 和进位数CO 。这个过程称为”全加”,全加器的真值表参见表1。 全加器的真值表1 A B CI CO D 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 由表2得: ABCI CI AB CI B A BCI A CO +++= D ABCI ABCI ABCI ABCI =+++ 可用两个四选一芯片完成。原理图如下:

A BCI 1 0001111011 1 cout D0D1D2D31 A BCI 1 00011110111S D0D1D2 D3 1 可得: Cout 的连接方式如下: D0=0;D1=CI=D2;D3=1 S 的连接方式如下: D0=CI;D1=CI =D2;D3=CI 选用两片4选1,可绘制全加器如图1所示。 VCC ci INPUT VCC A INPUT VCC B INPUT S OUTPUT COUT OUTPUT S0D2S1D3D0INH D1 Q MUX41 inst9 NOT inst10 S0D2S1D3D0INH D1Q MUX41 inst GND VCC 图1一位全加器 1. 为全加器项目工程设计建立文件夹 Windows 环境下在D :盘建立8位加法器设计项目的文件夹,取名为adder8, 路径为d :\adder8。 2. 输入原理图文件 (1) 打开Quartus II ,选择菜单File →New 。在New 窗口中的Device Design Files 中选择硬件设计文件类型为Block Diagram/Sxhematic File ,单击OK 按钮后进入Quartus II 图形编辑窗口。 (2) 选择输入元件项Inset →Symbol ,分别调入mux41、not 元件及输入、输出端口,参照图上图合理布局、布线,最后输入各引脚名:A 、B 、ci 和s 、cout 。 (3) 原理图文件存盘,注意应选择刚才建立的文件夹 d:\adder8,将已设计好的原理图 文件取名为has.bdf,点击OK 存盘。存盘后Quartus II 弹出“Do you want to create a new project with this file?” 窗口,窗口选择“是”,将进入建立新工程项目操作。(具体操作见第3点) 3、 建立新工程项目 如在前一步操作中选择“否”的话,可按下面的操作建立新工程项目。建立工程项目

设计示例432位先行进位加法器的设计

设计示例4:32位先行进位加法器的设计 1、功能概述: 先行进位加法器是对普通的全加器进行改良而设计成的并行加法器,主要是针对普通全加器串联时互相进位产生的延迟进行了改良。超前进位加法器是通过增加了一个不是十分复杂的逻辑电路来做到这点的。 设二进制加法器第i位为A i,B i,输出为S i,进位输入为C i,进位输出为C i+1,则有:S i=A i⊕B i⊕C i (1-1) 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(1-2) 令G i = A i * B i , P i = A i+B i,则C i+1= G i+ P i *C i 当A i和B i都为1时,G i = 1,产生进位C i+1 = 1 当A i和B i有一个为1时,P i = 1,传递进位C i+1= C i 因此G i定义为进位产生信号,P i定义为进位传递信号。G i的优先级比P i高,也就是说:当G i = 1时(当然此时也有P i = 1),无条件产生进位,而不管C i是多少;当G i=0而P i=1时,进位输出为C i,跟C i之前的逻辑有关。 下面推导4位超前进位加法器。设4位加数和被加数为A和B,进位输入为C in,进位输出为C out,对于第i位的进位产生G i = A i·B i ,进位传递P i=A i+B i , i=0,1,2,3。于是这各级进位输出,递归的展开Ci,有: C0 = C in C1=G0 + P0·C0 C2=G1 + P1·C1 = G1 + P1·G0 + P1·P0?C0 C3=G2 + P2·C2 = G2 + P2·G1 + P2·P1·G0 + P2·P1·P0·C0 C4=G3 + P3·C3 = G3 + P3·G2 + P3·P2·G1 + P3·P2·P1·G0 + P3·P2·P1·P0·C0 (1-3) C out=C4 由此可以看出,各级的进位彼此独立产生,只与输入数据Ai、Bi和Cin有关,将各级间的进位级联传播给去掉了,因此减小了进位产生的延迟。每个等式与只有三级延迟的电路对应,第一级延迟对应进位产生信号和进位传递信号,后两级延迟对应上面的积之和。实现上述逻辑表达式(1-3)的电路称为超前进位部件(Carry Lookahead Unit),也称为CLA 部件。通过这种进位方式实现的加法器称为超前进位加法器。因为各个进位是并行产生的,所以是一种并行进位加法器。 从公式(1-3)可知,更多位数的CLA部件只会增加逻辑门的输入端个数,而不会增加门的级数,因此,如果采用超前进位方式实现更多位的加法器,从理论上讲,门延迟不变。但是由于CLA部件中连线数量和输入端个数的增多,使得电路中需要具有大驱动信号和大扇入门,这会大大增加门的延迟,起不到提高电路性能的作用。因此更多位数的加

CMOS数字集成电路设计_八位加法器实验报告

CMOS数字集成电路设计课程设计报告 学院:****** 专业:****** 班级:****** 姓名:Wang Ke qin 指导老师:****** 学号:****** 日期:2012-5-30

目录 一、设计要求 (1) 二、设计思路 (1) 三、电路设计与验证 (2) (一)1位全加器的电路设计与验证 (2) 1)原理图设计 (2) 2)生成符号图 (2) 3)建立测试激励源 (2) 4)测试电路 (3) 5)波形仿真 (4) (二)4位全加器的电路设计与验证 (4) 1)原理图设计 (4) 2)生成符号图 (5) 3)建立测试激励源 (5) 4)测试电路 (6) 5)波形仿真 (6) (三)8位全加器的电路设计与验证 (7) 1)原理图设计 (7) 2)生成符号图 (7) 3)测试激励源 (8) 4)测试电路 (8) 5)波形仿真 (9) 6)电路参数 (11) 四、版图设计与验证 (13) (一)1位全加器的版图设计与验证 (13) 1)1位全加器的版图设计 (13) 2)1位全加器的DRC规则验证 (14) 3)1位全加器的LVS验证 (14) 4)错误及解决办法 (14) (二)4位全加器的版图设计与验证 (15) 1)4位全加器的版图设计 (15) 2)4位全加器的DRC规则验证 (16) 3)4位全加器的LVS验证 (16) 4)错误及解决办法 (16) (三)8位全加器的版图设计与验证 (17) 1)8位全加器的版图设计 (17) 2)8位全加器的DRC规则验证 (17) 3)8位全加器的LVS验证 (18) 4)错误及解决办法 (18) 五、设计总结 (18)

相关文档
相关文档 最新文档