EDA—VHDL的四位全加器

EDA—VHDL的四位全加器
EDA—VHDL的四位全加器

EDA —VHDL 的四位全加器设计

1 设计分析

全加器是能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号的加法电路。其真值表如表1所示:

根据真值表可得出下列表达式:

根据以上表达式,可以用数据流方式设计出1位全加器。要设计的是4位全加器,这里采用串行进位来设计。先设计4个1位的全加器,然后将低位的进位输出与高位的进位输入相连,将要进行加法运算的两个4位数的每一位分别作为每一个1位全加器的输入,进行加法运算,所有的1位全加器的输出组成一个4位数,即输入的两个4位数之和,最高位的全加器产生的进位输出即两个4位数求和的进位输出。

4位全加器的原理图如图1所示:

()

()cin

b a ab cin b a b a ab abcin

cin b a bcin a cin ab cout ⊕+=++=+++=()()

()()

cin

b a cin b a cin b a cin ab b a cin b a b a abcin cin b a cin b a cin b a s ⊕⊕=⊕+⊕=+++=+++=

图1 4位全加器原理图

根据图1所示,可以采用结构化描述方式设计4位全加器。

2 程序设计

设计的程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY adder1 IS --1位全加器设计PORT(a,b,cin:IN STD_LOGIC;

s,cout:OUT STD_LOGIC);

END adder1;

ARCHITECTURE dataflow OF adder1 IS --用数据流方式设计1位全加器SIGNAL tmp:STD_LOGIC; --用tmp表示a⊕b BEGIN

tmp<=a XOR b AFTER 10 ns;

s<=tmp XOR cin AFTER 10 ns;

cout<=(a AND b)OR(tmp AND cin) AFTER 20 ns;

END dataflow;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY adder4 IS --4位全加器设计PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

cin:IN STD_LOGIC;

s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

cout:OUT STD_LOGIC);

END adder4;

ARCHITECTURE structural OF adder4 IS --用结构化描述风格设计4位全加器COMPONENT adder1

PORT(a,b,cin:IN STD_LOGIC;

s,cout:OUT STD_LOGIC);

END COMPONENT;

SIGNAL x,y,z:STD_LOGIC;

FOR u1,u2,u3,u4:adder1 USE ENTITY WORK.adder1(dataflow);

BEGIN

u1:adder1 PORT MAP(a(0),b(0),cin,s(0),x);

u2:adder1 PORT MAP(a(1),b(1),x,s(1),y);

u3:adder1 PORT MAP(a(2),b(2),y,s(2),z);

u4:adder1 PORT MAP(a(3),b(3),z,s(3),cout);

END structural;

3 仿真结果

对上面的程序进行仿真,先对1位全加器仿真,结果如图2所示:

图2 1位全加器仿真图

由图2可以看出,1位全加器的仿真结果与表1相符,说明1位全加器设计成功。

再对4位全加器仿真,结果如图3所示:

图3 4位全加器仿真图

由图3可以看出,对设计的全加器进行了2组数据的仿真,由于4位全加器最低位的进位为0,因此将cin置0,仿真的结果与实际的运算结果是相同的。

4 结果分析

由仿真结果可知,设计的程序完成了全加器的功能,因此该程序正确。

FPGA4位全加器的设计

目录 一、设计原理 (2) 二、设计目的 (3) 三、设计容 (3) 四、设计步骤 (3) 五、总结与体会 (7)

4位全加器设计报告 一、设计原理 全加器是指能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位。 4位加法器可以采用4个以为全加器级连成串行进位加法器,如下图所示,其中CSA为一位全加器。显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算无法胜任。 A和B为加法器的输入位串,对于4位加法器其位宽为4位,S为加法器输出位串,与输入位串相同,C为进位输入(CI)或输出(CO)。 实现代码为:全加器真值表如下: module adder4(cout,sum,ina,inb,cin); output[3:0]sum; output cout; input[3:0]ina,inb; 输入输出Xi Yi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

input cin; assign {count,sum}=ina+inb+cin; endmodule 二、设计目的 ⑴熟悉ISE9.1开发环境,掌握工程的生成方法。 ⑵熟悉SEED-XDTK XUPV2Pro实验环境。 ⑶了解Verilog HDL语言在FPGA中的使用。 ⑷了解4位全加器的Verilog HDL语言实现。 三、设计容 用Verilog HDL语言设计4位全加器,进行功能仿真演示。 四、设计步骤 1、创建工程及设计输入。 ⑴在E:\progect\目录下,新建名为count8的新工程。

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

实验一四位串行进位加法器的设计 一、实验目的 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 );

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

课题名称与技术要求 课题名称: 四位二进制加法器设计 技术要求: 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(比较小),出于简单起见,这里选择串行进位加法器。 译码器Ⅱ选择 译码是编码的逆过程,将输入的每个二进制代码赋予的含意“翻译”过来,给出相应的输出信号。译码器是使用比较广泛的器材之一,主要分为:变量译码器和码制译码器,其中二进制译码器、二-十进制译码器和显示译码器三种最典型,使用十分广泛。显示译码器又分为七段译码器和八段

FPGA4位全加器的设计

目录 一、设计原理 (1) 二、设计目的 (1) 三、设计内容 (2) 四、设计步骤 (2) 五、总结与体会 (6)

4位全加器设计报告 一、设计原理 全加器是指能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位。 4位加法器可以采用4个以为全加器级连成串行进位加法器,如下图所示,其中CSA 为一位全加器。显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算无法胜任。 A 和 B 为加法器的输入位串,对于4位加法器其位宽为4位,S 为加法器输出位串,与输入位串相同, C 为进位输入(CI )或输出(CO )。 实现代码为: 全加器真值表如下: module adder4(cout,sum,ina,inb,cin); output[3:0]sum; output cout; input[3:0]ina,inb; input cin; assign {count,sum}=ina+inb+cin; endmodule 二、设计目的 ⑴熟悉ISE9.1开发环境,掌握工程的生成方法。 ⑵熟悉SEED-XDTK XUPV2Pro 实验环境。 ⑶了解Verilog HDL 语言在FPGA 中的使用。 ⑷了解4位全加器的Verilog HDL 语言实现。 输 入 输 出 Xi Yi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

三、设计内容 用Verilog HDL语言设计4位全加器,进行功能仿真演示。 四、设计步骤 1、创建工程及设计输入。 ⑴在E:\progect\目录下,新建名为count8的新工程。 ⑵器件族类型(Device Family)选择“Virtex2P” 器件型号(Device)选“XC2VP30 ff896-7” 综合工具(Synthesis Tool)选“XST(VHDL/Verilog)” 仿真器(Simulator)选“ISE Simulator”

VHDL编写一位全加器参考程序

这是茄子求别人写的参考程序,不一定能实际运行。但是可靠性在百分之九十左右。大家做不出来的可以参考下。做出来的看出错误请指正。我作为学习委员既然把答案给大家,一方面是不想影响大家平时成绩,另一方面也是希望大家可以自己看看,学习一下,不要到最后结课了着急。所以我晚上不收打印的作业,每个人都必须亲自抄写出来。 行为描述方式 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADD11 IS PORT(A:IN STD_LOGIC; B:IN STD_LOGIC; CIN:IN STD_LOGIC; CO:OUT STD_LOGIC; S:OUT STD_LOGIC); END ADD11; ARCHITECTURE BEHAVE OF ADD11 IS BEGIN PROCESS(A,B,CIN) VARIABLE N: INTEGER RANGE 0 TO 3; CONSTANT S_VECTOR: STD_LOGIC_VECTOR(0 TO 3):="1010"; CONSTANT CO_VECTOR: STD_LOGIC_VECTOR(0 TO 3):="1100"; BEGIN N:=0; IF(A='1') THEN N:=N+1; END IF; IF(B='1') THEN N:=N+1; END IF; IF(CIN='1') THEN N:=N+1; END IF; S<=S_VECTOR(N); CO<=CO_VECTOR(N); END PROCESS; END BEHAVE; 数据流描述方式 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADD2 IS PORT(A:IN STD_LOGIC; B:IN STD_LOGIC; CIN:IN STD_LOGIC; CO:OUT STD_LOGIC; S:OUT STD_LOGIC);

实验一 4位全加器的设计

实验一4位全加器的设计 一、实验目的: 1 熟悉QuartusⅡ与ModelSim的使用; 2 学会使用文本输入方式和原理图输入方式进行工程设计; 3 分别使用数据流、行为和结构化描述方法进行四位全加器的设计; 4 理解RTL视图和Technology Map视图的区别; 5 掌握简单的testbench文件的编写。 二、实验原理: 一个4位全加器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的进位输入信号cin相接。 三、实验内容: 1.QuartusII软件的熟悉 熟悉QuartusⅡ环境下原理图的设计方法和流程,可参考课本第4章的内容,重点掌握层次化的设计方法。 2.设计1位全加器原理图 设计的原理图如下所示:

VHDL源程序如下(行为描述):-- Quartus II VHDL Template -- Unsigned Adder library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity f_add is port ( a : in std_logic; b : in std_logic; ci : in std_logic; y : out std_logic; co : out std_logic ); end entity; architecture rtl of f_add is begin (co,y)<=('0',a)+('0',b)+('0',ci); end rtl;

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

VHDL实现16位全加器

[键入公司名称] [键入文档标题] [键入文档副标题] 姓名:托列吾别克·马杰尼 班级:电路与系统01班 学号:201221020141 2013/11/24

基于VHDL的16位全加器的设计 1.1设计题目的内容及要求 1.1.1目的: CMOS数字集成电路设计流程及数字集成电路自动化设计,包括功能验证、VHDL/Verlog建模、同步电路设计、异步数据获取、能耗与散热、信号完整性、物理设计、设计验证等技术 1.1.2内容: 主要实验内容是用0.18μm数字CMOS工艺,VHDL或Verlog设计一个16位全加器,用Synthesis 仿真工具验证功能,电路合成,及性能检测。 1.1.3主要测试参数及指标范围: 16位的全加器主要的设计指标是高于1GHz的频率,功耗,物理面积大小等参数。 1.2全加器的组成和原理分析 全加器是常用的组合逻辑模块中的一种,对全加器的分析和对组合逻辑电 路的分析一样。组合逻辑电路的分析,就是找出给定电路输入和输出之间的逻 辑关系,从而了解给定逻辑电路的逻辑功能。组合逻辑电路的分析方法通常采 用代数法,一般按下列步骤进行: (1)根据所需要的功能,列出真值表。 (2)根据真值表,写出相应的逻辑函数表达式。 (3)根据真值表或逻辑函数表达式,画出相应的组合逻辑电路的逻辑图[1]。 (4)用VHDL编写程序在QUARTUSⅡ上进行模拟,并分析结果的正确性。 1.3 全加器简介

全加器是组合逻辑电路中最常见也最实用的一种,考虑低位进位的加法运算就是全加运算,实现全加运算的电路称为全加器。它主要实现加法的运算,其中分为并行全加器和串行全加器,所谓并行就是指向高位进位时是并行执行的,而串行就是从低位到高位按顺序执行,为了提高运算,必须设法减小或消除由于进位信号逐级传递所消耗的时间,为了提高运算速度,制成了超前进位加法器,这是对全加器的一种创新[2]。 1.3.1半加器的基本原理 如果不考虑有来自低位的进位将两个1位二进制数相加,称为半加。实现半加运算的电路称为半加器。 按照二进制加法运算规则可以列出如表2所示的半加器真值表,其中A、B 是两个加数,S是相加的和,CO是向高位的进位。将S、CO和A、B的关系写成逻辑表达式则得到 S=A B+A B=A+B CO=AB 表1 半加器的真值表 因此,半加器是由一个异或门和一个与门组成的,如图1所示。

实验五全加器的设计及应用

实验五全加器的设计及应 用 The following text is amended on 12 November 2020.

实验五全加器的设计及应用一、实验目的 (1)进一步加深组和电路的设计方法。 (2)会用真值表设计半加器和全加器电路,验证其逻辑功能。 (3)掌握用数据选择器和译码器设计全加器的方法。 二、预习要求 (1)根据表5-1利用与非门设计半加器电路。 (2)根据表5-2利用异或门及与非门设计全加器电路。 三、实验器材 (1)实验仪器:数字电路实验箱、万用表; (2)实验器件:74LS04、74LS08、74LS20、74LS32、74LS86、74LS138、74LS153; 四、实验原理 1.半加器及全加器 电子数字计算机最基本的任务之一就是进行算术运算,在机器中的四则运算——加、减、乘、除都是分解成加法运算进行的,因此加法器便成了计算机中最基本的运算单元。 (1)半加器 只考虑了两个加数本身,而没有考虑由低位来的进位(或者把低位来的进位看成0),称为半加,完成半加功能的电路为半加器。框图如图5-1所示。一位半加器的真值表如表5-1所示。 由真值表写逻辑表达式: 画出逻辑图,如图5-2所示: (a)逻辑图(b)逻辑符号 图5-2 半加器 (2)全加器

能进行加数、被加数和低位来的进位信号相加,称为全加,完成全加功能的电路为全加器。根据求和结果给出该位的进位信号。即一位全加器有3个输入端:i A (被加数)、i B (加数)、1-i C (低位向本位的进位);2个输出端:i S (和数)、i C (向高位的进位)。 下面给出了用基本门电路实现全加器的设计过程。 1)列出真值表,如表5-2所示。 从表5-2中看出,全 加器中包含着半加器,当01=-i C 时,不考虑低位来的进位,就是半加器。而在 全加器中1-i C 是个变量, 其值可为0 或1。 i S 、i C 的卡 2)画出诺图,如图5-3所示。 (a ) i S (b ) i C 图5-3 全加器的卡诺图 3)由卡诺图写出逻辑表达式: 如用代数法写表达式得: 即: 4)画出逻辑图,如图5-4(a )所示;图5-4(b )是全加器的逻辑符号。 (a )逻辑图 (b )逻辑符号 图5-4 全加器 五、实验内容 1.利用异或门及与非门实现一位全加器,并验证其功能。 答:逻辑电路图如下: 2. 试用全加器实现四位二进制全减器。 3. 试用一片四位二进制全加器将一位8421BCD 码转换成余3码,画出电路图,并测试其功能。 4. 试用一片3—8线译码器及四输入与非门设计一位全加器,要求电路最简,画出设计电路图,并测试其功能。 5. 试用74LS86组成二个四位二进制数的比较电路,要求两数相等时其输出为“1” ,反之为“0”。 6. 试用双四选一数据选择器和与非门分别构成全加器及全减器,写出表达式,画出逻辑图,要求电路最简,并测试其功能。 半加器 全加器

EDA与VHDL实现8位加法器

EDA技术与VHDL实训 姓名:李* 班级:电信**-* 学号:12******** 电子与信息工程学院

8位加法器设计 一实训目的 1.学习使用VHDL语言设计电路,加深对VHDL语言的理解与应用。 2.学习8位加法器的VHDL程序设计方法。 3.学习例化语句的应用,并能够利用例化语句完成从半加器到全加器的设计。 二加法器 加法器是为了实现加法的。即是产生数的和的装置。加数和被加数为输入,和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。 对于1位的二进制加法,相关的有五个的量:1,被加数A,2,被加数B,3,前一位的进位CIN,4,此位二数相加的和S,5,此位二数相加产生的进位COUT。前三个量为输入量,后两个量为输出量,五个量均为1位。 对于32位的二进制加法,相关的也有五个量:1,被加数A(32位),2,被加数B(32位),3,前一位的进位CIN(1位),4,此位二数相加的和S(32位),5,此位二数相加产生的进位COUT(1位)。 要实现32位的二进制加法,一种自然的想法就是将1位的二进制加法重复32次(即逐位进位加法器)。这样做无疑是可行且易行的,但由于每一位的CIN都是由前一位的COUT 提供的,所以第2位必须在第1位计算出结果后,才能开始计算;第3位必须在第2位计算出结果后,才能开始计算,等等。而最后的第32位必须在前31位全部计算出结果后,才能开始计算。这样的方法,使得实现32位的二进制加法所需的时间是实现1位的二进制加法的时间的32倍。 三实训内容 首先设计半加器,然后用例化语句将它们连接起来。利用半加器和或门构成1位全加器,以1位全加器为基本硬件,构成串行进位的8位加法器。 3.1 设计1位半减器 利用真值表设计1位半减器。图3-1中的h_add是半加器,sum是输出和,a_out是进位输出,add_in是进位输入。 表3-1 加法真值表 加数x 加数y 和sum 进位a_out 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1

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

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日

VHDL实现16位全加器

[键入公司名称] [键入文档标题] [键入文档副标题] 姓名:托列吾别克?马杰尼 班级:电路与系统01班 学号:201221020141

[键入公司名称] 2013/11/24

基于VHDL的16位全加器的设计 1.1设计题目的内容及要求 i.i.i 目的: CMOS数字集成电路设计流程及数字集成电路自动化设计,包括功能验证、VHDL/Verlog建模、同步电路设计、异步数据获取、能耗与散热、信号完整性、物理设计、设计验证等技术 1.1.2内容: 主要实验内容是用0.18阿数字CMOS工艺,VHDL或Verlog设计- 个16位全加器,用Synthesis仿真工具验证功能,电路合成,及性能检测。 1.1.3主要测试参数及指标范围: 16位的全加器主要的设计指标是高于1GHz的频率,功耗,物理面积大小等参数。 1.2全加器的组成和原理分析 全加器是常用的组合逻辑模块中的一种,对全加器的分析和对组合逻辑电路的分析一样。组合逻辑电路的分析,就是找出给定电路输入和输出之间的逻辑关系,从而了解给定逻辑电路的逻辑功能。组合逻辑电路的分析方法通常采用代数法,一般按下列步骤进行: (1)根据所需要的功能,列出真值表。 (2)根据真值表,写出相应的逻辑函数表达式。 (3)根据真值表或逻辑函数表达式,画出相应的组合逻辑电路的逻辑图 (4)用VHDL编写程序在QUARTUS U上进行模拟,并分析结果的正确性。 1.3全加器简介

全加器是组合逻辑电路中最常见也最实用的一种,考虑低位进位的加法运 算就是全加运算,实现全加运算的电路称为全加器。它主要实现加法的运算, 其中分为并行全加器和串行全加器,所谓并行就是指向高位进位时是并行执行 的,而串行就是从低位到高位按顺序执行,为了提高运算,必须设法减小或消除由于进位信号逐级传递所消耗的时间,为了提高运算速度,制成了超前进位加法器,这是对全加器的一种创新[2]。 1.3.1半加器的基本原理 如果不考虑有来自低位的进位将两个1位二进制数相加,称为半加。实现 半加运算的电路称为半加器。 按照二进制加法运算规则可以列出如表2所示的半加器真值表,其中A、B 是两个加数,S是相加的和,CO是向咼位的进位。将S、CO和A、B的关系写成逻辑表达式则得到 S=A B+A B=A+B CO=AB 因此,半加器是由一个异或门和一个与门组成的,如图1所示。

四位全加器设计

四位全加器设计 The design of 4 bit full_adder4 摘要通过EDA软件,利用VHDL硬件描述语言,与原理图来完成四位全加器设计,此设计由简单到复杂,先合成一个半加器,再通过元件例化语句编写一位全加器,然后用四个全加器采用原理图便可合成此设计,并进行时序仿真,硬件下载 Abstrct Making use of VHDL and EDA soft-ware complete a four-f_adder design,It is a simple way tranffering to a complex way.At first,we are able to make up a h_adder,then making full use of it and an component sentence carry out a f_adder,at last ,we can adopt the picture of theory,then the design is on my eyes. 关键词 VHDL语言、半加器、全加器、原理图四位全加器设计 Key words VHDL language ,h_adder,f_adder,principium_ picture,full_adder4 引言VHDL于1983年由美国国防部发起创建,由IEEE进一步发展,从此,VHDL 成为硬件描述语言的业界标准之一, VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行描述和建模,从而大大简化了硬件设计任务,提高了设计效率和可靠性,现今已得到广泛应用,此时利用它的优势来实现四位全加器设计. 1 掌握基本知识 1.1电路的VHDL描述有两大部分组成 1.1.1以关键词ENTITY引导,END ENTITY mux21a结尾的语句部分,称为实体。VHDL的实体描述了电路器件的外部情况及各信号端口的基本性质. 1.1.2以关键词ARCHITECTURE引导,END ARCHITECTURE one 结尾的语句部分,成为结构体。结构体负责描述电路器件的内部逻辑功能或电路结构。 1.2原理图的相关知识 这是一种类似于传统的原理图编辑输入方式,即在EDA软件的图形编辑界面上绘制能完成特定功能的电路原理图。原理图由逻辑器件

8位加法器设计程序过程

实验8位加法器设计 一、实验目的 熟悉利用QuartusⅡ的图形编辑输入法设计简单组合电路,掌握层次化设计方法,并通过8位全加器的设计,进一步熟悉利用EDA软件进行数字系统设计的流程。 二、实验仪器与器材 计算机1台,GW48-PK2S实验箱1台,QuartusⅡ6.0 1套。 三、实验内容 1. 基本命题 利用图形输入法设计一个一位半加器和全加器,再利用级联方法构成8位加法器。 2. 扩展命题 利用文本输入法设计4位并行进位加法器,再利用层次设计方法构成8位加法器。通过时序仿真,比较两种加法器的性能。 四、实验设计思路 按照如图2-1,2-2,2-3设计半加器、全加器、串行级联加法器 ①设计半加器 图2-1半加器设计图 ②设计全加器

图2-2全加加器设计图 ③设计串行级联8位加法器 图2-3串行级联8位加法器设计图 ④仿真波形图 对以上的串行级联加法器进行仿真。设置时钟频率为/1/10ns。每20ns对a,b输入口进行+2操作。所得结果见图2-8。由图可知延时大约为14ns。

图2-4串行级联加法器仿真波形图 对以上的串行级联加法器进行仿真。设置时钟频率为/2.0us。每10us对a,b输入口进行 +2操作。所得结果见图2-4。由图可知延时大约为10us。 五、实验要求 将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。 六、实验思考题 (1)与单一设计文件比较,实现层次化设计应注意哪些问题? 答:实现层次化设计需要注意的是:假设B设计中引用A设计,那么需要将A 设计的工程文件放在B设计的工程文件中,另外,B设计的工程必须要以B的实体名称对应,不然仿真的时候会出错。 (2)比较图形编辑和文本编辑两种8位二进制加法器的性能,分析它们的主要异同点。以下是文本编辑的参考程序。 1) 4位二进制数加法器ADDER4B的VHDL描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER4B IS PORT ( CIN4 : IN STD_LOGIC; A4 : IN STD_LOGIC_VECTOR(3DOWNTO0);

FPGA VHDL4位全加器

《FPGA原理及应用》 实验报告书 (4) 用例化语句设计4位全加器题目 学院专业 姓名学号 指导教师 2015年 10-12月

1.实验目的 (1)进一步熟悉和掌握Qartus II的使用方法; (2)进一步掌握FPGA实验箱使用方法; (3)学习和掌握电路原理图的设计流程; (4)深化理解顶层设计的概念和构建电路的方法 2.实验内容 使用Qartus II的元件库,通过元件图的方式设计具有4位全加器功能的程序,并使用FPGA实验箱对程序进行硬件下载,验证。 3.实验条件 开发软件:Qartus II 8.0 实验设备:FPGA实验箱 拟用芯片:Altera EP3C55F484C8 4.实验设计 1)系统原理 多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 四位全加器可对两个多位二进制数进行加法运算,同时产生进位。当两个二进制数相加时,较高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。 其中CIN表示输入进位位,COUT表示输出进位位,输入A和B分别表示加数和被加数。输出SUM=A+B+CIN,当SUM大于255时,COUT置‘1’。 图4-1 4位全加器原理图 2)程序代码

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adder1 IS --1位全加器设计 PORT(a,b,cin:IN STD_LOGIC; s,cout:OUT STD_LOGIC); END adder1; ARCHITECTURE dataflow OF adder1 IS --用数据流方式设计1位全加器SIGNAL tmp:STD_LOGIC; --用tmp表示a⊕b BEGIN tmp<=a XOR b AFTER 10 ns; s<=tmp XOR cin AFTER 10 ns; cout<=(a AND b)OR(tmp AND cin) AFTER 20 ns; END dataflow; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adder4 IS --4位全加器设计 PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); cin:IN STD_LOGIC; s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout:OUT STD_LOGIC); END adder4;

4位全加器设计解析

可编程逻辑器件设计大作业 题目四位全加器设计 学院自动化与电气工程学院 班级 姓名 学号 2104年12月30 日

目录 摘要 (1) 1.设计目的 (2) 2.设计要求 (2) 3.设计原理 (2) 3.1.四位全加器 (2) 3.2.四位全加器的原理图 (4) 4.设计方案 (4) 4.1.仿真软件 (4) 4.2.全加器原理 (5) 4.2.1一位全加器的设计与原理 (5) 4.2.2四位全加器的原理及程序设计 (5) 5.程序设计 (7) 6.仿真及结果 (8) 总结与体会 (10) 参考文献 (11)

摘要 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 本次设计是用VHDL语言设计四位全加器,并用Quartus II仿真。 关键词:VHDL 四位全加器Quartus II

四位全加器设计 1.设计目的 复习加法器的原理,掌握加法器的设计实现方法,设计实现数字系统设计中常用的4位全加器,在此基础上进一步熟悉MAX+PLUSⅡ或Quartus II软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。 2.设计要求 1)复习EDA的相关技术与方法; 2)掌握VHDL或者Verilog语言,并要求能编写程序。 3)Quartus软件的使用:掌握程序编辑、编译、调试、仿真方法。 4)设计相关简单的电路,完成既定的功能。 3.设计原理 3.1.四位全加器 加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。 多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 四位全加器可对两个多位二进制数进行加法运算,同时产生进位。当两个二进制数相加时,较高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。 其中CIN表示输入进位位,COUT表示输出进位位,输入A和B分别表示

四位二进制全加器设计

组合逻辑电路课程设计 题目:用74ls283构成四位二进制全加/减器 一、设计思路 74ls283为四位加法器,而如果希望进行减法运算,则需要将其转化为加法,而之前学到,二进制运算,一个数减去另一个数,即等于加上其补码。于是得到如下公式,A-B=A+(-B)=A+B’+1。 将其全部视为加法运算,即一个数加上一个正数或者一个负数,这个数为加数B。 那么,需要将加数增添一位符号位,以区分正负。因为74ls283芯片的引脚为低位 向正在运算的数的进位,所以可以将其作为加数的符号位。当其为正数时,输入为0,即计算A+B。而当加数为负数时候,使其输入为1,并将B取反,再加上进位1,正好与公式相符。 根据以上原理,应用输入作为符号位,进行4位被加(减)数与5位加(减) 数的加法运算。设A3-A0为被加(减)数,B3-B0为加(减)数,M0为符号位。当M0为0时表示正数,为1时表示负数。而当B为负数需要取反时,刚好可以利用异或门的特性来进行,即1异或B等于B’,0异或B等于B即将B的各个数位和M0通过异或门相连,即可以做到负数取反。 二、电路图 如图,输入输出ABC都用LED来指示二进制的数值,开关S2控制A的数值,S1

控制B的数值以及符号位。BX1指示灯指示的是输入B经过异或门作用后的电平。三、由于此电路进行的是加法运算,两个加数一共2的9次方中组合,所以真值表又多 又显而易见,此处将不给出。 四、举例演示: (1)5+6=11 如图拨动开关,A=5,B=6,可见C为11的二进制表示1011。 (2)7-3=4

如图,将M0置为1以表示负数。BX1表示的是3的反码,在74283中进行了加1的运算即变成了补码,输出结果为0100(2)=4(10) (3)1000+1000=10000 由于输出只有四位,而1000+1000会产生进位。而74283的输出有C4引脚,即进位口,所以当结果需要进位时,结果表示为C4引脚即二极管O值为1。 五、结论 以上分析,得知此电路可以进行四位二进制加减法运算,运用集成芯片,运用其已有的功能,可以帮助我们更加轻松的实现电路的设计,可以大大简化过程。

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

长安大学 电工与电子技术课程设计 题目:4位二进制加法器学院:汽车学院 专业:汽车运用工程 班级: 姓名: 学号: 指导老师:李三财

目录 一、课题名称与技术要求··························· 二、摘要········································· 三、总体设计方案论证及选择······················· 1、方案论证与选择······························ 2、加法器的选取································ 3、译码器的选取································ 4、数码管的选取································ 四、设计方案的原理框图、总体电路原理图及说明····· 1、原理框图···································· 2、总体电路原理图······························ 3、说明········································ 五、单元电路设计、主要元器件选择及电路参数计算··· 1、单元电路设计································ 2、主要元器件选择······························ 六、收获与体会及存在的问题······················· 七、参考文献····································· 八、附件·········································

基于VHDL 4位加法器的设计

实验三基于VHDL 4位加法器的设计 一、实验目的 1、进一步熟悉QUARTUS II软件的使用方法和VHDL输入的全过程。 2、进一步掌握实验系统的使用。 二、实验原理 图 2-1 半加器原理图 图 2-2 1位全加器原理图 图 2-3 4 位加法器原理图 4 位加法器(如图 2-3)是以 1 位全加器作为基本硬件,由 4 个 1 位全加器串行构成,1位全加器又可以由两个1位的半加器和一个或门连接而成(如图 2-2),而1位半加器可以由若干门电路组成(如图 2-1)。

三、实验内容 本次实验使用 Altera FPGA 的开发工具 Quartus Ⅱ,利用原理图输入设计方法设计一个 4位加法器,取实验板上的 8 位按键的高 4 位与低 4 位分别作为 4 位加数与被加数,其中 8 个 LED 取 5 位作为结果输出,LED2~LED5 作为 4 位相加之和的输出结果,LED1作为两数高 4 位相加的进位 (LED 亮,表示低电平“0”, LED 灭,表示高电平“1”) 四、实验步骤 1、打开QUARTUS II软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File。新建一个VHDL文件的过程如下: 1)选择QUARTUS II软件中的File->New命令,出现New对话框。如图2-1所示。 图2-1 新建设计文件选择窗口 2)在New对话框(图2-1)中选择Design Files页下的VHDL File,点击OK按钮,打开VHDL编辑器对话框,如图2-2所示。

图2-2 VHDL编辑窗口 3、按照实验原理和自己的想法,在VHDL编辑窗口编写1位半加器的VHDL程序。如图 2-3所示。 图2-3 1位半加器VHDL程序 4、编写完半加器VHDL程序后,保存,文件名为h_adder.vhd(注意文件名要与实体名 保持一致),再将半加器文件设置为顶层文件,然后进行编译并仿真,对程序 的错误进行修改。 5、再用同样的方法进行或门的VHDL程序(or2a.vhd)输入、编译和仿真。 图2-4 或门VHDL程序 6、利用半加器与或门进行1位全加器的VHDL程序(f_adder.vhd)设计、编译与仿真。

相关文档
最新文档