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

合集下载

实验一 4位全加器的设计(1)

实验一  4位全加器的设计(1)

实验一4位全加器的设计一、实验目的:1 熟悉QuartusⅡ与ModelSim的使用;2 学会使用文本输入方式和原理图输入方式进行工程设计;3 分别使用行为和结构化描述方法进行四位全加器的设计;4 理解RTL视图和Technology Map视图的区别;5 掌握简单的testbench文件的编写。

二、实验原理:一个4位全加器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的进位输入信号cin相接。

三、实验内容:1.QuartusII软件的熟悉熟悉QuartusⅡ环境下原理图的设计方法和流程,可参考课本第4章的内容,重点掌握层次化的设计方法。

2.设计1位全加器原理图设计的原理图如下所示:VHDL源程序如下(行为描述):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity f_add_bev is(A : in std_logic;B : in std_logic;CIN : in std_logic;S : out std_logic;CO : out std_logic);end entity;architecture bev of f_add_bev isbegin(CO,S)<=('0',A)+('0',B)+('0',CIN);end bev;VHDL源程序如下(行为描述)的RTL与technology map视图VHDL源程序如下(数据流描述):library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity f_add_fl is(A : in std_logic;B : in std_logic;CIN : in std_logic;S : OUT std_logic;CO : out std_logic);end entity;architecture fl of f_add_fl isbeginS<=A XOR B XOR CIN;CO<=((A XOR B)AND CIN)OR(A AND B);end fl;VHDL源程序如下(数据流描述)的RTL与technology map视图:VHDL源程序如下(结构化描述):library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity f_add_con isport(A : in std_logic;B : in std_logic;CIN : in std_logic;S : OUT std_logic;CO : out std_logic );end entity;architecture con of f_add_con is COMPONENT hadd_vhdPORT(a : IN STD_LOGIC;b : IN STD_LOGIC;co : OUT STD_LOGIC;s : OUT STD_LOGIC );END COMPONENT;SIGNAL S1:STD_LOGIC;SIGNAL CO1:STD_LOGIC;SIGNAL CO2:STD_LOGIC;beginh_add1 : hadd_vhdport map(a => a,B => B,S => S1,CO => CO1);h_add2 : hadd_vhdport map(a => S1,B => CIN,S => S,CO => CO2);CO<=CO1 OR CO2;end con;VHDL源程序如下(结构化描述)的RTL与technology map视图:Testbench文件源程序如下:LIBRARY cycloneiii ;LIBRARY ieee ;USE cycloneiii.cycloneiii_components.all ;USE ieee.std_logic_1164.all ;ENTITY f_add_fl_tb ISEND ;ARCHITECTURE f_add_fl_tb_arch OF f_add_fl_tb ISSIGNAL A : STD_LOGIC :='0';SIGNAL CO : STD_LOGIC ;SIGNAL CIN : STD_LOGIC :='0'; SIGNAL B : STD_LOGIC :='0'; SIGNAL S : STD_LOGIC ;COMPONENT f_add_flPORT (A : in STD_LOGIC ;CO : buffer STD_LOGIC ;CIN : in STD_LOGIC ;B : in STD_LOGIC ;S : buffer STD_LOGIC );END COMPONENT ;BEGINDUT : f_add_flPORT MAP (A => A ,CO => CO ,CIN => CIN ,B => B ,S => S ) ;A<=NOT A AFTER 0.25US;B<=NOT B AFTER 0.5US;CIN<=NOT CIN AFTER 1US;END ;功能仿真波形如下:时序仿真波形如下:3.利用层次化原理图方法设计4位全加器(1)生成新的空白原理图,作为4位全加器设计输入(2)利用已经生成的1位全加器作为电路单元,设计4位全加器。

FPGA 4位全加器的设计

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与VerilogHDL实现

四位全加器的VHDL与VerilogHDL实现
useIEEE.Std_logic_1164.ALL;
entity pro1is
port(A1,B1,G1BAR,A0,B0,G0BAR:instd_logic;
or(cout,m1,m2,m3);
ﻩendmodule
ﻩ/*module add(co,s,a,b,ci);//数据流法
ﻩoutput[3:0] s;
ﻩoutput co;
ﻩinput[3:0] a,b;
ﻩinput ci;
ﻩassign {co,s}=a+b+ci;
ﻩendmodule*/
libraryIEEE;
endmodule
module full_add1(a,b,cin,sum,cout);
ﻩinput a,b,cin;
ﻩoutput sum,cout;
ﻩwire s1,m1,m2,m3;
and(m1,a,b),
(m2,b,cin),
ﻩ(m3,a,cin);
xor(s1,a,b),
ﻩ(sum,s1,cin);
四位全加器的VHDL与VerilogHDL实现
———————————————————————————————— 作者:
———————————————————————————————— 日期:
四位全加器的VHDL/VerilogHDL实现
加法器的分类
(一)半加器
能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。或:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。图1为半加器的方框图。图2为半加器原理图。其中:A、B分别为被加数与加数,作为电路的输入端;S为两数相加产生的本位和,它和两数相加产生的向高位的进位C一起作为电路的输出。

基于FPGA的四位加法器设计

基于FPGA的四位加法器设计

基于FPGA的四位加法器设计4位加法器设计。

取开发板上的4位按键作为4位被加数,取4位拨码开关作为4位被加数,其中8个led灯取5位作为输出结果,led0-led3作为相加的结果,led4作为进位(LED亮表示低电平0,LED灭表示高电平1,)数码管以十进制数显示被加数,加数和相加的结果。

包括vhdl文件、和vwf文件。

利用两组按键作为两个加数输入,用数码管做加数显示和结果显示,开发板上只有4个数码管,但加数都是两位的,所以只能做轮流显示,用“=”键做显示切换。

程序如下:library ieee;use ieee.std_logic_unsigned.all;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity adder_4 isport(clk:in std_logic; --时钟输入,应该输入分频后的clkenter:in std_logic; --显示切换,可以理解位“=”键clear:in std_logic; --清除键,预留接口可扩展key_num1:in std_logic_vector(3 downto 0); --加数1key_num2:in std_logic_vector(3 downto 0); --加数2duan:out std_logic_vector(6 downto 0); --输出结果wei:out std_logic_vector(3 downto 0);led5:out std_logic_vector(4 downto 0) --led结果显示);end entity;architecture fun of adder_4 issignal num1,num2:std_logic_vector(3 downto 0); --中间信号定义signal add_num1: integer range 15 downto 0;signal add_num2: integer range 15 downto 0;signal add_sum: integer range 30 downto 0;signal ten_data:integer range 9 downto 0;signal add_num1ge,add_num1shi,add_num2ge,add_num2shi,sumge,sumshi:integer range 9 downto 0;signal wei_data:integer range 0 to 3;beginduan<="1000000"when ten_data=0 else --显示部分,数码管共阳"1111001"when ten_data=1 else"0100100"when ten_data=2 else"0110000"when ten_data=3 else"0111001"when ten_data=4 else"0010010"when ten_data=5 else"0000010"when ten_data=6 else"1111000"when ten_data=7 else"0000000"when ten_data=8 else"0010000";process(clk,clear,enter,key_num1,key_num2,num1,num2,add_num1ge,add_num1shi,add_n um2ge,add_num2shi,sumge,sumshi)beginif clear = '0' thenadd_num1<=0;add_num2<=0;add_sum<=0;else--if key_num1/="1111" or key_num2/="1111" thennum1<=not key_num1;num2<=not key_num2;--加数处理,二进制转十进制。

1数电实验6PLD VHDL 四位串行二进制加法器 樊1

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所示。

4位二进制并行加法器的设计

4位二进制并行加法器的设计

实验一4位二进制并行加法器的设计1.实验目的:(1)学习使用Quartus II软件的基本用法(2)了解和掌握VHDL语言的语法规则和编程方法及基本流程(3)了解VHDL语言的基本结构2.实验内容用VHDL语言设计一4位二进制并行加法器。

参考设计思路:加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。

多位加法器的构成有两种方式:并行进位和串行进位方式。

并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器。

并行进位加法器通常比串行级联加法器占用更多的资源。

随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。

因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。

实践证明,4位二进制并行加法器和串行级联加法器占用几乎相同的资源。

这样,多位加法器由4位二进制并行加法器级联构成是较好的折中选择。

3.实验要求(1)编写VHDL程序(2)记录系统仿真,画出时序图(3)记录实验过程中遇到的问题及解决办法4.程序设计5.生成RTL电路图6.仿真波形7.实验心得本周的实验是我学习该门课程进行的第一次实验,在实验过程中遇到了很多问题,比如:对Quartus II软件不熟悉,而且全是英文状态,不会使用软件的功能;编写程序时,多次报错,各种各样报错;编写程序完成后,成功编译了,但不会对仿真赋值等。

最后,我通过反复观看老师发的实验操作案例,并通过百度搜索相关的操作流程,翻阅教科书查找相关的解决方案。

第一次实验难免会遇到困难,最后经过我的不懈努力,终于把问题解决了,实验也很成功。

基于VHDL4位加法器的设计

基于VHDL4位加法器的设计

基于VHDL4位加法器的设计实验三基于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(注意⽂件名要与实体名保持⼀致),再将半加器⽂件设置为顶层⽂件,然后进⾏编译并仿真,对程序的错误进⾏修改。

四位全加器的VHDL设计

四位全加器的VHDL设计

Architecture ax Of adder四 Is
Signal c: std_logic_vector【0 to 四】!!
Component fulladder
Port【Ci!!a!!b : IN std_logic!!
s!! Co : OUT std_logic】!!
End component!!
• sint<= aa+bb+cin!!
• s【三 downto 0】 <= sint 【三 downto 0】!!
• cout<= sint【四】!!
• end beh!!
Cout<=c【四】!!
End ax!!
• library ieee!!
• use ieee.std_logic_一一六四.all!!
• use ieee.std_logic_unsigned.all!!
• entity adder四bit is
• port【cin: in std_logic!!
Begin
c【0】<=Cin!!
U 一 :fulladder Port Map【c【0】!!x 【0】!!y【0】!!sum【0】!!c【一】】!!
--U 一 :fulladderPortMap【Ci=>c 【0】!!a=>x【0】!!b=>y【0】!! s=>sum【0】!!Co=>c【一】】!!
• signal sint: std_logic_vector【四 downto 0】!!
• signal aa!!bb: std_logic_vector【四 downto 0】!!
• begin
• aa<='0' & a 【三 downto 0】!!

vhdl编程实例

vhdl编程实例

vhdl编程实例VHDL编程实例- 设计与实现一个4位的全加器在本篇文章中,我们将一步一步地回答如何设计和实现一个4位的全加器。

VHDL编程语言将是我们用于描述和模拟这个电路的工具。

第一步:理解全加器的原理在编写代码之前,我们首先需要理解全加器的原理。

全加器是一种用于对两个二进制数字进行相加的电路。

它接收三个输入信号:两个位的输入(A 和B)以及一个进位输入(C_in)。

全加器的输出结果为一个位的和(S)和一个进位输出(C_out)。

我们可以使用如下的真值表来描述全加器的输出结果:输入信号输出结果A B C_in S C_out0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1了解了全加器的工作原理后,我们可以开始编写代码了。

第二步:编写全加器的VHDL代码我们将使用VHDL语言来描述和模拟全加器。

下面是一个简单的4位全加器的VHDL代码实现:vhdlEntity声明entity full_adder isport (A, B : in std_logic_vector(3 downto 0);C_in : in std_logic;S : out std_logic_vector(3 downto 0);C_out : out std_logic);end full_adder;Architecture声明architecture Behavioral of full_adder isbeginprocess(A, B, C_in)variable carry : std_logic;begincarry := C_in;for i in 0 to 3 loopS(i) <= A(i) xor B(i) xor carry;carry := (A(i) and B(i)) or (carry and (A(i) xor B(i)));end loop;C_out <= carry;end process;end Behavioral;在此代码中,我们首先声明了一个实体(entity)和一个架构(architecture)。

层次化4位加法器设计 VHDL

层次化4位加法器设计 VHDL

课程设计说明书学院专业题目学号姓名同组人员报告完成日期成绩指导教师实验一层次化4位加法器设计一.实验目的1、掌握用 VHDL 设计全加器的方法并实现。

2、熟悉设计平台及VHDL层次化设计。

二.实验仪器1、硬件:计算机Gxsoc/sops-Dev-LabCycloneII EP2C35F672C8 核心板2、软件:正版Quartus8.0三.实验设计要求学习用VHDL或原理图设计方法,掌握全加器的设计方式及表示方式,极其与二进制表示的转换方法,完成编译、综合、适配、仿真和实验箱上的硬件测试,通过数码管观察结果。

采用层次化方法实现4位加法器,完成编译,仿真,引脚锁定,下载。

四.实验原理通过动态扫描两组4BIT的二进制数据,同时还有一个单BIT 的进位,把三者按照二进制加法原理进行加,求出和及进位,并通过电路显示出各部分数据(输入,输出)。

加数、被加数、“和”显示在共阳数码管上,进位输出显示在LED上。

五.程序代码1、半加器Hadder代码LIBRARY Ieee;USE Ieee.Std_Logic_1164.all;ENTITY HADDER ISPort (a,b: In Bit;Co, So: Out Bit);END HADDER;ARCHITECTURE fh1 Of HADDER Is BEGINSo <= (a Xor b);Co <= (a And b);END fh1;2、或门ora代码LIBRARY Ieee;USE Ieee.Std_Logic_1164.all;ENTITY ora ISPort ( a: in Std_Logic;b: in Std_Logic;c: out Std_Logic);END ora;ARCHITECTURE org OF ora ISBEGINc <= a Or b;END org;3、1位全加器f_hadder代码LIBRARY Ieee;USE Ieee.Std_Logic_1164.all;ENTITY f_ADDER ISPort (x: In Std_Logic;y: In Std_Logic;cin: In Std_Logic;cout: Out Std_Logic;sum: Out Std_Logic);END f_ADDER;ARCHITECTURE fd1 Of f_ADDER Is Component HADDERPort( a,b: In Std_Logic;co,so: Out Std_Logic);END Component;Component oraPort(a,b: In Std_Logic;c: Out Std_Logic);END Component;Signal d,e,f: Std_Logic;BeginU1: HADDERPort Map(a=>X,b=>Y,Co=>d,so=>e);U2:HADDERPort Map(a=>e,b=>cin,Co=>f,so=>sum);U3:ora Port Map(a=>d,b=>f,c=>cout);END ARCHITECTURE fd1;4、4位全加器Qadd:Library ieee;Use ieee.std_logic_1164.all;Entity Qadd isPort (a:in std_logic_VECTOR(3 DOWNTO 0);b:in std_logic_VECTOR(3 DOWNTO 0);--cin:in std_logic;s:out std_logic_VECTOR(3 DOWNTO 0)); End Qadd;Architecture one of Qadd isSignal c0,c1,c2,c3 : std_logic;Component f_ADDERPort (x: In Std_Logic;y: In Std_Logic;cin: In Std_Logic;cout: Out Std_Logic;sum: Out Std_Logic);END Component;Beginu1 :F_ADDERPort map(sum=>s(0),cout=>c0,X=>a(0),Y=>b(0),cin=>'0');u2 :F_ADDERPort map(sum=>s(1),cout=>c1,X=>a(1),Y=>b(1),cin=>c0 );u3 : F_ADDERPort map(sum=>s(2),cout=>c2,X=>a(2),Y=>b(2),cin=>c1 );u4 : F_ADDERPort map(sum=>s(3),cout=>c3,X=>a(3),Y=>b(3),cin=>c2 ); END;六.仿真结果程序代码进行编译后,建立waveform文件,设定输入输出端口进行仿真,仿真结果如图1-1所示。

数字逻辑电路课程设计_4bit模9加法器_VHDL实现(含完整

数字逻辑电路课程设计_4bit模9加法器_VHDL实现(含完整

电子科技大学UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA数字逻辑设计实验报告实验题目: 4bit模9加法器学生XX:指导老师:一、实验内容设计一个4bit模9加法器。

输入为两个4bit的二进制数,输出为两数相加后模9的结果。

其数学表达式为:y=(x1+x2)mod 9。

二、实验要求1、功能性要求:能够实现4bit无符号数的模9加法运算,即输入两个4比特数据时能够正确输出其相加并模9运算结果。

2、算法要求:模加法器有多种算法,可采用任意算法进行设计。

3、设计性要求:采用全加器、半加器和基本门结构化描述。

能够编写Test Bench文件,并利用Modelsim进行仿真。

在Modelsim仿真正确的基础上,能够生成bit文件并上板验证其正确性。

4、基本上板要求:在上板实验时,输入的两个4bit数采用拨码开关输入,输出采用LED灯进行显示。

三、设计思路1、整体思路:为了实现4bit无符号数的模9加法运算,可以先将两个4bit的加数a和b 先分别模9,相加之后再模9得到最终结果。

2、模9器:先找出读入的5bit数与模9后的4bit数之间的关系,画出卡诺图,再根据卡诺图得出其相应的逻辑表达式即可。

设读入的5bit数为carry、a、b、c、d,模9后得到的4bit数为w、x、y、z。

则化简后得到的逻辑表达式分别为:w = carry’ab’c’d’,x= carry’bc + carry’a’b + carry’bd + carrya’b’c’d’,y = carry’a’c + carry’cd + carry’abc’d’ + carrya’b’c’d’,z= carry’a’d + carry’acd’ + carry’abd’ + carry a’b’c’d’。

3、全加器:全加器可以实现两个1bit数a、b和进位输入cin的相加,其真值表如下所示:这里全加器由半加器和或门构成,其原理图如下:4、半加器:半加器是全加器的基本组成单元,可以实现两个1bit数a和b的相加,并将进位输出,其真值表如下:半加器由一个异或门和一个与门构成,其原理图如下所示:5、数码管显示:单个数码管一共有7个端(不含小数点),用来表示组成一个数字的7个部分,故只要找到这7个段和模9后的4bit数间的对应关系,将其画出卡诺图并化简成逻辑表达式即可。

实验五 四位二进制加法计数器VHDL设计

实验五 四位二进制加法计数器VHDL设计

实验五四位二进制加法计数器VHDL设计一、实验目的:进一步掌握引脚锁定、硬件下载及芯片测试方法。

掌握开发板的使用。

二、实验仪器:PC机,FPGA开发板,万用表,接线若干。

三、实验内容:1、设计内容如下两张图所示:2、注意开关如处在常态,输出值为‘1’;按下开关的输出值为‘0’。

完成上面的设计,并下载观察实验现象。

开关有抖动吗?3、将20MHz 的输入频率,分频后作为计数器的时钟。

设计电路,并下载观察实验现象。

4、管脚锁定及下载的方法如5~9。

5、选定器件。

点击QuartusII菜单Assignments下的“Device”,出现选择器件系列及器件型号选择窗口。

按照实验中所给的器件型号选择器件系列及器件型号。

(请按照开发板上实际的芯片选择芯片系列,以及芯片型号)选好器件后,重新全程编译。

6、查找管脚号。

观察开发板和外围电路。

确认电路的连接方法。

观察CLK 的管脚号,并记录。

确定数码管所接的端口,记录管脚号。

7、锁定管脚。

选择菜单Assignments下的Pins出现下图。

在Location下选择对应管脚的管脚号。

将CLK锁定在开发板规定的管脚号上。

将输出端锁定在所选定的管脚号上。

所有的引脚锁定后,再次全程编译。

8、在菜单菜单Tools下选择programmer打开编程窗口,观察箭头所指的信息。

如果显示“No Hardware”,点击左边的“Hardware Setup”,双击USB-Blaster。

如下图所示。

点击“Close”,关闭上面的窗口。

此时QUARTUSII的窗口应该为:选中Program/Configure下方的框(出现勾)。

点击左边的“Start”,开始下载。

当显示100%时,下载成功。

9、硬件测试。

观察实验现象。

适当进行操作,实验现象又是什么?四、实验报告要求:1.写出你实验时的芯片系列及芯片型号2.实验箱连接在PC机的什么口上?3.简要说明实验过程中遇到的问题,及解决方法。

创新实验 偶校验码 四位二进制加法器 VHDL

创新实验 偶校验码 四位二进制加法器 VHDL

创新实验偶校验码一.实验原理及代码library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity jiaoyan isPort ( INPUT : in STD_LOGIC_VECTOR (7 downto 0);OUTPUT : out STD_LOGIC_VECTOR (8 downto 0));end jiaoyan;architecture Behavioral of jiaoyan isbeginprocess(INPUT)variable even :STD_LOGIC;begineven :='0';for i in INPUT range loopOUTPUT(i)<=INPUT(i);if INPUT(i)='1' theneven :=not(even);end if;end loop;OUTPUT(8)<=even;end process;end Behavioral;接收:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity jieshou isPort (INPUT : in STD_LOGIC_VECTOR (8 downto 0);OUTPUT : out STD_LOGIC);end jieshou;architecture Behavioral of jieshou isbeginprocess(INPUT)variable even :STD_LOGIC;begineven :='0';for i in INPUT' range loopif INPUT(i)='1' theneven :=not(even);end if;end loop;OUTPUT<=even;end process;end Behavioral;二.实验过程1、打开Xilinx-ISE,建立新资源,设置如下2、建立VHDL Module,设置端口数3、在出现的窗口中输入程序代码,对程序进行验证,验证通过4、建立Test Bench Waveform,在建立的.tbw文件中设置输入端数据5、端口设置6、程序下载到实验箱三.实验结果记录当input=000000000时output=0当input=110100010时output=0当input=000001000时output=1当input=111111111时output=1实验结果完全正确四位二进制加法器一.实验原理及代码library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jiafaqi ISPORT(a,b:IN STD_LOGIC_VECTOR(3 downto 0);sum:OUT STD_LOGIC_VECTOR(3 downto 0);c_out:OUT STD_LOGIC);END jiafaqi;ARCHITECTURE one of jiafaqi issignal y: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);y<=aa+bb;sum(3 downto 0)<=y(3 downto 0);c_out<=y(4);end one;二.实验过程1、打开Xilinx-ISE,建立新资源,设置如下2、建立VHDL Module,设置端口数3、在出现的窗口中输入程序代码,对程序进行验证,验证通过4、建立Test Bench Waveform,在建立的.tbw文件中设置输入端数据5、端口设置6、程序下载到实验箱三.实验结果记录a、b为加数,sum为和,c_out为进位输出当a=1100b=0011时sum=1111进位c_out=0当a=0011b=1100时sum=1111进位c_out=0当a=1010b=0101时sum=1111进位c_out=0当a=1111b=1111时sum=1110进位c_out=1当a=1000b=1000时sum=0000进位c_out=1实验结果完全正确。

Quartus-II-四位全加器

Quartus-II-四位全加器

1.系统电路架构
2.练习使用试验箱
3.VHDL语言入门
EDA软件开发平台161
——Quartus II
1.设计一个四位的全加器falladder
考虑到低位过来的进位(半加器halfadder不需要考虑低位的进位)半加器:S=A⊕B C=AB
(半加器的电路)
见下图
全加器:S=A⊕B⊕CI C=AB+BC+AC
(全加器的真值表)
见下图
注意工程文件名不能以数字开头且不能以下划线结尾
将底层文件生成为顶层文件
将半加器创造为符号图元
由此可以添加所设置的符合元作为库文件
添置原件(半加器作为独立元件在Device Design Files 里添加)
此时半加器可以作为独立的原件作为下一层的电路设计的独立元。

将一位全加器设置为单元,为下面的四位全加器做准备
调用四个一位全加器,作为四位全加器的原件来设计四位全加器
完成四位全加器的制作
也可将输入输出端口改为总线形式:
输入端口a[3..0]、b[3..0] 相对应的节点分别为a0 a1 a2 a3; 输出端口sum[3..0] sum0 sum1 sum2 sum3;
连接好电路图,现在开始进行仿真
首先将四位全加器置顶
进行仿真
总结:
Project:add4bit.qpf
半加器halfadder.bdf→全加器fallfadder.bdf→四位全加器add4bit.bdf→完成设计在编译的过程中要将其设置为顶层文件。

EDA 4位加法计数器

EDA  4位加法计数器

课程名称:EDA技术与FPGA应用设计实验项目:4位加法计数器实验地点:专业班级:学号:学生姓名:2012年 6 月22 日一、实验目的①学习时序电路的VHDL描述方法。

②掌握时序进程中同步、异步控制信号的设计③熟悉EDA的仿真分析和硬件测试技术。

二、实验任务①编写4位二进制加法计数器的VHDL程序。

②在isp Design EXPERT System上对编码器进行仿真。

③将输入引脚连接到拨码开关,时钟输入锁定到相应频率的时钟信号,输出连接到发光二极管,下载后在实验板上验证其功能,记录实验结果。

三、实验原理设计一个含计数使能、异步复位和并行预置功能的4位加法计数器,RST 是异步复位信号,高电平有效;CLK是时钟信号;当使能信号ENA为“1”'时,加法计数,COUT为计数进位输出,OUTY为计数输出。

四、主要仪器设备Isp Design EXPERT System软件,FPGA配置存储芯片,硬件电路板。

五、实验步骤①启动Isp Design EXPERT软件,并创立设计项目和选择器件ispLSI 1016E。

②在Source-New中,选择“VHDL Module”,然后选择OK。

在VHDL文本编辑器中输入源文件。

③选择Tools-Synplicity Synplify Synthesis命令,对源文件进行编译、综合。

④在项目管理器的处理过程窗口中选择Constraint Manager选项,进行引脚锁定,根据实验板来进行引脚锁定。

⑤插板,在Tools-ISDP中,搜索源文件和板,进行调试,观察板上结果。

六、调试过程功能仿真:引脚锁定图:七、实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity siwei isport(clk:in std_logic;rst:in std_logic;ena:in std_logic;outy:out std_logic_vector(3 downto 0); cout:out std_logic);end siwei;architecture arc of siwei issignal cqi:std_logic_vector(3 downto 0); beginp_reg: process(clk,rst,ena)beginif rst=‘1’then cqi=“0000”;elsif clk′enent and clk=‘1’thenif ena=‘1’then cqi<=cqi+1;end if;end if;outy<=cqi;end process p_reg;cout<=cqi(0) and cqi(1) and cqi(2) and cqi(3);end arc;八、实验结果与分析四个灯按照0000—1111规律闪烁,当计数到达1111后,自动归0000后重新计时,由此完成了四位加法计数器。

FPGA四位加法器实验报告

FPGA四位加法器实验报告

题目:含异步清0和同步使能的4位加法计数器一. 实验目的.学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL技术。

二.实验原理.如图是一含计数使能、异步复位和计数值并行预置功能4位加法计数器,4位锁存器;rst是异步清0信号,高电平有效;clk是锁存信号;D[3..0]是4位数据输入端。

ENA是使能信号,当ENA为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为'0'时将"0000"加载于锁存器。

三.实验内容.设计一个含异步清0和同步使能的4位加法计数器;实现对输入时钟(clk)的计数。

任务分析:在RST=1,ENA=1时,系统对输入时钟进行计数,所计数值输出至OUTY(3 DOWNTO 0),当计数满15时,产生一个进位,输出至COUT,同时OUTY溢出归零;如果RST=1,ENA=0时,保持原来的计数值不变。

如果RST=0,置输出信号为0;1)异步复位,则输入信号有复位信号RST2)同步使能, 则输入信号有使能信号ENA3)要求同步的时序,则输入信号有时钟CLK在QuartusII上对下列程序进行编辑、编译、综合、适配、仿真。

module CNT4B(CLK,RST,ENA,CLK_1,RST_1,ENA_1,OUTY,COUT);input CLK,RST,ENA;output CLK_1,RST_1,ENA_1;output[3:0] OUTY;output COUT;reg[3:0] OUTY;reg COUT;wire CLK_1; wire RST_1; wire ENA_1;assign CLK_1 = CLK; assign RST_1 = RST; assign ENA_1 = ENA;always@(posedge CLK or negedge RST)begin if(!RST)begin OUTY<=4'b0000;COUT<=1'b0; endelse if(ENA)Begin OUTY<=OUTY+1;COUT<=OUTY[0] & OUTY[1] & OUTY[2] & OUTY[3]; end end endmodule四.实验步骤.1.在QUARTUSII软件下创建一工程,工程名为CNT4B,芯片名为EP2C35F672C6;2.新建Verilog语言文件,输入以上Verilog语言源程序,并将程序命名为CNT4B.vhd,保存在与工程相同的文件夹中;3.进行功能仿真、全编译、时序仿真,如出现错误请按照错误提示进行修改,保证设计的正确性。

四位全加器的VHDLVerilogHDL实现

四位全加器的VHDLVerilogHDL实现

四位全加器的VHDL/VerilogHDL实现加法器的分类(一)半加器能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。

或:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。

图1为半加器的方框图。

图2为半加器原理图。

其中:A、B分别为被加数与加数,作为电路的输入端;S为两数相加产生的本位和,它和两数相加产生的向高位的进位C一起作为电路的输出。

根据二进制数相加的原则,得到半加器的真值表如表1所列。

信号输入信号输出A B S C0 0 0 00 1 1 01 0 1 01 1 0 1表1 半加器的真值表由真值表可分别写出和数S,进位数C的逻辑函数表达式为:(1)C=AB (2)由此可见,式(1)是一个异或逻辑关系,可用一个异或门来实现;式(2)可用一个与门实现。

仿真结果如图3所示:图3 半加器仿真图(二)全加器除本位两个数相加外,还要加上从低位来的进位数,称为全加器。

图4为全加器的方框图。

图5全加器原理图。

被加数Ai 、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si 与向高位的进位Ci作为电路的输出。

能实现全加运算功能的电路称为全加电路。

全加器的逻辑功能真值表如表2中所列。

表2 全加器逻辑功能真值表多位全加器连接可以是逐位进位,也可以是超前进位。

逐位进位也称串行进位,其逻辑电路简单,但速度也较低。

五、加法器的VHDL实现(一)半加器VHDL语言描述语句为:so<=a xor b;co<=a and b程序设计:library ieee;use ieee.std_logic_1164.all;entity h_adder isport (a,b:in std_logic;so,co:out std_logic); ――定义输入、输出端口end h_adder;architecture bh of h_adder isbeginso<=a xor b; ――“异或”运算co<=a and b; ――“与”运算end bh;(二)全加器1位全加器可由两个半加器组成,在半加器的基础上,采用元件调用和例化语句,将件连接起来,而实现全加器的VHDL编程和整体功能。

实验五 含异步清零和同步使能4位加法计数器的VHDL设计

实验五 含异步清零和同步使能4位加法计数器的VHDL设计

实验五含异步清零和同步使能4位加法计数器的VHDL设计一、实验目的1掌握计数器的VHDL设计方法;2掌握异步复位和同步复位和使能的概念;3掌握寄存器性能的分析方法(即分析芯片所能达到的最高时钟频率)。

二、实验内容1异步复位4位加法计数器的设计;2同步复位4位加法计数器的设计。

3异步清0和同步时钟使能的4位加法计数器三、实验原理复位:给计数器一个初值叫复位,如果所给初值为0,则称复位为清零。

异步复位:复位跟时钟无关,只要复位信号的复位电平出现,计数器立即复位,如图5-1所示;同步复位:复位跟时钟有关,当复位信号的复位电平出现时,计数器并不立即复位,而是要等到时钟沿到来时才复位,如图5-2所示。

异步复位4位加法计数器的VHDL设计代码见教材P122-P123,仿真波形如图5-3所示。

同步复位4位加法计数器的VHDL部分代码如下,仿真波形如图5-4所示。

.图5-1异步复位图5-2同步复位图5-3异步复位计数器仿真波形图5-4同步复位计数器仿真波形四、实验步骤(一)异步复位4位加法计数器的设计1建立一个设计工程,工程名为CNT4B;2打开文本编辑器,建立一个VHDL设计文件,其VHDL代码见教材P164中的例6-20,文件名存为CNT4B.VHD。

注意文件的扩展名要选为.vhd,而且要求工程名、文件名和设计实体名必须相同。

3选器件:ACEX1K,EP1K30TC144-3(旧)或Cyclone,EP3C40Q240C8目标芯片。

4编译;5建立波形文件,然后保存,其文件名必须与工程名一致;【波形设置:①设置仿真时间为10us:②设置输入信号的波形:时钟周期设置为200ns,其他输入信号的波形设置参看图6-3。

】6仿真,观察输出波形是否正确;7时序分析:分析芯片所能达到的最高时钟频率。

【打开时序分析器,然后执行菜单命令:analysis/register performance/start,可以看到最高时钟频率为100.00MHZ】(二)同步复位4位加法计数器的设计8建立一个设计工程,工程名为CNT4B_SYS;9打开文本编辑器,建立一个VHDL设计文件,其VHDL代码参看异步计数器代码和实验原理中的参考代码,文件名存为CNT4B_SYS.VHD。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档