电子系统课程设计-基于EDA技术的数字时钟设计.doc

上传人:西安人 文档编号:5026122 上传时间:2020-01-29 格式:DOC 页数:21 大小:425.50KB
返回 下载 相关 举报
电子系统课程设计-基于EDA技术的数字时钟设计.doc_第1页
第1页 / 共21页
电子系统课程设计-基于EDA技术的数字时钟设计.doc_第2页
第2页 / 共21页
电子系统课程设计-基于EDA技术的数字时钟设计.doc_第3页
第3页 / 共21页
电子系统课程设计-基于EDA技术的数字时钟设计.doc_第4页
第4页 / 共21页
电子系统课程设计-基于EDA技术的数字时钟设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《电子系统课程设计-基于EDA技术的数字时钟设计.doc》由会员分享,可在线阅读,更多相关《电子系统课程设计-基于EDA技术的数字时钟设计.doc(21页珍藏版)》请在三一文库上搜索。

1、电子系统课程设计任务书设计题目:基于EDA技术的数字时钟设计设计目的:课程设计是一种复杂的学习实践过程。设计过程采用系统设计的方法,先分析任务,得到系统设计的要求,然后进行总体设计,划分子系统模块,然后进行详细设计,编写各个功能子系统VHDL代码并进行功能仿真,最后进行整个系统总装并仿真。设计内容:设计一个采用0.5英寸LED数码管显示的数字时钟系统,工作电源5V,它采用24小时制,具有“时”、“分”、“秒”显示,并且可以校正时间显示。设计要求:1. 由石英晶体多谐振荡器20MHz和分频器产生1Hz标准秒脉冲;(说明:EDA试验箱中晶振频率20MHz,经试验箱内一系列二分频可将频率降低,但无法

2、直接产生1Hz信号,需要大家根据实际情况编制分频器得到1Hz信号);2. 秒电路、分电路均为60进制计数,时电路为24进制计数;3. 数码管采用动态扫描方式;4. 能动手校时,校时模块功能可以自由发挥。比如可用两个按钮实现校时,A按钮控制调整项目,B按钮调整数字,B按钮还可以根据按下时间长短实现慢调、快调功能。也可以用三个按钮实现增减两个方向的手动校时。校时用按钮开关不能超过4个;5. 扩展内容:1)进入校时状态后,被调整数字以2Hz闪烁; 2)24/12小时可调,处于12小时制时,要有AM/PM显示; 3)所有开关加入防抖设计; 4)加入检测外部环境亮度功能,夜间自动降低数码管显示亮度; 5

3、)加入整点报时电路; 6)增加秒表功能; 7)增加报闹功能。6.以上电路功能除外部环境亮度检测电路外均由VHDL代码实现层次式设计,顶层电路可以采用EDA电路图。设计成果:1. 课程设计说明书,要求内容完整,图表完备,条理清楚,字迹工整,程序完整有相应的注解,仿真波形设计合理有必要的分析,引用资料要注明出处。2. 顶层电路原理图,各层电路VHDL代码及仿真波形。设计说明书目录一、前言二、任务分析和方案设计三、外部输入输出要求四、内部各功能模块 1)分频模块2) 秒计数模块SECOND3) 分计数模块MINUTE 4)时计数模块HOUR 5)整点报时功能模块ALERT 6)扫描模块SELTIME

4、 7)译码显示功能模块DISPLAY 8)按键防抖模块KEY五、系统顶层设计图六、各模块块程序七、心得体会参考文献基于EDA技术的数字时钟设计一前言 EDA简介EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编

5、程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。二任务分析和方案设计根据设计内容与要求知,本系统由分频模块(20MHz变为1Hz)、秒计数模块(六十进制)、分计数模块(六十进制)、时计数模块(二十四进制)、时间数据扫描分时选择模块和8421BCD到7段码的译码模块,再加上一个整点报时模块和按键防抖模块作为发挥部分。设计框图三、外部输入输出要求1.输入接口 代表清零,调时,调分信号RESET、SETHOUR、SETMIN的引脚分别接高电平、KEY1、KEY2;代表计数时钟信号CLK和扫描时钟信号CLKDSP的引脚分别同HZ时钟源和200HZ(或更高)

6、时钟源相连。.输出接口代表扫描显示驱动信号SEL2.0连到SEL2、SEL1、SEL0端,段码信号输出abcdefg连接到7段数码管的段码插口abcdefg端,小数点DP输出端同7段数码管的段码插口DP相连;代表扬声器驱动信号的引脚SPEAKER同扬声器驱动接口SPEAKER相连;代表花样LED灯显示的信号引脚LAMP2.0同3个LED灯相连。四、内部各功能模块:1) FREQ分频模块: 整点报时用的200Hz与时钟用的1Hz的脉冲信号,这里的输入信号是20MHz信号,所以要设计两个分频器,将20MHz变为1Hz、200Hz。程序见后面。例图为1000分频,输入为5MHz,输出为5KHz.2)

7、秒计数模块SECOND:60进制,带有进位和清零功能的,输入为1Hz脉冲和高电平有效的清零信号RESET。程序见后面。3)分计数模块MINUTE60进制,带有进位和置数功能的,输入为1Hz脉冲和高电平有效的使能信号EN。程序见后面。4)时计数模块HOUR:24进制,输入为1Hz脉冲和高电平有效的使能信号EN。程序见后面。5)整点报时功能模块ALERT:输入为分秒信号,输出为SPEAK信号。程序见后面。6)扫描模块SELTIME:输入为秒、分、时、扫描时钟CLK1,输出为DP和显示控制信号SEL。程序见后面。7)译码显示功能模块DISPLAY:输入为NUM,输出为LED。程序见后面。 8)按键防

8、抖模块KEY 输入为按键信号和20MHz的时钟信号,输出为CK信号。程序见后面。五、系统顶层设计图六、各模块程序1.分频器a(20MHZ分成1HZ)程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freq1 isport(clk:in std_logic;freout:out std_logic);end freq1;architecture behave of freq1 issignal full:std_logic;begin p1:process(clk) variabl

9、e cqi:std_logic_vector(23 downto 0); begin if clkevent and clk=1 then if cqi0); end if; end if; if cqi=9999999 then full=1; else full=0; end if; end process; p2:process(full)variable cnt1:std_logic;begin if fullevent and full=1 then cnt1:=not cnt1; if cnt1=1 then freout=1; else freout=0; end if; end

10、 if; end process;end behave;2.分频器b(20MHz分为200Hz)程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freq2 isport(clk:in std_logic;freout:out std_logic);end freq2;architecture fun of freq2 isbegin p1:process(clk) variable cq:std_logic_vector(17 downto 0); begin if clkeve

11、nt and clk=1 then if cq0); end if; end if; if cq=99999 then freout=1; else freout=0; end if; end process;end fun;由上面程序原理可得1000分频的波形图3.秒计数器LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second IS PORT( clk,reset,setmin:IN STD_LOGIC; enmin:OUT STD_LOGIC; daout:out std_

12、logic_vector(6 downto 0);END entity second;ARCHITECTURE fun OF second IS SIGNAL count:STD_LOGIC_VECTOR(6 downto 0); SIGNAL enmin_1,enmin_2:STD_LOGIC; enmin-1为59秒时进位信号 BEGIN enmin-2:由clk调制后的手动调分脉冲信号串 daout=count; enmin_2=(setmin and clk); setmin为手动分控制信号、高电平有效 enmin=(enmin_1 or enmin_2); enmin为向分进位信号

13、PROCESS(clk,reset,setmin)begin if (reset=0) then count=0000000; 若reset为0,则异步清零(即直接复0) elsif (clkevent and clk=1) then 否则,若clk上升沿到 if (count(3 downto 0)=1001) then 若个位计数值恰好到“1001” if(count16#60#) then 又若count小于16#60#(即X“60” ;即60H,为十六进制数写法) if (count=1011001) then 又若count已到59D enmin_1=1;count=0000000;

14、则置进位为1及count复0 else 若count未到59D count=count+7; 则加7,而+7=+1+6,即作“加6校正”,使前面16#60#的 end if; 个位转变为8421BCD的容量,即个位的最大值只能是1001了(注) else 若count不小于16#60#,(即count等于或大于16#60#) count=0000000; 则count复0(有此句,则对无效状态电路可自启动) end if; end if(count16#60#) elsif (count16#60#) then 若个位计数未达到“1001”则转到此句再判:否则若count16#60# coun

15、t=count+1; 则count加1 enmin_1=0 after 100 ns; 没有进位发生 else 否则,若count不小于16#60#(即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; 仿真波形图如下:4.分计数器LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_uns

16、igned.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;BEGIN daout=count; enhour_2=(sethour and c

17、lk1); enhour=(enhour_1 or enhour_2);process(clk,reset,sethour) begin if(reset=0)then count=0000000; elsif(clkevent and clk=1)then if(count(3 downto 0)=1001)then if(count16#60#)then if(count=1011001)then enhour_1=1; count=0000000; ELSE count=count+7; end if; else count=0000000; end if; elsif(count16#

18、60#)then count=count+1; enhour_1=0 after 100 ns; else count=0000000; end if; end if; end process;END fun;仿真波形如下图;5.小时文本LIBRARY ieee;use ieee .std_logic_1164.all;use ieee .std_logic_unsigned.all;ENTITY hour IS PORT( clk,reset:IN STD_LOGIC; daout:out std_logic_vector(5 downto 0);END entity hour;ARCHIT

19、ECTURE fun OF hour IS SIGNAL count:STD_LOGIC_VECTOR(5 downto 0);BEGIN daout=count; process(clk,reset) begin if(reset=0)then count=000000; elsif(clkevent and clk=1)then if(count(3 downto 0)=1001)then if(count16#23#)then count=count+7; else count=000000; end if; elsif(count16#23#)then count=count+1; e

20、lse count=000000; end if; end if; end process;END fun; 仿真波形如下图: 6.报警文本LIBRARY ieee;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;ARCHITEC

21、TURE fun OF alert IS signal count:std_logic_vector(1 downto 0); signal count1:std_logic_vector(1 downto 0);BEGINspeaker:process(clk) begin speak=10)then count1=00; -count1为三进制加法计数器 else count1=count1+1; end if; end if; end if; end process speaker;lamper:process(clk) begin if(rising_edge(clk)then if(

22、count=10)then if(count=00)then lamp=001; 循环点亮3只LED灯 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;7.时间数据扫描分时选择模块文本LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic

23、_arith.all;ENTITY seltime IS PORT( clk1,reset:IN STD_LOGIC; sec,min: IN STD_LOGIC_VECTOR(6 downto 0); hour:in std_logic_vector(5 downto 0); daout:OUT STD_LOGIC_vector(3 downto 0); dp:OUT STD_LOGIC; sel:out std_logic_vector(2 downto 0);END seltime;ARCHITECTURE fun OF seltime IS SIGNAL count:STD_LOGIC

24、_vector(2 downto 0);BEGIN sel=count; process(clk1,reset) begin if(reset=0)then count=101)then count=000; else countdaout=sec(3 downto 0);dpdaout(3)=0; daout(2 downto 0)=sec(6 downto 4); 送出秒十位 dpdaout=min(3 downto 0);dpdaout(3)=0; daout(2 downto 0)=min(6 downto 4); 送出分十位 dpdaout=hour(3 downto 0);dpda

25、out(3 downto 2)=00; 送出小时十位daout(1 downto 0)=hour(5 downto 4);dp=0; 小时十位的dp不点亮end case;end processend fun;8.译码器文本LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY deled IS PORT(num: IN std_logic_vector(3 downto 0); led: OUT std_logic_vector(6 downto 0);END deled;ARCHITEC

26、TURE fun OF deled ISBEGIN-abcdefgled=1111110 when num=0000 else 7段管显示0,led6.0=7EH 0110000 when num=0001 else 7段管显示1,led6.0=30H 1101101 when num=0010 else 7段管显示2,led6.0=6DH 1111001 when num=0011 else 7段管显示3,led6.0=79H 0110011 when num=0100 else 7段管显示4,led6.0=33H 1011011 when num=0101 else 7段管显示5,led6

27、.0=5BH 1011111 when num=0110 else 7段管显示6,led6.0=5FH 1110000 when num=0111 else 7段管显示7,led6.0=70H 1111111 when num=1000 else 7段管显示8,led6.0=7FH 1111011 when num=1001 else 7段管显示9,led6.0=7BH 1110111 when num=1010 else 7段管显示A,led6.0=77H 0011111 when num=1011 else 7段管显示b,led6.0=1FH 1001110 when num=1100 e

28、lse 7段管显示C,led6.0=4EH 0111101 when num=1101 else 7段管显示d,led6.0=3DH 1001111 when num=1110 else 7段管显示E,led6.0=4FH 1000111 when num=1111 ; 7段管显示F,led6.0=47HEND fun;9.按键A、B防抖程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity key isport(clk1,key1: in std_logic; ck1:out std_

29、logic);end entity key;architecture fun of key is signal tmp1:std_logic_vector(9 downto 0);beginprocess(clk1) begin if rising_edge(clk1) then tmp1(0)=key1;tmp1(9 downto 1)=tmp1(8 downto 0); if tmp1=1111111111 then ck1=1;else ck1=0; end if ; end if;end process;end fun;仿真波形为:七、心得体会论文的撰写过程是对所学的电子技术基本理论知

30、识的综合运用,对三年专业知识的一次综合应用、扩充和深化,也是对我们理论运用于实际设计的一次锻炼。通过毕业论文的撰写过程,我不仅温习了以前在课堂上学习的专业知识,同时我也得到了老师和同学的帮助,学习和体会到了电子技术的基本技能和思想。从开始接到论文题目到电路图的设计,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战。在这段时间里,我学到了很多知识也有很多感受。当然在做的过程中也遇到过很多的麻烦,一些没有接触过的元件,它们的封装需要自己去书籍、网上搜索,在更新的时候会有一些错误,自己很难改正,只得求助老师,最后得以解决。这次毕业设计使我开始了自主的学习和试验,查看相关的资料和书籍,让自己头脑

31、中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获,每一次的成功都会让我兴奋好一段时间。此次设计过程中,各种系统的适用条件,各种程序的选用标准,各种元件的安装方式,我都是随着设计的不断深入而不断熟悉并学会应用的。和老师的沟通交流更使我对设计有了新的认识也对自己提出了新的要求。课题设计过程中我不怕失败,在失败中总结经验,为成功积累素材;学着自我超越,敢于尝试,在尝试中进步,这对我能力的提高大有好处。设计中有太多的不懂和陌生,但是我会多看、多想、多问、多学,认真的对待每一次老师交代的任务,每一个任务都是一个锻炼的机会和成长的过程,我在规定的时间尽善尽美的完成,把自己

32、的能力发挥到最大限度。这些本是我工作后才会意识到的问题,通过这次毕业设计让我提前了解了这些知识,这是很珍贵的。这个课题设计的过程让我学习、工作的思路有了更为明朗的认识:它是站在一定高度上去工作的,眼界要放宽,思路要开阔,内容要饱满。我曾经也做过不少课程设计,但都是局限在课本中,而这次实验设计,能够让我走出来,仿佛推开门看见外面的世界是如此之大,如同井底之蛙跳上井沿过程中要有很好的团结合作意识和责任感,积极的参与到实验设计的讨论中去,学习和听取别人的意见,我也主动的发表意见,用一个积极上进、激情乐观的态度面对每一天的实验设计生活,让我的学习生活丰富多彩。非常感谢学院能给我们提供这样的一个可以自己

33、动脑、动手进行设计的机会,同时也大大加强了同学之间的沟通,以及学生与老师之间的交流,这是一个放飞自我的平台,也是我们理想与实际结合的升华,我想学院给我们提供的这些,教会我们的这些不仅仅在现在有用,对于我们今后步入社会也是同样有用的。目前我已经在一家公司实习了,我明显感到在社会上更加需要团体合作,以及自身的严谨作风。我在工作中不怕失败,在失败中总结经验,为成功积累素材;学着自我超越,敢于尝试,在尝试中进步,这对我能力的提高大有好处。这次做论文的经历也会使我终身受益,我感受到做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不

34、会有所突破,那也就不叫论文了。希望这次的经历能让我在以后工作中激励我继续进步。离开学校完成论文,是一个终点,又是另外一个起点!喝水不忘挖井人,我将铭记大家对我的帮助,以后更好的为人民为社会服务!在这个竞争激烈、物欲浮躁的社会,怀着一颗认真、平和的心,踏实的走好每一步,我相信我的未来就一定不是梦,也坚信这次课程设计将成为我一辈子的财富,其所折射出的光芒将照亮我的前程,成为我人生中的一道亮丽风景。参考文献1姜雪松,吴钰淳,王鹰1VHDL 设计实例与仿真M 1北京:机械工业出版社, 2007.1。2Stefan Sjohp lm,LennartL indh1VHDL设计电子线路M1边计年,薛宏熙,译1北京:清华大学出版社, 20001。3. 李国洪,沈明山.可编程器件EDA 技术与实践M.北京:机械工业出版社,20044.周红,刘光蓉,张红武. 利用MAX+ plus 进行数字逻辑课程设计J . 武汉工业学院学报,2004.4。

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

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1