FPGA VHDL4位全加器
FPGA 4位全加器的设计

目录4位全加器设计报告一、设计原理全加器是指能进行加数、被加数和低位来的进位信号相加,并依照求和结果给出该位的进位。
4位加法器能够采纳4个以为全加器级连成串行进位加法器,如以下图所示,其中CSA为一名全加器。
显然,关于这种方式,因高位运算必需要等低位进位来到后才能进行,因此它的延迟超级可观,高速运算无法胜任。
A和B为加法器的输入位串,关于4位加法器其位宽为4位,S为加法器输出位串,与输入位串相同,C为进位输入(CI)或输出(CO)。
实现代码为:全加器真值表如下:输入输出Xi Yi Ci-1 Si Ci0 0 0 0 00 0 1 1 0output[3:0]sum;output cout;input[3:0]ina,inb;input cin;assign {count,sum}=ina+inb+cin;endmodule二、设计目的⑴熟悉开发环境,把握工程的生成方式。
⑵熟悉SEED-XDTK XUPV2Pro实验环境。
⑶了解Verilog HDL语言在FPGA中的利用。
⑷了解4位全加器的Verilog HDL语言实现。
三、设计内容用Verilog HDL语言设计4位全加器,进行功能仿真演示。
四、设计步骤1、创建工程及设计输入。
⑴在E:\progect\目录下,新建名为count8的新工程。
⑵器件族类型(Device Family)选择“Virtex2P”器件型号(Device)选“XC2VP30 ff896-7”综合工具(Synthesis Tool)选“XST(VHDL/Verilog)”仿真器(Simulator)选“ISE Simulator”⑶下面一直next和确信。
⑷设计输入:在源代码窗口中单击右键,在弹出的菜单被选择“New Source”,在弹出的对话框被选择“Verilog Moudle”,在右端的“File name”中输入源文件名adder4,下面各步单击“Next”按钮。
VHDL全加器的设计

实验四全加器的设计一、实验目的通过VHDL语言设计4位全加器,掌握加法器的设计方法;学习利用软件工具的模块封装(1位全加器)及连接使用方法,在软件工具的原理图输入法下完成4位全加器的设计。
二、实验原理根据数字电路全加器的理论知识,按图1所示的1位全加器的管脚图进行设计。
图 1 1位全加器管脚图三、实验内容用VHDL语言设计1位全加器,进行编译、波形仿真及器件编程。
代码一见附录,仿真图如下图 2 1位全加器功能仿真图使用原理图设计4位全加器进行编译、波形仿真及器件编程。
原理图如下仿真图如下用VHDL语言设计4位全加器,进行编译、波形仿真及器件编程,代码二见附录,仿真图如下图 5 4位全加器功能仿真图附录代码一、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity swqjq isport (a,b:in std_logic;ci:in std_logic;co:out std_logic;s:out std_logic);end swqjq;architecture zhang of swqjq isbeginprocess (a,b,ci)beginif(a='0'and b='0'and ci='0') thens<='0';co<='0';elsif(a='1'and b='0'and ci='0') thens<='1';co<='0';elsif(a='0'and b='1'and ci='0') thens<='1';co<='0';elsif(a='1'and b='1'and ci='0') thens<='0';co<='1';elsif(a='0'and b='0'and ci='1') thens<='1';co<='0';elsif(a='0'and b='1'and ci='1') thens<='0';co<='1';elsif(a='1'and b='0'and ci='1') thens<='0';co<='1';elses<='1';co<='1';end if;end process;end zhang;代码二、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder4b isport ( ci:in std_logic;a,b:in std_logic_vector(3 downto 0);s:out std_logic_vector(3 downto 0);co:out std_logic);end adder4b;architecture zhang of adder4b issignal sint:std_logic_vector(4 downto 0); signal aa,bb:std_logic_vector(4 downto 0); beginaa<='0'&a(3 downto 0);bb<='0'&b(3 downto 0);sint<=aa+bb+ci;s(3 downto 0)<=sint(3 downto 0);co<=sint(4);end zhang;。
VHDL语言完成4位十进制计数器、4位锁存器、测频控制器的设计.docx

电子设计自动化实验实验名称综合性实验二、硬件描述语言的层次化设计实验设备(1) EDA实验箱 ( 型号 ), ( 2)计算机 , ( 3) EDA软件( QuartusII )实验目的1、熟悉 EDA软件( QuartusII)的硬件描述语言输入设计方法;2、掌握 VHDL语言的层次化设计方法和仿真分析方法;3、了解功能仿真、时序仿真和时序参数分析的意义。
实验内容1、用 VHDL语言完成 4 位十进制计数器、 4 位锁存器、测频控制器的设计,包括编译、综合、仿真;**2、采用层次化设计的方法,用VHDL语言的元件例化语句写出 4 位十进制频率计的顶层文件,并分别给出其测频功能和时序仿真分析波形图,并加以分析;**3、用 EDA实验箱进行硬件验证,并分析测量结果; 建议硬件测试实验电路采用电路结构,待测信号F_IN 接 clock0 ;测频控制时钟CLK接 clock2 ; **4、在 2 基础上将其扩展为8 位十进制频率计,或带译码输出的 4 位十进制频率计。
实验报告要求根据以上实验内容写出实验报告:1、简述 4 位频率计模块的工作原理及其设计、编译、仿真分析过程;2、给出模块设计文件、仿真测试文件、仿真结果波形图及其分析报告;3、简述硬件验证过程和验证结果。
1、简述 4 位频率计模块的工作原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为 1 秒的对输入信号脉冲计数允许的信号; 1 秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0 信号。
这 3 个信号可以由一个测频控制信号发生器产生,即TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1 秒脉宽的周期信号,并对频率计的每一计数器 CNT10的 ENA使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要产生一个锁存信号LOAD,在该信号上升沿时,将计数器在前1 秒钟的计数值锁存进各锁存器REG4B中,并由外部的7 段译码器译出,显示计数值。
四位全加器实验报告

武汉轻工大学数学与计算机学院《计算机组成原理》实验报告题目:4位二进制计数器实验专业:软件工程班级:130X班学号:XXX姓名:XX指导老师:郭峰林2015年11月3日【实验环境】1. Win 72. QuartusII9.1计算机组成原理教学实验系统一台。
【实验目的】1、熟悉VHDL 语言的编写。
2、验证计数器的计数功能。
【实验要求】本实验要求设计一个4位二进制计数器。
要求在时钟脉冲的作用下,完成计数功能,能在输出端看到0-9,A-F 的数据显示。
(其次要求下载到实验版实现显示)【实验原理】计数器是一种用来实现计数功能的时序部件,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。
计数器由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS 触发器、T 触发器、D 触发器及JK 触发器等。
计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。
计数器按计数进制不同,可分为二进制计数器、十进制计数器、其他进制计数器和可变进制计数器,若按计数单元中各触发器所接收计数脉冲和翻转顺序或计数功能来划分,则有异步计数器和同步计数器两大类,以及加法计数器、减法计数器、加/减计数器等,如按预置和清除方式来分,则有并行预置、直接预置、异步清除和同步清除等差别,按权码来分,则有“8421”码,“5421”码、余“3”码等计数器,按集成度来分,有单、双位计数器等等,其最基本的分类如下:计数器的种类⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎨⎧⎪⎩⎪⎨⎧⎪⎩⎪⎨⎧⎩⎨⎧进制计数器十进制计数器二进制计数器进制可逆计数器减法计数器加法计数器功能异步计数器同步计数器结构N 、、、321 下面对同步二进制加法计数器做一些介绍。
同步计数器中,所有触发器的CP 端是相连的,CP 的每一个触发沿都会使所有的触发器状态更新。
四位全加器

1.C机一台;
2.Altera Blaster下载器一根;
3.KHF-5实验箱一台。
三、实验原理
全加器是由两个加数Xi和Yi以及低位来的进位Ci-1作为输入,产生本位和Si以及向高位的进位Ci的逻辑电路。它不但要完成本位二进制码Xi和Yi相加,而且还要考虑到低一位进位Ci-1的逻辑。对于输入为Xi、Yi和Ci-1,输出为Si和Ci的情况,根据二进制加法法则可以得到全加器的真值表如下表9-1所示:
五、实验过程
1.打开QUARTUSII软件,新建一个工程。
2.建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。
3.按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光盘中提供的示例程序。
4.编写完VHDL程序后,保存起来。方法同实验一。
5.对编写的VHDL程序进行编译并仿真,对程序的错误进行修改。
BEGIN
abc <= a & b ; --a相并b,即a与b并置操作
PROCESS(abc)
BEGIN
CASE abc IS --类似于真值表的CASE语句
WHEN "00" => so<='0'; co<='0' ;
WHEN "01" => so<='1'; co<='0' ;
WHEN "10" => so<='1'; co<='0' ;
ENTITY h_adder IS
PORT (a, b : IN STD_LOGIC;
1数电实验6PLD VHDL 四位串行二进制加法器 樊1

用Quartus II 软件原理图与VHDL 混合编程编写:樊伟敏1. 用Quartus II 软件原理图与VHDL 混合编写四位串行全加器四位串行全加器电路图如图1所示。
图1 四位串行全加器电路2. 新建原理图文件新建项目add4a ,出现如图2所示的界面。
执行【File\New ...】菜单命令,进入如图3所示的新建文件类型选择对话框。
选择Design Files 中的Block Diagram/Schematic file 项。
点击【OK 】按钮,进入如图4所示的新建原理图窗口。
图2 新建项目add4a 界面图3 新建文件类型选择对话框图4 新建原理图窗口3. 顶层原理图绘制3.1绘制图形块符号点击绘图图形块工具图标,在原理图窗口中拖动鼠标绘制出如图5所示的图形块符号。
3.2 图形块属性设置鼠标右键点击图5所示的图形块,弹出的如图6所示的快捷菜单。
选择Block Properties项,弹出模块属性对话框。
在如图7所示的General标签页中输入自定义的模块名,由于串行四位全加器是由4个一位全加器构成,所以在Name栏中输入自定义的一位全加器的名称,例如:add1a。
然后点击I/Os标签页,在该标签页中设置电路模块的输入输出端口的名称和类型,其中BIDIR为双向端口,INPUT为输入端口,OUTPUT为输出端口。
按如图8所示建立三个输入端a(加数)、b(被加数)、c0(低位进位)和两个输出端s(和)、c1(进位)。
在输入第一个名称和类型后点击【OK】,然后输入下一个名称和类型,直至全部输入以上五个端口的名称和类型后点击【OK】,完成图形块属性设置。
图5 在原理图窗口中绘制图形块符号图6 右键快捷菜单图7 在General标签页中输入自定义的模块名add1a图8 建立五个端口的名称和类型。
3.2 复制自定义的图形块符号在原理图窗口中激活自定义的图形块符号,使用右键快捷菜单中选择复制项,然后选择粘贴项,复制符号块,完成后的原理图编辑窗口的显示如图9所示。
完整四位全加全减器设计

四位全加全减器设计一.实验目的1熟悉在max+plus II 的环境下设计数字电路的步骤和方法2学习使用vhdl语言,进行设计数字电路的RTL级电路3通过max+plus II 软件中对自行设计的电路的仿真,加深对数字电路设计的理解。
二.实验原理1.功能描述输入:select,Ci, A, B 输出:S,CoSelect=0时,S为全加器的求和位(A+B),Co为全加器的高位进位。
Ci为全加器低位进位。
Select=1时,S为全减器的求差位(A-B),Co为全减器的高位借位。
Ci为全减器低位借位。
2.一位全加全减器真值表:输入输出Select Ci A B S Co0 0 0 0 0 00 0 0 1 1 00 0 1 0 1 00 0 1 1 0 10 1 0 0 1 00 1 0 1 0 10 1 1 0 0 10 1 1 1 1 11 0 0 0 0 01 0 0 1 1 11 0 1 0 1 01 0 1 1 0 01 1 0 0 1 11 1 0 1 0 11 1 1 0 0 01 1 1 1 1 13.逻辑化简由真值表得S=A○十B○十Ci=((A○十Select)○十B○十Ci)○十SelectCo=(A○十Select)B+Ci((A○十Select)+B)=((A○十Select)○十B)Ci+(A○十Select)B对于半加器的逻辑表达式为:S=A○十B Co=AB综上,一位全加全减器可由两个半加器,两个异或门和一个或门组成。
4.毛刺的产生与消除组合逻辑电路由于输入到输出各端的延时不同,在输出端稳定之前会产生错误的输出。
在本电路中,由于低位的进位或借位传输到输出的时间比其他信号传输的延时要长,因此当低位产生进位或借位时会出现错误的输出。
一种常见的方法是利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输入输出信号。
由组合逻辑电路的最大延时Td为16.7ns,D触发器的时钟周期T应略大于Td,取20ns。
采用VHDL层次化文件设计一个四位全加器

采用VHDL层次化文件设计一个四位全加器一、实训目的1.巩固VHDL层次化文件设计方法。
2.培养应用VHDL层次化文件设计法的技能。
二、实训器材计算机与Quartus Ⅱ工具软件。
三、实训指导(一)实训原理4位二进制加法器由4个全加器构成,而全加器又由一个半加器和一个或门构成,半加器的真值表如表5-1所示:表5-1 半加器的真值表半加器的逻辑表达式为:so=NOT(a XOR(NOT b))co=a AND b一位全加器的真值表如表5-2所示:表5-2 一位全加器的真值表(二)实训步骤1.电路模块划分根据算法分析,4位二进制加法器可由4个全加器构成,画出其原理方框图。
全加器原理方框图如图5-1所示。
而每个全加器又可划分为一个半加器和一个或门这两个更小的模块,画出其原理方框图。
4位二进制加法器原理方框图如图5-2所示。
图5-1 一位全加器原理方框图图5-2 4位二进制加法器原理框图2.设计底层设计文件(1)设计半减器文件halfadd.vhd。
(2)设计或门电路文件orgate.vhd。
(3)设计全加器电路文件fulladd.vhd,其中把半加器和或门电路文件作为元件调用。
3.设计顶层设计文件设计顶层设计文件add4.vhd,其中把全加器文件作为元件调用。
VHDL代码如下:halfadd.vhd文件代码如下:ENTITY halfadd ISPORT(a,b:IN BIT;so,co:OUT BIT);END halfadd;ARCHITECTURE a OF halfadd ISBEGINPROCESS(a,b)BEGINso<=NOT(a XOR(NOT b)) AFTER 10ns; co<=a AND b AFTER 10 ns;END PROCESS;END a;orgate.vhd文件代码如下:ENTITY orgate ISPORT(a1,b1:IN BIT;o:OUT BIT);END orgate;ARCHITECTURE a OF orgate ISBEGINo<=a1 OR b1;END a;fulladd.vhd文件代码如下:ENTITY fulladd ISPORT(i1,i2,c_in:IN BIT;fs,c_out:OUT BIT);END fulladd;ARCHITECTURE a OF fulladd ISSIGNAL temp_s,temp_c1,temp_c2:BIT; COMPONENT halfaddPORT(a,b:IN BIT;so,co:OUT BIT);END COMPONENT;COMPONENT orgatePORT(a1,b1:IN BIT;o:OUT BIT);END COMPONENT;BEGINU0:halfadd PORT MAP(i1,i2,temp_s,temp_c1);U1:halfadd PORT MAP(temp_s,c_in,fs,temp_c2);U2:orgate PORT MAP(temp_c1,temp_c2,c_out);END a;add4.vhd文件代码如下:ENTITY add4 ISPORT(a,b:IN BIT_VECTOR(3 DOWNTO 0);cin:IN BIT;so:OUT BIT_VECTOR(3 DOWNTO 0);co:OUT BIT);END add4;ARCHITECTURE a OF add4 ISSIGNAL temp_co0,temp_co1,temp_co2:BIT;COMPONENT fulladd ISPORT(i1,i2,c_in:IN BIT;fs,c_out:OUT BIT);END COMPONENT;BEGINU0:fulladd PORT MAP(a(0),b(0),cin,so(0),temp_co0);U1:fulladd PORT MAP(a(1),b(1),temp_co0,so(1),temp_co1); U2:fulladd PORT MAP(a(2),b(2),temp_co1,so(2),temp_co2); U3:fulladd PORT MAP(a(3),b(3),temp_co2,so(3),co);END a;1.编译顶层设计文件把以上各个模块的VHDL设计文件放入同一个文件夹中,以顶层文件建立工程,直接编译顶层文件同时也就编译各个底层模块文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《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;
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)电路波形图
工程编译完成后,必须对其功能和时序性质进行仿真测试。
下图就是实现仿真后的波形,满足原设计要求。
如图3-4所示。
图4-2 4位全加器仿真后的波形
4)引脚锁定和硬件测试
为了能够对全加器进行硬件验证,应将其输入信号锁定在芯片确定的引脚上,编译下载。
其锁定输入信号、输出信号。
图3-5 全加器器引脚锁定
5)编译文件下载
编译文件下载结果如图3-6所示。
图3-6 全加器编译文件下载
5. 实验结果
使用实验箱L8~L1八个开关做输入信号的高低电平,通过FPGA实验箱上的LED显示模块的1个二极管的明灭来测试进位信号,LED数码管显示个位加法最终值。
实验箱演示示意图如图3-7所示。
图3-7 实验箱进行试验
6.心得体会
通过这次实验,让我学习到了如何在Qartus II中使用原理图的方式做出所需要的功能器件,以及顶层设计的方法与优点。
也学会了如何使用FPGA实验箱。