EDA实验二总结报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二数字秒表设计
一、实验目的
1、理解计时器的原理与Verilog/VHDL 的编程方法;
2、掌握多模块设计及层次设计的方法。
二、实验原理
秒计时器是由计数器和译码器、显示器组成,其核心是计数器与译码器。
60 秒计时器可由二个计数器分别完成:个位为十进制计数器,十位为6 进制计数。个位计数器的计数信号由实验开发板上主频20MHZ分频产生的1Hz 时钟信号提供, 十位计数器的计数信号由个位的进位信号提供。然后由译码器对计数结果进行译码,送LED 数码管进行显示。Clr为清零,se t为开始。
三、实验框图
页脚内容1
四、实验任务
1、采用层次设计的方法,设计一个包括顶层及底层模块的60 秒计时器,底层模块用Verilog/VHDL 设计,顶层用原理图设计。
2、秒计时器应当具有系统复位功能;
3、每十秒发出提示信号及计满60 秒时发出报警信号。(选做)
五、实验步骤与要求
1、分模块设计:首先分别设计10 进制、6 进制计数器、译码器模块;
2、顶层原理图如图7-1 所示;
3、编译完成后进行波形仿真;
4、进行引脚锁定,并下载至开发系统验证。
六、分模块设计
页脚内容2
1.十进制计数器
(1)程序代码:
module CNT10(CLK,RST,EN,COUT,DOUT);
input CLK,EN,RST;
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(Q1<9)Q1<=Q1+1;
else Q1<=4'b0000;end
end
always@(Q1)
页脚内容3
if(Q1==4'h9)COUT=1'b1;
else COUT=1'b0;
endmodule
(2)仿真波形
(3)模块符号
2.六进制计数器
(1)程序代码:
module CNT6(CLK,RST,EN,COUT,DOUT);
input CLK,EN,RST;
output [3:0]DOUT;
页脚内容4
output COUT;
reg[3:0]Q2;
reg COUT;
assign DOUT=Q2;
always@(posedge CLK or negedge RST)
begin
if(!RST) Q2<=0;
else if(EN)begin
if(Q2<5)Q2<=Q2+1;
else Q2<=3'b000;end
end
always@(Q2)
if(Q2==3'h5)COUT=1'b1;
else COUT=1'b0;
endmodule
(2)仿真波形
页脚内容5
(3)模块符号
3.分频器
(1)程序代码:
module FPQ(clk0,clk1);
input clk0;
output clk1;
reg[26:0] Q1;
reg clk1;
always@(posedge clk0)
if(Q1<10) Q1<=Q1+1;
else begin Q1<=0;
页脚内容6
clk1<=~clk1;
end
endmodule
(2)模块符号
七.顶层原理图:
八.仿真波形
页脚内容7
九.结果分析
当输入端CLK,EN,RST都不为0时,首先是十进制计数器开始进行计时,直到DOUT1输出端大于9时产生进位,并且自身变为0,同时使六进制计数器也开始计时,六进制输出端DOUT2大于5时产生进位,使COUT输出为1.
页脚内容8