加减可控的二进制计数器Verilog HDL

合集下载

用verilog HDL语言设计可逆计数器。

用verilog HDL语言设计可逆计数器。

西安邮电学院
实验报告书
系部名称:电子工程学院学生姓名:xxx
专业名称:xxxx
班级:xxxx
实验时间:2011 年11月17日
1、掌握可逆计数器的工作原理。

2、学习用verilog HDL语言设计可逆计数器。

二、实验设备:
计算机一台,TD-EDA实验箱一台
三、实验内容:
用verilog HDL语言设计可逆计数器并进行仿真、引脚分配及下载到电路开发板进行功能验证。

四、实验程序:
module keni8(clk,enable,sum,col);
input clk,enable;
output[7:0] sum;
reg[7:0] sum;
output col;
reg col;
always @(posedge clk )
if(enable==1)
sum=sum+1;
else if(enable==0)
sum=sum-1;
else if(sum >= 8)
begin
sum=0;
col=1;
end
endmodule
五、运行结果:
1、在编程过程中,需小心谨慎,特别是注意标点符号的标注。

2、实验结果有一定的延时。

3、实验前需对TD-EDA实验箱进行了解,这样可以使实验更有效率。

实验二8位二进制加减可控计数器设计

实验二8位二进制加减可控计数器设计

实验二8进制加减可控计数器设计一、实验目的1.学习时序电路的设计,仿真和硬件测试,进一步熟悉VHDL设计技术。

2.学习使用SignalTap的使用方法。

3.学习用AS模式下对配置器件的编程。

二、实验内容1.参考书中4-22,设计一个异步清零和同步时钟使能的十进制加法计数器,在QuartusⅡ上进行编辑、编译、综合、适配、仿真。

给出其所有信号的时序仿真波形。

引脚锁定后进行编译、下载和硬件测试实验。

2.使用SignalTap II对此计数器进行实时测试,保存波形。

3.从设计中去除SignalTap II,要求全程编译后生成用于配置器件EPCS1编程的压缩POF文件,并使用ByteBlasterII,通过AS模式对实验板上的EPCS1进行编程,最后进行验证。

4.设计含有异步清零和同步时钟使能的8进制加减可控计数器。

并完成硬件测试。

一般加法计数器的设计参照书本例4-22。

异步清零表示只要清零信号有效,计数器输出为某个特定的值(比如00H),计数器使能表示只有该信号有效时,才开始计数,其他时候停止计数。

另外加减控制线来控制计数器是加还是减。

三、实验报告将实验原理、设计过程、编译仿真波形和分析结果写进实验报告。

四、实验步骤1.创建工程在D盘中新建一个文件夹D:\ cnt10,此文件夹用于存放整个工程。

打开Quartus II 7.2,在菜单中选择File—〉New Project Wizard 将会出现一个信息框,这个对话框介绍创建工程步骤,可以直接选Next,这时会出现如图1所示的对话框。

这里需输入的是欲创建工程的基本信息,三个输入栏中分别输入的是工程将被保存的路径及工程文件夹、工程的名称和顶层实体的名称。

建议工程名与顶层实体名称保持一致。

输入完毕我们就可以点击Next。

图1 新建工程基本信息对话框然后出现图2所示的添加工程文件对话框。

在这里需要做的是将已经写好的VHDL文件加入到工程中。

本次实验,可以直接点击Next,以后再添加VHDL 文件的工作。

verilog 加法

verilog 加法

Verilog加法引言Verilog是一种硬件描述语言,它被广泛应用于数字电路设计和硬件描述。

在数字电路中,加法是最基本的运算之一。

本文将介绍Verilog中的加法实现方法,包括全加器、加法器和多位加法器。

全加器定义全加器是一种用于实现二进制加法的电路。

它接受两个输入位和一个进位位,并产生一个输出位和一个进位位。

全加器的真值表如下:输入A 输入B 进位位输出位进位位0 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 1Verilog实现下面是一个使用Verilog描述的全加器的例子:module full_adder(input A, input B, input Cin, output S, output Cout);assign S = A ^ B ^ Cin;assign Cout = (A & B) | (Cin & (A ^ B));endmodule其中,A和B是输入位,Cin是进位位,S是输出位,Cout是进位位。

加法器定义加法器是一种用于实现多位二进制加法的电路。

它由多个全加器组成,每个全加器负责一位的加法运算。

加法器的输入包括两个多位二进制数和一个进位位,输出是一个多位二进制数和一个进位位。

Verilog实现下面是一个使用Verilog描述的4位加法器的例子:module adder_4bit(input [3:0] A, input [3:0] B, input Cin, output [3:0] S, out put Cout);wire [3:0] c;wire s0, s1, s2;full_adder FA0(A[0], B[0], Cin, S[0], c[0]);full_adder FA1(A[1], B[1], c[0], S[1], c[1]);full_adder FA2(A[2], B[2], c[1], S[2], c[2]);full_adder FA3(A[3], B[3], c[2], S[3], Cout);endmodule其中,A和B是输入的4位二进制数,Cin是进位位,S是输出的4位二进制数,Cout是进位位。

Verilog实现加减乘除计算器

Verilog实现加减乘除计算器

Verilog实现加减乘除计算器主要内容: 1. 按键按下后,进⾏加减乘除操作 2. Verilog往TXT⽂本⽂件中写⼊数据 3. 完成计算模块 4. 最终实现加减乘除计算器1. 实现按键按下后,选择option,进⾏加减乘除操作,除法计算结果为商&余数module jsq(clk,rst_n,key,option,x,y,result,quotient,remainder);parameter N = 16; // 输⼊数的位数input clk; // 输⼊时钟input rst_n; // 低电平有效的复位(清零)input key;input [1:0]option;input [N-1:0] x;input [N-1:0] y;output [2*N-1:0] result;output [N-1:0] quotient; //输出计算的商output [N-1:0] remainder; //输出计算的余数reg [2*N-1:0] result_r;reg [N-1:0] quotient_r,remainder_r;always @ (posedge clk or negedge rst_n)beginif (!rst_n)beginresult_r <= 1'b0;quotient_r <= 1'b0;remainder_r <= 1'b0;endelsebeginif (key == 1'b0)begin//按键按下case(option)2'b00: result_r = x + y;2'b01: result_r <= x + (~y + 1'b1);2'b10: result_r = x * y;2'b11: //result_r = x / y;beginquotient_r = x / y;remainder_r = x % y;endendcaseendelsebegin// 按键释放result_r <= 1'b0;quotient_r <= 1'b0;remainder_r <= 1'b0;endendendassign result = result_r ;assign quotient= quotient_r;assign remainder = remainder_r;endmoduleView Code`timescale 1ns/1ps`define clock_period 20module jsq_tb;reg clk;reg rst_n;reg key;reg [1:0]option;reg [15:0] x,y;wire [31:0] result;wire [15:0] quotient;wire [15:0] remainder;initial beginclk = 1'b1;rst_n = 1'b0;key = 1'b1; // 复位时,按键释放# 20//复位20nsrst_n = 1'b1;# 20key = 1'b0;option = 2'b10;# 100key = 1'b1;# 20key = 1'b0;option = 2'b11;# 100// key = 1'b1;// # 20$stop;endalways #(`clock_period/2) clk = ~clk; //50Mjsq #(.N(16)) jsq_0(.clk(clk),.rst_n(rst_n),.key(key),.option(option),.x(x),.y(y),.result(result),.quotient(quotient),.remainder(remainder));initial beginx = 0;repeat(20)#(`clock_period) x = {$random}%100; //通过位拼接操作{}产⽣0—59范围的随机数endinitial beginy = 0;repeat(20)#(`clock_period) y = {$random}%50;end/*integer i;initial beginx = 0;y = 0;for(i = 0; i < 20; i = i + 1)begin//利⽤$random系统函数产⽣随机数。

VerilogHDL简单计算器设计

VerilogHDL简单计算器设计

实用文档目录第一章设计目的及任务要求 (1)1.1 设计目的 (1)1.2 设计任务 (1)1.3 课设要求 (1)第二章设计思路 (2)2.1 设计总体框图 (2)2.2 设计原理 (2)2.2.1 计算其原理 (2)2.2.2 数码显示原理 (2)2.2.3 八位数码管扫描的原理 (3)第三章设计源程序及分析 (4)3.1 计算器模块 (4)3.1.1 计算器源程序 (4)3.1.2 计算器程序分析 (4)3.2 数码管显示部分 (5)3.2.1 数码管显示源程序 (5)3.2.2 数码管显示程序分析 (5)3.3 循环扫描模块 (6)3.3.1 循环扫描程序 (6)3.3.2 循环程序分析 (6)3.4 总程序及其分析 (7)第四章时序仿真和结果验证 (10)4.1 计算器时序仿真及其分析 (10)4.2 数码管时序仿真及分析 (10)4.3 总体时序仿真图 (10)4.4 结果验证 (11)第五章心得体会 (12)第一章设计目的及任务要求1.1 设计目的(1)进一步加强熟练EDA基础知识。

(2)熟练掌握Quartus 6.0软件的使用以及用该软件编程和仿真的全过程。

(3)培养独立思考问题,解决问题的能力以及查阅相关资料和资料的正确使用能力,为明年的毕业设计打下良好的设计基础。

1.2 设计任务设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。

1.3 课设要求(1)说明题目的设计原理和思路、采用方法及设计流程。

(2)系统框图、Verilog语言设计程序或原理图。

(3)对各子模块的功能以及各子模块之间的关系做较详细的描述。

(4)详细说明调试方法和调试过程。

(5)说明测试结果:仿真时序图和结果显示图,并对其进行说明和分析。

第二章设计思路2.1 设计总体框图有分析可知,本次课程设计可以分成五个木块来实现相应的功能,分别是输入模块,计算模块,扫描模块,输出模块以及显示模块。

EDA技术与Verilog_HDL(潘松)第四章课后习题答案

EDA技术与Verilog_HDL(潘松)第四章课后习题答案
x 0 0 y 0 1 diff 0 1 s_out 0 1
0
1 1
1
0 0
1
0 1
0
1 0
1
0 0
1
1
1
1
0
1
0
1
0
1
1
1
0110 Nhomakorabea0
0
module f_suber(x,y,sub_in,diffr,sub_out); //一个二进制全减器顶层设计进行了阐述 output diffr,sub_out; input x,y,sub_in; wire e,d,f; h_suber u1(x,y,e,d); // h_suber u2(.x(e),.diff(diffr),.y(sub_in),.s_out(f));// or2a u3(.a(d),.b(f),.c(sub_out)); endmodule
reg [2:0]A ;
wire[7:0]Y ; reg G1 ,G2 ,G3;
decoder3_8 DUT ( G1 ,Y ,G2 ,A ,G3 );
initial begin $monitor($time,"A=%d,G1=%b,G2=%b, G3=%b,Y= %d\n",A, G1, G2, G3, Y); end

module MUXK (a1, a2, a3, s0, s1, outy); input a1, a2, a3, s0, s1; output outy; wire outy; wire tmp;

4-6 图4-26所示的是双2选1多路选择器构成的电路MUXK。对于其中MUX21A,当s=0 和s=1时,分别有y=a和y=b。试在一个模块结构中用两个过程来表达此电路。 答:参考实验1

verilog中realtime的加减

verilog中realtime的加减

在Verilog中,可以使用实时(realtime)运算符来执行实时加法和减法操作。

实时运算符用于表示两个或多个连续的信号之间的加法或减法。

下面是实时加法和减法的示例代码:
```verilog
module RealtimeAddSub (
input wire [7:0] a,
input wire [7:0] b,
output reg [7:0] sum,
output reg [7:0] diff
);
always @* begin
sum = a + b;
diff = a - b;
end
endmodule
```
在上述代码中,我们定义了一个名为`RealtimeAddSub`的模块,它有两个8位输入信号`a` 和 `b`,以及两个8位输出信号 `sum` 和 `diff`。

在`always`块中,我们使用实时运算符执行加法和减法操作,并将结果赋值给对应的输出信号。

请注意,实时运算符只能用于连续赋值,不能用于非连续赋值(例如在时序块中使用)。

因此,在使用实时运算符时要确保其在连续赋值环境中使用。

verilog hdl开关计数回路编程

verilog hdl开关计数回路编程

Verilog HDL开关计数回路编程在数字电路设计中,开关计数回路是一种非常重要的电路结构。

它可以用来实现计数功能,是数字系统中常见的一种功能模块。

在本文中,我将就Verilog HDL开关计数回路编程这一主题展开深入探讨,并带你逐步理解这个概念。

1. Verilog HDL简介Verilog Hardware Description Language(HDL)是一种硬件描述语言,用于描述、建模和仿真数字电路。

它是一种行为级的描述语言,在FPGA和ASIC设计中被广泛应用。

Verilog HDL的使用使数字电路设计工程师能够更轻松地实现所需的功能,并对其进行仿真和验证。

2. 开关计数回路的原理开关计数回路是一种使用触发器和计数器构成的计数电路。

在Verilog HDL中,我们可以通过描述触发器的行为和计数器的逻辑来实现开关计数回路。

触发器用于存储当前的计数值,而计数器用于控制计数的逻辑。

通常,我们会使用寄存器或者移位寄存器来实现计数器。

这种组合结构可以实现从二进制数0到N的自动计数。

3. Verilog HDL中的开关计数回路编程在Verilog HDL中,我们可以通过module、always、initial等关键字来描述开关计数回路的行为。

我们需要定义输入和输出接口,然后编写描述触发器和计数器行为的代码。

在Verilog HDL中,我们可以使用时钟信号来控制计数的节奏,通过简单的逻辑操作实现计数的增加和重置。

这样,我们就可以完整地描述一个开关计数回路的功能。

4. 实例分析下面,我以一个4位二进制计数器为例,来展示Verilog HDL中开关计数回路的编程过程:module counter(input clk,input rst,output reg[3:0] count);always @(posedge clk or posedge rst)beginif (rst)count <= 4'b0000;elsecount <= count + 1;endendmodule在这个例子中,我们定义了一个4位二进制计数器。

Verilog代码(计数器、交通灯、串并转换)

Verilog代码(计数器、交通灯、串并转换)

1、通用二进制计数器设计一个二进制计数器(默认为8位计数器),具有加/减计数功能、异步复位、预制数功能。

代码如下:`define WIDTH 8module BinaryCounter(counter,clk,up_down,load,reset,din);output reg [`WIDTH-1:0] counter;input clk;input up_down; //1为加计数,0为减计数input reset;input load; //预置数,1有效,din输出到counterinput [`WIDTH-1:0] din;always@(posedge clk or posedge reset)beginif(reset)counter<=0;else if(load)counter<=din;else if(up_down==1)counter<=counter+1;else if(up_down==0)begincounter<=counter-1;if(counter<1) counter<=0;endendendmodule测试程序如下:`define WIDTH 8module BinaryCounter_tb;reg clk,up_down,reset,load;reg [`WIDTH-1:0] din;wire [`WIDTH-1:0] counter;integer i;initialbeginclk=0;reset=1;#5 reset=0;#3000 $stop;endalways #5 clk=~clk;/*always@(posedge clk)beginup_down={$random}%2;load={$random}%2;din={$random}%256;end*/initialbegin#5;for(i=0;i<256;i=i+3)begindin=i;#10;endendinitialbeginup_down=1;load=1;#20 load=0;#30 load=1;#30 load=0;endalways #200 up_down=~up_down;BinaryCounter bcounter(.counter(counter),.clk(clk),.up_down(up_down),.load(load),.reset(reset),.din(din));endmodule波形图如下:图1 二进制计数器波形图图2 二进制计数器波形图从图像可看出,20s-50s为加计数,50s-80s时load=1,执行置数功能,80s-200s 时up_down=1,为加计数,200s-280s时up_down=0,为减计数。

基于 Verilog语言的可预置加减计数器的设计

基于 Verilog语言的可预置加减计数器的设计

基于Verilog 语言的可预置加减计数器的设计胡 滨(西安邮电学院 陕西西安 710061)摘 要:计数器是大规模集成电路中运用最广泛的结构之一。

在模拟及数字集成电路设计当中,灵活地选择与使用计数器可以实现很多复杂的功能,可以大量减少电路设计的复杂度和工作量。

讨论了一种可预置加减计数器的设计,运用Verilog HDL 语言设计出了一种同步的可预置加减计数器,该计数器可以根据控制信号分别实现加法计数和减法计数,从给定的预置位开始计数,并给出详细的Verilog HDL 源代码。

最后,设计出了激励代码对其进行仿真验证,实验结果证明该设计符合功能要求,可以实现预定的功能。

关键词:Verilog HDL ;可逆计数器;ModelSim ;可预置加减计数器中图分类号:TN47 文献标识码:B 文章编号:1004373X (2007)1617702Design of R eversible Counter B ased on V erilog H DLHU Bin(Xi ′an University of Post &Telecommunications ,Xi ′an ,710061,China )Abstract :Counter is one of the elements most in use in VL SI design.It has been proved that choosing and using counter properly can solve many complex problems.Discussing the design of a kind of reversible counter ,the study devises a synchro 2nous reversible counter by applying Verilog HDL.The reversible counter can count f rom the given preset data ,the detailed Veriog HDL source code has been given .The counter can add and subtract according to control signals.Finally ,the study devi 2ses stimulate code to its simulation certification.The certification result testifies that the design accord with the f unctional re 2quirements can realize the preconcerted f unction.K eywords :Verilog HDL ;reversible counter ;ModelSim ;preset modified counter收稿日期:20070116 计数器对时钟脉冲进行计数,还被广泛用于定时、分频、以及各种复杂的数字电路中,是计算机中的一个重要器件,是应用最广泛的一种典型的时序电路。

二进制计数器及其变体,Verilog

二进制计数器及其变体,Verilog

已经掌握:∙可编程逻辑基础∙Verilog HDL基础∙使用Verilog设计的Quartus II入门指南∙使用Verilog设计的ModelSIm入门指南内容1 free-running二进制计数器自由运行二进制计数器就是按照二进制形式不断循环计数。

例如,4位的二进制计数器的从0000数到1111,然后翻回来重新数。

代码1 free-runing二进制计数器次态逻辑是一个自增器,即给寄存器的当前值加1。

由于使用了“+”运算符,因此也暗示了当r_reg到达1111的时候之后,会翻回来变成0000。

这个电路也包括一个输出状态信号,max_tick。

每当计数器到达最大值——1111(等同于2^N-1),就会插入一个max_tick,即max_tick变为高电平。

所谓tick即一个时刻,比方说我们把1分钟可以分为60个tick,那么每一秒都会产生一个tick。

此处的max_tick正是这种意义的信号,相应的,具有同类属性的信号我们都会加上_tick这个后缀。

tick信号常用于连接不同频率的时序电路。

2 Universal二进制计数器通用二进制计数器,可递增或递减计数,亦可载入指定的值,也可被异步清零。

其查找表如表1所示。

注意rst_n和syn_clr信号的区别,前者是异步复位,且仅应该用于系统的初始化;后者为同步复位,只在时钟的上升沿被采样,可被用于一般的同步设计中。

表1 通用二进制计数器的查找表代码2 通用二进制计数器按照查找表设计的次态逻辑,被放在一个always块内,并且使用if-else-if来控制所需优先性的操作。

3 模-m计数器模-m计数器,从0计数到m-1,然后翻过来重新计数。

代码3所示的参数化的模-m计数器有两个参数:M,指定计数的范围为[0, M-1];N,指定M个数需要多少位宽来存储,其值为大于或等于log2(M)的整数。

代码3 模-m计数器(缺省为模-10)次态逻辑由一个条件语句组成:如果计数器数到M-1,那么新的值就会被清零;否则它将自增。

verilog 加法

verilog 加法

verilog 加法Verilog是一种硬件描述语言,广泛应用于数字电路设计和验证。

在本篇文章中,我们将重点讨论Verilog加法的设计与实现。

一、Verilog加法的基本概念加法是数字电路中最基本的运算之一。

在Verilog中,我们可以通过编写代码来实现加法器,从而完成两个二进制数的相加。

加法器的设计可以分为串行加法器和并行加法器两种。

其中,串行加法器依次处理输入的二进制位,而并行加法器则同时处理所有位。

二、Verilog加法器的模块实现1.半加器:半加器是加法器的基本构成单元,它用于计算两个二进制数的和以及进位。

半加器的输入包括两个二进制数和进位信号,输出为相加结果和进位信号。

2.全加器:全加器在半加器的基础上,增加了对进位信号的处理。

全加器的输入包括两个二进制数、上一个全加器的进位信号和当前半加器的进位信号,输出为相加结果和进位信号。

3.多位加法器:多位加法器是由多个全加器级联而成的。

每位全加器输出结果作为下一位的输入,最后一位全加器的输出即为多位加法器的最终结果。

三、Verilog加法器的实例化与仿真1.编写代码:根据上述加法器的设计原理,编写Verilog代码实现加法器。

2.实例化:在仿真环境中实例化加法器模块,为输入信号分配逻辑值。

3.仿真:通过仿真工具对加法器进行功能测试,观察输出结果是否符合预期。

四、加法器性能的评估与优化1.速度:评估加法器完成一次运算所需的时间,与加法器的级数、全加器的数量等因素有关。

2.面积:评估加法器所需的硬件资源,包括模块实例的数量、寄存器的使用等。

3.功耗:评估加法器在正常工作状态下的功耗。

4.优化:针对评估结果,对加法器进行优化,如减少模块实例、改进运算逻辑等。

通过以上步骤,我们可以设计和实现一个Verilog加法器。

四位二进制全加全减器

四位二进制全加全减器

数字逻辑设计及应用课程设计组合逻辑电路课程设计四位二进制全加/全减器姓名:学号:指导教师:一、任务与要求使用74LS83构成4位二进制全加/全减器。

具体要求:1)列出真值表;2)画出逻辑图3)用Verilog HDL进行仿真二、设计思路1)原理分析:74LS83是四位二进制先行加法器,所以直接接入输入可以得到全加器,下面主要讨论四位二进制全减器的构造。

对于减法,可以作相应的代数转换编程加法,二进制减法也是如此,原理如下:这样就把减法变为了加法,而[]=,这里利用补码性质,具体实现方法就是:逐位取反并在最低权一位加上1。

在全减器中,进位输入Cin变为借位输出,所以要减去Cin,且全加器的输出端Cout为进位输出,全减器为借位输出,所以将So取反后即可得到全减器的借位输出。

在以上分析基础可知,可在全加器的基础上设计全减器。

四位二进制全加/全减器真值表如下:(因原始真值表行数太过庞大,列出部分真值的例子)真值表A3 A2 A1 A0 B3 B2 B1 B0 Co Bo S0 S1 S2 S3C/B0 0 1 0 0 1 0 1 0 1 0/1 1/1 1/0 1/1 01 0 1 1 1 1 1 0 1 1 1/1 0/1 0/0 1/1 00 1 1 0 0 0 1 1 0 0 1/0 0/0 0/1 1/1 01 1 1 1 0 0 1 1 1 0 0/1 0/1 1/0 0/0 00 0 1 0 0 1 0 1 0 1 1/1 0/1 0/0 0/0 11 0 1 1 1 1 1 0 1 1 1/1 0/1 1/0 0/0 10 1 1 0 0 0 1 1 0 0 1/0 0/0 1/1 0/0 11 1 1 1 0 0 1 1 1 0 0/1 0/0 1/1 1/1 1*表格后半部分内容,斜线前为全加结果,斜线后为全减结果*XOR门的函数为:,所以当EN=A=0时,得到F=B与第二输入相同,当EN=A=1时,F=B’与第二输入相反。

VerilogHDL简单计算器设计-文档

VerilogHDL简单计算器设计-文档

目录第一章设计目的及任务要求 (1)1.1 设计目的 (1)1.2 设计任务 (1)1.3 课设要求 (1)第二章设计思路 (1)2.1 设计总体框图 (1)2.2 设计原理 (1)2.2.1 计算其原理 (1)2.2.2 数码显示原理 (2)2.2.3 八位数码管扫描的原理 (2)第三章设计源程序及分析 (2)3.1 计算器模块 (2)3.1.1 计算器源程序 (2)3.1.2 计算器程序分析 (2)3.2 数码管显示部分 (3)3.2.1 数码管显示源程序 (3)3.2.2 数码管显示程序分析 (4)3.3 循环扫描模块 (4)3.3.1 循环扫描程序 (4)3.3.2 循环程序分析 (5)3.4 总程序及其分析 (5)第四章时序仿真和结果验证 (8)4.1 计算器时序仿真及其分析 (8)4.2 数码管时序仿真及分析 (8)4.3 总体时序仿真图 (8)4.4 结果验证 (8)第五章心得体会 (9)第一章设计目的及任务要求1.1 设计目的(1)进一步加强熟练EDA基础知识。

(2)熟练掌握Quartus 6.0软件的使用以及用该软件编程和仿真的全过程。

(3)培养独立思考问题,解决问题的能力以及查阅相关资料和资料的正确使用能力,为明年的毕业设计打下良好的设计基础。

1.2 设计任务设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。

1.3 课设要求(1)说明题目的设计原理和思路、采用方法及设计流程。

(2)系统框图、Verilog语言设计程序或原理图。

(3)对各子模块的功能以及各子模块之间的关系做较详细的描述。

(4)详细说明调试方法和调试过程。

(5)说明测试结果:仿真时序图和结果显示图,并对其进行说明和分析。

第二章设计思路2.1 设计总体框图有分析可知,本次课程设计可以分成五个木块来实现相应的功能,分别是输入模块,计算模块,扫描模块,输出模块以及显示模块。

【2017年整理】EDA实验16位二进制加减可控计数器

【2017年整理】EDA实验16位二进制加减可控计数器

**大学本科实验报告(2011-2012学年下学期)课程名称:EDA任课教员:系:专业:二0一一年十月八日《EDA》课程实验报告实验项目名称:16位二进制加减可控计数器系::指导教员:姓名:学号:成绩:同组学员姓名:实验地点:EDA实验室实验日期:16位二进制加减可控计数器设计一、实验目的和要求1、掌握16位二进制加减可控计数器的设计思想,完成设计;2、熟悉QuartusⅡ对程序进行编译、调试和仿真的过程;3、掌握VHDL语言的表达;4、该计数器含有异步清零和计数使能功能。

二、实验内容和原理1、实验内容:根据实验要求,在QuartusⅡ中从所要实现的功能出发编写实验代码,并进行编译、调试和仿真。

2、实验原理:用IF语句将加、减法计数器连接起来;以MODE作为控制信号,选择进行加法或减法运算;以RST作为异步清零信号,当RST为‘1’时将对计数器清零,即复位,这项操作是独立于CLK的,称异步;以EN作为始能信号,只有EN=1且RST无效(即RST=0),若此时有CLK 信号,计数器才工作。

三、实验环境QuartusⅡ软件四、操作方法与实验步骤1、分析二进制加法、减法计数器工作原理,由此设计控制信号,使计数器可控;2、在QuartusⅡ中建立计数器工程,进行程序编写、调试、编译、仿真;3、对实验所得的时序图形进行分析。

五、实验数据记录和处理将程序进行仿真得到的波形图如下所示六、实验结果与分析:从仿真的时序图上可以看出, MODE的电平决定加操作还是减操作;RST为高电平有效,立即的将CQ置零;只有在EN为高电平且RST为低电平的情况下,CQ随着时钟上升沿的到来计数。

七、实验心得与体会通过该实验,我初步掌握了VHDL语言的基本使用方法,熟悉了QuartⅡ软件的操作流程。

八、程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY add16 ISPORT(CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);COUT:OUT STD_LOGIC;MODE:IN STD_LOGIC);END add16;ARCHITECTURE behav OF add16 ISBEGINPROCESS(CLK,RST,EN)VARIABLE CQ_IN:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINIF RST='1' THENCQ_IN:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF MODE='1' THENIF CQ_IN<65535 THENCQ_IN:=CQ_IN+1;COUT<='0';ELSE CQ_IN:=(OTHERS=>'0'); COUT<='1';END IF;ELSIF MODE='0' THENIF CQ_IN>0 THENCQ_IN:=CQ_IN-1;COUT<='0';ELSECQ_IN:=(OTHERS=>'1');COUT<='1';END IF;END IF;END IF;END IF;CQ<=CQ_IN;END PROCESS; END behav;。

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