EDA实验二总结报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档