EDA十进制计数器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
物理与电气工程学院课程设计报
告
可控制计数器设计
姓名:李自新
学号: 131103032
一、实验任务
熟悉QuartusⅡ的Verilog HDL文本设计流程全过程,学习计数器的设计、仿真和硬件测试。EDA的设计流程为原理图/HDL文本编辑、逻辑综合、FPGA/CPLD适配、FPGA/CPLD编程下载。EDA的设计所用的软件是Quartus II 软件,Quartus II 软件可以用图形输入、VHDL文本输入的方法输入,之后进行时序仿真,EDA设计流程的最后一步是将程序下载到开发板上,进行硬件测试。
二、实验原理
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。这3个信号可以由一个测频控制信号发生器产生,即图6-24中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
按规定编写程序如下:
module CNT10 (CLK,RST,EN,LOAD,COUT,DOUT,DATA);
input CLK,EN,RST,LOAD;
input [3:0] DATA;
output [3:0] DOUT;
output COUT;
reg [3:0] Q1 ; reg COUT ;
assign DOUT = Q1;
always @(posedge CLK or negedge RST) begin
if (!RST) Q1 <= 0;
else if (EN) begin
if (!LOAD) Q1 <= DATA;
else if (Q1<9) Q1 <= Q1+1;
else Q1 <= 4'b0000; end
end
always @(Q1)
if (Q1==4'h9) COUT = 1'b1;
else COUT = 1'b0;
endmodule
编写Verilog程序描述一个电路,实现以下功能:设计带有异步复位、同步计数使能和可预置型的十进制计数器。
具有5个输入端口(CLK、RST、EN、LOAD、DATA)。CLK输入时钟信号;RST 起异步复位作用,RST=0,复位;EN是时钟使能,EN=1,允许加载或计数;LOAD 是数据加载控制,LOAD=0,向内部寄存器加载数据;DATA是4位并行加载的数据。有两个输出端口(DOUT和COUT)。DOUT的位宽为4,输出计数值,从0到9;COUT是输出进位标志,位宽为1,每当DOUT为9时输出一个高电平脉冲。
四、实验方法
1、在非C盘中建立一个CNT10的文件夹,启动Quartus II软件,新建一个Verilog HDL File,如图所示:
2、编写如图的Verilog程序,存盘,文件名为CNT10.V。
存盘后会出现如图所示的对话框,问是否建立一个新的工程,点击“是”。
然后添加工程文件
选择如图所示的元件
最后完成工程的建立,进行编译。
3、通过编译后,建立波形文件
把上图中的输入、输出端口放入仿真列表中,并对各输入端进行仿真设
置,CLK设置时钟,EN、RST、LOAD设置高低电平,DATA设置数值,如
图所示
最后保存,文件名为CNT10.vwf
4、进行仿真,分析结果。
五、心得体会
通过本次,基本掌握熟悉QuartusⅡ的Verilog HDL文本设计流程全过程,学习计数器的设计、仿真和硬件测试,为下一步学习打好了基础!