当前位置:文档之家› EDA课程设计-万年历电子钟的设计

EDA课程设计-万年历电子钟的设计

EDA课程设计-万年历电子钟的设计
EDA课程设计-万年历电子钟的设计

课程设计(论文)任务书

信息工程学院学院通信工程专业2009.2 班

一、课程设计(论文)题目电子钟设计

二、课程设计(论文)工作自2012年1月 3日起至 2012 年 1月6日止。

三、课程设计(论文)地点: 华东交通大学4-410,图书馆

四、课程设计(论文)内容要求:

1.本课程设计的目的

(1)掌握EDA技术及CPLD/FPGA的开发流程;

(2)掌握自顶向下的设计思想;

(3)掌握实用电子钟的设计原理;

(4)掌握系统设计的分析方法;

(5)提高学生的科技论文写作能力。

2.课程设计的任务及要求

1)基本要求:

(1)用HDL设计一个多功能数字钟,包含以下主要功能:精确计时,时间可以24小时制或12小时制显示;

(2)日历:显示年月日星期;

(3)能把设计文件进行仿真并下载到实验箱实现功能验证。

2)创新要求:

在基本要求达到后,可进行创新设计,如增加报时等、秒表功能模块。

3)课程设计论文编写要求

(1)要按照书稿的规格打印誊写论文

(2)论文包括目录、绪论、正文、小结、参考文献、谢辞、附录等

(3)论文装订按学校的统一要求完成

4)答辩与评分标准:

(1)完成系统分析:20分;

(2)完成设计过程:20分;

(3)完成仿真:10分;

(4)完成下载:10分

(5)回答问题:10分。

5)参考文献:

(1)潘松,黄继业编著.《EDA技术实用教程》,2005,科学出版社

(2)徐志军,徐光辉编著.《CPLD/FPGA的开发与应用》,电子工业出版社,2001.1(3)

6)课程设计进度安排

内容天数地点

构思及收集资料 1 图书馆

设计与调试3实验室

撰写论文 1 图书馆、实验室

学生签名:

年月日

课程设计(论文)评审意见

(1)设计程序(40分):优()、良()、中()、一般()、差( );

(2)仿真结果(10分):优( )、良()、中()、一般()、差();

(3)下载结果(10分):优()、良()、中( )、一般( )、差( );

(4)回答问题(10分):优( )、良()、中()、一般()、差();

(5)报告成绩(30分):优()、良()、中( )、一般( )、差( );

(6)格式规范性及考勤是否降等级:是()、否()

评阅人:职称:

年月日

电子钟的设计

?

????摘要

基于FPGA的电子钟设计,主要完成的任务是使用Verilog语音,在Quartise2上完成电路的设计,程序的开发,基本功能是能够显示、修改年月日时分秒。电路的设计模块分为几个模块:分频、控制、时间显示调整、时分、年月日、译码器。各个模块完成不同的任务,合在一起就构成了电子钟。至于程序编写,使用Verilog语言,根据各个模块的不同功能和它们之间的控制关系进行编写。软件模块直接在Quartis2上进行。进入信息时代,时间观念越来越强,但是老是的钟表以及日历等时间显示工具已经不太合适。如钟表易坏,需经常维修,日历每天都需要翻页等。对此,数字钟表的设计就用了用武之地。

基于FPGA的电子钟设计,采用软件开发模块,开发成本底,而且功能设计上有很大的灵活度,需要在软件上进行简单的修该就能实现不同的功能要求,能够满足不同的环境要求。同时,该设计在精度上远远超过钟表,并且不需要维修,也不用没天的翻页,极其的方便。且能够添加各种不同的功能要求。例如:在其上加闹钟,同时显示阴阳历等。。综上所述本设计具有设计方便、功能多样、电路简洁成本低廉等优点,符合社会发展的趋势,前景广阔。

关键字:电子钟;FPGA;仿真;verilog;QuartusII

?

?

目录

摘要........................................... (3)

第一章绪论?..............................................5 1.1电子钟的发展?错误!未定义书签。

1.2 FPGA简介 ........................ 错误!未定义书签。第二章电子钟设计原理................... 错误!未定义书签。

2.1 组成模块?错误!未定义书签。

2.2 电子钟的工作原理图?6

第三章电子钟系统部分程序设计与仿真..... 错误!未定义书签。

3.1时分秒模块代码与仿真.............. 错误!未定义书签。

3.2年月日模块代码与仿真 (11)

3.3具体的电路图....................... 错误!未定义书签。谢辞...................................................

15

参考文献................................. 错误!未定义书签。附录?错误!未定义书签。

第一章绪论

1.1电子钟的发展

钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭路灯等。所有这些,都是以钟表数字化为基础的。因此,研究电子万年历及扩大其应用,有非常现实的意义。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。电子万年历从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

?因此,我们此次设计与制做电子万年历就是为了了解数字钟的原理,从而学会制作数字钟。而且通过万年历的制作进一步了解各种在制作中用到的中小规模集成电路的作用及使用方法,且由于电子万年历包括组合逻辑电路和时序电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。

1.2 FPGA简介

FPGA是现场可编程门阵列(Field programmable gates array)的英文简称。是有可编程逻辑模块组成的数字集成电路(IC)。这些逻辑模块之间用可配置的互联资源。设计者可以对这些器件进行编程来完成各种各样的任务PLD/FPGA是近几年集成电路中发展最快的产品。由于PLD性能的高速发展以及设计人员自身能力的提高,可编程逻辑器件供应商将进一步扩大可编程芯片的领地,将复杂的专用芯片挤向高端和超复杂应用。据IC Insights 的数据显示,PLD市场从1999年的29亿美元增长到去年的56亿美元,几乎翻了一番。Matas预计这种高速增长局面以后很难出现,但可编程逻辑器件依然是集成电路中最具活力和前途的产业。

复杂可编程逻辑器件。可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑(CPLD)。在这两类可编程逻辑器件中,FPGA 提供了最高的逻辑密度、最丰富的特性和最高的性能。现在最新的FPGA器件,如Xilinx Virtex"系列中的部分器件,可提供八百万"系统门"(相对逻辑密度)。这些先进的器件还提供诸如内建的硬连线处理器(如IBM PowerPC)、大容量存储器、时钟管理系统等特性,并支持多种最新的超快速器件至器件(device-to-device)信号技术。FPGA被应用于范围广泛的应用中,从数据处理和存储,以及到仪器仪表、电信和数字信号处理等。

第二章电子钟设计原理

2.1 组成模块

此电子钟系统主要由一下几个模块组成:

1.控制模块 :该模块实现对各个功能模块的整体控制,对时间显示与调整、日期显示与调整,由使用者决定是显示日期还是时间,当使用者不参与控制时,时间和日期每隔一段时间会自动轮流显示。

2.时间及其调整模块 :顾名思义就是对时间进行调整。

3.时间显示动态位选模块

4.显示控制模块:显示控制模块的功能是控制显示日期还是时间,在设计的过程中由于没有足够的数码管,把日期和时间分成了两个模块,至于显示那一个这由该模块完成任务。

5.日期显示与设置模块

6.译码器模块:在数码管上显示当前时间和日期。

7.分频模块:是为了得到一个周期为秒的脉冲,该脉冲主要用于秒的走到。2.2电子钟的工作原理图

图1 流程图

在电脑上通过软件Max+plus2对万年历电路图的引脚进行绑定,编译, 然后与EDA试验箱连接,把文件配置通过JTAG口载入FPGA中,选择实验电路模式进行硬件测试。通过学习,理论上学习了EDA试验箱的原理,对试验箱内部的组件,以及组件之间的链接有了更深的了解.

从开始分析电子钟原理,在定义底层文件名称,编写底层文件程序,生成模块——分频模块,秒模块,分模块,时模块,年月日模块,控制模块,显示模块,然后链接各个模块组成顶层,到最终完成测试,虽然辛苦但是当画出功能图时,还是很高兴的,以下为各模块组成的功能图

图2 功能设计图

第三章电子钟系统部分程序设计与仿真

3.1时分秒模块代码与仿真

时间及其设置模块主要完成时间的自动正常运行与显示,以及在相应的功能号下,实现时间的调整与设置。

计数器

秒脉冲信号经过6级计数器,分别得到“秒”个位、十位、“分”个位、十位以及“时”个位、十位的计时。“秒”“分”计数器为六十进制,小时为二十四进制。

六十进制计数

由分频器来的秒脉冲信号,首先送到“秒”计数器进行累加计数,秒计数器应完成一分钟之内秒数目的累加,并达到60秒时产生一个进位信号,所以,选用两片cc40192和一片cc4011组成六十进制计数器,来实现六十进制计数。其中,“秒”十位是六进制,“秒”个位是十进制。

二十四进制计数

利用异步清零端实现起从23——00的翻转,其中“24”为过渡状态不显示。其中,“时”十位是3进制,“时”个位是十进制。

以下为其具体的代码。

//秒

module second(clrn,clk,jf,qm,enmin);

inputclrn,clk,jf;output[7:0] qm;output enmin;

reg[7:0]qm;reg[3:0]qml;reg[7:4] qmh;reg carry1;

always@(posedge clk or negedge clrn)?begin

if(~clrn) begin{qmh,qml}=0;end

?else if((qmh==5)&&qml==9)

?begin{qmh,qml}=0;carry1=1;end

?else if ((qmh==5)&&(qml<9))

begin qmh=qmh;qml=qml+1;carry1=0;end

?elseif((qmh<5)&&(qml==9))

--

beginqmh=qmh+1;qml=0;carry1=0;end

?elseif((qmh<5)&&(qml<9))

?begin qmh=qmh;qml=qml+1;carry1=0;end

qm={qmh,qml};

?end

assign enmin=carry1|jf;

Endmodule

图3 秒仿真图

//分

module minute(clrn,clk,jh,qf,enhour);

input clrn,clk,jh;output[7:0] qf;output enhour;

reg[7:0] qf;reg[3:0] qfl;reg[7:4] qfh;regcarry1;

always @(posedge clk ornegedgeclrn)

begin

if(~clrn)begin{qfh,qfl}=8'h00;carry1=0;end

else if((qfh==5)&&(qfl==9))begin{qfh,qfl}=8'h00;carry1=1;end

else if((qfh<5)&&(qfl<9)) begin qfh=qfh;qfl=qfl+1;carry

1=0;end

elseif((qfh<5)&&(qfl==9))begin qfh=qfh+1;qfl=0;carry1=0;end else begin qfh=qfh;qfl=qfl+1;carry1=0;end

qf={qfh,qfl};

end

assign enhour=carry1|jh;

endmodule

图4分仿真图

//时

module hour(clrn,clk,qs,cout);

input clrn,clk;output [7:0]qs;output cout;

reg[7:0] qs;reg[3:0] qsl;reg[7:4] qsh;regcarry1;

always@(posedge clkor negedgeclrn)//miao

begin

?if (~clrn) begin{qsh,qsl}=8'h00;carry1=0;endelse if((qsh==1)&&(qsl==7))

?begin{qsh,qsl}=8'h00;carry1=1;end

?elseif((qsh==2)&&(qsl<3)) begin qsh=qsh;qsl=qsl+1;ca rry1=0;end

else if(qsl==9)begin qsh=qsh+1;qsl=0;carry1=0;end

?else begin qsh=qsh;qsl=qsl+1;carry1=0;endqs={qsh,qsl}; ?end

?assigncout=carry1;

endmodule

图5 时仿真图

3.2年月日模块代码与仿真

该模块实现的是日期的自动工作功能,

//年月日

module nyr2009(clrn,clk,jn,jy,jr,qn,qy,qr);

inputclrn,clk,jn,jy,jr;

output [15:0] qn;

output[7:0]qy,qr;

reg [15:0] qn;

reg[7:0] qy,qr;

reg clkn,clky;

reg[7:0] date;

reg clkn1,clkn2,clkn3;

initialbegin clkn1=1;clkn2=1;clkn3=1;end

initialbegin qn='h2000;qy=1;qr=1;end

always@(posedge (clk^jr) ornegedge clrn)//日计数

beginif(~clrn) qr=1;

elsebegin if(qr==date)

begin qr=1;clky=1;end

else if(qr[7:4]==date[7:4]&&qr[3:0]==date[3:0])

Beginqr[7:4]<=qr[7:4];qr[3:0]<=qr[3:0];clky<=1;end

else if(qr[3:0]==9)

begin qr[7:4]<=qr[7:4]+1;qr[3:0]=0;end

?

else if(qr[7:4]<date[7:4]&&qr[3:0]

Begin qr[7:4]<=qr[7:4];qr[3:0]<=qr[3:0]+1;clky<=0;end

else begin qr[7:4]=qr[7:4];qr[3:0]=qr[3:0]+1;clky<=0;endend

end

always @(posedge (clky^jy)ornegedge clrn)//月计数

begin if(~clrn)qy=1;

else begin if(qy=='h12)qy=1;

elseqy=qy+1;if(qy[3:0]=='ha)

Begin qy[3:0]=0;

qy[7:4]=qr[7:4]+1;end

if(qy=='h12)clkn=1;else clkn=0;

End

end

always//每月的天数

Begin case(qy)

'h01:date='h31;

'h02: if(((qn%4==0)&(qn%100!==0))||(qn%400==0)) date='h29; ?else date='h28;

'h03:date='h31;'h04:date='h30;'h05:date='h31;

'h06:date='h31;'h07:date='h31;'h08:date='h31;

'h09:date='h30;'h10:date='h31;'h11:date='h30;

'h12:date='h31;default:date='h30;

endcase

end

always@(posedge (clkn^jn) or negedgeclrn )//年计数begin

if(~clrn)qn[3:0]=0;

elsebegin if(qn[3:0]==9)qn[3:0]=0;

elseqn[3:0]=qn[3:0]+1;if(qn[3:0]==9)clkn1=0;

elseclkn1=1;end

end

always@(posedge (clkn1)or negedgeclrn)

Begin

if(~clrn)qn[7:4]=0;else begin

if(qn[7:4]==9) qn[7:4]=0;else qn[7:4]=qn[7:4]+1;

if(qn[7:4]==9)clkn2=0;else clkn2=1;end

end

always@(posedge(clkn2)or negedge clrn)

begin

if(~clrn)qn[11:8]=0;else begin

if(qn[11:8]==9) qn[11:8]=0;?else qn[11:8]=qn[11:8]+1;if(qn[11:8]==9)clkn3=0;else clkn3=1;end

end

always@(posedge(clkn3) or negedge clrn)

Begin if(~clrn) qn[15:12]=2;

elsebegin if(qn[15:12]==9)qn[15:12]=0;

else qn[15:12]=qn[15:12]+1;end

end

endmodule

????图5年月日仿真图

3.3具体的电路图

将时间和日期两个模块连接起来之后,便可得到大体的框架图了。时间和日期两个模块生成封装。用画图的形式将其连接,就组成了顶层模块。其电子钟的模块也就弄好了,其他控制的模块只要在这上面加就可以了。时间和日期的顶层模块如下图。

?????图6时间和日期连接图

????图7时间和日期仿真图

?????第四章小结

通过这次课设实训,在硬件方面,使我们对EDA试验箱有了很多的了解,弥补了我们的知识的缺陷,同时对EDA试验箱内部的工作原理,以及EDA试验箱各个实验模式的功能很作用有了一定的了解,学习了硬件引脚绑定过程,以及绑定的一些基本常识,并动手完成了绑定,这样不仅拓宽我们的知识面,增强动手能力和实践能力,同时还培养我们的分析和解决实际问题的能力。

在软件方面,我们通过分组在软件Max+plus2上独立完成老师给我们的实训题目——电子钟。从开始分析点钟原理,在定义底层文件名称,编写底层文件程序,然后链接各个模块,到最终完成测试,并运行成功,这些加强了我们的分析问题的能力,提高了我们编程的能力,同时还培养了我们独立完成任务和查阅资料删选资料的能力,虽然完成的软件在实际运用中还有很多不足,比如软件运行的环境有限,程序的效率不高,在老师的要求上也不能全部到达预期的最好效果,等等一些问题,这都需要我们以后更深层次的加以修改,使其更加简单更加方便更加通俗易懂。

电子日历一路编来可谓是坎坎坷坷,但大家都没有放弃,积极主动的找老师、找同学帮忙解决难题。后来,又重新分析原理,重复操作,遇到困难马上向老师提问,及时解决问题,这样的效果很明显。

在这次实训中,我深深的感受到上课听讲的重要性,课设中遇到的很多问题都是老师上课讲解的一些难点,自己没有很好的领悟的地方。每个学生对老师课堂上讲的内容的接收都是不一样的,通过向老师请教,同学讨论,最后才得以解决问题,实训才能得以成功。

从整体看这次实训是很成功的,让我们都有很大的收获,同时也非常感谢在实训过程中给予我们很大帮助的朱老师和黄老师,在老师耐心细心的指导下,我才能很好的完成实训认务。

谢辞

在这里我要感谢我的老师朱路,朱老师上课的思路很清晰,很有调理。这样也吸引我对EDA的兴趣,朱老师在上课讲的内容很生动,举的例子也很符合题意,这样更有利于我的学习。当自己有不懂问朱老师时,朱老师很热情的分析给我听,这样有利于我的理解,总之很感谢朱老师。

参考文献

[1] 潘松,黄继业.EDA技术实用教程,科学出版社,2002

[2] 侯伯亨,顾新. VHDL硬件描述语言修订版,西安技大学出版社,2004.[3] 赵曙光,郭万有. 可编程逻辑器件原理,西安电子科技大学出版社,2000. [4]徐志军,徐光辉. CPLD/FPGA的开发与应用,电子工业出版社,2002.

[5] 夏宇闻.VerilogHDL数字系统设计教程,北京航空航天大学出版社,2003.

[6]黄智伟. FPGA系统设计与实践,电子工业出版社,2003.

[7] 王金明等.数字系统设计与verilog HDL,电子工业出版社,2002

附录附录一时间实拍图

相关主题
文本预览
相关文档 最新文档