当前位置:文档之家› 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)ﻩbeginif(~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;endqm={qmh,qml};ﻩendassign 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)beginif(~clrn)begin{qfh,qfl}=8'h00;carry1=0;endelse if((qfh==5)&&(qfl==9))begin{qfh,qfl}=8'h00;carry1=1;endelse if((qfh<5)&&(qfl<9)) begin qfh=qfh;qfl=qfl+1;carry1=0;endelseif((qfh<5)&&(qfl==9))begin qfh=qfh+1;qfl=0;carry1=0;end else begin qfh=qfh;qfl=qfl+1;carry1=0;endqf={qfh,qfl};endassign 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)//miaobeginﻩ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;endelse 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;endinitialbegin qn='h2000;qy=1;qr=1;endalways@(posedge (clk^jr) ornegedge clrn)//日计数beginif(~clrn) qr=1;elsebegin if(qr==date)begin qr=1;clky=1;endelse 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;endelse 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]<date[3:0])Begin qr[7:4]<=qr[7:4];qr[3:0]<=qr[3:0]+1;clky<=0;endelse begin qr[7:4]=qr[7:4];qr[3:0]=qr[3:0]+1;clky<=0;endendendalways @(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;endif(qy=='h12)clkn=1;else clkn=0;Endendalways//每月的天数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;endcaseendalways@(posedge (clkn^jn) or negedgeclrn )//年计数beginif(~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;endendalways@(posedge (clkn1)or negedgeclrn)Beginif(~clrn)qn[7:4]=0;else beginif(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;endendalways@(posedge(clkn2)or negedge clrn)beginif(~clrn)qn[11:8]=0;else beginif(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;endendalways@(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;endendendmoduleﻩﻩﻩﻩ图5年月日仿真图3.3具体的电路图将时间和日期两个模块连接起来之后,便可得到大体的框架图了。

相关主题