数字时钟3.docx

上传人:b****2 文档编号:17651870 上传时间:2023-07-27 格式:DOCX 页数:18 大小:426.42KB
下载 相关 举报
数字时钟3.docx_第1页
第1页 / 共18页
数字时钟3.docx_第2页
第2页 / 共18页
数字时钟3.docx_第3页
第3页 / 共18页
数字时钟3.docx_第4页
第4页 / 共18页
数字时钟3.docx_第5页
第5页 / 共18页
数字时钟3.docx_第6页
第6页 / 共18页
数字时钟3.docx_第7页
第7页 / 共18页
数字时钟3.docx_第8页
第8页 / 共18页
数字时钟3.docx_第9页
第9页 / 共18页
数字时钟3.docx_第10页
第10页 / 共18页
数字时钟3.docx_第11页
第11页 / 共18页
数字时钟3.docx_第12页
第12页 / 共18页
数字时钟3.docx_第13页
第13页 / 共18页
数字时钟3.docx_第14页
第14页 / 共18页
数字时钟3.docx_第15页
第15页 / 共18页
数字时钟3.docx_第16页
第16页 / 共18页
数字时钟3.docx_第17页
第17页 / 共18页
数字时钟3.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字时钟3.docx

《数字时钟3.docx》由会员分享,可在线阅读,更多相关《数字时钟3.docx(18页珍藏版)》请在冰点文库上搜索。

数字时钟3.docx

数字时钟3

 

《数字时钟课程设计》

课程设计报告

 

姓名:

曾志东

学号:

09325229

专业:

电子信息工程

班级:

093252

指导教师:

黄河

 

2012年11月8日

目录

设计要求1

1、方案介绍1

2、设计原理及其实现过程2

2.1设计总原理2

2.2设计总原理图3

2.3模块设计和相应模块程序3

2.3.1逻辑控制模块3

2.4电路的总仿真图3

2.4.1正/反转控制仿真3

2.4.2启/停控制仿真4

2.4.4仿真结果分析5

3、课程设计结论及心得体会6

4,评分表.................................................................................................8

 

设计题目

多功能数字钟电路设计

一.设计任务及要求

1.时钟显示功能,能够以十进制显示“时”、“分”、“秒”。

2.具有快速校准时、分、秒的功能。

3.计时准确度,每天计时误差不超过1s。

4.整点自动报时,在离整点10s时,便自动发出鸣叫声,步长1s,每隔1s鸣叫一次,前四响是低音,最后一响为高音,最后一响结束为整点。

在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz进行分频。

对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。

管脚分配如下表:

端口名

使用模块信号

对应FPGA管脚

说明

S1

按键开关S1

R16

调整小时

S2

按键开关S2

P14

调整分钟

RST

按键开关S8

M15

复位

LED

LED模块D1

L14

整点倒计时

LEDAG0

数码管模块A段

N4

 

时间显示

LEDAG1

数码管模块B段

G4

LEDAG2

数码管模块C段

H4

LEDAG3

数码管模块D段

L5

LEDAG4

数码管模块E段

L4

LEDAG5

数码管模块F段

K4

LEDAG6

数码管模块G段

K5

SEL0

数码管选择位1

M4

8个数码管的选择位

SEL1

数码管选择位2

F3

SEL2

数码管选择位3

F4

CP

脉冲源

J3

50Mhz脉冲

 

三.基于VerilogHDL语言的电路设计、仿真与综合

(一)顶层模块

本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图1所示:

图1:

顶层结构框图

(二)子模块

1.分频器

分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1000hz的信号,作为显示器的输入信号。

源程序如下:

modulefenpin(inputCP,outputCPout);

regCPout;

reg[31:

0]Cout;

regCP_En;

always@(posedgeCP)//将50MHz分频为1kHz

begin

Cout<=(Cout==32'd50000)?

32'd0:

(Cout+32'd1);

CP_En<=(Cout==32'd50000)?

1'd1:

1'd0;

CPout<=CP_En;

end

endmodule

功能仿真波形如图下所示(以五分频为例):

图一

功能仿真图

时序仿真图

2.控制器和计数器

控制器的作用是,调整小时和分钟的值,并能实现清零功能。

计数器的作用是实现分钟和秒钟满60进1,小时则由23跳到00。

当到达59分55秒的时候,LED灯会闪烁来进行报时。

因为控制器和计数器的驱动信号频率均为1Hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1Khz变为1Hz。

源程序如下:

modulekongzhiqi(CPout,S1,S2,RET,Hour,Minute,Second,LED);

inputCPout,S1,S2,RET;

output[5:

0]Hour;

output[5:

0]Minute;

output[5:

0]Second;

outputLED;

reg[5:

0]Hour;

reg[5:

0]Minute;

reg[5:

0]Second;

regR1;

regR2,R8,LED;

reg[10:

0]Cout;

regClk_En;

always@(posedgeCPout)

begin

if(S1==0)

begin

R1=1;

end

if(S2==0)

begin

R2=1;

end

if(RET==0)

begin

R8=1;

end

Cout=(Cout==32'd1000)?

32'd0:

(Cout+32'd1);

Clk_En=(Cout==32'd1000)?

1'd1:

1'd0;

if(Clk_En)

begin

if(R1==1)

begin

if(Hour<24)

Hour=Hour+1;

if(Hour==24)

begin

Hour=0;

end

R1=0;

end

if(R2==1)

begin

if(Minute<60)

Minute=Minute+1;

if(Minute==60)

begin

Minute=0;

if(Hour<24)

Hour=Hour+1;

if(Hour==24)

begin

Hour=0;

end

end

R2=0;

end

if(Second<60)

Second=Second+1;

if(Second==60)

begin

Second=0;

if(Minute<60)

Minute=Minute+1;

if(Minute==60)

begin

Minute=0;

if(Hour<24)

Hour=Hour+1;

if(Hour==24)

begin

Hour=0;

end

end

end

if((Minute==59)&&(Second>55))//整点倒计时

begin

if(LED==1)

LED=0;

else

LED=1;

end

else

LED=0;

if(R8==1)//清零

begin

Hour=0;

Minute=0;

Second=0;

R8=0;

end

end

end

endmodule

功能仿真波形如图3所示:

3.显示器

显示器的作用是将时—分—秒的值在数码管上依次显示出来。

从分频器输出的1Khz的信号作为数码管的扫描信号。

SEL表示三个数码管选择位,它的取值表示八个数码管,从左至右依次是111~000。

LEDGA表示七段数码管,它的取值决定特定位数上显示的数字。

源程序如下:

modulexianshi(CPout,Hour,Minute,Second,SEL,LEDAG);

inputCPout;

inputHour,Minute,Second;

outputSEL,LEDAG;

reg[2:

0]SEL;

reg[6:

0]Led;

reg[3:

0]shi1,ge1,shi2,ge2,shi3,ge3;

always@(posedgeCPout)

begin

shiwei1=Hour/10;

gewei1=Hour%10;

shiwei2=Minute/10;

gewei2=Minute%10;

shiwei3=Second/10;

gewei3=Second%10;

if(SEL==3'b110)//判断位选SEL的值,并将此位上的值输出到数码管

case(shiwei1)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7'b1011_011;

4'b0011:

Led=7'b1001_111;

4'b0100:

Led=7'b1100_110;

4'b0101:

Led=7'b1101_101;

4'b0110:

Led=7'b1111_101;

4'b0111:

Led=7'b0000_111;

4'b1000:

Led=7'b1111_111;

4'b1001:

Led=7'b1101_111;

default:

Led=7'b0000_000;

endcase

if(SEL==3'b101)

case(gewei1)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7'b1011_011;

4'b0011:

Led=7'b1001_111;

4'b0100:

Led=7'b1100_110;

4'b0101:

Led=7'b1101_101;

4'b0110:

Led=7'b1111_101;

4'b0111:

Led=7'b0000_111;

4'b1000:

Led=7'b1111_111;

4'b1001:

Led=7'b1101_111;

default:

Led=7'b0000_000;

endcase

if(SEL==3'b100)

Led=7'b1000_000;

if(SEL==3'b011)

case(shiwei2)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7'b1011_011;

4'b0011:

Led=7'b1001_111;

4'b0100:

Led=7'b1100_110;

4'b0101:

Led=7'b1101_101;

4'b0110:

Led=7'b1111_101;

4'b0111:

Led=7'b0000_111;

4'b1000:

Led=7'b1111_111;

4'b1001:

Led=7'b1101_111;

default:

Led=7'b0000_000;

endcase

if(SEL==3'b010)

case(gewei2)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7'b1011_011;

4'b0011:

Led=7'b1001_111;

4'b0100:

Led=7'b1100_110;

4'b0101:

Led=7'b1101_101;

4'b0110:

Led=7'b1111_101;

4'b0111:

Led=7'b0000_111;

4'b1000:

Led=7'b1111_111;

4'b1001:

Led=7'b1101_111;

default:

Led=7'b0000_000;

endcase

if(SEL==3'b001)

Led=7'b1000_000;

if(SEL==3'b000)

case(shiwei3)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7'b1011_011;

4'b0011:

Led=7'b1001_111;

4'b0100:

Led=7'b1100_110;

4'b0101:

Led=7'b1101_101;

4'b0110:

Led=7'b1111_101;

4'b0111:

Led=7'b0000_111;

4'b1000:

Led=7'b1111_111;

4'b1001:

Led=7'b1101_111;

default:

Led=7'b0000_000;

endcase

if(SEL==3'b111)

case(gewei3)

4'b0000:

Led=7'b0111_111;

4'b0001:

Led=7'b0000_110;

4'b0010:

Led=7'b1011_011;

4'b0011:

Led=7'b1001_111;

4'b0100:

Led=7'b1100_110;

4'b0101:

Led=7'b1101_101;

4'b0110:

Led=7'b1111_101;

4'b0111:

Led=7'b0000_111;

4'b1000:

Led=7'b1111_111;

4'b1001:

Led=7'b1101_111;

default:

Led=7'b0000_000;

endcase

SEL=SEL+3'd1;

end

assign

LEDAG=Led;

endmodule

 

四.总结体会

这次课程设计用了五天左右的时间,时间虽然短了点,不过我还是学到了些东西。

,比如感受到了自顶而下结构化设计的优点,并具备了初步的EDA程序设计能力。

我认为这个程序最难的地方在于顶层模块的设计,因为顶层模块需要将各个子模块按照电路原理有机地结合起来,如果要做好这个理论知识要学的很好才行,然而我自己学的却只是一点点。

子模块的设计的话就相对容易一点了,因为Verilog语言和C语言有很多相似之处,只要明白了实验原理,完成它不是很难。

在verilog源程序的编写过程中需要我们的仔细耐心,因为有一个小小的错误,也会导致整个实验。

当出现错误的时候不可以急躁,最好能与同组的同学交流,那样可以更好更快的找出错误。

通过这次课程设计,让我认识到了,会不会是一回事,而做与不做是另一回事。

这就让我知道态度是非常重要的,对于大四的我们更应该端正态度,只要我们愿意去学,其实很多在我们认为很难,或者是我们不会的东西都不是我们想象的那么难。

 

东华理工大学长江学院

课程设计评分表

学生姓名:

曾志东班级:

093252学号:

09325229

课程设计题目:

数字时钟课程设计

项目内容

满分

实评

能结合所学课程知识、有一定的能力训练。

符合选题要求

(5人一题)

5

工作量适中,难易度合理

10

能熟练应用所学知识,有一定查阅文献及运用文献资料能力

10

理论依据充分,数据准确,公式推导正确

10

能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等

10

能体现创造性思维,或有独特见解

15

成绩质量

模型正确、合理,各项技术指标符合要求。

15

摘要叙述简练完整,假设合理、问题分析正确、数学用语准确、结论严谨合理;问题处理科学、条理分明、语言流畅、结构严谨、版面清晰

15

论文主要部分齐全、合理,符号统一、编号齐全。

 格式、绘图、表格、插图等规范准确,符合论文要求

10

字数不少于2000字,不超过15000字

5

总分

100

指导教师评语:

 

指导教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2