搜档网
当前位置:搜档网 › 四位全加器实验Verilog

四位全加器实验Verilog

实验四四位全加器

一、实验目的

l. 用组合电路设计4位全加器。

2.了解Verilog HDL语言的行为描述的优点。

2、实验原理

4位全加器工作原理

1)全加器

除本位两个数相加外,还要加上从低位来的进位数,称为全加器。被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表中所列。

2)1位全加器

一位全加器(FA)的逻辑表达式为:S=A⊕B⊕Cin;Co=AB+BCin+ACin

其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;

这两幅图略微有差别,但最后的结果是一样的。

3)4位全加器

4位全加器可看作4个1位全加器串行构成, 具体连接方法如下图所示:

采用Verilog HDL语言设计该4位全加器,通过主模块调用子模块(1位全加器)的方法来实现。

3、实验步骤

四、实验连线

K1-K4:14-11

K5-K8:18-15

L5-L8:7-10

VIJN:83

L4:6

4KHZ:80

5、心得体会

首先,实现这一段全加器代码并不难,但是由于困惑给的三个时钟输入,没有太懂意思,所以只写了全加器控制LED灯的代码;后来问清楚后,运行全加器代码,有错误,原来是建文件时用的是verilog hdl,我建的是其他类型的;后来还有错,原来是把冒号打成分号;编译成功后,LED不亮,后来发现是硬件老化,换了箱子。这一部分做好后,我准备把控制声音的加上去,本来准备再加一个模块,可是不能有两个顶层块,就对主模块做了补充,用case命令调用不同的状态,因为时间紧迫,所以代码写得比较简单,没有用经典的分频代码。这里附一小段,是我在研究分频控制时看懂的网上的经典分频代码,适合乐曲自动播放等高级的实现,仅供分享

assign preclk=(divider==16383)?1:0;//divider==16383,preclk=1

always @(posedge clk) //基频上升沿触发

begin

if(preclk) //preclk=1

divider=origin;

else

divider=divider+1;

end

always @(posedge preclk) //调整占空比

begin

speaker=~speaker; //2 分频产生方波信号

end

这部分实现了分频功能,其中origin+divider=16384=2^14,这个数根据自己的需要而定。

在这个过程中我明白了:

1)细心,每个步骤不能错;

2)出现问题要仔细排查,软硬件都要;

3)注意reg wire的设定;

4)学到了额外的扩展知识

六、代码分析:

module full_add1(SUM,C_OUT,A,B,C_IN);//一位全加器子模块

output SUM,C_OUT;

input A,B,C_IN;

wire C1,C2,C3;

and (C1,A,B); //内部门实现xor (C3,A,B);

and (C2,C3,C_IN);

xor (SUM,C_IN,C3);

xor (C_OUT,C1,C2);

endmodule

module shiyan4(speaker,s,c_out,a,b,c_in,clk_4MHz,);//主模块output [3:0]s;

output c_out;

output speaker;

input clk_4MHz;

input [3:0]a,b;

input c_in;

reg speaker;

wire c1,c2,c3;

full_add1 f0(s[0],c1,a[0],b[0],c_in);//调用子模块(4个一位全加器)

full_add1 f1(s[1],c2,a[1],b[1],c1);

full_add1 f2(s[2],c3,a[2],b[2],c2);

full_add1 f3(s[3],c_out,a[3],b[3],c3);

always @(posedge clk_4MHz) //时钟信号上升沿触发

if(c_out==1) //全加器部分进位输出为1的情况

case(s)

4'b0000: speaker=clk_4MHz; //全加器s为0扬声器输出的频率

4'b0001: speaker=clk_4MHz; //全加器s为1扬声器输出的频率

(同样目的,以下依次分成不同频率)

4'b0010: speaker=clk_4MHz;

4'b0011: speaker=clk_4MHz;

4'b0100: speaker=2*clk_4MHz;

4'b0101: speaker=2*clk_4MHz;

4'b0110: speaker=2*clk_4MHz;

4'b0111: speaker=2*clk_4MHz;

4'b1000: speaker=3*clk_4MHz;

4'b1001: speaker=3*clk_4MHz;

4'b1010: speaker=3*clk_4MHz;

4'b1011: speaker=3*clk_4MHz;

4'b1100: speaker=10*clk_4MHz;

4'b1101: speaker=10*clk_4MHz;

4'b1110: speaker=10*clk_4MHz;

4'b1111: speaker=10*clk_4MHz;

endcase

else

case(s) //全加器部分进位输出为1的情况

4'b0000: speaker=10000*clk_4MHz;

4'b0001: speaker=10000*clk_4MHz;

4'b0010: speaker=10000*clk_4MHz;

4'b0011: speaker=10000*clk_4MHz;

4'b0100: speaker=1000*clk_4MHz; 4'b0101: speaker=1000*clk_4MHz; 4'b0110: speaker=1000*clk_4MHz; 4'b0111: speaker=1000*clk_4MHz; 4'b1000: speaker=6000*clk_4MHz; 4'b1001: speaker=6000*clk_4MHz; 4'b1010: speaker=6000*clk_4MHz; 4'b1011: speaker=6000*clk_4MHz; 4'b1100: speaker=100*clk_4MHz; 4'b1101: speaker=100*clk_4MHz; 4'b1110: speaker=100*clk_4MHz;

4'b1111: speaker=100*clk_4MHz; endcase

endmodule

武汉大学_数电仿真实验报告

数电仿真实验 学院:电气工程学院 姓名: 学号:201

目录 实验一1位全加器的设计 (3) 一、实验目的: (3) 二、实验原理: (3) 三、实验程序 (3) 四、仿真结果 (4) 实验二四位全加器的设计 (5) 一、实验目的: (5) 二、实验原理: (5) 三、实验程序 (5) 四、仿真结果 (6) 实验三三输入与门、三输入或门 (7) 一、实验目的: (7) 二、实验原理 (7) 三、实验程序 (7) 四、仿真结果 (8) 实验四8-3优先编码器 (9) 一、实验目的: (9) 二、实验原理: (9) 三、实验程序 (9) 四、仿真结果 (9) 实验五3-8译码器 (11) 一、实验目的: (11) 二、实验原理: (11) 三、实验程序: (11) 四、仿真结果 (11) 实验六八位十进制频率计实验 (13) 一、实验目的: (13) 三、实验程序 (13) 四、实验波形 (16)

实验一1位全加器的设计 一、实验目的: 1.掌握quarters 软件使用流程。 2.初步掌握verilog的编程方法。 二、实验原理: Sum=a^b^c1 Ch=a&b\(a^b)&c1 三、实验程序 module fulladder(a,b,c1,ch,sum); input a,b,c1; output ch,sum; reg ch,sum; always@(a or b or c1) begin sum=a^b^c1; ch=a&b|(a^b)&c1; end endmodule

四、仿真结果

实验二四位全加器的设计 一、实验目的: 1.掌握图形层次设计方法; 2.熟悉Quartus II 8.0软件的使用及设计流程; 3.掌握全加器原理,能进行多位加法器的设计; 二、实验原理: 加法器是数字系统的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法起来构成。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 4位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4位二进制并行加法器级联构成是较好的折中选择,因此本实验中的4位加法器采用4个1位二进制并行加法器级联而成。 三、实验程序 module triplegate(a,b,c,out1,out2); input a,b,c; output out1,out2; reg out1,out2; always@(a or b or c) begin out1=a&b&c; out2=a^b^c; end endmodule

四位全加器实验报告

武汉轻工大学 数学与计算机学院 《计算机组成原理》 实验报告 题目:4位二进制计数器实验 专业:软件工程 班级:130X班 学号:XXX 姓名:XX 指导老师:郭峰林 2015年11月3日

【实验环境】 1. Win 7 2. QuartusII9.1计算机组成原理教学实验系统一台。 【实验目的】 1、熟悉VHDL 语言的编写。 2、验证计数器的计数功能。 【实验要求】 本实验要求设计一个4位二进制计数器。要求在时钟脉冲的作用下,完成计数功能,能 在输出端看到0-9,A-F 的数据显示。(其次要求下载到实验版实现显示) 【实验原理】 计数器是一种用来实现计数功能的时序部件,计数器在数字系统中主要是对脉冲的个数 进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。计数器由基本的计数单元 和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发 器有RS 触发器、T 触发器、D 触发器及JK 触发器等。计数器在数字系统中应用广泛,如在 电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。 计数器按计数进制不同,可分为二进制计数器、十进制计数器、其他进制计数器和可变 进制计数器,若按计数单元中各触发器所接收计数脉冲和翻转顺序或计数功能来划分,则有 异步计数器和同步计数器两大类,以及加法计数器、减法计数器、加/减计数器等,如按预 置和清除方式来分,则有并行预置、直接预置、异步清除和同步清除等差别,按权码来分,则有“8421”码,“5421”码、余“3”码等计数器,按集成度来分,有单、双位计数器等等, 其最基本的分类如下: 计数器的种类??????? ?????????????????????进制计数器十进制计数器二进制计数器进制可逆计数器减法计数器 加法计数器功能异步计数器同步计数器结构N 、、、321 下面对同步二进制加法计数器做一些介绍。 同步计数器中,所有触发器的CP 端是相连的,CP 的每一个触发沿都会使所有的触发器 状态更新。因此不能使用T ′触发器。应控制触发器的输入端,即将触发器接成T 触发器。只有当低位向高位进位时(即低位全1时再加1),令高位触发器的T=1,触发器翻转,计数 加1。 例如由JK 触发器组成的4位同步二进制加法计数器,令其用下降沿触发。下面分析它 的工作原理。 ①输出方程 n n n n Q Q Q Q CQ 0123= ②驱动方程

verilogHDL(王金明版源码)

王金明:《Verilog HDL 程序设计教程》- 1 - 【例3.1】4 位全加器 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; endmodule 【例3.2】4 位计数器 module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1; //计数 end endmodule 【例3.3】4 位全加器的仿真程序 `timescale 1ns/1ns `include "adder4.v" module adder_tp; //测试模块的名字 reg[3:0] a,b; //测试输入信号定义为reg 型 reg cin; wire[3:0] sum; //测试输出信号定义为wire 型 wire cout; integer i,j; adder4 adder(sum,cout,a,b,cin); //调用测试对象always #5 cin=~cin; //设定cin 的取值 initial begin a=0;b=0;cin=0; for(i=1;i<16;i=i+1) #10 a=i; //设定a 的取值 End initial begin for(j=1;j<16;j=j+1)

四位全加器的VHDL与VerilogHDL实现

四位全加器的VHDL/VerilogHDL实现 加法器的分类 (一)半加器 能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。或:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。图1为半加器的方框图。图2为半加器原理图。其中:A、B分别为被加数与加数,作为电路的输入端;S 为两数相加产生的本位和,它和两数相加产生的向高位的进位C一起作为电路的输出。 根据二进制数相加的原则,得到半加器的真值表如表1所列。 信号输入信号输出 A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 表1 半加器的真值表 由真值表可分别写出和数S,进位数C的逻辑函数表达式为: (1) C=AB (2) 由此可见,式(1)是一个异或逻辑关系,可用一个异或门来实现;式(2)可用一个与门实现。仿真结果如图3所示: 图3 半加器仿真图 (二)全加器 除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图4为全加器的方框图。图5全加器原理图。被加数A i、加数B i从低位向本位进位C i-1作为电路的输入,全加和S i与向高位的进位C i作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表2中所列。 信号输入端信号输出端 A i B i C i S i C i 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 表2 全加器逻辑功能真值表 多位全加器连接可以是逐位进位,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。 五、加法器的VHDL实现 (一)半加器 VHDL语言描述语句为:

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); input a,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);

4位二进制全加器的设计

4位二进制全加器的设计 摘要 加法器是产生数的和的装置。加数和被加数为输入,和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。在电子学中,加法器是一种数位电路,其可进行数字的加法计算。在现代的电脑中,加法器存在于算术逻辑单元(ALU)之中。加法器可以用来表示各种数值,如:BCD、加三码,主要的加法器是以二进制作运算。 多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运行速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行加法器的资源占用差距也会越来越大。 我们采用4位二进制并行加法器作为折中选择,所选加法器为4位二进制先行进位的74LS283,它从C0到C4输出的传输延迟很短,只用了几级逻辑来形成和及进位输出,由其构成4位二进制全加器,并用Verilog HDL进行仿真。 关键字 全加器,四位二进制,迭代电路,并行进位,74LS283,Verilog HDL仿真总电路设计 一、硬件电路的设计 该4位二进制全加器以74LS283(图1)为核心,采用先行进位方式,极大地提高了电路运行速度,下面是对4位全加器电路设计的具体分析。 图1 1)全加器(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 图3 2)四位二级制加法器 a) 串行进位加法器 四位二进制加法器为4个全加器的级联,每个处理一位。最低有效位的进位输入通常置为0,每个全加器的进位输出连到高一位全加器的进位输入。 CI A B S CO CI A B S CO 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1

4 位加法器原理图设计

实验二 4 位加法器原理图设计 一、实验目的 1、进一步掌握 Quartus Ⅱ原理图输入设计法。 2、通过4位加法器的设计,掌握原理图输入法中的层次化设计。 So=a xor b; co=a and b; 图 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软件,新建一个工程adder4bit。 2、建完工程之后,再新建一个Block Diagram/Schematic File。在原理图编辑 窗口绘制如图 2-1 的半加器原理图。点击 File ->Save,将已设计好的图文件取名为:h_adder,并存在此目录内。 3、将 h_adder 设置成顶层实体。在诸多文件打开的状态下,选中 h_adder.bdf 为当前文件。点击 Project → Set as Top-Level Entity。 4、编译。如果发现有错,排除错误后再次编译。直到编译通过就可以进行波形 仿真了。 5、时序仿真。建立波形文件,设置波形参量,再保存(注意: QuartusⅡ在波 形仿真时,只支持一个与工程名同名的波形文件,所以在对多个文件进行波形仿真时,对波形文件都取工程名进行保存,后缀名为.vwf;若确实想保留多个波形文件,则可以分别命名,想对哪个波形文件进行仿真时,点击Processing->simulation Tool,在Simulation input中输入待仿真的波形文件即可,如图2-4所示) ,最后运行波形仿真。图 2-5 是仿

Verilog实现的4位串行进位加法器

Verilog实现的4位串行进位加法器 以下是一个使用Verilog语言实现的4位串行进位加法器的示例代码:```verilog module serial_carry_adder(input wire clk, reset, input wire a0, b0, a1, b1, a2, b2, a3, b3, input wire cin, output wire cout, output wire [3:0] sum); reg [3:0] s; reg c; if (reset) s<=4'b0; else begin s<={s[2:0],a0^b0^c}; c<=(a0&b0),(a0&c),(b0&c); end end assign sum = s; assign cout = c; endmodule ```

这个示例代码中,定义了一个名为`serial_carry_adder`的模块,包含了输入端口`clk`(时钟信号)、`reset`(复位信号)、`a0`、`b0`、`a1`、`b1`、`a2`、`b2`、`a3`、`b3`(4位加数和被加数的各位)、 `cin`(进位输入)、以及输出端口`cout`(进位输出)和`sum`(和)。 在`always`块中,根据时钟信号和复位信号的边沿变化来更新和`s`和进位输出`c`的值。当复位信号为高电平时,和`s`被清零;否则,和`s`的值是上一次和的低3位与当前的加法和(即`a0`、`b0`和进位`c`的异或结果)拼接而成,进位输出`c`的值则根据加法和的三个输入的与运算和或运算结果来决定。 最后,使用`assign`语句将和`s`和进位输出`c`分别赋值给输出端口`sum`和`cout`。 这个模块可以通过在顶层模块中实例化并连接适当的时钟、复位、输入和输出信号来使用。

数字逻辑4位二进制加法器实验

实验2 4位二进制加法器的设计 2.1 实验目的 进一步熟悉Quartus Ⅱ的基本操作方法,并利用原理图输入设计方法设计简单组合电路,掌握层次化设计的方法,通过4位全加器的设计掌握利用EDA 工具进行电子系统设计的流程。 2.2 原理提示 一个4位二进制加法器可以由4个全加器构成,各全加器之间的进位以串行方式实现,即将低位的进位输出CO 与相邻的高一位全加器的进位位Ci 相连,最低进位位接“0”。实验原理图如下。 2.3实验内容 采用Quartus Ⅱ基于图形的设计方法,在实验1的基础上,按层次化结构实现4位全加器的设计。完成原理图输入、编译、进行波形仿真验证。(仿真时要对所有输入、输出端进行)。 2.4实验步骤 (1) 为本项设计任务建立工程。 启动Quartus Ⅱ,新建一个工程,有关操作如下图。 将实验1中已设计好的原理图文件fualladd.bdf 拷贝到D:\0501\exp2下。在实验1中fualladd.bdf 是顶层设计文件,而在本实验中,fualladd.bdf 将作为底层设计文件使用。 ∑C i C o ∑C i C o ∑C i C o a 0b 0a 1b 1a 2b 2a 3b 3s 0s 1s 2s 3c o ∑C i C o 0

建立本工程的顶层设计。点击“File/New”→“Block Diagram/Schematic File”→“OK”,将Block1.dbf 另存为add4. dbf。add4. dbf是本工程的顶层设计文件。 (2)点击“File / Open…”将fualladd.bdf 文件打开。 (3)将fualladd.bdf制作成一个符号块,以便在add4. dbf中调用。点击“File / Create/Update / Create Symble Files For Currenf Fils”,弹出对话框(文件名一栏应出现fualladd.bsf),点击“保存”。于是,生成全加器的符号块文件fualladd.bsf。 (4)在add4. dbf的绘图区放置全加器符号。右击add4. dbf的绘图区,弹出浮动菜单,选择“Insert / Symbol…”弹出如下对话框:(在实验1中是怎样放置一个符号的?在这里也能用吗?试试看) 按图操作。结果在add4. dbf的绘图区放置了一个全加器符号。 (5)完成顶层设计。 按下图操作,完成4位二进制加法器的设计。存盘。 操作说明: 符号的旋转 右击待旋转的符号,弹出浮动菜单,选择“Rotate by Degrees / 90”可反时针旋转90°。

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)异步复位,则输入信号有复位信号RST 2)同步使能, 则输入信号有使能信号ENA 3)要求同步的时序,则输入信号有时钟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)

Verilog实现的4位串行进位加法器精编版

Verilog实现的4位串行进位加法器精编版在数字电路中,加法器是最基本的电路之一、串行进位加法器是一种将两个二进制数相加的电路,通过逐位相加的方式实现。本文将介绍如何使用Verilog语言实现一个4位串行进位加法器的精编版。 首先,我们需要定义输入和输出端口。对于一个4位的串行进位加法器,我们需要4个输入端口A[3:0]和B[3:0],以及一个输出端口 Sum[3:0]。另外,还需要一个输入端口CarryIn和一个输出端口CarryOut,用于传递进位信号。 ``` module SerialCarryAdder input [3:0] A, input [3:0] B, input CarryIn, output [3:0] Sum, output CarryOut ``` 接下来,我们可以定义内部信号。对于一个4位的串行进位加法器,我们需要4个内部信号,分别代表每一位的进位信号。 ``` wire C0, C1, C2, C3;

``` 然后,我们可以开始实现每一位的加法逻辑。首先,我们定义一个内 部信号XOROut,用于存储每一位的异或结果。然后,我们使用XOR门实 现异或逻辑。 ``` wire XOROut; assign XOROut = A[0] ^ B[0]; ``` 接下来,我们定义一个内部信号ANDOut,用于存储每一位的与结果。然后,我们使用AND门实现与逻辑。 ``` wire ANDOut; assign ANDOut = A[0] & B[0]; ``` 然后,我们定义一个内部信号Sum0,用于存储第一位的和结果。然后,我们使用XOR门实现异或逻辑。 ``` wire Sum0; assign Sum0 = XOROut ^ CarryIn; ```

4位全加器

实验一用原理图输入法设计4位全加器一、实验目的 1)熟悉利用Quartus II 的原理图输入方法设计简单组合电路; 2)掌握层次化设计的方法; 3)并通过一个4位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。 二、实验内容 1)完成半加器、全加器和4位全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设计成一个硬件符号入库。键1、键2、键3(PIO0/1/2)分别接ain、bin、cin;发光管D2、D1(PIO9/8)分别接sum和cout。 2)建立一个更高的层次的原理图设计,利用以上获得的1位全加器构成的4位全加器,并完成编译、综合、适配、仿真和硬件测试。建议选择电路模式1(附图F-2):键2、键1输入4位加数:键4、键3输入4位被加数:数码6和数码5显示加和:D8显示进位cout。 三、实验仪器 1)计算机及操作系统; 2)QuartusII软件; 3)编程电缆。 四、实验原理 一个4位全加器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出 cout 与相邻的高位加法器的最低进位输入信号 cin 相接。 一个1位全加器可以参考教材介绍的方 法来完成。1位全加器示意图如图1所示。 其中,其中CI为输入进位位,CO为输出进 位位,输入A和B分别为加数和被加数。S 为输出和,其功能可用布尔代数式表示为:图1 1位全加器

i i i i o i i i ABC ABC ABC ABC C ABC C B A C B A C B A S +++=+++= 五、实验步骤 1、完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设计成一个硬件符号入库。键1、键 2、键3(PIO0/1/2)分别接ain 、bin 、cin ;发光管D2、D1(PIO9/8)分别接sum 和cout 。 2、建立一个更高层次的原理图设计,利用以上获得的1位全加器构成4位全加器,并完成编译、综合、适配、仿真、和硬件测试。建议选择电路模式1(附图F-2):键2、键1输入4位加数:键4、键3输入4位被加数:数码6和数码5显示加和:D8显示进位cout 。 1、一位全加器设计输入 1)创建文件。采用File\new 菜单,创建图形文件。 2)添加元件。采用菜单symbol\enter symbol ,在弹出的对话框中选中相应的库与元件,添加元件,构成一位全加器并保存。 2、一位全加器元件的创建 1)对上述文件编译综合仿真。 2)生成元件。 3)采用菜单FILE\CREATE SYMBOL 生成一位全加器元件。 3、4位全加器设计输入 1)创建文件。采用File\new 菜单,创建图形文件。 2)添加元件。采用菜单symbol\enter symbol ,选中生成的元件yiweiadder 。 3)级联。前级1位全加器CO 与后级CI 相连。 4、添加I/O 5、设计编译 6、器件选择及管脚分配 7、设计仿真 8、时序分析 9、编程下载

4位二进制数加法器实验

《电子线路设计、实验、测试》实验报告 实验名称:4位二进制数加法器实验 院系:电子信息与通信学院 专业班级:电信1401班 姓名:XXX 学号:xxxxxx 时间: 地点:南一楼 指导教师: 2016 年 4 月 13 日

4位二进制加法器实验 一.实验目的 1.熟悉ISE软件的使用 2.熟悉并初步掌握Verilog HDL描述电路的方法 3.掌握用仿真波形验证电路功能的方法 4.熟悉使用ISE软件创建文件并下载到basys2开发板上的过程 二.实验内容 用ISE软件对4位二进制全加器实验进行仿真,采用4位二进制数加法器的数据流描述方式,由于被加数A和加数B都是4位的,而低位的进位Cin为1位,所以运算的结果可能为5位,用{Cout,Sum}拼接起来表示。然后对其进行仿真,最后创建约束文件,生成bit文件下载到basys2开发板上,对开发板进行操作。 三.实验原理 除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图1为全加器的方框图。图2全加器原理图。被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表1中所列。 表1 全加器逻辑功能真值表

图1 全加器方框图 图2 全加器原理图四位全加器 四位全加器 如图3所示,四位全加器是由半加器和一位全加器组建而成: 图3四位全加器原理图 四、实验步骤与要求 1.创建一个子目录,并新建一个工程项目。 2.创建一个Verilog HDL文件,并将文件添加到工程项目中并编译整个项目,查看该电路所占用的逻辑单元(Logic Elements,LE)的数量。 3.对设计项目进行时序仿真,记录仿真波形图。 4.根据FPGA开发板使用说明书,对设计文件中的输入、输出信号分配引脚。即使用开发板上的拨动开关代表电路的输入,用发光二极管(LED)代表电路的输出。 5.重新编译电路,并下载到FPGA器件中。改变拨动开关的位置,并观察LED灯的亮、灭状态,测试电路的功能。 6.根据实验流程和结果,写出实验总结报告,并对实验波形图和实验现象进行说明。 7.完成实验后,关闭所有的程序,并关闭计算机。 五.仿真和测试结果

四位全加器实验Verilog

实验四四位全加器 一、实验目的 l. 用组合电路设计4位全加器。 2.了解Verilog HDL语言的行为描述的优点。 二、实验原理 4位全加器工作原理 1)全加器 除本位两个数相加外,还要加上从低位来的进位数,称为全加器。被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci 作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表中所列。 2)1位全加器 一位全加器(FA)的逻辑表达式为:S=A⊕B⊕Cin;Co=AB+BCin+ACin 其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;

这两幅图略微有差别,但最后的结果是一样的。 3)4位全加器 4位全加器可看作4个1位全加器串行构成, 具体连接方法如下图所示: 采用Verilog HDL语言设计该4位全加器,通过主模块调用子模块(1位全加器)的方法来实现。

三、实验步骤

四、实验连线 K1-K4:14-11 K5-K8:18-15 L5-L8:7-10 VIJN:83 L4:6 4KHZ:80 五、心得体会 首先,实现这一段全加器代码并不难,但是由于困惑给的三个时钟输入,没有太懂意思,所以只写了全加器控制LED灯的代码;后来问清楚后,运行全加器代码,有错误,原来是建文件时用的是verilog hdl,我建的是其他类型的;后来还有错,原来是把冒号打成分号;编译成功后,LED不亮,后来发现是硬件老化,换了箱子。这一部分做好后,我准备把控制声音的加上去,本来准备再加一个模块,可是不能有两个顶层块,就对主模块做了补充,用case命令调用不同的状态,因为时间紧迫,所以代码写得比较简单,没有用经典的分频代码。这里附一小段,是我在研究分频控制时看懂的网上的经典分频代码,适合乐曲自动播放等高级的实现,仅供分享 assign preclk=(divider==16383)?1:0;//divider==16383,preclk=1 always @(posedge clk) //基频上升沿触发 begin if(preclk) //preclk=1 divider=origin; else divider=divider+1; end always @(posedge preclk) //调整占空比 begin speaker=~speaker; //2 分频产生方波信号 end 这部分实现了分频功能,其中origin+divider=16384=2^14,这个数根据自己的需要而定。 在这个过程中我明白了: 1)细心,每个步骤不能错; 2)出现问题要仔细排查,软硬件都要; 3)注意reg wire的设定; 4)学到了额外的扩展知识

Verilog实验全加器与比较器的设计

实验报告 课程名称:Verilog数字系统设计实验 实验项目. 全加器与比较器的设计 姓名: 专业:计算机科学与技术 班级: 学号: 计算机科学与技术学院 实验教学中心 实验项目名称:______

一、实验目的 1 .学习用Verilog HDL语言描述组合逻辑电路。 2 .学会Quartus II利用仿真与下载调试的程序方法。 二、实验内容 利用Verilog HDL语言设计四位全加器和比较器。 三、实验用设备仪器及材料 硬件:计算机软件:Quartus II软件 四、实验原理及接线 1. 数值比较器 用途是比较两个二进制数的大小。 一位数值比较器:比较输入的两个1位二进制数A、B的大小。 多位数值比较器:比较输入的两个位二进制数A、B的大小,比较时需从高位到低位逐位比较。 比较器功能框图: B0

F表是一位数值比较器的真值表。 2. 全加器:全加器是实现两个一位二进制数及低位来的进位数相加(即将三个二进制数相加),求得和数及向高位进位的逻辑电路。所以全加器有三个输入端(Ai,Bi,Ci-1)和两个输出端Si, Ci+1。 真值表如下:

五、实验程序代码及仿真 1、比较器代码 module bijiaoqi(a,b,l,g,e,ledcom); in put[3:0] a,b; output l,g,e; output ledcom; reg l,g,e; always@(a,b) beg in g = a>b ? 1:0; l = a

四位二进制全加全减器

数字逻辑设计及应用课程设计报告

组合逻辑设计 题目:使用74LS83构成4位二进制全加\全减器。 具体要求:1)列出真值表; 2)画出逻辑图; 3)用Verilog HDL 进行仿真; 1.设计思路及原理分析 全加器是除本位数字相加外,还考虑进位输入和进位输出的加法器,全减器同理,考虑借位输入和借位输出。本次主要应用74LS83来实现设计要求,74LS83是四位二进制先行进位加法器,可以直接接入输入获得全加器,所以设计重点在于四位全减器的设计。 对于串行进位加法器,可略加改进获得相应的减法器,基本原理如下式: 2'2'2'2'[]s s s s X Y X Y -=+- '2'2[]2n s s Y Y -=- 这里利用了补码的基本性质,具体实现时可以将减数逐位取反,然后最低位加1。又因为全加器时in C 为为进位输入,全减器时应变为借位输入,所以要减去in C ,且全加器的输出端out C 为进位输出,而全减法器应该输出借位输出,而进位输出与借位输出恰好是反向的关系,所以将0S 取反后即得到全减器的借位输出out B ,据此,可以在全加器的基础上设计全减器。

其中表中输出部分上行为全加输出,下行为全减输出。 2 逻辑电路图 3 电路实现和仿真 3.1 verilog HDL设计代码如下: module add(s,out,a,b,in,EN); output[0:3] s; output out; input[0:3] a,b; input in; input EN; reg out; reg[0:3] s,c; always@(*) if (EN==0) begin {out,s}=a+b+in; end else begin c=10000-b; {out,s}=a+c-in; out=~out; end endmodule 3.2 仿真波形图

四位加法器实验报告

四位加法器实验报告 1.实验目的: 掌握组合逻辑电路的基本分析与设计方法; 理解半加器和全加器的工作原理并掌握利用全加器构成不同字长加法器的各种方法; 学习元件例化的方式进行硬件电路设计; 学会利用软件仿真实现对数字电路的逻辑功能进行验证和分析。 2.实验仪器: 数字逻辑实验箱 3.实验内容: A. 设计实现逐次进位加法器,进行软件仿真并在实验平台上测试。 B. 设计实现超前进位加法器,进行软件仿真并在实验平台上测试。

C.使用VHDL自带加法运算实现一个4位全加器。 4.实验代码: A. 逐次进位加法器: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity FDFA is#定义串行加法器总体接口port( A,B:in std_logic_vector(3 downto 0); Ci:in std_logic; S:out std_logic_vector(3 downto 0); Co:out std_logic); end entity; architecture struct of FDFA is component fadder is#基于一位全加器port( a,b,ci:in std_logic; s,co:out std_logic); end component fadder; signal c0,c1,c2:std_logic; begin U0:fadder port map(A(0),B(0),Ci,S(0),c0); U1:fadder port map(A(1),B(1),c0,S(1),c1); U2:fadder port map(A(2),B(2),c1,S(2),c2); U3:fadder port map(A(3),B(3),c2,S(3),Co); end architecture struct;

Verilog HDL《数字加法器》报告

实验三数字加法器的设计 一、实验目的 1. 掌握数字加法器的工作原理和逻辑功能。 2. 熟悉ISE集成开发环境。 3. 熟悉ISE中进行开发设计的流程。 二、实验环境 1. 装有ModelSim和ISE的计算机。 2. Sword实验系统。 三、实验任务 1. 用VerilogHDL语言设计实现4位串行数字加法器和4位并行加法器,在ModelSim上仿真实现。 2. 生成FPGA设计文件,下载到Sword实验系统上验证电路功能。 四、实验原理与实验步骤 1. 实验原理 数字加法器是一种较为常用的逻辑运算器件,被广泛用于计算机、通信和多媒体数字集成电路中。广义的加法器包括加法器和减法器,在实际系统中加法器输入通常采用补码形式。此次实验仅考虑加法运算,分别完成4位的串行进位加法器设计和4位的并行进位加法器设计。 (1) 1 bit全加器 最简单的一位全加器的结构,设定两个二进制数字A i ,B i 和一个进位输入 C i 相加,产生一个和输出S i ,以及一个进位输出C i+1 。 S i = A i ⊕B i ⊕C i C i+1 = A i B i +B i C i +C i A i = A i B i +﹙A i ⊕B i ﹚C i

(2) 4位串行进位加法器 n位串行进位全加器原理示意图 (3) 4位并行进位加法器 超前进位加法器是一种高速加法器,每级进位由附加的组合电路产生,高位的运算不需等待低位运算完成,因此可以提高运算速度。 各级进位信号表达式的推导过程 C i+1 = A i B i +(A i ⊕B i )C i 设: G i = A i B i P i = A i ⊕B i 则有: S i = P i ⊕C i C i+1= G i +P i C i 4位并行进位的逻辑表达式为: C C 1= G +P C C 2= G 1 +P 1 C 1 = G 1 + P 1 (G +P C ) = G 1 + G P 1 +P P 1 C C 3= G 2 +P 2 C 2 = G 2 + P 2 (G 1 +G P 1 +P P 1 C ) = G 2 + G 1 P 2 +G P 1 P 2 +P P 1 P 2 C C 4= G 3 +P 3 C 3 =G 3 + P 3 (G 2 +…+P P 1 P 2 C ) = G 3 +G 2 P 3 +G 1 P 2 P 3 +G P 1 P 2 P 3 +P P 1 P 2 P 3 C

EDA实验报告 4位全加器,16位频率计数器

实验课程名称:EDA技术与应用 实验项目名称4位全加器实验实验成绩 实验者专业班级组别 同组者实验日期 一、实验目的 1.进一步加深理解全加器的工作原理及电路组成,加深对EDA技术的掌握。 2.熟悉利用Quartus Ⅱ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握原理图输入方式设计的详细流程。 二、实验内容 实验内容1:按照书本4.5.1节完成半加器和1位全加器的设计,包括用原理图输入,编译,综合,适配,仿真,实验板上的硬件测试,并将此全加器电路设置成一个元件符号入库。 实验内容2:建立一个更高层次的原理图,利用以上获得的1位全加器构成4位全加器,并完成编译,综合,适配,仿真和硬件测试。 三、实验仪器 1.计算器及操作系统 2.Quartus II软件 四、实验原理 一个4位全加器可以由4个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。 1、半加器描述 根据半加器真值表可以画出半加器的电路图。 a b so Co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 表1半加器h_adder真值表 图1 半加器h_adder电路图

2、1位全加器描述 一位全加器可以由两个半加器和一个或门连接而成,因而可以根据半加器的电路原理图或真值表写出1位全加器的VHDL 描述。 图2 1位全加器电路图 3、4位全加器设计描述 4位全加器可以看做四个1位全加器级联而成,首先采用基本逻辑门设计一位全加器,而后通过多个1位全加器级联实现4位全加器。 其中,其中cin 表示输入进位位,cout 表示输出进位位,输入A 和B 分别表示加数和被加数。S 为输出和,其功能可用布尔代数式表示为: S=A+B+Ci i i i i o ABC ABC ABC ABC C +++= 首先根据一位全加器的布尔代数式应用基本逻辑门设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。将4个1位全加器级联构成四位全加器。 五、实验步骤 1、为本项工程设计建立文件夹 :文件夹取名为adder ,路径为d:\adder 。 2、建立原理图文件工程和仿真 原理图编辑输入流程如下: 1) 打开原理图编辑窗。打开Quartus Ⅱ,选菜单File →new ,选择原理图文件编 辑输入项Block Diagram/Schematic File ,按OK 键。 2) 建立一个初始化原理图。在编辑窗口点击右键,在弹出菜单中选择输入元件项 Insert →Symbol,将元件调入原理图编辑窗口中 3) 原理图文件存盘。选择菜单File →Save As,将此原理图存于刚才建立的目录 d:\adder 中,取名为h_adder.bdf 。 4) 建立原理图文件为顶层设计工程。然后将此文件h_adder.bdf 设定为工程。

相关主题