电子线路设计课程设计报告24小时时钟电路设计.docx

上传人:b****6 文档编号:6081922 上传时间:2023-01-03 格式:DOCX 页数:41 大小:511.92KB
下载 相关 举报
电子线路设计课程设计报告24小时时钟电路设计.docx_第1页
第1页 / 共41页
电子线路设计课程设计报告24小时时钟电路设计.docx_第2页
第2页 / 共41页
电子线路设计课程设计报告24小时时钟电路设计.docx_第3页
第3页 / 共41页
电子线路设计课程设计报告24小时时钟电路设计.docx_第4页
第4页 / 共41页
电子线路设计课程设计报告24小时时钟电路设计.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

电子线路设计课程设计报告24小时时钟电路设计.docx

《电子线路设计课程设计报告24小时时钟电路设计.docx》由会员分享,可在线阅读,更多相关《电子线路设计课程设计报告24小时时钟电路设计.docx(41页珍藏版)》请在冰豆网上搜索。

电子线路设计课程设计报告24小时时钟电路设计.docx

电子线路设计课程设计报告24小时时钟电路设计

电子线路设计课程设计报告_24小时时钟电路设计

 

XXXXXX课程设计报告

电子线路设计课程设计报告

[24小时时钟电路设计]

 

小组成员:

XXXXXXXXXXXXXX

院(系):

电气信息工程学院

年级专业:

20XX级电子信息工程

指导老师:

XXXXXX

联系电话:

XXXXXXXXX

 

二〇XX年XX月

摘要

本设计为24小时时钟设计,具有时、分、秒计数显示功能,以24小时循环计时的时钟电路;具有时、分校准以及清零的功能。

本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在QUARTUSⅡ工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。

系统由主控模块、分频模块、译码模块以及显示组成。

经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的清零功能。

 

关键词时钟,QUARTUSⅡ,VHDL,FPGA

Abstract

Thedesignforthe24-hourclockdesign,withhours,minutes,secondscountdisplay,a24-hourcycleoftheclocktimingcircuit;withhours,minutes,andclearedthecalibrationfunction.

ThisdesignusesEDAtechnologytohardwaredescriptionlanguageVHDLdescriptionofthemeansforthesystemlogicdesigndocuments,softwaretoolsinQUARTUSⅡenvironment,usingtop-downdesignapproach,fromthevariousmodulestogethertobuildabasicFPGA-baseddigitalclock.

Systembythecontrolmodule,frequencymodule,decodingmoduleanddisplaycomponents.Thecompilationandsimulationofthedesignprocess,inthedownloadvalidationofprogrammablelogicdevices,thesystemcancompletethehours,minutes,seconds,respectively,indicatedbythekeyinputforcleardigitalclockfunction.

 

Keywordsclock,QUARTUSⅡ,VHDL,FPGA

 

摘要…………………………………………………………………………………Ⅰ

ABSTRACT…………………………………………………………………………Ⅱ

1绪论………………………………………………………………………………1

1.1题目意义………………………………………………………………………1

1.2设计要求…………………………………………………………………………1

2设计的基本原理…………………………………………………………………2

2.1设计原理…………………………………………………………………………2

2.2设计流程…………………………………………………………………………3

3设计方案…………………………………………………………………………4

3.1设计思路……………………………………………………………………4

3.2模块图和功能………………………………………………………………4

3.2.1分频模块……………………………………………………………………4

3.2.2主控模块……………………………………………………………………5

3.2.3译码模块……………………………………………………………………8

3.2.4顶层模块……………………………………………………………………10

4测试………………………………………………………………………………11

4.1模块仿真……………………………………………………………………11

4.1.1分频模块……………………………………………………………………12

4.1.2主控模块……………………………………………………………………13

4.1.3译码模块……………………………………………………………………14

4.2顶层模块仿真…………………………………………………………………15

5结论……………………………………………………………………………16

6参考文献…………………………………………………………………………17

 

1绪论

1.1题目意义

现在是一个知识爆炸的新时代。

新产品、新技术层出不穷,电子技术的发展更是日新月异。

可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。

在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。

因此我们需要一个定时系统来提醒这些忙碌的人。

数字化的钟表给人们带来了极大的方便。

近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。

多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。

1.2设计要求

本设计主要研究基于FPGA的数字钟,要求时间以24小时为一个周期,显示时、分、秒。

采用10KHZ的基准信号产生1S的基准时间,秒的个位加到10就向秒的十位进一,秒的十位加到6就向分的个位进一,分的个位加到10就向分的十位进一,分的十位加到6就向时进一。

该时钟具有清零功能,可以对时、分及秒进行清零,为了保证计时的稳定及准确须由晶体振荡器提供时间基准信号。

该系统是基于FPGA的设计,采用VHDL进行系统功能描述,采用自顶向下的设计方法,用QUARTUSⅡ软件进行仿真测试。

2设计的基本原理

2.1设计原理

振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。

秒的个位到9时,十位加1,同时个位归零,若十位为5时,则十位也归零;分和秒一致;时的个位到9时,十位小于2时加1,同时个位归零,若个位到3,十位为2时,则个位和十位都归零。

一般说来,一个比较大的完整的项目应该采用层次化的描述方法:

分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是TOPDOWN(自顶向下)的设计方法。

目前这种高层次的设计方法已被广泛采用。

高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。

CPLD/FPGA系统设计的工作流程如图2.1所示。

图2.1CPLD/FPGA系统设计流程

2.2设计流程

①工程按照“自顶向下”的设计方法进行系统划分。

②输入VHDL代码,这是设计中最为普遍的输入方式。

此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。

③将以上的设计输入编译成标准的VHDL文件。

④进行代码级的功能仿真,主要是检验系统功能设计的正确性。

这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。

一般情况下,这一仿真步骤可略去。

⑤利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。

综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。

⑥利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。

一般的设计,也可略去这一步骤。

⑦利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。

⑧在适配完成后,产生多项设计结果:

(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。

根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。

如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。

最后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片CPLD/FPGA中。

3设计方案

3.1设计思路

采用分模块设计的方法,再用一个顶层文件将各模块联系起来如图3.1所示。

图3.1结构图

将晶振通过分频器分频后产生1HZ(1S)的基本频率,然后进入主控模块,此时计秒的个位,满十后向秒的十位进一,秒十位采用六进制计数器,计满后向分的个位进一,分个位采用十进制计数器,计满后向分十位进一,分十位采用六进制计数器,计满后向时进一,时采用二十四进制计数器,计满后清零,最后将秒的个、十位,分的个、十位,时的个、十位,用译码器译为数码管显示的七段译码数。

3.2模块图和功能

3.2.1分频模块

晶体振荡器是构成数字式时钟的核心,振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,它保证了时钟的走时准确及稳定。

石英晶体的选频特性非常好,只有某一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且,振荡信号的频率与振荡电路中的R、C元件的数值无关。

因此,这种振荡电路输出的是准确度极高的信号。

然后再利用分频电路,将其输出信号转变为秒信号,其组成框图如图3.2。

图3.21HZ信号产生框图

本系统使用的晶体振荡器电路给数字钟提供一个频率稳定准确的10MHz的方波信号,其输出至分频电路。

分频模块的逻辑框图如图3.3所示:

图3.3分频模块

分频模块VHDL程序

文件名:

FREQ

--功能:

将石英晶振产生的10MHZ的信号分频为1HZ的信号

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFREQIS

PORT(CLK10MHZ:

INSTD_LOGIC;--10MHZ输入

CLK1HZ:

OUTSTD_LOGIC);--1HZ时钟输出

ENDFREQ;

ARCHITECTUREARTOFFREQIS

SIGNALTOUT:

INTEGERRANGE0TO4999999;

SIGNALCLK:

STD_LOGIC;

BEGIN

PROCESS(CLK10MHZ)

BEGIN

IFCLK10MHZ='1'ANDCLK10MHZ'EVENTTHEN

IFTOUT=4999999THEN

CLK<=NOTCLK;TOUT<=0;

ELSETOUT<=TOUT+1;

ENDIF;

ENDIF;

ENDPROCESS;

CLK1HZ<=CLK;

ENDART;

3.2.2主控模块

当复位信号RST=‘0’时,时钟输出时、分、秒全部归零;当校准信号S1=‘0’时,时加1;当校准信号S2=‘0’时,分加1;秒的个位到9时,十位加1,同时个位归零,若十位为5时,则十位也归零;分和秒一致;时的个位到9时,十位小于2时加1,同时个位归零,若个位到3,十位为2时,则个位和十位都归零。

主控模块的逻辑框图如图3.4所示:

图3.4主控模块

主控模块VHDL程序

文件名:

CONTROL

--功能:

输出时、分、秒(十进制),具有复位和校准的功能

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCONTROLIS

PORT(CLK1HZ:

INSTD_LOGIC;--1S时钟输入

RST:

INSTD_LOGIC;--复位输入

S1,S2:

INSTD_LOGIC;--时间调节输入

SEC1_OUT,SEC10_OUT:

OUTINTEGERRANGE0TO9;

MIN1_OUT,MIN10_OUT:

OUTINTEGERRANGE0TO9;

HOUR1_OUT,HOUR10_OUT:

OUTINTEGERRANGE0TO9);

ENDCONTROL;

ARCHITECTUREARTOFCONTROLIS

SIGNALSEC1,SEC10:

INTEGERRANGE0TO9;

SIGNALMIN1,MIN10:

INTEGERRANGE0TO9;

SIGNALHOUR1,HOUR10:

INTEGERRANGE0TO9;

BEGIN

PROCESS(CLK1HZ,RST)

BEGIN

IF(RST='0')THEN--系统复位

SEC1<=0;

SEC10<=0;

MIN1<=0;

MIN10<=0;

HOUR1<=0;

HOUR10<=0;

ELSIF(CLK1HZ'EVENTANDCLK1HZ='1')THEN--正常运行

IF(S1='0')THEN--调节小时

IF(HOUR1=9)THEN

HOUR1<=0;HOUR10<=HOUR10+1;

ELSIF(HOUR10=2ANDHOUR1=3)THEN

HOUR1<=0;HOUR10<=0;

ELSE

HOUR1<=HOUR1+1;

ENDIF;

ELSIF(S2='0')THEN--调节分钟

IF(MIN1=9)THEN

MIN1<=0;

IF(MIN10=5)THEN

MIN10<=0;

ELSE

MIN10<=MIN10+1;

ENDIF;

ELSE

MIN1<=MIN1+1;

ENDIF;

ELSIF(SEC1=9)THEN

SEC1<=0;

IF(SEC10=5)THEN

SEC10<=0;

IF(MIN1=9)THEN

MIN1<=0;

IF(MIN10=5)THEN

MIN10<=0;

IF(HOUR1=9)THEN

HOUR1<=0;HOUR10<=HOUR10+1;

ELSIF(HOUR1=2ANDHOUR10=3)THEN

HOUR1<=0;HOUR10<=0;

ELSE

HOUR1<=HOUR1+1;

ENDIF;

ELSE

MIN10<=MIN10+1;

ENDIF;

ELSE

MIN1<=MIN1+1;

ENDIF;

ELSE

SEC10<=SEC10+1;

ENDIF;

ELSE

SEC1<=SEC1+1;

ENDIF;

ENDIF;

ENDPROCESS;

SEC1_OUT<=SEC1;SEC10_OUT<=SEC10;

MIN1_OUT<=MIN1;MIN10_OUT<=MIN10;

HOUR1_OUT<=HOUR1;HOUR10_OUT<=HOUR10;

ENDART;

3.2.3译码模块

将主控模块中时、分、秒输出的十进制译为数码管显示的七段译码数。

译码规则:

数码管a,b,c,d,e,f,g分别对应DISPLAY[6..0]

如输出为‘0’时,译码后的七段译码数为:

1111110。

 

译码模块的逻辑框图如图3.5所示:

图3.5译码模块

主控模块VHDL程序

文件名:

DECODER

--功能:

将十进制译为数码管显示的七段译码数

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDECODERIS

PORT(TIMEIN:

ININTEGERRANGE0TO9;

DISPLAY:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDDECODER;

ARCHITECTUREARTOFDECODERIS

BEGIN

PROCESS(TIMEIN)

BEGIN

CASETIMEINIS

WHEN0=>DISPLAY<="1111110";--0

WHEN1=>DISPLAY<="0011000";--1

WHEN2=>DISPLAY<="0110111";--2

WHEN3=>DISPLAY<="0111101";--3

WHEN4=>DISPLAY<="1011001";--4

WHEN5=>DISPLAY<="1101101";--5

WHEN6=>DISPLAY<="1101111";--6

WHEN7=>DISPLAY<="0111000";--7

WHEN8=>DISPLAY<="1111111";--8

WHEN9=>DISPLAY<="1111101";--9

WHENOTHERS=>DISPLAY<="0000000";--全灭

ENDCASE;

ENDPROCESS;

ENDART;

3.2.4顶层模块

将各个模块连接起来,实现整个时钟功能。

顶层文件的逻辑框图如图3.6所示:

图3.6顶层模块

4测试

4.1模块仿真

工程编译通过后,必须对其功能和时序性能进行仿真测试,以验证设计结果是否满足设计要求。

整个时序仿真测试流程一般有建立波形文件、输入信号节点、设置波形参数、编辑输入信号、波形文件存盘、运行仿真器和分析方针波形等步骤。

以顶层模块为例,步骤如下:

①建立仿真测试波形文件。

选择QuartusII主窗口的File菜单的New选项,在弹出的文件类型编辑对话框中,选择OtherFiles中的VectorWeaveformFile项,单击OK按钮,即出现如图4.1所示的波形文件编辑窗口。

图4.1波形文件编辑窗口

②设置仿真时间区域。

对于时序仿真测试来说,将仿真时间设置在一个合理的时间区域内是十分必要的,通常设置的时间区域将视具体的设计项目而定。

设计中整个仿真时间区域设为80s、时间轴周期为500ms,其设置步骤是在Edit菜单中选择EndTime,在弹出的窗口中Time处填入80,单位选择s,同理在GrideSize中Timeperiod输入500ms,单击OK按钮,设置结束。

③输入工程信号节点

选择View菜单中的UtilityWindows项的NodeFinder,即可弹出如图4.1.2所示的对话框,在此对话框Filter项中选择Pins:

all&Registers:

Post-fitting,然后单击List按钮,于是在下方的NodesFound窗口中出现设计中的SZSJ工程的所有端口的引脚名。

用鼠标将时钟信号节点CLK10MHZ,RET,S1,S2,SEC1,SEC10,MIN1,MIN10,HOUR1,HOUR10分别拖到波形编辑窗口,如图4.2所示,此后关闭NodesFound窗口即可。

图4.2SZSJ波形编辑器输入信号窗口

④设计信号波形。

单击图4.2左侧的全屏显示按钮,使之全屏显示,并单击放大缩小按钮,再用鼠标在波形编辑窗口单击(右击为放大,左击为缩小),使仿真坐标处于适当位置。

单击图4.2窗口的时钟信号CLK10MHZ使之变成蓝色条,再单击右键,选择Value设置中的CountValue项,设置CLK10MHZ为连续变化的二进制值,初始值为“0”,周期为100ns;RST,S1,S2均设为"1"。

⑤文件存盘

选择File中的Saveas项,将波形文件以默认名SZSJ.vwf存盘即可。

⑥所有设置完成后,即可启动仿真器Processing︱StartSimulation直到出现Simulationwassuccessful,仿真结束。

4.1.1分频模块仿真

设置Endtime为2s进行仿真,结果如图4.3所示。

图4.3分频模块仿真

4.1.2主控模块仿真

1.设仿真时间为100s,仿真结果如图4.4所示。

图4.4主控模块仿真

2.设仿真时间为100s,设置S1,调节时,如图4.5所示。

图4.5时调节仿真

3.设仿真时间为100s,设置S2,调节分,如图4.6所示。

图4.6分调节仿真

4.设仿真时间为100s,设置RST,测试清零,如图4.7所示。

图4.7清零仿真

4.1.3译码模块仿真

设置该模块输入为0到9,进行仿真,仿真结果如图4.8所示。

图4.8译码模块仿真

 

4.2顶层模块仿真

图4.9顶层模块仿真

5结论

经过各模块和整体程序的仿真,达到了设计的要求。

从秒的个位开始自加一,

加到九时,在下一个时钟来临是个位清零又开始自加一,并向秒的十位进一,秒的十位加到六就向分的个位进一,秒的十位清零又开始计数,分的个位加到十就向分的十位进一,分的十位清零又开始计数,分的十位加到六就向时进一,时加到二十四自清零。

在此次设计过程中,最大的优点是采用了自顶向下的模块化设计,使程序清晰易懂,在秒和分的计数器的设计时,考虑到分秒都是六十进制,而分秒的显示都是个位和十位分开显示,为了译码方便,采用了六进制和十进制计数器套用的设计方法,看起麻烦实际使程序更易设计。

虽然在设计程序时具备一定的有点,同时也有一定的缺点,比如说延时的问题,这使得时钟在实际运行时并不十分精确。

在用QuartusⅡ进行仿真时,当显示数据较大较长时可能出现乱码,我一直也没有将这个问题解决掉,自己水平还有限,还需要不断努力,对于延时,则将时钟信号调大一点,延时就会减小,在译码器的仿真时,因为输出的是七段数码管点亮时的代码,会让人误以为是二进制数表示的十进制数,在这里要更加认真仔细,不然很容易出错。

在此次的数字钟设计过程中,我更进一步地熟悉有关数字电路的知识和具体应用。

学会了利用QuarterII软件进行原理图的绘制,硬件描述语言VHDL的编写,程序的仿真等工作。

并能根据仿真结果分析设计的存在的问题和缺陷,从而进行程序的调试和完善。

在此,特别感谢指导我设计的刘老师,在这次的设计中,刘老师给了我许多建议,让我的设计更加完善,在仿真时,刘老师给了我许多帮助,每当仿真出问题时,刘老师总是悉心得给我讲解出问题的地方和原因,我也从中学到了许多分析问题的方法

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

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1