EDA专业课程设计万年历电子钟的设计Word文档格式.docx
《EDA专业课程设计万年历电子钟的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《EDA专业课程设计万年历电子钟的设计Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
(3)能把设计文件进行仿真并下载到试验箱实现功效验证。
2)创新要求:
在基础要求达成后,可进行创新设计,如增加报时等、秒表功效模块。
3)课程设计论文编写要求
(1)要根据书稿规格打印誊写论文
(2)论文包含目录、绪论、正文、小结、参考文件、谢辞、附录等
(3)论文装订按学校统一要求完成
4)答辩和评分标准:
(1)完成系统分析:
20分;
(2)完成设计过程:
(3)完成仿真:
10分;
(4)完成下载:
10分
(5)回复问题:
10分。
5)参考文件:
(1)潘松,黄继业编著.《EDA技术实用教程》,,科学出版社
(2)徐志军,徐光辉编著.《CPLD/FPGA开发和应用》,电子工业出版社,.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
谢辞...................................................15
第一章绪论
1.1电子钟发展
钟表数字化给大家生产生活带来了极大方便,而且大大地扩展了钟表原先报时功效,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭路灯等。
全部这些,全部是以钟表数字化为基础。
所以,研究电子万年历及扩大其应用,有很现实意义。
数字钟是一个用数字电路技术实现时、分、秒计时装置,和机械式时钟相比含有更高正确性和直观性,且无机械装置,含有更长使用寿命,所以得到了广泛使用。
电子万年历从原理上讲是一个经典数字电路,其中包含了组合逻辑电路和时序电路。
所以,我们此次设计和制做电子万年历就是为了了解数字钟原理,从而学会制作数字钟。
而且经过万年历制作深入了解多种在制作中用到中小规模集成电路作用及使用方法,且因为电子万年历包含组合逻辑电路和时序电路,经过它能够深入学习和掌握多种组合逻辑电路和时序电路原理和使用方法。
1.2FPGA介绍
FPGA是现场可编程门阵列(Fieldprogrammablegatesarray)英文简称。
是有可编程逻辑模块组成数字集成电路(IC)。
这些逻辑模块之间用可配置互联资源。
设计者能够对这些器件进行编程来完成多种多样任务
PLD/FPGA是近几年集成电路中发展最快产品。
因为PLD性能高速发展和设计人员本身能力提升,可编程逻辑器件供给商将深入扩大可编程芯片领地,将复杂专用芯片挤向高端和超复杂应用。
据ICInsights数据显示,PLD市场从1999年29亿美元增加到去年56亿美元,几乎翻了一番。
Matas估计这种高速增加局面以后极难出现,但可编程逻辑器件仍然是集成电路中最具活力和前途产业。
复杂可编程逻辑器件。
可编程逻辑器件两种关键类型是现场可编程门阵列(FPGA)和复杂可编程逻辑(CPLD)。
在这两类可编程逻辑器件中,FPGA提供了最高逻辑密度、最丰富特征和最高性能。
现在最新FPGA器件,如XilinxVirtex"
系列中部分器件,可提供八百万"
系统门"
(相对逻辑密度)。
这些优异器件还提供诸如内建硬连线处理器(如IBMPowerPC)、大容量存放器、时钟管理系统等特征,并支持多个最新超快速器件至器件(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进制,“时”个位是十进制。
以下为其具体代码。
//秒
modulesecond(clrn,clk,jf,qm,enmin);
inputclrn,clk,jf;
output[7:
0]qm;
outputenmin;
reg[7:
reg[3:
0]qml;
4]qmh;
regcarry1;
always@(posedgeclkornegedgeclrn)begin
if(~clrn)begin{qmh,qml}=0;
end
elseif((qmh==5)&
&
qml==9)
begin{qmh,qml}=0;
carry1=1;
elseif((qmh==5)&
(qml<
9))
beginqmh=qmh;
qml=qml+1;
carry1=0;
elseif((qmh<
5)&
(qml==9))
beginqmh=qmh+1;
qml=0;
qm={qmh,qml};
end
assignenmin=carry1|jf;
Endmodule
图3秒仿真图
//分
moduleminute(clrn,clk,jh,qf,enhour);
inputclrn,clk,jh;
0]qf;
outputenhour;
0]qfl;
4]qfh;
always@(posedgeclkornegedgeclrn)
begin
if(~clrn)begin{qfh,qfl}=8'
h00;
elseif((qfh==5)&
(qfl==9))begin{qfh,qfl}=8'
elseif((qfh<
(qfl<
9))beginqfh=qfh;
qfl=qfl+1;
(qfl==9))beginqfh=qfh+1;
qfl=0;
elsebeginqfh=qfh;
qf={qfh,qfl};
assignenhour=carry1|jh;
endmodule
图4分仿真图
//时
modulehour(clrn,clk,qs,cout);
inputclrn,clk;
output[7:
0]qs;
outputcout;
0]qsl;
4]qsh;
always@(posedg