收藏 分销(赏)

EDA专业课程设计基于VHDL语言的数字时钟设计.doc

上传人:精*** 文档编号:2658702 上传时间:2024-06-03 格式:DOC 页数:14 大小:684.04KB
下载 相关 举报
EDA专业课程设计基于VHDL语言的数字时钟设计.doc_第1页
第1页 / 共14页
EDA专业课程设计基于VHDL语言的数字时钟设计.doc_第2页
第2页 / 共14页
EDA专业课程设计基于VHDL语言的数字时钟设计.doc_第3页
第3页 / 共14页
EDA专业课程设计基于VHDL语言的数字时钟设计.doc_第4页
第4页 / 共14页
EDA专业课程设计基于VHDL语言的数字时钟设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、一、设计要求1二、设计原理及框图11、设计原理12、结构框图1三、 设计过程21、模块化设计22、顶层文件生成3四、仿真调试过程41、各模块时序仿真图42、仿真过程中碰到问题5五、设计体会及收获5一、设计要求1、稳定显示时、分、秒。2、当电路发生走时误差时,要求电路有校时功效。3、电路有整点报时功效。报时声响为四低一高,最终一响高音恰好为整点。二、设计原理及框图1、设计原理系统框图由六个模块组成,分别为:秒、分、时计数模块,整点报时模块,LED动态显示扫描模块,调时控制模块组成。其工作原理是:基准脉冲输入信号同时加到秒、分、时、分隔符脉冲输入端,采取并行计数方法,秒进位接到分使能端上,秒使能借

2、到分隔符使能上,分得接到时使能端上,完成秒、分、时和分隔符循环计数。整点报时是依据分A、B输出同时为0时,整点报时模块输出高电平控制报时。LED显示扫描模块依据输入扫描信号CKDSP轮番选通秒、分、时、分隔符8位八段数码管,LED显示译码器完成计数器输出BCD译码。显示模块2、结构框图调时控制模 块整点报时模 块数字时钟分计时模块时计时模块秒计时模块三、 设计过程1、模块化设计(1)秒计时模块秒计时模块由一个60位计数器为主体组成,其输入输出端口组成为:Clk:计时时钟信号Reset:异步清零信号Setmin:分钟设置信号Enmin:使能输出信号Daout6:0:BCD码输出(2)分计时模块分

3、计时模块由一个60位计数器为主体组成,其输入输出端口组成为:Clk、clk1:计时时钟信号Reset:异步清零信号Sethour:小时设置信号Enmin:使能输出信号Daout6:0:BCD码输出(3)时计时模块时计时模块由24位计数器为主体组成,其输入输出端口组成为:Clk:计时时钟信号Reset:异步清零信号Daout6:0:BCD码输出(4)显示模块系统时间输出由六个七段数码管显示。显示数据是各计时模块给出BCD码。(5)调时控制模块该模块关键用于调整时、分显示,用于“对表”。(6)整点报时模块在时钟整点时候产生扬声器驱动信号。由时钟计时模块中分钟进行信号进行控制。当contr_en 为

4、高电平时,将输入信号clk 送到输出端speak 用于驱动扬声器,同时在clk 控制下,输出端lamp2.0进行循环移位。输出控制模块有扬声器控制器子模块组成。2、顶层文件生成前面已经完成了电子时钟电路各个组成部分设计,下面把这些组成部分组装起来,形成完整总体设计。该电子时钟命名为clock,其外部端口如右图所表示。 各个输入/ 输出端口作用以下: (1) clk 为外部时钟信号,其频率为1Hz,reset 为异步清零信号. (2) sethour 和setmin分别为调时调分脉冲输入信号 ,当en_set为高电平时,每来一个sethour 脉冲或setmin脉冲,时、分输出将分别加1; (3

5、) second6.0为秒个位和十位BCD 码输出,min60为分钟个位和十位BCD 码输出,hour6.0为小时个位和十位BCD 码输出,它们最终中用来驱动七段数码管,lamp2.0为花样显示输出信号,speak 为整点报时扬声器驱动信号 四、仿真调试过程1、各模块时序仿真图(1)秒计数器仿真图(2)分计数器仿真图(3)时计数器仿真图(4)整点报时仿真图(5)调时调分仿真图(6)LED显示译码仿真图2、仿真过程中碰到问题(1)因为距离学习EDA技术课程时间较长,遗忘了部分课程内容,对仿真软件不熟悉造成数次仿真失败。就此问题我认真复习了所学EDA相关课程,根据书本上介绍步骤重新进行了仿真,问题

6、得以处理。(2)因为仿真过程中对各部分时序波形应采取什么样激励波形不清楚,给仿真过程带来了较大麻烦。经过查阅相关资料,阅读网上部分比较成熟论文,确定了仿真过程中相关参数。五、设计体会及收获此次课程设计我做出数字时钟能够正确进行整点报时,显示时间,不过对于调时调分功效不能正确显示。经过努力,简易电子时钟设计基础上算是完成了,在整个设计中,我最大体会就是:对学过知识遗忘太多。在此次课程设计中,我发觉了很多问题,同时做起来也极难不顺手,看着简单电路,要动手把它设计出来实非易事,关键原因对相关应用软件不熟悉,这就要求我们在以后学习中,应该注意复习关键性,对学过知识要时常复习,加深记忆,更关键是我们要学

7、会把从书本上学到知识和实际电路联络起来,这不管对我们以后学习还是就业,全部会起到很大促进和帮助。我相信,经过这次课程设计,在下一阶段学习中我们会愈加努力,努力争取把这门课学好学精。同时经过此次课程设计,巩固了我们以前学过专业知识,经过这次程序设计,使我们对数字系统结构也有了更深入了解和认识,同时对数据库软件技术,语言等系列知识全部有了一定了解和认识。使用技术开发页面能力也有了提升,也使我们把理论和实践从正真意义上结合了起来,考验了我们动手能力和查阅相关资料能力,还有组织材料能力。 经过此次实践,我们从中能够找出自己知识不足和欠缺,方便我们在以后学习中得以改善和提升。经过此次设计使我们对大学四年

8、期间所学习到知识得以深入实践,这将对我们走出校园,走向社会,走向工作岗位奠定坚实基础。附 录1、秒计数单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk,reset,setmin:IN STD_LOGIC;enmin:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END entity second;ARCHITECTURE fun OF second ISSIGNAL count:ST

9、D_LOGIC_VECTOR(6 downto 0);SIGNAL enmin_1,enmin_2:STD_LOGIC;BEGINdaout=count;enmin_2=(setmin and clk);enmin=(enmin_1 or enmin_2);process(clk,reset,setmin)beginif(reset=0) then count=0000000;elsif(clkevent and clk=1)thenif(count(3 downto 0)=1001)thenif(count16#60#)thenif(count=1011001)thenenmin_1=1;c

10、ount=0000000;elsecount=count+7;end if;elsecount=0000000;end if;elsif(count16#60#)thencount=count+1;enmin_1=0 after 100 ns;elseend if;end if;end process;end fun ;2、分计数单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY minute ISPORT(clk,clk1,reset,sethour:IN STD_LOGIC;

11、enhour:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END entity minute;ARCHITECTURE fun OF minute ISSIGNAL count:STD_LOGIC_VECTOR(6 downto 0);SIGNAL enhour_1,enhour_2:STD_LOGIC;BEGINdaout=count;enhour_2=(sethour and clk1);enhour=(enhour_1 or enhour_2);process(clk,reset,sethour)beginif(reset=0

12、)thencount=0000000;elsif(clkevent and clk=1)thenif(count(3 downto 0)=1001)thenif(count16#60#)thenif(count=1011001)thenenhour_1=1;count=0000000;ELSEcount=count+7;end if;elsecount=0000000;end if;elsif(count16#60#)thencount=count+1;enhour_1=0after 100 ns;elsecount=0000000;end if;end if;end process;END

13、fun;3、时计数单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY hour ISPORT(clk,reset: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);BEGINdaout=count;process(clk,reset)beginif(reset

14、=0)thencount=000000;elsif(clkevent and clk=1)thenif (count(3 downto 0)=1001)thenif(count=16#23#)thencount=count+7;elsecount=000000;end if;elsif(count16#23#)thencount=count+1;elsecount=000000;end if;end if;end process;END fun;4、显示单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigne

15、d.all;ENTITY deled ISPORT(num:IN std_logic_vector(3 downto 0);led:OUT std_logic_vector(6 downto 0);end deled;ARCHITECTURE fun OF deled ISBEGINled=1111110when num=0000else0110000when num=0001else1101101when num=0010else1111001when num=0011else0110011when num=0100else1011011when num=0101else1011111whe

16、n num=0110else1110000when num=0111else1111111when num=1000else1111011when num=1001else1110111when num=1010else0011111when num=1011else1001110when num=1100else0111101when num=1101else1001111when num=1110else1000111when num=1111;END fun;5、调时控制单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_l

17、ogic_unsigned.all;use ieee.std_logic_arith.all;ENTITY seltime ISPORT(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 selti

18、me ISSIGNAL count:STD_LOGIC_vector(2 downto 0);BEGINsel=count;process(clk1,reset)beginif(reset=0)thencount=101)thencount=000;elsecountdaout=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);d

19、pdaout(3 downto 2)=00;daout(1 downto 0)=hour(5 downto 4);dp=0;end case;end process;end fun;6、整点报时单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY alert ISPORT(clk:IN STD_LOGIC;dain:IN STD_LOGIC_VECTOR (6 DOWNTO 0);speak:OUT STD_LOGIC;lamp:OUT STD_LOGIC_VECTOR (2 DO

20、WNTO 0);END alert;ARCHITECTURE fun OF alert ISsignal coun:std_logic_vector (1 downto 0);signal count1:std_logic_vector (1 downto 0);BEGINspeaker:process(clk)beginspeak=10)thencount1=00;elsecount1=count1+1;end if;end if;end if;end process speaker;lamper:process(clk)beginif(rising_edge(clk)thenif(coun

21、=10)thenif(coun=00)thenlamp=001;elsif(coun=01)thenlamp=010;elsif(coun=10)thenlamp=100;end if;coun=coun+1;elsecoun=00;end if;end if;end process lamper;END fun;7、顶层代码library ieee;use ieee.std_logic_1164.all;entity clock_top isport(clk,reset,setmin,sethour,clkdsp:in std_logic;speaker:out std_logic;lamp

22、:out std_logic_vector(2 downto 0);sel:out std_logic_vector(2 downto 0);a,b,c,d,e,f,g,dpout:out std_logic);end clock_top;architecture a of clock_top isCOMPONENT secondPORT(clk,reset,setmin:IN STD_LOGIC;daout:out std_logic_vector(6 downto 0);enmin:OUT STD_LOGIC);END COMPONENT;COMPONENT minutePORT(clk,

23、clk1,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END COMPONENT;COMPONENT hourPORT(clk,reset:IN STD_LOGIC;daout:out std_logic_vector(5 downto 0);END COMPONENT;COMPONENT alertPORT(clk:IN STD_LOGIC;dain:in std_logic_vector(6 downto 0);lamp:out std_logic_vector

24、(2 downto 0);speak:OUT STD_LOGIC);END COMPONENT;COMPONENT seltimePORT(clk1,reset:IN STD_LOGIC;sec,min:in std_logic_vector(6 downto 0);hour:in std_logic_vector(5 downto 0);dp:out std_logic;daout:out std_logic_vector(3 downto 0);sel:OUT STD_LOGIC_vector(2 downto 0);END COMPONENT;COMPONENT deledPORT(nu

25、m:IN STD_LOGIC_vector(3 downto 0);led:out std_logic_vector(6 downto 0);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);signal seltime_daout:std_logic_vector(3 downto 0);signal ledout:std_lo

26、gic_vector(6 downto 0);begina=ledout(6);b=ledout(5);c=ledout(4);d=ledout(3);e=ledout(2);f=ledout(1);greset,clk=clk,setmin=setmin,enmin=enmin_re,daout=second_daout);u2:minute port map(clk=enmin_re,clk1=clk,reset=reset,sethour=sethour,enhour=enhour_re,daout=minute_daout);u3:hour port map(clk=enhour_re,reset=reset,daout=hour_daout);u4:alert port map(clk=clk,dain=minute_daout,speak=speaker,lamp=lamp);u5:seltime port map(clk1=clkdsp,reset=reset,sec=second_daout,min=minute_daout,hour=hour_daout,daout=seltime_daout,dp=dpout,sel=sel);u6:deled port map(num =seltime_daout,led=ledout);end a;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服