eda课程设计方案电子时钟.docx
- 文档编号:26726524
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:16
- 大小:454.68KB
eda课程设计方案电子时钟.docx
《eda课程设计方案电子时钟.docx》由会员分享,可在线阅读,更多相关《eda课程设计方案电子时钟.docx(16页珍藏版)》请在冰豆网上搜索。
eda课程设计方案电子时钟
EDA课程设计报告
设计题目:
专业:
姓名:
学号:
指导老师:
、八—
前言
随着电子设计技术、ISP(在系统可编程)技术,PLD(可编程逻辑器件),与EDA(电子设计自动化)紧密结合,它代表了数字系统设计领域的最高水平,给数字电路的设计带来了革命性的变化。
作为现在的大学生应熟练掌握这门技术,为以后的发展打下良好的基础,
本实验设计是应用QuartusII环境及VHDL语言设计一个时间可调的数字时钟。
使自己熟练使用QuartusII环境来进行设计,掌握VHDL语言的设计方法。
要注重理论与实践之间的不同,培养自己的实践能力!
一、课程设计任务及要求1
1.1实验目的1
1.2功能设计1
二、整体设计思想2
2.1性能指标及功能设计2
2.2总体方框图2
三、详细设计3
3.1数字钟的基本工作原理:
3
3.1.1时基T产生电路3
3.1.2调时、调分信号的产生33.1.3计数显示电路3
3.2设计思路4
3.3设计步骤4
3.3.1工程建立及存盘4
3.3.2工程工程的编译5
3.3.3目标芯片的选择6
3.3.4时序仿真7
3.3.5引脚锁定8
3.3.6硬件测试8
3.3.7实验结果9
四、设计总结10五、附录10
5.1VHDL源程序10
5.2配置符号图12
一、课程设计任务及要求
1.1实验目的
1)掌握VHDL语言的基本运用
2)掌握Quartusll的简单操作并会使用EDA实验箱
3)掌握一个基本EDA课程设计的操作
1.2功能设计
1)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制以24小时循环计时
2)设置复位、清零等功能
3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间
4)时钟计数显示时有LED灯显示;
1、整体设计思想
2.1性能指标及功能设计
1)时、分、秒计时器
时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。
当秒计时器接受到一个秒脉冲时,秒计数器开始从1计数到60,此时秒显示器将显示
00、01、02、…、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、
02、…、59、00;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将显示00、01、02、…、
23、00。
即当数字钟运行到23点59分59秒时,当秒计时器在接受一个秒脉冲,数字钟将自动显示00点00分00秒。
2)校时电路
当开关拨至校时档时,电子钟秒计时工作,通过时、分校时开关分别对时、分进行校对,开关每按1次,与开关对应的时或分计数器加1,当调至需要的时与分时,拨动reset开关,电子钟从设置的时间开始往后计时。
2.2总体方框图
时
分
调
调
整
整
三、详细设计
3.1数字钟的基本工作原理:
3.1.1时基T产生电路
数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。
由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz的、非常稳定的计数时钟脉冲。
3.1.2调时、调分信号的产生
由计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。
现在我们把电路稍做变动:
把秒计数器的进位脉冲和一个频率为2Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。
调节小时的时间也一样的实现。
3.1.3计数显示电路
由计数部分、数据选择器、译码器组成,是时钟的关键部分。
1、计数部分:
由两个60进制计数器和一个24进制计数器组成,其中60进制计数器可用6进制计数器和10进制计数器构成;24进制的小时计数同样可用6进制计数器和10进制计数器得到:
当计数器计数到24时,“2”和“4”同时进行清零,则可实现24进制计数。
2、数据选择器:
84输入14输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号‘—')。
3、译码器:
七段译码器。
译码器必须能译出‘—',由实验二中译码器真值表可得:
字母F的8421BCD码为“1111”,译码后为“1000111”,现在如果只译出‘—',即字母F的中间一横,则译码后应为“0000001”,这样,在数码管上显示的就为‘—'。
3.2设计思路
根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。
这些模块都放在一个顶层文件中。
1)时钟计数:
首先下载程序进行复位清零操作,电子钟从00:
00:
00计时开始。
sethour可以调整时钟的小时部分,setmin可以调整分钟,步进为1。
由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大
于1Hz这里取100HzCLK端连接外部10Hz的时钟输入信号elk。
对elk进行计数,当elk=10时,秒加1,当秒加到60时分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。
用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT(6DOWNTO0)上的信号来点亮指定的LED七段显示数码管。
2)时间设置:
手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。
我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。
3)清零功能:
reset为复位键,低电平时实现清零功能,高电平时正常计数。
可以根据我们自己任意时间的复位。
3.3设计步骤
3.3.1工程建立及存盘
1.打开QuartusH,单击“File”菜单,选择File—NewProjectWizard,对话框如下:
分别输入工程的工作路径、工程名和实体名,单击Finish。
图3.1
2.单击“File”菜单,选择New弹出小对话框,双击“VHDLFile",即
选中了文本编辑方式。
在出现的“Vhdll.vhd”文本编辑窗中键入VHDL程序,输入完毕后,选择FilefSaveAs,即出现“SaveAs”对话框。
选择自己建立好的存放本文件的目录,然后在文件名框中键入文件名,按“Save”按钮。
3.建立工程工程,在保存VHDL文件时会弹出是否建立工程的小窗口,点
击“Yes”确定。
即出现建立工程工程的导航窗口,点击“Next”,最后在出现
的屏幕中分别键入新工程的工作路径、工程名和实体名。
注意,原理图输入设计方法中,存盘的原理图文件名可以是任意的,但VHDLg序文本存盘的文件名
必须与文件的实体名一致,输入后,单击“Finish”按钮。
3.3.2工程工程的编译
单击工具条上的编译符号开始编译,并随着进度不断变化屏幕,编译成功,完成后的屏幕如图3.2所示:
Froffirfij*Deviee(Open.Fr^grwrmer)
ur
图3.2
3.3.3目标芯片的选择
选择菜单Assignments选项的下拉菜单中选择器件Device…,如图3.3
所示:
Sectihgs-ADCINT
G«wal
Fits
L命1曲帯
Devkt
+1OpeiafinoSettnasdndCmcWiurts
BCompiUbctiPiooes:
5兮!
el问护
+1-EDATfid5ding?
BArdj^sk茜Bpnlhe血Sellhg^申-FitlBrSailings
PhpiiciJ$^rlh«£KQplim^alkirts勻-TfnriQ.4na|y^T5-eWngslimvQwlTinwigAnalyzer由Cas:
iclimnaAndyjwSettrngsA^embier
OesiQTiAssislanl
SaiiT4pHLogicAMjWLogLAndpzerInteilacc二15仆4風生SeJbngi
GimuhlioniVerficdm-1
5rffti4aliOT>0Upi4F4ss
Pc*MefF1ayPouterArulyzer5ellings
图3.3
在弹出的对话框中的Family(器件序列栏)对应的序列名,EP1C3对应的是Cyclone系列。
在AvailableDevices里选择EP1C3T144-C8(有时需要把
Showadvaneeddevices的勾消去,以便显示出所有速度级别的器件)。
注意:
所选器件必须与目标板的器件型号完全一致。
在图中,单击“DeviceandPinOptions…”,在弹出的“DeviceandPinOptions…”窗口中,单击“UnusedPins”标签。
选择“Asoutputdrivinganunspecifiedsignal”(由于学习机的“FPGA具有很多功能,
为了避免使用引脚对其它器件造成影响,保证本系统可靠工作,将未使用引脚设定为输出不定状态)后,单击确定后,无误后单击“OK。
3.3.4时序仿真
建立波形文件:
选择File—New在New窗中选中“OtherFile”标签。
在出现的屏幕中选择“VectorWaveformFile”项出现一新的屏幕。
在出现的新屏幕中,双击“Name下方的空白处,弹出“InsertNodorBus”对话框,单击该对话框的“NodeFinder”。
在屏幕中的Filter中选择Pins,单
击“List”。
而后,单击“>>”,所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际情况决定。
然后单击屏幕右上脚的“OK。
在出现的小屏幕上单击“OK。
设定仿真时间宽度。
选择Edit—Endtime…选项,在Endtime选择窗中选择适当的仿真时间域,以便有足够长的观察时间。
波形文件存盘。
选择File—Saveas选项,直接存盘即可。
运行仿真器。
在菜单中选择项,直到出现,仿真结束。
SimuliaitionWaveforimiS
Sknhul6.li 恰Ti™Bai: 「16.6ms*|*-\Pointer|8.2nsIhlervai: [-0. |End: | NelFI4 Wilsit 13a“ pps10.0仙20”□>弟 * ise ZizG 』 Bi B000000 B□ B0 BD BO B0 ED IT1 BOOiQOaOO B0 BD B0 E0 B0 B0 BD rnr 1r COOODOO ^OOOODl 3送 -51 -4] -3] -.2] --0] 24 O吕 F EU1曰MB C0-X : X- ^12 (ooaoooo 313 -...B] -..5] -4] -...u -...D] 3M 315 315 3肚 0IS 3IQ 1X匍 reset凹£ftc-ortd. 2曲th.o tmin B】 B0000001 B】 BQ 心21 □OOOOQOi001 )0001OOOOOIO 疋"翻 n n_ ■1- Fir P <□ 图3.4编辑过程的仿真波形 3・3・5引脚锁定 将设计编程下载进选定的目标器件中,如EPF1OK10作进一步的硬件测 试,将设计的所有输入输出引脚分别与目标器件的EPF10K1O勺部分引脚相接, 操作如下: 1.选择Assignments—AssignmentsEditor,即进入Assignments Editor编辑器。 在Category栏选择Pin,或直接单击右上侧的Pin按钮。 2.双击TO栏的《new〉,在出现的的下拉栏中选择对应的端口信号名(如 D[0]);然后双击对应的栏的《new〉,在出现的下拉栏中选择对应的端口信号名的期间引脚号。 3.最后存储这些引脚锁定信息后,必须再编译(启动)一次,才能将引 脚锁定信息编译进编程下载文件中。 此后就可以准备将编译好的SOF文件下载 到实验系统的FPGA中去了。 图3.5引脚锁定图 3.3.6硬件测试 1.首先将下载线把计算机的打印机口与目标板(如开发板或实验板)连接好,打开电源,选择模式7。 2.打开编辑窗和配置文件。 选择,弹出一个编辑窗。 在Mode栏中选择 JTAG并在选项下的小方框打勾。 注意核对下载文件路径与文件名。 如果文件 没有出现或者出错,单击左Addfile侧按钮,手动选择配置文件 clock.sof。 3.最后单击下载标符Start,即进入对目标器件FPGA的配置下载操作。 当 Progress显示100%以及在底部的处理栏中出现ConfigurationSucceeded时,表示编程成功,如图所示。 注意,如果必要时,可再次单击Start,直至 编程成功。 4.下载完成后,通过硬件测试进一步确定设计是否达到所有的技术指标,如未达到,可逐步检查,哪部分出现问题。 如果是代码出现问题,须修改代码;若是时序波形图有问题,须重新设置。 3.3.7实验结果 实验箱使用模式7,键8为复位按键,键8为1时正常工作。 键4设置小时,键7设置分钟。 下载成功后,按下键8,及使六个LED复位清零,显示数秒的自动计时,可以通过4键设置小时数,7键设置分钟数。 当秒数满60则进一位,分钟数满60进一位,当显示为23: 59: 59时,秒数在加一则显示00: 00: 00,之后从新计时。 四、设计总结 五、附录 5.1VHDL源程序 Alert模块 LIBRARYIEEE USEIEEE.STD_LOGIC_1164.ALL USEIEEE.STD_LOGIC_UNSIGNED.ALL ENTITYalertIS PORT(clk: INSTD_LOGIC dain: INSTD_LOGIC_VECTOR(6DOWNTO0)speak: OUTSTD_LOGIC lamp: OUTSTD_LOGIC_VECTOR(2DOWNTO0))ENDalert。 ARCHITECTUREfunOFalertIS SIGNALcount: STD_LOGIC_VECTOR(1DOWNTO0) SIGNALcount1: STD_LOGIC_VECTOR(1DOWNTO0) BEGIN speaker: PROCESS(clk) BEGIN --speak<=count1 (1) IF(clk'eventandclk='1')THEN IF(dain="0000000")THEN speak<=count1 (1) IF(count1>="10")THEN count1<="00"--count1为三进制加法计数器 ELSE count1<=count1+1。 --speak<=count1(0)。 ENDIF ENDIF ENDIF ENDPROCESSspeaker lamper: PROCESS(clk) BEGIN IF(rising_edge(clk))THEN IF(count<="10")THEN IF(count="00")THENlamp<="001"。 --循环点亮三只灯ELSIF(count="01")THENlamp<="010。 "ELSIF(count="10")THENlamp<="100。 " ENDIF count<=count+1 ELSEcount<="00。 "ENDIF END。 ENDPROCESSlamper ENDfun。 Hour模块 LIBRARYIEEE useIEEE.STD_LOGIC_1164.ALL USEIEEE.STD_LOGIC_UNSIGNED.ALL ENTITYhourIS PORT(clk,reset: INSTD_LOGIC daout: outSTD_LOGIC_VECTOR(5DOWNTO0)) ENDENTITYhour ARCHITECTUREfunOFhourIS SIGNALcount: STD_LOGIC_VECTOR(5DOWNTO0) BEGINdaout<=count。 PROCESS(clk,reset) BEGIN IF(reset='O')THENcount<="OOOOO0"--若reset=0,则异步清零 ELSIF(clk'eventandclk='1')THEN否-则-,若clk上升沿到 IF(count(3DOWNTOO)="1OO1")THEN若个位计时恰好到"1001"即9IF(count<16#23#)THEN--2进3制 count<=count+7。 -若-到23D则 else count<="OOOOOO。 "-复-O END。 ELSIF(count<16#23#)THEN若未到23D,则count进1count<=count+1。 ELSE否则--清零 count<="OOOOOO。 " ENDIF--ENDIF(count(3DOWNTO0="1001") ENDIF。 --ENDI(Freset='O') ENDPROCESS ENDfun。 5.2配置符号图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 课程设计 方案 电子 时钟