四位全加器实验Verilog

合集下载

四位全加器实验报告

四位全加器实验报告

武汉轻工大学数学与计算机学院《计算机组成原理》实验报告题目: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 的每一个触发沿都会使所有的触发器状态更新。

verilog的15个经典设计实例

verilog的15个经典设计实例
module block(c,b,a,clk); output c,b; input clk,a; reg c,b; always @(posedge clk)
begin b=a; c=b; end endmodule
【例 5.11】模为 60 的 BCD 码加法计数器
module count60(qout,cout,data,load,cin,reset,clk);
【例 5.6】用 fork-join 并行块产生信号波形
`timescale 10ns/1ns module wave2; reg wave; parameter cycle=5; initial
fork wave=0;
#(cycle) wave=1; #(2*cycle) wave=0; #(3*cycle) wave=1; #(4*cycle) wave=0; #(5*cycle) wave=1; #(6*cycle) $finish; join initial $monitor($time,,,"wave=%b",wave); endmodule
else
out<=out+1;
end
endmodule
//同步复位 //计数
【例 3.3】4 位全加器的仿真程序
`timescale 1ns/1ns `include "adder4.v" module adder_tp; reg[3:0] a,b; reg cin; wire[3:0] sum; wire cout; integer i,j;
output[7:0] qout;
output cout;
input[7:0] data;
input load,cin,clk,reset;

四位全加器实验Verilog

四位全加器实验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-11K5-K8:18-15L5-L8:7-10VIJN:83L4:64KHZ:80五、心得体会首先,实现这一段全加器代码并不难,但是由于困惑给的三个时钟输入,没有太懂意思,所以只写了全加器控制LED灯的代码;后来问清楚后,运行全加器代码,有错误,原来是建文件时用的是verilog hdl,我建的是其他类型的;后来还有错,原来是把冒号打成分号;编译成功后,LED不亮,后来发现是硬件老化,换了箱子。

这一部分做好后,我准备把控制声音的加上去,本来准备再加一个模块,可是不能有两个顶层块,就对主模块做了补充,用case命令调用不同的状态,因为时间紧迫,所以代码写得比较简单,没有用经典的分频代码。

这里附一小段,是我在研究分频控制时看懂的网上的经典分频代码,适合乐曲自动播放等高级的实现,仅供分享assign preclk=(divider==16383)?1:0;//divider==16383,preclk=1always @(posedge clk) //基频上升沿触发beginif(preclk) //preclk=1divider=origin;elsedivider=divider+1;endalways @(posedge preclk) //调整占空比beginspeaker=~speaker; //2 分频产生方波信号end这部分实现了分频功能,其中origin+divider=16384=2^14,这个数根据自己的需要而定。

verilog之四位全加器的编译及仿真(用开源免费的软件——iverilog+GTKWave)

verilog之四位全加器的编译及仿真(用开源免费的软件——iverilog+GTKWave)

verilog之四位全加器的编译及仿真(⽤开源免费的软件——iverilog+GTKWave)四位全加器的verilog的代码⽐⽐皆是,这⾥上⼀个⽐较简单的:/*4位全加器全加器需要有输⼊输出,需要有下级向上进位的输⼊,需要有向上⼀位进位的输出。

⼤家看⼀下,这个模块已经包含全部的输⼊输出信息。

⼤家都知道,N位加法器得出来的出来的和最多是N+1位因此可以清晰从下⾯代码中看到相关信息。

然后assign⽤的是阻塞赋值。

相加即满⾜相关的需求。

*/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在写testbeach⽂件之前,先普及⼀点testbeach的知识:⼀般来讲,在数据类型声明时,和被测模块的输⼊端⼝相连的信号定义为reg类型,这样便于在initial语句和always语句块中对其进⾏赋值;和被测模块输出端⼝相连的信号定义为wire类型,便于进⾏检测。

Testbench模块最重要的的任务就是利⽤各种合法的语句,产⽣适当的时序和数据,以完成测试,并达到覆盖率要求。

那么testbeach⽂件如下:/*File Name : test_adder4.vDescription : The testbench of the adder_4.vWritten By : LiMingData : 2011/04/18 20:13modefied : 在仿真的时候,把延时从10ns改为5ns: cout显⽰为2位*///test_adder4 (top-level module)`timescale 1ns/1nsmodule test_adder4;//Declare variableswire[3:0] sum;wire cout;reg[3:0] ina,inb;reg cin;//Instantiate the module adder4adder4 adder4_1(cout,sum,ina,inb,cin);//Stimulate the inputs, Finish the stimulation at 90 time unitsinitialbegin#0 ina = 4'b0001; inb = 4'b1010; cin = 1'b0;#5 ina = 4'b0010; inb = 4'b1010; cin = 1'b1;#5 ina = 4'b0010; inb = 4'b1110; cin = 1'b0;#5 ina = 4'b0011; inb = 4'b1100; cin = 1'b1;#5 ina = 4'b0111; inb = 4'b1001; cin = 1'b0;#5 ina = 4'b0001; inb = 4'b1100; cin = 1'b1;#5 ina = 4'b0011; inb = 4'b1100; cin = 1'b0;#5 ina = 4'b0111; inb = 4'b1111; cin = 1'b1;#5 $finish;endinitial$monitor("At time %t, ina(%b) + inb(%b) + cin(%b) = sum(%b)(%2d),cout(%b)",$time, ina, inb, cin, sum, sum, cout);initialbegin$dumpfile("test.vcd");$dumpvars(0,test_adder4);endendmodule由于是在windows的cmd下进⾏命令⾏的运⾏,所以有时候每次输⼊⼀个命令显得很费时间,所以我这⾥⼜写了⼀个(批处理⽂件)bat⽂件:go.batECHO OFFECHO *********************************ECHO * Batch fileECHO *********************************ECHO *ECHO ONiverilog -o test adder4.v test_adder4.vvvp -n test -lxt2cp test.vcd test.lxtgtkwave test.lxt(说明⼀下,我在windows下安装了gnuwin的软件,即能在windows下⽤gnu的⼀些⼩的实⽤的⼯具!)哈哈,这⾥就可以⼀键运⾏了,上⾯的⼀些命令的解释可以到我的“wndows下如何⽤Iverilog+GTKWave进⾏verilog的编译和查看仿真波形”的博⽂⾥去看看吧。

4位二进制全加器的设计

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个全加器的级联,每个处理⼀位。

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

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

Verilog实现的4位串行进位加法器精编版在数字电路中,加法器是最基本的电路之一、串行进位加法器是一种将两个二进制数相加的电路,通过逐位相加的方式实现。

本文将介绍如何使用Verilog语言实现一个4位串行进位加法器的精编版。

首先,我们需要定义输入和输出端口。

对于一个4位的串行进位加法器,我们需要4个输入端口A[3:0]和B[3:0],以及一个输出端口Sum[3:0]。

另外,还需要一个输入端口CarryIn和一个输出端口CarryOut,用于传递进位信号。

```module SerialCarryAdderinput [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;```然后,我们定义一个内部信号Carry0,用于存储第一位的进位结果。

然后,我们使用OR门实现或逻辑。

```wire Carry0;assign Carry0 = ANDOut , (XOROut & CarryIn);```接下来,我们可以依次实现剩余3位的加法逻辑。

verilog四位BCD加法器实验报告

verilog四位BCD加法器实验报告

verilog四位BCD加法器实验报告1.实验目的⑴进一步熟悉modelsim仿真工具的使用方法。

⑵学会设计验证的方法和流程。

⑶编写一个4位BCD加法器,并且用modelsim对其仿真。

2.实验任务进一步熟悉modelsim仿真基本流程。

并完成一个4位BCD加法器,用modelsim对其仿真。

3.实验内容及步骤3.1 实验内容进一步熟悉modelsim仿真基本流程:①建一个工作库②编译设计文件③运行仿真④调试结果实验步骤:1.启动modelsim。

2.创建一个新工程:①在主菜单窗口的主菜单中选择“File→New→Project”。

②在项目名称域中输入工程名称(如adder_bcd),如下图所示。

③单击Browse按钮选择工程文件存储的目录。

④确认默认库名称为work,单击OK按钮。

3.创建新设计的文件:①单击OK按钮接受工程设置后,在主窗口的工作区将出现一个工程标签,同时弹出向工程添加项目的对话框。

单击“Create New File”,在新弹出的窗口中,输入文件名(如adder_1bit),特别需要注意的是,“Add file as type”里边要选择“verilog”类型。

②如果还需要写新的模块,在project对话框中点右键,选择“Add to Project→New File”。

在弹出的对话框中输入新的文件名(如adder_bcd_1bit;adder_bcd_4bit;test),同样注意“Add file as type”里边要选择“verilog”类型。

4.向工程输入有效的设计单元:把设计的源文件输入到工程里边。

5.在主窗口中选择“Compile→Compile All”完成工程的编译。

对于modelsim正确编译的设计文件,都打上“√”标志;对于编译失败的情况,打上“×”标志,此时可在右侧的脚本状态窗中查看出错信息,修正后再编译。

6.完成工程正确的编译后,在主窗口中单击Library标签,进入编译库页,打开work库,双击测试单元(如test),加载测试单元。

4位全加器verilog课程设计

4位全加器verilog课程设计

4位全加器verilog课程设计一、课程目标知识目标:1. 理解4位全加器的原理和功能,掌握其Verilog硬件描述语言实现方法。

2. 学习并掌握数字电路中加法器的基本结构和工作原理。

3. 掌握Verilog模块化编程,能够实现并测试4位全加器的基本功能。

技能目标:1. 能够运用Verilog语言编写4位全加器的代码,并进行功能仿真。

2. 学会使用硬件描述语言进行数字电路的设计,提高实际问题解决能力。

3. 能够对4位全加器进行调试和优化,提升编程实践技能。

情感态度价值观目标:1. 培养学生的团队合作意识,提高学生在项目实践中的沟通与协作能力。

2. 增强学生对数字电路设计领域的兴趣,激发学生的创新精神。

3. 引导学生树立正确的价值观,认识到科技发展对社会进步的重要性。

课程性质:本课程为电子信息工程及相关专业高年级的数字电路设计课程,旨在通过4位全加器的Verilog实现,让学生掌握数字电路设计的基本方法和实践技能。

学生特点:学生已具备一定的数字电路基础和Verilog编程知识,具备分析问题和解决问题的能力。

教学要求:注重理论与实践相结合,鼓励学生积极参与课堂讨论,培养学生的动手能力和实际操作技能。

通过课程学习,使学生在知识、技能和情感态度价值观方面均取得明显进步。

二、教学内容本课程教学内容主要包括以下几部分:1. 数字加法器原理回顾:介绍加法器的基本原理,重点讲解4位全加器的工作流程和关键特性。

- 教材章节:数字电路基础,第3章第2节。

2. Verilog硬件描述语言基础:复习Verilog的基本语法,强调模块化编程方法。

- 教材章节:硬件描述语言Verilog,第4章。

3. 4位全加器的Verilog设计:- 设计原理:讲解4位全加器的设计思路和实现方法。

- 代码编写:引导学生编写4位全加器的Verilog代码,并进行模块化设计。

- 教材章节:数字电路设计,第5章第3节。

4. 功能仿真与调试:- 介绍仿真工具和仿真方法,指导学生进行4位全加器的功能仿真。

四位全加器实验报告格式

四位全加器实验报告格式

实验二 使用VHDL 语言设计语言设计四位全加器四位全加器 实验报告专业班级专业班级:: 学号学号:: 姓名姓名::一、实验目的1. 了解四位全加器的工作原理。

2. 掌握基本组合逻辑电路的设计方法。

3. 熟悉应用Quartus II 进行FPGA 开发过程和开发方法。

4. 掌握VHDL 语言程序的基本结构,初步熟悉VHDL 语言设计方法。

二、实验原理全加器是由两个加数A i 和B i 以及低位来的进位C i 作为输入,产生本位和Si 以及向高位的进位C O 的逻辑电路。

它不但要完成本位二进制码A i 和B i 相加,而且还要考虑到低一位进位C i 的逻辑。

对于输入为A i 、B i 和C i ,输出为S i 和C O 的情况,根据二进制加法法则可以得到全加器的真值表:A iB iC i S i C O 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 111由真值表得到Si 和Ci 的逻辑表达式为:S i =A i ⊕B i ⊕C iC O =(A i ⊕B i )C i +A i B i这是一位的二进制全加器,要完成一个四位的二进制全加器,只需要把四个级联起来即可。

四位全加器可以看作是4个1位全加器串行构成。

三、实验内容实验内容1.根据逻辑表达式设计一个四位二进制全加器,考虑最低位的进位输入信号。

2.写出四位全加器的VHDL 语言源代码,并下载验证。

四、预习要求1.了解VHDL 语言程序的基本结构一个VHDL 语言程序必须包含 和 两个部分,除这两个部分外,多数程序还包含 和 。

• 实体:定义电路实体的外观,电路的外部输入和输出端口,即模块的外部特征。

实体使用关键字 来定义,用 关键字来定义输入输出端口, 以 关键字结束。

• 结构体:用来描述电路的内部结构和逻辑功能。

结构体是有一个或多个并行语句构结构体是有一个或多个并行语句构成的成的,,他们的书写顺序并不代表执行顺序,这一点与其他高级语言有所不同。

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

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

Verilog实现的4位串行进位加法器以下是一个使用Verilog语言实现的4位串行进位加法器的示例代码:```verilogmodule serial_carry_adder(input wire clk, reset, input wirea0, 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 begins<={s[2:0],a0^b0^c};c<=(a0&b0),(a0&c),(b0&c);endendassign 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位运算器设计

实验一4位运算器设计

实验⼀4位运算器设计实验⼆ 4 位运算器设计⼀、实验名称:4 位运算器设计⼆、实验学时:5 学时三、实验⽬的:1. 利⽤Verilog建⽴4位运算器模型2. 对所设计的运算器进⾏功能验证四、实验内容:设计⼀个四位算术逻辑运算器电路,并测试其功能。

具体要求如下:1. 设计运算器,实验加减乘、逻辑与、或等功能和⾃⾏设计记录表格2. 输⼊端的0,1 可由拨码开关模拟3. 输出端接Led 灯显⽰输出数据4. 观察输出结果,记录输⼊、输出数据。

五、实验原理:1. ALU原理算术逻辑单元 (Arithmetic-Logic Unit, ALU)是中央处理器的执⾏单元,是所有中央处理器的核⼼组成部分,由"And Gate" 和"Or Gate"构成的算术逻辑单元,主要功能是进⾏⼆位元的算术运算,如加减乘(不包括整数除法)。

2. ⽤拨码开关来模拟 0、1 输⼊3. led指⽰灯显⽰输出4. ⽤按钮来模拟 0、1的低位进位输⼊六、实验步骤:1.根据实验要求作预习报告。

2.建⽴⼯程,设计程序:1)新建⼯程;2)新建verilog HDL⽂件(注:⽂件名和模块名称要和⼯程名保持⼀致)。

3)调试程序:3. 配置管脚:参照实验指导中的管脚图,配置管脚。

4.下载到开发板,观察实验结果,尝试创造⾃⼰的实验⽅案:七、实验报告要求:1. 说明实验⽬的、原理、步骤2. 实验程序及程序分析3. 给出试验结果(显⽰的结果,如照⽚或计算机绘制图⽚)4. 给出实验记录,并对记录进⾏分析。

5. 总结分析实验中所出现的问题,有何收获和体会。

实验二 基于HDL门级建模的4位加法器设计

实验二 基于HDL门级建模的4位加法器设计

实验二基于Verilog门级建模的四位加法器设计【实验器材】PC机,DP-FPGA实验箱【实验目的】1、掌握V erilog语言的语法规则;2、熟悉V erilog门级建模方法;3、熟悉基于V erilog门级建模的组合逻辑电路设计方法。

【实验原理】1、四位全加器分层次实现的原理分层次电路设计方法指的是在电路设计中,将两个或多个模块组合起来描述电路逻辑功能的设计方法,4位全加器可以由4个全加器构成,而每个全加器又可以由半加器和或门构成,而或门可由异或门和与门构成。

2、半加器的实现原理半加器全加器3、全加器的实现原理【实验内容与步骤】1、半加器的设计新建工程,新建Verilog Moudle,采用门级建模方法在HDL编辑器中输入半加器的HDL代码,保存并测试其功能。

2、全加器的设计在半加器设计的基础上,新建Verilog Moudle,将半加器作为底层模块,通过调用此模块以及其它逻辑门,采用门级建模方法在HDL编辑器中输入全加器的HDL代码,保存并测试其功能。

3、四位全加器的设计在全加器设计的基础上,新建Verilog Moudle,将全加器作为底层模块,通过调用此模块以及其它逻辑门,采用门级建模方法在HDL编辑器中输入四位全加器的HDL代码,保存并测试其功能。

4、四位全加器的综合、实现与下载按照Xilinx ISE设计流程,完成四位全加器的整个设计流程。

5、四位全加器的原理图设计(*)尝试采用原理图输入方式完成四位全加器的设计。

【预习要求】1、复习回顾《数字逻辑》课程中加法器部分的内容,掌握四位全加器实现的原理,并画好电路图;2、熟悉V erilog门级建模方法,编写半加器、全加器、四位全加器的V erilog HDL代码,待实验时调试。

实验8 4位全加器

实验8 4位全加器

实验一.层次化4位加法器设计一实验目的掌握用VHDL 设计全加器的方法并实现。

二实验内容与要求学习用VHDL或原理土设计方法,掌握全加器的设计方式及表示方式,极其与二进制表示的转换方法,完成编译、综合、适配、仿真和实验箱上的硬件测试,通过数码管观察结果。

三实验平台(1)硬件:计算机、GX-SOC/SOPC-DEVLABCycloneII EP2C35F672C8核心扳(2)软件:Quartus II四实验原理通过动态扫描两组4BIT的二进制数据,同时还有一个单BIT的进位,把三者按照二进制加法原理进行加,求出和及进位,并通过电路显示出各部分数据(输入,输出)。

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

五程序library IEEE;use IEEE.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder4b isport ( CIN,CLR_N: in std_logic;A,B : in std_logic_vector (3 downto 0);S: out std_logic_vector (3 downto 0);COUT: out std_logic);end entity;architecture adder4b_beba of adder4b issignal SINT: std_logic_vector (4 downto 0);signal AA,BB: std_logic_vector (4 downto 0);beginPROCESS(CLR_N)BEGINIF CLR_N='0' THEN --清零AA<="00000";BB<="00000";ELSEAA<='0'&A;BB<='0'&B;END IF;END PROCESS;SINT<=AA+BB+CIN;S<= SINT(3 downto 0);COUT<= SINT(4);end architecture;六引脚定义及代码:图1-1 引脚定义Qadd.tcl:# Copyright (C) 1991-2008 Altera Corporation# Your use of Altera Corporation's design tools, logic functions # and other software and tools, and its AMPP partner logic# functions, and any output files from any of the foregoing# (including device programming or simulation files), and any# associated documentation or information are expressly subject # to the terms and conditions of the Altera Program License# Subscription Agreement, Altera MegaCore Function License# Agreement, or other applicable license agreement, including, # without limitation, that your use is for the sole purpose of # programming logic devices manufactured by Altera and sold by # Altera or its authorized distributors. Please refer to the# applicable agreement for further details.# Quartus II: Generate Tcl File for Project# File: qadd.tcl# Generated on: Mon Oct 26 14:44:09 2009# Load Quartus II Tcl Project packagepackage require ::quartus::projectset need_to_close_project 0set make_assignments 1# Check that the right project is openif {[is_project_open]} {if {[string compare $quartus(project) "qadd"]} {puts "Project qadd is not open"set make_assignments 0}} else {# Only open if not already openif {[project_exists qadd]} {project_open -revision qadd qadd} else {project_new -revision qadd qadd}set need_to_close_project 1}# Make assignmentsif {$make_assignments} {set_global_assignment -name FAMILY "Cyclone II"set_global_assignment -name DEVICE EP2C35F672C8set_global_assignment -name ORIGINAL_QUARTUS_VERSION 8.0set_global_assignment -name PROJECT_CREATION_TIME_DATE "11:01:34 OCTOBER 26, 2009"set_global_assignment -name LAST_QUARTUS_VERSION 8.0set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_palaceset_global_assignment -name DEVICE_FILTER_PACKAGE FBGAset_global_assignment -name DEVICE_FILTER_PIN_COUNT 672set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8set_global_assignment -name VHDL_FILE ora.vhdset_global_assignment -name VHDL_FILE HADDER.vhdset_global_assignment -name VHDL_FILE f_ADDER.vhdset_global_assignment -name VHDL_FILE qadd.vhdset_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top set_global_assignment -name PARTITION_COLOR 14622752 -section_id Topset_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region"set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region"set_global_assignment -name VECTOR_WAVEFORM_FILE qadd.vwfset_global_assignment -name SIMULATION_MODE FUNCTIONALset_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"set_global_assignment -name INCREMENTAL_VECTOR_INPUT_SOURCE qadd.vwfset_global_assignment -name USE_CONFIGURATION_DEVICE ONset_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "AS INPUT TRI-STATED"set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Topset_location_assignment PIN_B21 -to b[0]set_location_assignment PIN_B22 -to b[1]set_location_assignment PIN_AC10 -to s[0]set_location_assignment PIN_W11 -to s[1]set_location_assignment PIN_W12 -to s[2]set_location_assignment PIN_AE8 -to s[3]set_location_assignment PIN_AF8 -to s[4]set_location_assignment PIN_AE7 -to s[5]set_location_assignment PIN_AF7 -to s[6]set_location_assignment PIN_AA11 -to s[7]set_location_assignment PIN_F6 -to a[0]set_location_assignment PIN_A21 -to a[1]# Commit assignmentsexport_assignments# Close projectif {$need_to_close_project} {project_close}}七仿真图1-2 创建VHDL文件图1-3 定义PIN口图1-4 创建VERILOG文件图1-5 运行图1-6 仿真结果八导入程序图1-7 下载程序图1-8 实验结果。

四位加法器实验报告

四位加法器实验报告

四位加法器实验报告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 iscomponent fadder is#基于一位全加器port(a,b,ci:in std_logic;s,co:out std_logic);end component fadder;signal c0,c1,c2:std_logic;beginU0: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;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fadder is #定义一位全加器port(a,b,ci:in std_logic;s,co:out std_logic);end entity;architecture func of fadder isbeginco<=(a and b) or (ci and ( a xor b));s<=a xor b xor ci;end architecture func;B. 超前进位加法器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity LAC is#定义超前进位加法器总体接口port(A,B:in std_logic_vector(3 downto 0);Ci:in std_logic;Co:out std_logic;S:out std_logic_vector(3 downto 0));end entity;architecture struct of LAC issignal wirep, wireg:std_logic_vector(3 downto 0);signal wirec:std_logic_vector(2 downto 0);component fadder is#基于一位全加器port(Ai,Bi:in std_logic;c:in std_logic;si:out std_logic;pi:out std_logic;gi:out std_logic);end component fadder;component Ker is#Ker总理进位传递信号P与进位产生信号G,以及进位信号C port(ci:in std_logic;P:in std_logic_vector(3 downto 0);G:in std_logic_vector(3 downto 0);C:out std_logic_vector(3 downto 0));end component Ker;beginU0:fadder port map(Ai=>A(0),Bi=>B(0),c=>Ci,si=>S(0),pi=>wirep(0),gi=>wireg(0));U1:fadder port map(Ai=>A(1),Bi=>B(1),c=>wirec(0),si=>S(1),pi=>wirep(1),gi=>wireg(1));U2:fadder port map(Ai=>A(2),Bi=>B(2),c=>wirec(1),si=>S(2),pi=>wirep(2),gi=>wireg(2));U3:fadder port map(Ai=>A(3),Bi=>B(3),c=>wirec(2),si=>S(3),pi=>wirep(3),gi=>wireg(3));L:Ker port map(ci=>Ci,P(0)=>wirep(0),P(1)=>wirep(1),P(2)=>wirep(2),P(3)=>wirep(3),G(0)=>wireg(0),G(1)=>wireg(1),G(2)=>w ireg(2),G(3)=>wireg(3),C(0)=>wirec(0),C(1)=>wirec(1),C(2)=>wirec(2),C(3)=>Co);end architecture struct;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fadder is #定义一位全加器port(Ai,Bi:in std_logic;c:in std_logic;si:out std_logic;pi:out std_logic;gi:out std_logic);end entity;architecture func of fadder isbeginpi<=Ai xor Bi;gi<=Ai and Bi;si<=Ai xor Bi xor c;end architecture func;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Ker is#定义Ker port(ci:in std_logic;P:in std_logic_vector(3 downto 0);G:in std_logic_vector(3 downto 0);C:out std_logic_vector(3 downto 0));architecture func of Ker isbeginC(0)<=G(0) or ( P(0) and ci );C(1)<=G(1) or ( P(1) and G(0) ) or ( P(1) and P(0) and ci );C(2)<=G(2) or ( P(2) and G(1) ) or ( P(2) and P(1) and G(0) ) or ( P(2) and P(1) and P(0) and ci );C(3)<=G(3) or ( P(3) and G(2) ) or ( P(3) and P(2) and G(1) ) or ( P(3) and P(2) and P(1) and G(0) ) or ( P(3) and P(2) and P(1) and P(0) and ci );end architecture func;C. VHDL自带加法运算实现4位全加器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity VHDLAD is#定义VHDL自带加法运算实现4位全加器总体接口,如果加和比原来和少,则会进位port(A,B:in std_logic_vector(3 downto 0);Ci:in std_logic;Co:out std_logic;S:out std_logic_vector(3 downto 0));end VHDLAD;architecture bhv of VHDLAD issignal D:std_logic_vector(3 downto 0);beginprocess(A,B,Ci,D)beginD <= A + B;if(Ci = '1') thenD <= D + 1;end if;if(D >= A) thenS <= D;Co <= '0';elseS <= D;Co <= '1';end if;end process;end bhv;5.软件仿真结果说明下面图片每幅有14条信号线,从上到下依次为A的低位到高位(共4条)、B的低位到高位(共4条)、输入的进位信号、和的低位到高位(共4条)、输出进位信号。

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个全加器的级联,每个处理一位。

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.进行功能仿真、全编译、时序仿真,如出现错误请按照错误提示进行修改,保证设计的正确性。

EDA实验4位加法器

EDA实验4位加法器

实验7 4位二进制并行加法器的设计一、实验目的学习加法器的设计、仿真和硬件测试,进一步熟悉Verilog设计技术。

二、实验条件1、PC机一台。

2、开发软件:Q uartusII。

3、实验设备:GW48-CK EDA实验开发系统。

4、选用芯片:ACEX系列EP1K30TC144-3。

三、实验原理多位加法器的构成有两种方式:并行进位和串行进位。

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

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

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

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

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

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

图1 4位二进制并行加法器原理图四、实验内容1、编写图1 所示4位二进制并行加法器的Verilog程序,并在Quartus II上对4位加法器进行编译、仿真。

2、实验内容2:引脚锁定以及硬件下载测试。

目标器件是ACEX1K30,建议选实验电路模式1,键1可输入4位加数(此值显示于键对应的数码管上);键3可输入4位被加数(此值显示于键对应的数码管上);加法器最低进位位由键8控制;加数和显示于数码管5;加法器溢出位由发光管D8显示。

五、实验报告:将实验原理、硬件测试实验结果写进实验报告。

六、参考资料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;endmodule2、参考管脚设定图2 4位加法器参考管脚设定实验报告:根据实验内容写出实验报告,包括实验目的,实验原理,实验内容,程序设计或原理图;给出程序分析报告、仿真波形图、硬件下载实验结果及其分析报告。

武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计

武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计

学生实验报告书实验类别EDA实验学院信息工程学院专业通信工程班级信息SY1001班姓名龙涛指导教师聂明新2012 年12 月30 日实验课程名称:EDA技术与应用图2 1位全加器电路图d:\adder中,取名为h_adder.bdf。

4)建立原理图文件为顶层设计工程。

然后将此文件h_adder.bdf设定为工程。

5)绘制半加器原理图。

将元件放入原理图编辑窗口,按图1接好电路。

6)仿真测试半加器。

全程编译后,打开波形编辑器。

选择File→new命令,在New 窗口中选择Vector Waveform File选项。

设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。

3、将设计项目(一位半加器)设置成可调用的元件为了构成全加器的顶层设计,必须将以上设计的半加器h_adder.bdf设置成课调用的底层元件。

在半加器原理图文件处于打开的情况下,选择菜单File→Create/Update→Create Symbol Files for Current File,即可将当前电路图变成一个元件符号存盘,以便在高层次设计中调用。

图3 半加器示意图4、设计全加器顶层文件为了建立全加器顶层文件,必须打开一个原理图编辑窗口,方法同前。

1)选择菜单File→new→Block Diagram/Schematic File,将其设置成新的工程,命名为f_adder.bdf。

2)在打开的原理图编辑窗口中,双击鼠标,选择Project下先前生成的元件h_adder和若干元器件,按图2连接好一位全加器电路图。

3)仿真测试全加器。

全程编译后,打开波形编辑器。

选择File→new命令,在New窗口中选择Vector Waveform File选项。

设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。

5、将设计项目(一位全加器)设置成可调用的元件为了构成4位全加器的顶层设计,必须将以上设计的全加器f_adder.bdf设置成课调用的底层元件。

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

实验四四位全加器
一、实验目的
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。

相关文档
最新文档