




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
东 北 石 油 大 学EDA技术实践课程设计课 程 EDA技术实践课程设计 题 目 数字钟设计 院 系 电气信息工程学院电气系 专业班级 学生姓名 学生学号 指导教师 2014年 7月 25 日EDA技术实践课程设计任务书课程 EDA技术实践课程设计 题目 数字钟设计 专业 电气工程及其自动化 姓名 学号 主要内容:利用微机和Quartus软件系统,使用VHDL语言输入方法设计数字钟。可以利用层次设计方法和VHDL语言,完成硬件设计设计和仿真。基本要求:1.具有时,分,秒,计数显示功能,以24小时循环计时。2.具有清零功能。3.具有调节小时、分钟功能,当调节时,其它时间保持当前值不变。主要参考资料:1 黄正谨,徐坚等.CPLD系统设计技术入门与应用M.北京:电子工业出版社 2012.2 蒋璇,藏春花.数字系统技术与PLD应用技术M.北京:电子工业出版社,20013 潘松,王国栋.VHDL实用教程(修订版)M.成都:成都电子科技大学出版社,2001.4 王金明,杨吉斌.数字系统设计与Verilong HDLM. 北京:电子工业出版社,2002.5 王锁萍.电子设计自动化(EDA)教程M.成都:成都电子科技大学出版社,2000. 完成期限 2014.7.212014.7.25 指导教师 2014年 7 月18日目录1 设计12 方案选择与VHDL源程序代码12.1 顶层文件设计12.2秒计时器second模块32.3分计时器minute模块42.4时计时器hour模块63 数字钟的测试与运行73.1 数字钟的编译73.2 数字钟的仿真74 仿真分析方法实验与结果分析85 总结9参考文献101 设计1)计数部分:由两个60进制计数器和一个24 进制计数器组成,完成时、分、秒的正确计时并且显示所计的数字。2)时间设置:手动调节分钟、小时,通过实验板上的键3和键4对所设计的时钟任意调整。3)复位功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。该数字钟可以实现2个功能:计时功能和重置时间功能,因此有2个子模块:计时、重置时间(setmin、sethour)。其中计时模块有3部分构成:秒计时器(s)、分计时器(m)、时计时器(h)。2 方案选择与VHDL源程序代码2.1 顶层文件设计根据系统设计要求,系统设计采用自顶向下设计方法,由计时部分、按键部分、调时部分和显示部分四个部分组成。这些模块都放在一个顶层文件中,其代码如下:LIBRARY ieee;use ieee.std_logic_1164.all;entity clock_top isport (clk,reset,setmin,sethour:in std_logic;speaker:out std_logic;lamp:out std_logic_vector(2 downto 0);s:out std_logic_vector(6 downto 0);m:out std_logic_vector(6 downto 0);h:out std_logic_vector(5 downto 0) ;end clock_top;architecture a of clock_top issecond counterCOMPONENT secondPORT(clk, reset,setmin: INSTD_LOGIC;daout:out std_logic_vector(6 downto 0);enmin: OUTSTD_LOGIC);END COMPONENT;minute counterCOMPONENT minutePORT(clk, clk1,reset,sethour: INSTD_LOGIC;enhour: OUTSTD_LOGIC;daout:out std_logic_vector(6 downto 0);END COMPONENT;hour counterCOMPONENT hourPORT(clk, reset: INSTD_LOGIC;daout:out std_logic_vector(5 downto 0);END COMPONENT;alert counterCOMPONENT alertPORT(clk: INSTD_LOGIC;dain:in std_logic_vector(6 downto 0);lamp:out std_logic_vector(2 downto 0);speak: OUTSTD_LOGIC);END COMPONENT;signal enmin_re,enhour_re: std_logic;signal second_daout,minute_daout:std_logic_vector(6 downto 0);signal hour_daout:std_logic_vector(5 downto 0);beginu1: second port map(reset=reset,clk=clk,setmin=setmin,enmin=enmin_re,daout=s);u2:minute port map(clk=enmin_re,clk1=clk,reset=reset,sethour=sethour,enhour=enhour_re,daout=m);u3:hour port map(clk=enhour_re,reset=reset,daout=h);u4:alert port map(clk=clk,dain=minute_daout,speak=speaker,lamp=lamp);end a;2.2秒计时器second模块如下为秒计时器模块的VHDL源代码。其中,clk是时钟信号,reset是复位信号,setmin为分钟设置信号,enmin作为下一模块分钟设计的时钟信号,daout输出信号最后接在数码管上,得出实验要求的秒显示。实际上秒计时器是一个60进制的计数器,它从时钟脉冲接受脉冲信号,每当一个脉冲信号来时,秒就自动加1,这样,每计满60s,分钟就加1。LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk, reset,setmin : INSTD_LOGIC;enmin : OUTSTD_LOGIC;daout: out std_logic_vector (6 downto 0);END entity second;ARCHITECTURE fun OF second ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout = count; process ( clk , reset , setmin) begin - enmin=k; if (reset=0) then count = 0000000; -若reset为0,则异步清零 elsif (setmin=0) then enmin = clk; elsif (clk event and clk=1) then -否则,若clk上升沿到 if (count(3 downto 0)=1001) then -若个位计时恰好到1001即9 if (count 16#60#) then -又若count小于16#60#,即60 if (count=1011001) then -又若已到59D enmin=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 (count 16#60#) then -若个位计数未到1001则转此句再判 count = count+1; -若count16#60#则count加1 enmin=0 after 100 ns; -没有发生进位 else -否则,若count不小于16#60# count=0000000; -则count复0 end if; end if; end process;END fun;2.3分计时器minute模块如下为分计时器模块的VHDL源代码。其中,clk接秒模块中的enmin信号,reset同样是复位信号,sethour为调时信号,enhour作为下一模块小时的时钟信号,daout输出信号最后接在数码管上,得出实验要求的分显示。分计时器也是一个60进制的计数器,它从秒计时器的脉冲输出端接受脉冲信号。每当一个脉冲信号来时,分就自动加1,这样,每计满60分,小时就加1。LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY minute ISPORT(clk, clk1,reset,sethour : INSTD_LOGIC;enhour : OUTSTD_LOGIC;daout: out std_logic_vector (6 downto 0);END entity minute;ARCHITECTURE fun OF minute ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout = count; process ( clk,reset,sethour) begin if (reset=0) then -若reset为0,则异步清零 count = 0000000; elsif (sethour=0) then enhour = clk1; elsif (clk event and clk=1) then -否则,若clk上升沿到 if (count(3 downto 0)=1001) then -若个位计时恰好到1001即9 if (count 16#60#) then -又若count小于16#60#,即60 if (count=1011001) then -又若已到59D enhour=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; elsif(count 16#60#) then count = count + 1; -若count16#60#则count加1 enhour=0 after 100 ns; -没有发生进位 else count=0000000; -否则,若count不小于16#60# count复0 end if; end if; end process;END fun;2.4时计时器hour模块如下为时计时器模块的VHDL源代码。其中,clk接分模块中的enhour信号,reset是复位信号,daout输出信号最后接在数码管上,得出实验要求的时显示。时计时器是一个24进制的计数器,它从分组件的脉冲信号输出端接受脉冲信号,每当一个脉冲信号来时,时就自动加1,直到计满24,再将本身清零。LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY hour ISPORT(clk,reset: INSTD_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 (clk event and clk=1) then -否则,若clk上升沿到1 if (count(3 downto 0)=1001) then -若个位计时恰好到1001即9 if (count 16#24#) then -24进制 count=count + 7; else count=000000; end if; elsif(count 16#24#) then count = count + 1; else count”,所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际情况决定。然后单击屏幕右上脚的“OK”。在出现的小屏幕上单击“OK”。2设定仿真时间宽度。选择 Edit End time选项,在End time选择窗中选择适当的仿真时间域,以便有足够长的观察时间。3波形文件存盘。选择FileSave as选项,直接存盘即可。4运行仿真器。在菜单中选择项,直到出现,仿真结束。图3.2 数字钟的仿真结果图4 仿真分析方法实验与结果分析1具有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制。2设置复位、清零等功能。3有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间。5 总结时间过的好快,转眼间,为期一周的EDA技术实践课程设计就结束了。通过这周的课程设计,我拓宽了知识面,锻炼了能力,综合素质得到很大提高。21 世纪将是EDA 技术的高速发展阶段。随着科技的进步,电子产品的更新日新月异,EDA 技术作为电子产品开发研制的源动力,已成为现代电子设计的核心。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL有下列几种:VHDL、Verilog HDL、System Verilog和System C。其中VHDL、Verilog在现在EDA设计中使用最多,也得到几乎所有的主流EDA工具的支持。VHDL是电子设计主流硬件的描述语言之一,作为一个规范语言和建模语言,随着VHDL的标准化,出现了一些支持该语言的行为仿真器。到了20世纪90年代初,人们发现,VHDL不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将VHDL源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件。很快,电子设计领域出现了第一个软件设计工具,即VHDL逻辑综合器,它把标准VHDL的部分语句描述转化为具体电路实现的网表文件。课程设计发端之始,思绪全无,举步维艰。只能通过百度对数字钟课程设计报告的介绍以及相关的程序了解这次的设计任务。课程设计的过程中,由于对理论掌握的不熟练,或者是操作过程中发生失误,都会导致最后结果出不来。不断发现错误,不断改正,不断领悟,不断获取。最终在第多次调试下,终于成功。通过这次设计,进一步加深了对EDA的了解。设计数字钟,学会使用VHDL语言输入方法,熟悉了Quartus-II的使用。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,数字钟开始计数,但是始终看不到小时的循环计数。经过屡次调试,终于成功。总的来说,这次设计的数字钟还是比较成功的,在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对设计过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医疗器械行业医疗器械市场需求与发展前景分析报告
- 商场安全保卫培训内容课件
- 2025年量子计算行业发展趋势与应用前景研究报告
- 2025年云计算行业云计算技术应用前景分析报告
- 商场全员安全培训计划课件
- 2025年快递行业同城快递服务市场发展前景研究报告
- 包头市2025内蒙古包头铁道职业技术学院招聘8名工作人员笔试历年参考题库附带答案详解
- 上海市2025上海环境科学与工程系招聘仪器研发助理岗位1人笔试历年参考题库附带答案详解
- 2025济钢集团有限公司社会招聘(7人)笔试参考题库附带答案详解
- 2025江西格润新材料有限公司招聘操作工等岗位12人笔试参考题库附带答案详解
- 安置点管理制度
- 麻醉科职责及管理制度
- 教科版五年级上册科学期中测试卷附答案(夺分金卷)
- 药房管理规章制度目录
- 中职第1课 社会主义在中国的确立和探索试题
- 2025年辽宁省交投集团招聘笔试参考题库含答案解析
- 香港 信托合同范本
- 少先队活动课《民族团结一家亲-同心共筑中国梦》课件
- 阀门培训课件
- 《焦化机械设备维护检修标准》
- DB11∕T 899-2019 盆栽蝴蝶兰栽培技术规程
评论
0/150
提交评论