基于FPGA的四位二进制加法器的设计
【连载】FPGAVerilogHDL系列实例--------4位二进制加减法计数器
【连载】FPGAVerilogHDL系列实例--------4位⼆进制加减法计数器Verilog HDL 之 4位⼆进制加减法计数器⼀、原理 计数器是数字系统中⽤的较多的基本逻辑器件。
它不仅能记录输⼊时钟脉冲的个数,还可以实现分频、定时等功能。
计数器的种类很多。
按脉冲⽅式可以分为同步计数器和异步计数器;按进制可以分为⼆进制计数器和⾮⼆进制计数器;按计数过程数字的增减,可分为加计数器、减计数器和可逆计数器。
本实验就是设计⼀个4位⼆进制加减法计数器,该计数器可以通过⼀个控制信号决定计数器时加计数还是减计数,另外,该寄存器还有⼀个清零输⼊,低电平有效。
还有⼀个load装载数据的信号输⼊,⽤于预置数据;还有⼀个C的输出,⽤于计数器的级联。
其功能表如表1.1所⽰; 表1.1 4位⼆进制加减法计数器功能表⼆、实现在设计⽂件中输⼊Verilog代码1/****************************** 分频模块 *************************************/23 `timescale 1 ns / 1 ps4 module qu_dou ( clk ,rst , a ,b );56 input clk ;7 wire clk ;8 input rst ;9 input a ;10 wire a ;1112 output b ;13 reg b ;1415 reg [31:0] cnt ;16 reg clkout ;17 always @ ( posedge clk or negedge rst )18 begin19if ( rst == 1'b0 )20 cnt <= 0 ;21else begin if ( a==1'b1 ) begin22if ( cnt >= 32'd3000000 )23 b <= 1 ;24else25 cnt <= cnt + 1'b1 ;2627 end28else begin b <= 1'b0 ;29 cnt <= 0 ;30 end31 end32 end333435 endmodule功能实现1 `timescale 1 ns / 1 ps23 module counter4 ( load ,clr ,c ,DOUT ,clk, up_down ,DIN ,sysclk , rst );45 input load ;6 input clk;7 wire load ;8 input clr ;9 wire clr ;10 input up_down ;11 wire up_down ;12 input [3:0] DIN ;13 wire [3:0] DIN ;14 input sysclk ;15 input rst ;1617 output c ;18 reg c ;19 output [3:0] DOUT ;20 wire [3:0] DOUT ;21 reg [3:0] data_r;2223/***************** 例化去抖模块 *************************************/24 wire clk_r ;25 qu_dou qu_dou (26 .clk (sysclk) ,27 .rst (rst) ,28 .a (clk),29 .b (clk_r));3031//********************************************************************* 323334 assign DOUT = data_r;35 always @ ( posedge clk_r or posedge clr or posedge load)36 begin37if ( clr == 1) //同步清零38 data_r <= 0;39else if ( load == 1) //同步预置40 data_r <= DIN;41else begin if ( up_down ==1)42 begin43if ( data_r == 4'b1111) begin //加计数44 data_r <= 4'b0000;45 c = 1;46 end47else begin //减计数48 data_r <= data_r +1;49 c = 0 ;50 end51 end52else53 begin54if ( data_r == 4'b0000) begin //加计数55 data_r <= 4'b1111;56 c = 1;57 end58else begin //减计数59 data_r <= data_r -1;60 c = 0 ;61 end62 end63 end64 end65 endmodule。
四位二进制加法器的设计[1]
长安大学电子技术课程设计四位二进制加法器专业班级姓名指导教师日期四位二进制加法器一、技术要求(1)四位二进制加数与被加数输入(2)二位数码管显示二、摘要理论上,由二进制数算法的运算可知,加、减、乘、除运算都可分解成加法进行运算,而实际上,为了减少硬件复杂性,这些运算基本上也是通过加法来实现的。
此次设计的是简单的四位二进制加法器。
设计中通过不断改变脉冲信号,来控制数码管的显示。
本次设计选择一个超前进位的4位全加器74LS283。
译码器选择五输入八输出的译码器,用二位数码管显示,采用七段显示译码器。
本次设计采用的是共阴极数码管,所以选择74ls48译码器三、总体设计方案论证与选择设计四位二进制加法器,可以选择串行二进制并行加法器,但为了提高加法器的运算速度,所以应尽量减少或除去由于进位信号逐级传递所花费的时间,使各位的进位直接由加数和被加数来决定,而无须依赖低位进位,因而我们选择超前进位的4位全加器74LS283。
设一个n位的加法器的第i位输入为a i、b i、c i,输出s i和c i+1,其中c i是低位来的进位,c i+1(i=n-1,n-2,…,1,0)是向高位的进位,c0是整个加法器的进位输入,而c n是整个加法器的进位输出。
则和s i=a i + b i + c i+a i b i c i (1)进位c i+1=a i b i+a i c i+b i c i (2)令g i=a i b i,(3)p i=a i+b i, (4)则c i+1= g i+p i c i (5)只要a i b i=1,就会产生向i+1位的进位,称g为进位产生函数;同样,只要a i+b i=1,就会把c i传递到i+1位,所以称p为进位传递函数。
把(5)式展开,得到c i+1= g i+ p i g i-1+p i p i-1g i-2+…+ p i p i-1…p1g0+ p i p i-1…p0c0 (6)随着位数的增加(6)式会加长,但总保持三个逻辑级的深度,因此形成进位的延迟是与位数无关的常数。
4位二进制全加器设计
任务一4位全加器设计一、实验目的1、掌握运用Quartus II原理图编辑器进行层次电路系统设计的方法。
2、进一步熟悉利用Quartus II进行电路系统设计的一般流程。
3、掌握4位全加器原理图输入设计的基本方法及过程。
二、实验原理(1)设计一位半加器真值表:(2)设计一位全加器真值表:SOn=n n n−1;COn=(A n⨁B n)C n−1+A n B n;(2)设计多位全加器由一位全加器组合成多位全加器。
依次将低位全加器的进位输出端接到高位全加器的进位输入端,由四个一位全加器构成四位全加器。
三、实验过程1、一位半加器的设计(1)电路图①执行“Files”─>“New”─>“Block Diagram/Sch matic”─>“OK”②在编辑窗口输入“与非”门电路原理图,保存电路为“01.bdf”,如图:(2)仿真波形①执行“Files”─>“New”─>“Vector Waveform File”─>“OK”②在波形编辑窗口双击左键,执行“Insert Node or Bus”─> “New Finder”─> “List”─>“》”─>“OK”。
③保存文件为“01.vwf”。
④执行菜单“Processing”─> “Start Simulation”,如图:(3)仿真波形分析:(4)封装之后的图:设“01.bdf”为顶层文件,执行“Files”─>“Create、Update”─> “Create Symbol Files forCurrent Files”,保存。
如图:2、一位全加器(1)电路图①执行“Files”─>“New”─>“Block Diagram/Sch matic”─>“OK”②在编辑窗口输入“与非”门电路原理图,保存电路为“02.bdf”,如图:(2)仿真波形①设“02.bdf”为顶层文件。
基于FPGA的4位全加器实验
试验一 4位全加器实验1.实验原理.实验原理全加器能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号。
该位的进位信号。
全加器的真值表如表1所示。
所示。
表1 全加器真值表全加器真值表输入输入输出输出AiBi Ci-1 Si Ci0 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 111114位全加器可以采用四个1位全加器级连成并行相加串行进位的加法器,位全加器级连成并行相加串行进位的加法器,实实现框图如图1所示,其中CSA 为1位全加器。
由图可以看出,每1位的进位信号送给下1位作为输入信号,因此,任1位的加法运算必须在低1位的运算完成之后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。
之后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。
图1 4位串行进位加法器实现框图位串行进位加法器实现框图在图1中,A 和B 为加法器的输入位串,对于四位全加器则位宽为4位,D 为加法器输出位串,和输入位串相同,C 为进位输入( Ci ) 或输出或输出( Co )。
实现代码为:实现代码为:module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout;input[3:0] ina,inb; input cin;assign {cout,sum}=ina+inb+cin; endmodule2.实验目的.实验目的⒈熟悉⒈熟悉 ISE9.1 开发环境,掌握工程的生成方法;开发环境,掌握工程的生成方法; ⒉了解⒉了解 V erilog HDL 语言在语言在 FPGA 中的使用;中的使用; ⒊了解4位全加器的V erilog HDL 语言实现。
语言实现。
3.实验内容.实验内容⒈用V erilog HDL 语言设计4位全加器,进行功能仿真验证。
基于FPGA的四位二进制加法器的设计
电气与电子工程系基于FPGA的四位二进制加法器设计姓名:杜隆超学号: 5151968124 班级:通信15-1 指导教师:许庆华2017年7月 12日目录前言 (1)一、实验目的 (2)二、实验要求 (2)三、功能模块 (2)四、程序与仿真 (4)五、程序下载 (4)六、程序代码 (6)七、经验总结 (7)八、自我评价 (7)前言十九世纪末、二十世纪初,电子技术开始逐渐发展起来,并成为一项新兴技术。
它在二十世纪发展最为迅猛,应用最为广泛,并且成为了近代科学技术发展的一个重要标志。
与信息相关的计算机、微电子及通讯技术已经成为推动社会进步和国家发展的关键技术,而微电子技术又是信息技术的基础,因此,集成电路产业已经成为整个电子信息产业的命脉。
加法器作为各类集成电路模块的核心部件,其重要性不可忽略。
加法运算是最基本的运算,所有的其他基本算术运算,如减法、乘法、除法运算等最终都能归结为加法运算。
在算术逻辑单元完成的操作中,逻辑操作是按位进行,各位之间彼此无关,不存在进位问题,这使得逻辑运算速度很快,且是一个常数,不需要进行过多的优化工作。
但对于算数操作来说,因为存在进位问题,使得某一位计算结果的得出和所有低于它的位相关。
因此,为了减少进位传输所耗的时间,人们设计了多种类型的加法器。
一、实验目的熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路合计的详细流程。
二、实验要求1.可以实现4位二进制的加法运算。
2.将结果在2个七段LED数码管上显示出来。
实验原理图三、功能模块该实验我们采用模式五结构图NO.5:此电路结构有较强的功能,主要用于目标器件与外界电路的接口设计实验。
主要含以9大模块:1.普通内部逻辑设计模块。
在图的左下角。
此模块与以上几个电路使用方法相同,例如同结构图NO.3的唯一区别是8个键控信号不再是琴键式电平输出,而是高低电平方式向目标芯片输入。
实验74位二进制并行加法器的设计-副本
实验74位二进制并行加法器的设计-副本实验7 4位二进制并行加法器的设计一、实验目的学习加法器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二、实验条件1、PC机一台。
2、开发软件:Max+plusⅡ。
3、实验设备:GW48-CK EDA实验开发系统。
4、选用芯片:ACEX系列EP1K30TC144-3。
三、实验原理多位加法器的构成有两种方式:并行进位和串行进位。
并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器。
并行进位加法器通常比串行级联加法器占用更多的资源。
随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。
因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。
实践证明,4位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位加法器由4位二进制并行加法器级联构成是较好的折中选择。
图1 4位二进制并行加法器原理图四、实验内容1、编写图1 所示4位二进制并行加法器的VHDL程序,并在MAX+plusII上对4位加法器进行编译、仿真。
2、实验内容2:引脚锁定以及硬件下载测试。
目标器件是ACEX1K30,建议选实验电路模式1,键1可输入4位加数(此值显示于键对应的数码管上);键3可输入4位被加数(此值显示于键对应的数码管上);加法器最低进位位由键8控制;加数和显示于数码管5;加法器溢出位由发光管D8显示。
五、实验报告:将实验原理、硬件测试实验结果写进实验报告。
六、实验思考题:如何用4位加法器实现8位加法器。
七、参考资料1、4位加法器的参考程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER4B IS --4位二进制并行加法器PORT(C4:IN STD_LOGIC; --低位来的进位A4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位加数B4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位被加数S4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --4位和CO4:OUT STD_LOGIC); --进位输出END ENTITY ADDER4B;ARCHITECTURE ART OF ADDER4B ISSIGNAL S5:STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL A5,B5:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINA5<='0'& A4; --将4位加数矢量扩为5位,为进位提供空间B5<='0'& B4; --将4位被加数矢量扩为5位,为进位提供空间S5<=A5+B5+C4;S4<=S5(3 DOWNTO 0);CO4<=S5(4);END ARCHITECTURE ART;2、参考管脚设定图2 4位加法器参考管脚设定。
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 EP3C55F484C84.实验设计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⊕bBEGINtmp<=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 adder1PORT(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);BEGINu1: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)电路波形图工程编译完成后,必须对其功能和时序性质进行仿真测试。
4位二进制加法器实验报告
4 位二进制加法器实验报告一、实验名称:4 位二进制加法器设计实验二、实验目的:1.进一步熟悉QuartusII 软件使用方法。
2.进一步掌握的VerilogHDL 语言描述和原理图描述的方法。
3.进一步掌握4 位二进制加法器的设计方法。
三、设计思想:用串行进位方式构成的 4 位二进制加法器如图:4 位串行进位二进制加法器是以一位二进制全加器为基础,如图,将四个一位二进制全加器串接构成一个4 位二进制加法器。
4 位二进制加法器可对两个4 位二进制数进行加法运算,同时产生进位。
当两个二进制数相加时,较高高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。
可以采用原理图的描述方法和VerilogHDL 语言描述方法。
四、实验内容:1.通过VerilogHDL 语言描述4 位二进制加法器的功能。
2.通过原理图方式描述4 位二进制加法器的功能。
3.通过波形仿真验证描述4 位二进制加法器的功能。
五、实验流程:1.采用VerilogHDL 语言描述实现4 位二进制加法器:(1).首先用VerilogHDL 语言编写二进制半加器:module halfadd(s,c,a,b);input a,b;output s,c;xor(s,a,b);and(c,a,b);endmodule按周期输入波形(2).再编写一位二进制全加器:module fulladd (s,co,a,b,cl); inputa,b,cl;output s,co;wire s1,d1,d2;halfadd ha1 (s1,d1,a,b); halfadd ha2 (s,d2,s1,cl);or g1(co,d2,d1);Endmodule按周期输入波形(2).之后编写4 位二进制加法器:module bitadd (s,c3,a,b,t1);input [3:0]a,b;input t1;output [3:0]s;output c3;wire c0,c1,c2;fulladd fa0(s[0],c0,a[0],b[0],t1);fulladd fa1(s[1],c1,a[1],b[1],c0);fulladd fa2(s[2],c2,a[2],b[2],c1);fulladd fa3(s[3],c3,a[3],b[3],c2);endmodule2.按照4 位二进制加法器的工作原理可以绘制成如下原理图:3.功能仿真波形及说明:(1).按周期输入波形:由此波形图可以分析:例如0001+0001=0010、0100+0100=1000、0110+0110=1100…对于所有的两个四位二进制相加,结果正确。
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软件不熟悉,而且全是英文状态,不会使用软件的功能;编写程序时,多次报错,各种各样报错;编写程序完成后,成功编译了,但不会对仿真赋值等。
最后,我通过反复观看老师发的实验操作案例,并通过百度搜索相关的操作流程,翻阅教科书查找相关的解决方案。
第一次实验难免会遇到困难,最后经过我的不懈努力,终于把问题解决了,实验也很成功。
EDA技术与FPGA应用设计实验报告--4位二进制加法计数器
本科实验报告课程名称:EDA技术与FPGA应用设计实验项目:4位二进制加法计数器实验地点:跨越机房专业班级:学号:学生姓名:指导教师:2012年6 月20 日一、实验目的:1.学习时序电路的VHDL描述方法。
2.掌握时序进程中同步、异步控制信号的设计。
3.熟悉EDA的仿真分析和硬件测试技术。
二、实验原理:设计一个含计数使能、异步复位和并行预置功能的4位加法计数器,RST是异步复位信号,高电平有效;CLK是时钟信号;当使能信号ENA为“1”'时,加法计数,COUT为计数进位输出,OUTY为计数输出。
三、实验内容:1.编写4位二进制加法计数器的VHDL程序。
2.在ispDesignEXPERT System上对编码器进行仿真。
3.将输入引脚连接到拨码开关,时钟输入锁定到相应频率的时钟信号,输出连接到发光二极管,下载后在实验板上验证其功能,记录实验结果。
四、实验程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALLENTITY CNT4B ISPORT(CLK:IN STD_LOGIC;RST:IN STG_LOGIC;ENA:IN STD_LOGIC;OUTY:OUT STD_LODGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT4B;ARCHITECTURE BEHAV OF CNT4B ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP_REG: PROCESS(CLK,RST,ENA)BEGINIF RST=’1’THEN CQI<=”0000”;ELSIF CLK’EVENT AND CLK=’1’THENIF ENA= ’1’THEN CQI<=CQI+1;ENG IF;END IF;OUTY <= CQI;END PROCESS P_REG;COUT<= CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); END BEHAV;五、仿真结果:1.时序图:2.功能图:六、心得体会:通过本实验,让我对VHDL编程有了一定的了解和认识,让我初步学习了VHDL的编写及调试过程,实验中有错误产生,但是经过细心的改正,解决了问题,希望下次实验能有更大的提高。
4位二进制全加器的设计
4位⼆进制全加器的设计4位⼆进制全加器的设计摘要加法器是产⽣数的和的装置。
加数和被加数为输⼊,和数与进位为输出的装置为半加器。
若加数、被加数与低位的进位数为输⼊,⽽和数与进位为输出则为全加器。
常⽤作计算机算术逻辑部件,执⾏逻辑操作、移位与指令调⽤。
在电⼦学中,加法器是⼀种数位电路,其可进⾏数字的加法计算。
在现代的电脑中,加法器存在于算术逻辑单元(ALU)之中。
加法器可以⽤来表⽰各种数值,如:BCD、加三码,主要的加法器是以⼆进制作运算。
多位加法器的构成有两种⽅式:并⾏进位和串⾏进位⽅式。
并⾏进位加法器设有并⾏进位产⽣逻辑,运⾏速度快;串⾏进位⽅式是将全加器级联构成多位加法器。
通常,并⾏加法器⽐串⾏加法器的资源占⽤差距也会越来越⼤。
我们采⽤4位⼆进制并⾏加法器作为折中选择,所选加法器为4位⼆进制先⾏进位的74LS283,它从C0到C4输出的传输延迟很短,只⽤了⼏级逻辑来形成和及进位输出,由其构成4位⼆进制全加器,并⽤Verilog HDL进⾏仿真。
关键字全加器,四位⼆进制,迭代电路,并⾏进位,74LS283,Verilog HDL仿真总电路设计⼀、硬件电路的设计该4位⼆进制全加器以74LS283(图1)为核⼼,采⽤先⾏进位⽅式,极⼤地提⾼了电路运⾏速度,下⾯是对4位全加器电路设计的具体分析。
图11)全加器(full-adder )全加器是⼀种由被加数、加数和来⾃低位的进位数三者相加的运算器。
基本功能是实现⼆进制加法。
全加器的功能表输⼊输出输⼊输出逻辑表达式:CI B A S ⊕⊕==AB'CI'+A'BCI'+A'B'CI+ABCI()AB CI B A CO ++=其中,如果输⼊有奇数个1,则S 为1;如果输⼊有2个或2个以上的1,则CO=1。
实现全加器等式的门级电路图如图2所⽰,逻辑符号如图3所⽰.图2 图32)四位⼆级制加法器 a) 串⾏进位加法器四位⼆进制加法器为4个全加器的级联,每个处理⼀位。
四位二进制加法器实验
一、实验目的1.学习FPGA的设计方法;2.掌握利用Verilog HDL设计逻辑电路的能力。
二、实验所用组件Basys2开发板(芯片为XC3S100E,封装为CP132)1套。
三、实验内容下面是4位二进制数加法器的数据流描述,由于被加数A和加数B 都是4位的,而低位来的进位Cin为1位,所以运算的结果可能为5位,用{Cout,Sum}拼接起来表示。
module adder(input [3:0] A,input [3:0] B,input Cin,output [3:0] SUM,output Cout);assign {Cout,SUM}=A+B+Cin;Endmodule四、实验步骤与要求1.创建一个子目录Lab2,并新建一个工程项目2.建立一个Verilog HDL文件,将该文件添加到工程项目中并编译整个项目,查看该电路所占用的逻辑单元(Logic Elements,LE)的数量3.对设计项目进行时序仿真,记录仿真波形图测试代码如下:module add4_tb;// Inputsreg [3:0] A;reg [3:0] B;reg Cin;// Outputswire [3:0] Sum;wire Cout;// Instantiate the Unit Under Test (UUT)add4 uut (.A(A),.B(B),.Cin(Cin),.Sum(Sum),.Cout(Cout));initial begin// Initialize InputsA<=4'd0;B<=4'd0;Cin=1'b0;#1 $display("A B Cin Sum Cout=%b %b %b %b %b",A,B,Cin,Sum,Cout);A<=4'd0;B<=4'd1;Cin=1'b0;#1 $display("A B Cin Sum Cout=%b %b %b %b %b",A,B,Cin,Sum,Cout);A<=4'd0;B<=4'd2;Cin=1'b0;#1 $display("A B Cin Sum Cout=%b %b %b %b %b",A,B,Cin,Sum,Cout);A<=4'd0;B<=4'd3;Cin=1'b0;#1 $display("A B Cin Sum Cout=%b %b %b %b %b",A,B,Cin,Sum,Cout);A<=4'd0;B<=4'd4;Cin=1'b0;#1 $display("A B Cin Sum Cout=%b %b %b %b %b",A,B,Cin,Sum,Cout);A<=4'd1;B<=4'd0;Cin=1'b1;#1 $display("A B Cin Sum Cout=%b %b %b %b %b",A,B,Cin,Sum,Cout);A<=4'd2;B<=4'd0;Cin=1'b0;#1 $display("A B Cin Sum Cout=%b %b %b %b %b",A,B,Cin,Sum,Cout);A<=4'd4;B<=4'd0;Cin=1'b1;#1 $display("A B Cin Sum Cout=%b %b %b %b %b",A,B,Cin,Sum,Cout);endendmodule4.根据FPGA开发板使用说明书,对设计文件中的输入、输出信号分配引脚。
四位二进制加法计数器设计报告
四位二进制加法计数器设计报告一、计数器简介计数器是最常用的时序电路之一,可用来计数、分频、定时、产生节拍脉冲以及其他时序信号。
计数器分类有很多,按触发器动作可分为同步计数器和异步计数器;按计数数值增减可分为加计数器、减计数器和可逆计数器;按编码可分为二进制计数器、BCD码计数器、循环码计数器。
本次设计的是四位异步二进制加法计数器。
二、设计构思四位异步二进制计数器逻辑图如上,它由4个T触发器组成。
计数脉冲CP加至时钟脉冲输入端,每输入一个计数脉冲,U1将翻转一次。
U2、U3和U4都以前级触发器的/Q端输出作为触发信号,当Q0端由1变成0时,即/Q0由0变成1时,U1翻转,其余类推。
/R端是用来清零端,只能全部置0,/S端是用来置1端,只能全部置1。
三、实现构思并用Workveiw仿真1、T触发器的实现本次设计是通过D触发器来构成T触发器,即将D触发器的/Q 端与D端相连即可,下面是D触发器的设计与仿真以及元件模块的制作:a 、D 触发器的逻辑图如下图,引脚/SD 可以直接置1,而引脚/RD 可以直接置0,时钟触发端为CP,有正反两个输出端Q 与/Q,这种触发器在工作中具有维持、阻塞特性,所以称之为维持阻塞触发器。
b 、下面进行D 触发器电路仿真,根据仿真波形可知该D 触发器满足特性表 n Q D1n +Q n Q D 1n +Q 0 00 1 0 0 0 11 1 11仿真截图如下:c、D触发器元件制作截图2、四位二进制异步加法计数器的实现首先是将每个D触发器的/Q端与D端相连,构成T触发器,然后按照先前的构思连接电路,加法计数器的计数脉冲输入端为CP,全部清0端为/R,全部置1端为/S,输出端由低位到高为分别为Q0、Q1、Q2、Q3。
其电路截图如下:下面进行计数器的逻辑仿真,CP输入单位时间脉冲,/R在第一个时钟脉冲置0,其余以后的时钟周期都置1,/S在所有的时钟周期内都置1,然后,进行逻辑仿真。
数字电子技术基础FPGA开发与设计习题
数字电子技术基础FPGA开发与设计习题数字电子技术在现代电子领域中扮演着重要的角色。
而在数字电子技术的学习过程中,FPGA开发与设计是一项重要的技能。
本文将介绍数字电子技术基础FPGA开发与设计的习题,帮助读者更好地理解和掌握相关知识。
习题一:逻辑电路设计1. 设计一个基于FPGA的4位二进制加法器。
输入为两个4位二进制数,输出为它们的和(包括进位位)。
2. 设计一个基于FPGA的3位二进制比较器。
输入为两个3位二进制数,输出为它们之间的大小关系(大于、小于或等于)。
3. 设计一个基于FPGA的4位BCD码转换器。
输入为一个4位二进制数,输出为其对应的BCD码。
习题二:有限状态机设计1. 设计一个基于FPGA的简单的3位计数器。
当计数值为0、1、2和3时,分别输出对应的状态(00、01、10和11)。
2. 设计一个基于FPGA的状态机来模拟红绿灯的控制。
其中,红灯、黄灯和绿灯分别持续亮3秒、1秒和4秒。
3. 设计一个基于FPGA的状态机来控制一个电梯的运行。
其中,电梯有三个楼层(0、1和2),按钮用于选择要去的楼层,状态机需实现电梯的上升、下降和停止。
习题三:存储器设计1. 设计一个基于FPGA的简单存储器,能够存储8个8位数据。
通过地址输入选择要读取或写入的数据。
2. 设计一个基于FPGA的缓冲存储器,能够接收一个8位数据,并在收到有效指令后,将数据写入存储器指定的地址。
3. 设计一个基于FPGA的计数器,并将计数值存储在存储器中。
使用FPGA内部存储器模块来实现存储功能。
习题四:时序逻辑设计1. 设计一个基于FPGA的同步计数器,使用时钟信号驱动计数器递增,并将计数值显示在数码管上。
2. 设计一个基于FPGA的分频器,将输入时钟信号的频率分成4等分,并使用LED灯显示分频后的信号状态。
3. 设计一个基于FPGA的交通信号灯控制器。
使用时钟信号和状态机实现交通信号灯的循环运行。
以上习题涵盖了数字电子技术基础FPGA开发与设计的各个方面,包括逻辑电路设计、有限状态机设计、存储器设计和时序逻辑设计。
实验五 四位二进制加法计数器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.简要说明实验过程中遇到的问题,及解决方法。
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.进行功能仿真、全编译、时序仿真,如出现错误请按照错误提示进行修改,保证设计的正确性。
4位2进制全加器仿真电路
4位2进制全加器仿真电路4位2进制全加器仿真电路是一种常见且重要的电路设计,它能够将两个4位的二进制数相加,并输出其和与进位。
本文将介绍4位2进制全加器仿真电路的原理、设计过程以及仿真结果。
1. 原理介绍4位2进制全加器由4个单独的全加器组成,每个全加器负责相应的位相加运算,并输出该位上的和与进位。
全加器的输入包括两个待相加的二进制位和上一位的进位,输出则包括该位上的和与进位。
4位2进制全加器的输入为两个4位的二进制数和上一位的进位,输出为一个5位的二进制数,其中低4位为相加结果,高1位为最高位的进位。
2. 设计过程我们需要设计一个单独的全加器电路。
全加器由两个半加器和一个或门组成。
半加器用于计算两个二进制位的和,而或门用于计算进位。
然后,将4个全加器按照位对齐的方式连接起来,形成4位2进制全加器。
具体连接方式如下:- 将待相加的两个4位二进制数的最低位与上一位的进位分别连接到第一个全加器的输入端。
- 将待相加的两个4位二进制数的其他位分别连接到相应位置的全加器的输入端。
- 将第一个全加器的进位输出与第二个全加器的进位输入相连,以此类推,直到第三个全加器的进位输出与第四个全加器的进位输入相连。
- 将四个全加器的和输出连接起来,形成4位二进制数的和。
- 将最后一个全加器的进位输出作为最高位的进位输出。
3. 仿真结果为了验证4位2进制全加器的正确性,我们可以使用电路仿真软件进行仿真。
通过输入不同的待相加的二进制数和进位,观察输出结果是否符合预期。
在进行仿真时,我们可以将待相加的二进制数和进位表示为输入向量,将输出结果表示为输出向量。
然后,将输入向量依次输入到电路中,观察输出向量是否与预期结果一致。
通过仿真结果,我们可以验证4位2进制全加器的正确性,并对其性能进行评估。
如果仿真过程中存在错误或不符合预期的情况,我们可以对电路进行调整或优化,以提高其性能和可靠性。
总结:本文介绍了4位2进制全加器的原理、设计过程以及仿真结果。
基于FPGA的加法器设计
基于FPGA的加法器设计FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,用于设计和实现数字电路。
它是通过将逻辑门、存储单元和可编程插线连接起来,以创建复杂的数字电路。
在FPGA中,加法器是最基本的基本数字电路之一、它用于将两个二进制数相加,并计算其和。
设计一个基于FPGA的加法器需要考虑以下几个方面:加法器类型、加法器位宽和加法器延迟。
首先,有几种不同类型的加法器,包括全加器、半加器和四位加法器等等。
全加器是最基本的加法器,能够对两个二进制数进行相加,并且还考虑了来自上一位的进位。
半加器只能对两个二进制数进行相加,而不考虑进位。
四位加法器是对四个二进制数进行相加的高级加法器,并且还考虑了来自上一位的进位。
其次,加法器的位宽也是设计过程中的一个关键因素。
位宽决定了加法器能够处理多少个位。
例如,一个4位加法器可以处理四个二进制数相加,并且还会考虑进位。
选择适当的位宽可以提高加法器的性能和灵活性。
最后,加法器的延迟是设计过程中另一个重要的考虑因素。
延迟是指从输入信号发生变化到输出信号变化之间的时间间隔。
较低的延迟意味着加法器可以更快地计算结果。
然而,较低的延迟可能需要更多的资源,这可能会对FPGA的资源消耗产生影响。
设计基于FPGA的加法器的过程如下:1.确定加法器类型:根据需求选择最适合的加法器类型,如全加器、半加器或者四位加法器。
2.设计加法器电路:根据选定的加法器类型,设计相应的加法器电路。
例如,在全加器中,可以使用两个异或门和一个与门来实现。
3.考虑进位:根据加法器类型,确定是否要考虑进位。
如果是全加器,需要将来自上一位的进位考虑在内。
4.确定位宽:根据需求确定所需的加法器位宽。
例如,如果需要对8位二进制数相加,需要设计一个8位加法器。
5. 实现电路:使用HDL(Hardware Description Language)编程语言如VHDL或Verilog来实现设计的电路。
原题目:设计一个4位二进制加法器。
原题目:设计一个4位二进制加法器。
设计一个4位二进制加法器介绍本文档将指导你设计一个4位二进制加法器。
在这个项目中,我们会使用电子电路来实现加法操作。
加法器是计算机中最基本的运算单元之一。
加法器接受两个4位的二进制数作为输入,并输出它们的和。
加法器的设计过程涉及到逻辑门的组合来实现二进制加法操作。
设计步骤步骤一:定义输入和输出首先,我们需要定义输入和输出。
在这个项目中,输入是两个4位的二进制数,我们可以用`A[3:0]`和`B[3:0]`来表示。
输出是一个5位的二进制数,我们可以用`S[4:0]`来表示,其中`S[4]`是进位位。
步骤二:实现逻辑门为了实现二进制加法,我们需要将`A`和`B`的各个位相加,并考虑进位的情况。
这可以通过使用多个逻辑门实现。
- 对于每一位的加法,我们可以使用一个半加器(Half Adder)。
半加器有两个输入(`A`和`B`的对应位)和两个输出(和`S`和进位`C`)。
- 进位位可以通过一个全加器(Full Adder)来计算,它还需要一个输入(上一位的进位)。
步骤三:连接逻辑门将多个半加器和一个全加器连接在一起,形成一个4位的加法器。
通过将每个半加器的进位输出连接到下一个半加器的进位输入,可以实现进位的传递。
步骤四:验证设计在设计完成后,我们应该对其进行验证以确保它正常工作。
我们可以使用一些测试用例来验证设计的正确性。
例如,我们可以输入`A = 0010`和`B = 0100`,并确保输出`S = 0110`和进位`C = 0`。
总结设计一个4位二进制加法器涉及到定义输入和输出,实现逻辑门,连接逻辑门和验证设计的步骤。
通过将半加器和全加器连接在一起,我们可以实现二进制加法的功能。
在设计过程中,我们应该遵循相应的标准和规范,并进行适当的验证,以确保设计的正确性和可靠性。
设计一个自己的4位二进制加法器是一个很有趣的项目,可以帮助你更好地理解数字电路和计算机组成原理。
希望这份文档对你有所帮助!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电气与
电子工程系基于FPGA的四位
二进制加法器设计
姓名:杜隆超
学号: 5151968124 班级:通信15-1 指导教师:许庆华
2017年7月 12日
目录
前言 (1)
一、实验目的 (2)
二、实验要求 (2)
三、功能模块 (2)
四、程序与仿真 (4)
五、程序下载 (4)
六、程序代码 (6)
七、经验总结 (7)
八、自我评价 (7)
前言
十九世纪末、二十世纪初,电子技术开始逐渐发展起来,并成为一项新兴技术。
它在二十世纪发展最为迅猛,应用最为广泛,并且成为了近代科学技术发展的一个重要标志。
与信息相关的计算机、微电子及通讯技术已经成为推动社会进步和国家发展的关键技术,而微电子技术又是信息技术的基础,因此,集成电路产业已经成为整个电子信息产业的命脉。
加法器作为各类集成电路模块的核心部件,其重要性不可忽略。
加法运算是最基本的运算,所有的其他基本算术运算,如减法、乘法、除法运算等最终都能归结为加法运算。
在算术逻辑单元完成的操作中,逻辑操作是按位进行,各位之间彼此无关,不存在进位问题,这使得逻辑运算速度很快,且是一个常数,不需要进行过多的优化工作。
但对于算数操作来说,因为存在进位问题,使得某一位计算结果的得出和所有低于它的位相关。
因此,为了减少进位传输所耗的时间,人们设计了多种类型的加法器。
一、实验目的
熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路合计的详细流程。
二、实验要求
1.可以实现4位二进制的加法运算。
2.将结果在2个七段LED数码管上显示出来。
实验原理图
三、功能模块
该实验我们采用模式五
结构图NO.5:此电路结构有较强的功能,主要用于目标器件与外界电路的接口设计实验。
主要含以9大模块:
1.普通内部逻辑设计模块。
在图的左下角。
此模块与以上几个电路使用方法相同,例如同结构图NO.3的唯一区别是8个键控信号不再是琴键式电平输出,
而是高低电平方式向目标芯片输入。
此电路结构可完成许多常规的实验项目。
实验电路结构图
程序编译仿真引脚连接图
这里用到的引脚在下图中红色标注部分
适合于QuartusII的部分器件引脚对照表
四、程序与仿真
程序
仿真编译
输出波形
五、程序下载
程序下载
六、程序代码
module add_j1(a,b,bcd_2,bcd_1);
input[3:0] a,b;
output[3:0] bcd_2;
output[3:0] bcd_1;
wire[4:0] sum;
wire[3:0] bcd_2; //分离后的高位数码(十位)wire[3:0] bcd_1; //分离后的低位数码(个位)assign sum=a+b;
assign bcd_2 = sum/4'd10;//计算十位数assign bcd_1 = sum - bcd_2*4'd10; //计算个位数endmodule
七、经验总结
本次实验让我们更了解了本程序和设计思路,也让我更加懂得了实验箱的使用,充分说明了EDA实验设计的每一个环节都要加倍仔细不然每一个疏忽都会导致结果的错误,每做完一个底层都要仿真确保正确后才能进行之后的设计。
通过本次实验不仅巩固了理论知识,同时也增强的动手能力。
八、自我评价
其实一开始选择这个课题始觉得挺简单的,后来周末两天也没做出来,心里有那么一点难过。
直到去实验室得到老师的指导后,很快的做出来了,也顺利的实现的该有的功能。
通过这次实验学到了不少的东西。
总之我对自己在本次实训中的表现还是挺满意的。