ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:376.75KB ,
资源ID:7720961      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7720961.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA课程设计方案数字时钟.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EDA课程设计方案数字时钟.docx

1、EDA课程设计方案数字时钟Hefei UniversityEDA课程设计报告设计题目:数字时钟设计专 业:自动化(2)班姓 名:李宏灶学 号:0805070110指导老师:康南生前 言随着基于PLD的EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益提高。作为现在的大学生应熟练掌握这门技术,为以后的发展打下良好的基础,本实验设计是应用QuartusII环境及VHDL语言设计一个时间可调的数字时钟。使自己熟练使用QuartusII环境来进行设计,掌握VHDL语言的设计方法。要注重理论与实践之间的不同,培养自己的实践能力!目录一、课程设计任务及

2、要求31.1实验目的31.2功能设计4二、整体设计思想42.1性能指标及功能设计42.2总体方框图5三、详细设计53.1数字钟的基本工作原理:53.1.1时基T 产生电路53.1.2调时、调分信号的产生53.1.3计数显示电路63.2设计思路63.3设计步骤73.3.1工程建立及存盘73.3.2工程工程的编译73.3.3目标芯片的选择83.3.4时序仿真93.3.5引脚锁定113.3.6硬件测试123.3.7实验结果13四、设计总结13五、附录145.1 VHDL源程序145.2配置符号图18一、课程设计任务及要求1.1实验目的1)掌握VHDL语言的基本运用2)掌握QuartusII的简单操作

3、并会使用EDA实验箱3)掌握一个基本EDA课程设计的操作1.2功能设计1)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制以24小时循环计时2)设置复位、清零等功能3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间4)时钟计数显示时有LED灯显示;二、整体设计思想2.1性能指标及功能设计1)时、分、秒计时器 时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。当秒计时器接受到一个秒脉冲时,秒计数器开始从1计数到60,此时秒显示器将显示00、01、02、.、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,

4、其显示器将显示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 产生电路数字钟以其显示时间

5、的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz的、非常稳定的计数时钟脉冲。3.1.2调时、调分信号的产生由计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。现在我们把电路稍做变动:把秒计数器的进位脉冲和一个频率为2Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0

6、),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。调节小时的时间也一样的实现。3.1.3计数显示电路由计数部分、数据选择器、译码器组成,是时钟的关键部分。1、计数部分:由两个60进制计数器和一个24 进制计数器组成,其中60 进制计数器可用6 进制计数器和10 进制计数器构成;24 进制的小时计数同样可用6 进制计数器和10 进制计数器得到:当计数器计数到24 时,“2”和“4”同时进行清零,则可实现24 进制计数

7、。2、数据选择器:84 输入14 输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号)。3、译码器:七段译码器。译码器必须能译出,由实验二中译码器真值表可得:字母F 的8421BCD 码为“1111”,译码后为“1000111”,现在如果只译出,即字母F的中间一横,则译码后应为“0000001”,这样,在数码管上显示的就为。3.2设计思路根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。这些模块都放在一个顶层文件中。1)时钟计数:首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。sethour可

8、以调整时钟的小时部分, setmin可以调整分钟,步进为1。由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这里取100Hz。CLK端连接外部10Hz的时钟输入信号clk。对clk进行计数,当clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT( 6 DOWNTO 0 )上的信号来点亮指定的LED七段显示数码管。2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整

9、,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。3.3设计步骤3.3.1工程建立及存盘1打开 Quartus,单击“File”菜单,选择 FileNew Project Wizard,对话框如下:分别输入工程的工作路径、工程名和实体名,单击Finish。2.单击“File”菜单,选择New,弹出小对话框,双击“VHDL File,即选中了文本编辑方式。在出现的“Vhdl1.vhd”文本编辑窗中键入VHDL程序,输入完毕后,选择FileSave As,即出

10、现“Save As”对话框。选择自己建立好的存放本文件的目录,然后在文件名框中键入文件名,按“Save”按钮。3.建立工程工程,在保存VHDL文件时会弹出是否建立工程的小窗口,点击“Yes”确定。即出现建立工程工程的导航窗口,点击“Next”,最后在出现的屏幕中分别键入新工程的工作路径、工程名和实体名。注意,原理图输入设计方法中,存盘的原理图文件名可以是任意的,但VHDL程序文本存盘的文件名必须与文件的实体名一致,输入后,单击“Finish”按钮。3.3.2工程工程的编译单击工具条上的编译符号开始编译,并随着进度不断变化屏幕,编译完成后的屏幕如图所示:3.3.3目标芯片的选择选择菜单 Assi

11、gnments 选项的下拉菜单中选择器件 Device ,如图所示:在弹出的对话框中的 Family(器件序列栏)对应的序列名,EP1C3 对应的是 Cyclone 系列。在 Available Devices里选择 EP1C3T144-C8 (有时需要把 Show advanced devices的勾消去,以便显示出所有速度级别的器件)。注意:所选器件必须与目标板的器件型号完全一致。在图中,单击“Device and Pin Options”,在弹出的“Device and Pin Options”窗口中,单击“Unused Pins”标签。选择“As output driving an u

12、nspecified signal ”(由于学习机的“FPGA”具有很多功能,为了避免使用引脚对其它器件造成影响,保证本系统可靠工作,将未使用引脚设定为输出不定状态)后,单击确定后,无误后单击“OK”。3.3.4时序仿真建立波形文件:选择 FileNew,在New窗中选中“Other File”标签。在出现的屏幕中选择“Vector Waveform File”项出现一新的屏幕。在出现的新屏幕中,双击“Name”下方的空白处,弹出“Insert Nod or Bus”对话框,单击该对话框的“Node Finder”。在屏幕中的 Filter 中选择 Pins,单击“List”。而后,单击“”,

13、所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际情况决定。然后单击屏幕右上脚的 “OK”。在出现的小屏幕上单击“OK”。 设定仿真时间宽度。选择 Edit End time选项,在End time选择窗中选择适当的仿真时间域,以便有足够长的观察时间。波形文件存盘。选择FileSave as 选项,直接存盘即可。运行仿真器。在菜单中选择项,直到出现,仿真结束。未曾编辑的仿真波形仿真波形3.3.5引脚锁定将设计编程下载进选定的目标器件中,如EPF10K10,作进一步的硬件测试,将设计的所有输入输出引脚分别与目标器件的EPF10K10的部分引脚相接,

14、操作如下:1选择 Assignments Assignments Editor ,即进入 Assignments Editor编辑器。在Category 栏选择 Pin,或直接单击右上侧的 Pin 按钮。2双击 TO 栏的new,在出现的的下拉栏中选择对应的端口信号名(如 D0);然后双击对应的栏的new,在出现的下拉栏中选择对应的端口信号名的期间引脚号。3最后存储这些引脚锁定信息后,必须再编译(启动 )一次,才能将引脚锁定信息编译进编程下载文件中。此后就可以准备将编译好的 SOF 文件下载到实验系统的FPGA中去了。引脚锁定3.3.6硬件测试1.首先将下载线把计算机的打印机口与目标板(如开发

15、板或实验板)连接好,打开电源,选择模式7。2.打开编辑窗和配置文件。选择,弹出一个编辑窗。在Mode栏中选择JTAG,并在选项下的小方框打勾。注意核对下载文件路径与文件名。如果文件没有出现或者出错,单击左Add file侧按钮,手动选择配置文件 clocksof。3.最后单击下载标符Start,即进入对目标器件 FPGA 的配置下载操作。当 Progress 显示100%,以及在底部的处理栏中出现 Configuration Succeeded 时,表示编程成功,如图所示。注意,如果必要时,可再次单击 Start ,直至编程成功。4下载完成后,通过硬件测试进一步确定设计是否达到所有的技术指标,

16、如未达到,可逐步检查,哪部分出现问题。如果是代码出现问题,须修改代码;若是时序波形图有问题,须重新设置。3.3.7实验结果实验箱使用模式7,键8为复位按键,键8为1时正常工作。键4设置小时,键7设置分钟。下载成功后,按下键8,及使六个LED复位清零,显示数秒的自动计时,可以通过4键设置小时数,7键设置分钟数。当秒数满60则进一位,分钟数满60进一位,当显示为23:59:59时,秒数在加一则显示00:00:00,之后从新计时。四、设计总结通过这次课程设计,我进一步加深了对电子设计自动化的了解。并进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上

17、存在的不足。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对数字时钟原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。在此,也感谢康老师的悉心指导,使自己学到了很多东西!五、附录5.1VHDL源程序Alert模块LIBRARY IE

18、EE。USE IEEE.STD_LOGIC_1164.ALL。USE IEEE.STD_LOGIC_UNSIGNED.ALL。ENTITY alert IS PORT(clk:IN STD_LOGIC。 dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0)。 speak:OUT STD_LOGIC。 lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)。END alert。ARCHITECTURE fun OF alert IS SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0)。 SIGNAL count1:STD_L

19、OGIC_VECTOR(1 DOWNTO 0)。 BEGIN speaker:PROCESS(clk) BEGIN -speak=count1(1)。 IF(clkevent and clk=1)THEN IF(dain=0000000)THEN speak=10)THEN count1=00。-count1为三进制加法计数器 ELSE count1=count1+1。 -speak=count1(0)。 END IF 。 END IF 。 END IF 。 END PROCESS speaker。 lamper:PROCESS(clk) BEGIN IF(rising_edge(clk)TH

20、EN IF(count=10)THEN IF(count=00)THENlamp=001。-循环点亮三只灯ELSIF(count=01)THEN lamp=010。 ELSIF(count=10)THEN lamp=100。 END IF。 count=count+1。 ELSE count=00。 END IF。 END IF。 END PROCESS lamper。END fun。Hour模块LIBRARY IEEE。use IEEE.STD_LOGIC_1164.ALL。USE IEEE.STD_LOGIC_UNSIGNED.ALL。ENTITY hour IS PORT(clk,res

21、et:IN STD_LOGIC。 daout:out STD_LOGIC_VECTOR(5 DOWNTO 0)。END ENTITY hour。ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0)。 BEGIN daout=count。 PROCESS(clk,reset) BEGIN IF(reset=0)THEN count=000000。 -若reset=0,则异步清零 ELSIF(clkevent and clk=1)THEN -否则,若clk上升沿到 IF(count(3 DOWNTO 0)=1001

22、)THEN -若个位计时恰好到1001即9 IF(count16#23#)THEN -23进制 count=count+7。 -若到23D则 else count=000000。 -复0 END IF。 ELSIF (count16#23#)THEN -若未到23D,则count进1 count=count+1。 ELSE -否则清零 count=000000。 END IF。 -END IF(count(3 DOWNTO 0)=1001) END IF。 -END IF(reset=0) END PROCESS。END fun。Minute模块LIBRARY IEEE。USE IEEE.ST

23、D_LOGIC_1164.ALL。USE IEEE.STD_LOGIC_UNSIGNED.ALL。ENTITY minute IS PORT(clk,clk1,reset,sethour:IN STD_LOGIC。 enhour:OUT STD_LOGIC。 daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)。END ENTITY minute 。ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0)。 SIGNAL enhour_1, enhour_2: STD_LOGIC。

24、 -enmin_1为59分时的进位信号 BEGIN -enmin_2由clk调制后的手动调时脉冲信号串 daout=count。 enhour_2= (sethour and clk1)。 -sethour为手动调时控制信号,高电平有效 enhour= (enhour_1 or enhour_2)。 PROCESS(clk,reset,sethour) BEGIN IF(reset=0) THEN -若reset为0,则异步清零 count=0000000。 ELSIF(clkevent and clk=1)THEN -否则,若clk上升沿到 IF(count (3 DOWNTO 0) =10

25、01)THEN-若个位计时恰好到1001即9 IF(count 16#60#) THEN -又若count小于16#60#,即60 IF(count=1011001) THEN-又若已到59D enhour_1=1。 -则置进位为1 count=0000000。 -count复0 ELSE count=count+7。 -若count未到59D,则加7,即作加6校正 END IF。 -使前面的16#60#的个位转变为8421BCD的容量 ELSE count=0000000。-count复0(有此句,则对无效状态电路可自启动) END IF。 -END IF(count16#60#) ELSI

26、F (count 16#60#) THEN count=count+1。 -若count16#60#则count加1 enhour_1=0 after 100 ns。 -没有发生进位 ELSE count=0000000。 -否则,若count不小于16#60# count复0 END IF。 -END IF(count(3 DOWNTO 0)=1001) END IF。 -END IF(reset=0) END process。END fun。Second模块LIBRARY IEEE。USE IEEE.STD_LOGIC_1164.ALL。USE IEEE.STD_LOGIC_UNSIGNE

27、D.ALL。ENTITY second ISPORT( clk,reset,setmin:STD_LOGIC。 enmin:OUT STD_LOGIC。 daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)。END ENTITY second。ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0)。SIGNAL enmin_1,enmin_2:STD_LOGIC。 -enmin_1为59秒时的进位信号 BEGIN -enmin_2由clk调制后的手动调分脉冲信号串 daout=coun

28、t。 enmin_2=(setmin and clk)。 -setmin为手动调分控制信号,高电平有效 enmin=(enmin_1 or enmin_2)。 -enmin为向分进位信号 PROCESS(clk,reset,setmin) BEGIN IF(reset=0)THEN count=0000000。 -若reset为0,则异步清零 ELSIF(clk event and clk=1)then -否则,若clk上升沿到 IF(count(3 downto 0)=1001)then -若个位计时恰好到1001即9 IF(count16#60#)then -又若count小于16#60#

29、,即60H IF(count=1011001)then -又若已到59D enmin_1=1。count=0000000。-则置进位为1及count复0 ELSE -未到59D count=count+7。 -则加7,而+7=+1+6,即作加6校正 END IF。 ELSE -若count不小于16#60#(即count等于或大于16#60#) count=0000000。 -count复0 END IF。 -END IF(count16#60#) ELSIF(count16#60#)then -若个位计数未到1001则转此句再判 count=count+1。 -若count16#60#则count加1 enmin_1=0after 100 ns。 -没有发生进位 ELSE -否则,若count不小于16#60# count=0000000。 -则count复0 END IF。 -END IF(count(3 DOWNTO 0)=1001) END IF。 -END IF(reset=0)END PROCESS。END fun。5.2配置符号图

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

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