文档库 最新最全的文档下载
当前位置:文档库 › 哈工大数电大作业-作业-计数器

哈工大数电大作业-作业-计数器

哈工大数电大作业-作业-计数器

————————————————————————————————作者:————————————————————————————————日期:

数电大作业1

——计数器

一、实验目的

1. 学习使用Verilog HDL语言,并学会使用进行QuartusⅡ软件

编程和仿真;

2. 掌握数字电路的设计方法,熟悉设计过程及其步骤;

3. 培养学生的动手能力,能学以致用,为今后从事电子线路设计

打下良好基础;

4. 巩固加深对数电知识的理解,在仿真调试过程中,能结合原理

来分析实验现象;

二、实验内容

1.设计内容及要求

1)利用Verilog HDL设计一个以自己学号后三位为模的计数器;

2)编写源程序;

3)给出仿真电路图和仿真波形图;

2.需求分析:

由于本人的学号为7112130501,后3位为501,为便于观察,选取中间三位为进制来编写加法计数器,以保证与他人的区别性,即编一个以213为模的加法计数器。若采用同步清零的方法,则计数为0~212,化为二进制数即为0 0000 0000计到0 1101 0100。

3.编写源代码:

module count_213(out,data,load,reset,clk);

output [8:0] out;

input [8:0] data;

input load,reset,clk;

reg [8:0] out;

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

begin

if(!reset)out=9'h000; //同步清零,低电平有效

else if (load)out=data; //同步预置

else if (out>=212)out=9'h000; //计数最大值为212,超过清零

else out=out+1; //计数

end

endmodule

程序说明:

该计数器为一个9位计数器,计数范围0~212,具有同步同步置数和同步清零功能。时钟的上升沿有效,当clk信号的上升沿到来时,如果清零信号为0,则清零;若不为0,计数器进行计数,计至212处同步清零。

4.画出仿真电路图:

图1为同步置数、同步清零加法计数器的仿真电路图

+

A[8..0]B[8..0]

ADDER

<

CIN A[8..0]B[8..0]

LESS_THAN

1

D

ENA

Q

PRE CLR

D

ENA

Q

PRE CLR

D

ENA

Q

PRE CLR

D

ENA

Q

PRE CLR

D

ENA

Q

PRE CLR

D

ENA

Q

PRE CLR

D

ENA

Q

PRE CLR

D

ENA

Q

PRE CLR

D

ENA

Q

PRE CLR

SEL

DATAA DATAB

OUT0

MUX21

SEL

DATAA DATAB

OUT0

MUX21

SEL

DATAA DATAB

OUT0

MUX21

Les s Than0

9' h0D3 --

out[0]~reg0

out[1]~reg0

out[2]~reg0

out[3]~reg0

out[4]~reg0

out[5]~reg0

out[7]~reg0

out[8]~reg0

out~[8..0]

9' h000 --

res et clk

out[8..0]

data[8..0]

out~[26..18]

9' h000 --

out~[17..9]

load

out[6]~reg0

A dd0

9' h001 --

图1 仿真电路图

自动生成的电路图

5. 画出仿真波形

先对逻辑波形进行初始化设置,将清零信号‘restest ’置1,置数信号‘load ’置0,得到的仿真波形图2所示,波形终止处如图3所示,图4为计数到212后自动清零。

当reset=0,计数器清零;当reset=1,load=0时,计数器计数;当reset=1、load=1时,计数器计数。

由于延时较长,上升沿触发显示不是很明显。

图2 开始计数的状态波形

图3 逻辑波形---波形终止处

图4 计数到211然后清零

三、实验结果

由仿真波形可以看出,计数器从0 0000 0000计到0 1101 0100后便清零。而0 1101 0100B=212D, 所以该计数器即为一个模为213的计数器,符合实验要求。

四、实验总结

1. 计数器功能表

Clk Reset Load Out

上升沿0 X 清零

上升沿 1 0 置数(data)

上升沿 1 1 计数

2. 应熟知计数器的使用方法,并能设计出任意进制的计数

器,在设计时才能得心应手。计数进制的改变,包括清零法(同步清零和异步清零)和置数法。假定计数器的计数进制为N,要将其改为M进制的计数器,M < N 。当计数器从全零状态开始计数,若采用同步清零法,设计时应经过M-1个状态后清零;若采用异步清零法,设计时应经过M个状态后清零。这样就跳过了M个状态,实现了M进制计数器。因为采用异步清零法会产生清零不可靠的问题,本实验采用的为同步清零法。

3. 本实验采用的是数据流描述方式来描述电路,通过

assign连续赋值实现组合逻辑功能,使用简单,语句易于读懂。

4. 调试过程中,应沉着冷静,出现错误时,应该根据数电

知识原理来分析,找出错误原因,对症下药;也可上网搜查该错误的含义,可能是软件的使用方法不对。

相关文档