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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于VHDL的数字电子钟系统设计.docx

1、基于VHDL的数字电子钟系统设计集成电路软件设计基于VHDL的数字电子钟系统设计实验地点 实验时间 2012.12.19 学 院 信息工程学院 班 级 姓 名 学 号 成 绩 指导老师 2012 年 12 月 19 日数字电子钟的设计一、设计项目基于VHDL的数字电子钟系统设计二、设计要求1、采用自顶向下的设计思想;2、使用本学期学习的设计语言VHDL和集成电路设计软件实现;三、设计任务(设计指标)1、设计数字电子钟的基本功能:年、月、日、时以24小时制显示,月日为阳历显示,起始时间为:2012年11月26日14:00;2、支持闹铃功能;3、随时校时功能;4、闰年提醒;5、中国传统节假日提醒。

2、四、设计思想电子时钟是电子设计中用来显示时间和年月日的一种装置。是采用自顶向下的设计方法,将数字电子时钟分成五个子模块和一个顶层模块,然后将各个子模块再细化成为更小的功能块,直到最后能用vhdl语言进行描述为止。当各个模块都描述完成并仿真确认无误后,再采用元件例化,将各个元件一层一层的例化连接起来,直到最后完成系统设计。五、设计原理数字钟是一个将“ 时”,“年”,“月”,“日”显示于人的视觉器官的计时装置。它的计时周期分别为24小时,365天(非闰年),12个月,31天显示满刻度为2030年12月31日23时,另外应有闹钟报时、闰年提醒,中国传统节假日提醒等附加功能。因此,该数字钟电路主要由“

3、时”,“日”,“年”,“月”,计数器、闹钟报时电路和转换器组成,其中年月日是以万年的整体形式体现。时信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“时计数器”,“时计数器”采用24进制计数器,每累计24小时发出一个“分脉冲”信号,该信号将作为“万年历计数器”的时钟脉冲。万年历的年月日的输出端一方面输出显示,另一方面输入到闹钟中当作闹钟中的比较时间当输入的信息与设定好的一致时,响铃信号触发。并在万年历中制作出当有闰年或是中国传统节假日的时候发出高平的信号进行提醒。六、设计方案设计中使用的时元件例化和进程结合的方案。每个元件主要采用进

4、程语句实现,在每个进程主要使用了if_else、if_eslif_elsif_-_else 、case以及赋值语句,实现了模块化设计,使得整个程序一目了然。整个电子钟的顶层设计实体为dzz(电子时钟)模块,其下又分为:fenpin(分频)、shi(时脉冲)、万年历(年月日)、zhuanhuan(过渡转换)和naozhong(闹钟)五个模块。需要注意的是,在年月日模块中的日期模块对于2月份要按照平年闰年的情况分别处理。在年月日的模块中对于闰年和中国传统节假日的提醒也是分别处理的。7、各模块实现(一)分频模块分频器电路将20MHZ的高频方波信号经20M次分频后得到1Hz的方波信号供秒计数器进行计数

5、。分频器实际上也就是计数器。而本实验的计时模块、闹钟模块需要1hz、100hz的时钟信号,故需要加以分频实现所需信号。分频电路的模块化示意图如下:(分频器的顶层连接图) (分频器顶层文件的元件图)分频器的子模块10分频的网表文件 (网表文件)(10分频元件图)分频模块的仿真波形图 (2)计时模块由时计数器组成了最基本的数字钟计时电路,二十四进制计数器和满位之后的进位信号组合构成。其模块化电路示意图如下: 其中preset为使能端高电平有效,co为溢出信号,当时计数到24点的时候会在co处触发一个上升沿时钟供后面的万年历使用,保证使其工作。计时模块的仿真波形图:H_in为校时输入端(3)万年历模

6、块万年历的模块由年、月、日的整型计数形式组合而成,其中年是由2012计数到2030,月是一年12个月的计数,日的计数分为闰年和平年大月和小月的计数部分,当为闰年时2月份的天数为29,当为大月时日的计数为31,当为小月时日的计数为30,。由于需要显示年、月、日、星期、闰年,故本模块需要有判断是否闰年电路,闰年以及非闰年对应的月天数的译码电路,12进制BCD计数器(用来月循环计数),100进制BCD计数(用来年循环计数),故先画出万年历的模块图如下,然后逐模块设计实现。其模块的电路示意图如下:(网表文件)Preset为使能端,clk接在小时模块的co端口,data、month、year分别为日、月

7、、年的输出,co为中国传统节假日的提醒信号端,连接在外面的chuantong端口,tixing就是为闰年的提醒信号端口,起始的信号都为0当满足条件是则变为1可接在扬声器上。万年历模块的仿真波形图:D_in、m_in、y_in分别为日月年的校时输入端口,jiaoshi为校时控制端口其子模块日的仿真波形图为:其子模块月的仿真波形图为:其子模块年的仿真波形图为:(4)闹钟模块闹钟模块是由实时的小时模块和万年历模块时钟输入和手动设定的时、日、月、年模块组合成的满足当实时的时间与手动设定的时间相等时,闹钟就会输出一个使能信号使得扬声器发出声音。其模块化的电路示意图如下:(闹钟网表文件)Preset为使能

8、端口,高电平有效,hour、data、month、year为实时输入的时钟信号,shi、ri、yue、nian为外界输入的对于闹钟响铃时间的设定端口,music为响铃的使能端口。(5)过渡模块过渡模块是为了方便当万年历输出端口要为两个电路框图所使用的时候方便连接顶层文件中的中间信号,从而做到万年历中的时钟信号既可以连接到闹钟模块中,也可以连接到外部模块中显示出来。其模块化电路的示意图如下:其中preset为使能信号,hour、data、month、year为时钟输入的信号,连接中间信号。Shi、ri、yue、nian为输出的时钟信号用于外部显示的作用。也就是说当输入端输入什么信号的时候,输出端

9、就会输出相同的信号。(6)顶层模块(dzz模块)顶层模块是由前面的五个模块共同例化形成的,其模块化的电路示意图如下:A为时钟信号clk,vcc为接高电平,接在所有的preset端口,当电源连接时,数字之中开始工作,当断电的时候电子时钟不工作,vcc_m接在闹钟的控制端口中,及闹钟的开关,当开关未开时即vcc_m=0时闹钟不工作,当为1时闹钟正常工作,当闹钟响时调到低电平闹钟也停止工作。Naozhong_out为闹钟工作输出口,runnian为闰年提醒端口,chuantong为中国传统节假日的提醒端口,hour_out、data_out、month_out、year_out为时钟的显示在外部的端

10、口。电子钟的仿真波形文件如下:八、设计结果由上面的仿真波形图可知,本次实验基本上完成了实验设计任务的要求数字电子钟的基本功能:年、月、日、时以24小时制显示,月日为阳历显示,起始时间为:2012年11月26日14:00;支持闹铃功能;闰年提醒;中国传统节假日提醒。本次实验的数字电子钟的初值为2012年11月26日14时,闹钟的设定时间是2013年1月1日1时,犹如上图的波形所表现出来的一样。九、论文结论在本次的设计实验过程中出现很多的问题如编程时,经常导致语法错误,如:“;”没有写上,变量类型没有预先标明,前后变量名字由于缺少一个或多一个字母而导致出错。所以在写程序的时候应该对照错误,认真检查

11、程序,看哪个地方的标点,变量没有写上或标明。再者在进行编译或波形仿真时,经常得到的不是预想中的结果。而且往往得不出错误在哪里,编译的过程并没有错误但是结果却是错的,于是将就将需要编译或进行仿真的实体文件置顶,经检错无误后,进行波形仿真,在仿真之前合理设置仿真结束时间和信号周期,就可以了。在控制时间的显示的时候,由于变量太多多发现不能完全的控制住变量,导致仿真波形的是时候出现了高阻的状态,所以在顶层文件下应该减少变量,仔细推敲,合理命名。虽然只是一个小设计,我却也从中学到了不少设计流程和一些相关问题。设计是一个十分严谨的过程,容不得随意和马虎。要想快速而高效地完成一项设计,必须先有一个清晰明了的

12、设计思路,设想好一个整体框架,然后在此基础上,逐渐将各个部分功能进行完善。在设计的过程中,也曾遇到不少困难,但正所谓坚持就是胜利,要想取得成功,必须要有努力付出,这样所取得的结果才更有意义。附件(代码清单)10分频模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin10 isport (clk:in std_logic;- - 输入时钟信号clk_out:buffer std_logic);- -输出时钟信号end fenpin10;architecture rtl of

13、 fenpin10 issignal cnt:std_logic_vector(3 downto 0);- -定义计数器模值beginprocess (clk)beginif (clkevent and clk=1) thenif (cnt=0100) thenclk_out=not clk_out;cnt=0000;else cntclk,- - ? clk_out=clk_100hz);- - ?u1: fenpin10port map (clk_in=clk_100hz, - - ? clk_out=clk_10hz);- - - ?u2: fenpin10port map (clk_i

14、n=clk_10hz, - - ? clk_out=clk_1hz);- - - ?end rtl;分频器模块testbench文件LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY testbench IS END testbench; ARCHITECTURE a OF testbench ISsignal clk_1hz: std_logic;signal clk_100hz: std_logic;SIGNAL clk : std_logic := 1 ; COMPONENT fenpin port (clk:in std_logic;

15、clk_1hz,clk_100hz:buffer std_logic);END COMPONENT ; BEGINprocessbeginwait for 50ns;clk clk,clk_1hz=clk_1hz,clk_100hz=clk_100hz) ; END a;时模块library ieee;use ieee.std_logic_1164.all;entity shi isport(clk :in std_logic; preset : in std_logic; jiaoshi: in std_logic; h_in:in integer range 0 to 23;hour :

16、out integer range 0 to 23; co : out std_logic); end shi;architecture a of shi issignal s :integer range 0 to 23:=14; begin process(clk,preset) begin if preset =0 then s=14; elsif (clkevent and clk=1) then if s23 then s=s+1; else s=0; end if;if s=23 then co=1; else co=0; if jiaoshi=1 then s=h_in; els

17、if (clkevent and clk=1) then if s23 then s=s+1; else s=0; end if;if s=23 then co=1; else co=0; end if; end if ; end if; end if; end process; hour =s; end a;时模块Testbench文件LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY testbench IS END testbench; ARCHITECTURE a OF testbench IS SIGNAL hour : integ

18、er :=14 ; signal jiaoshi : std_logic:=0; signal h_in: integer:=14; signal co : std_logic:=0; SIGNAL preset : std_logic := 0 ; SIGNAL clk : std_logic := 1 ; COMPONENT shi port(clk :in std_logic; preset : in std_logic; jiaoshi: in std_logic; h_in:in integer range 0 to 23; hour : out integer range 0 to

19、 23; co : out std_logic); END COMPONENT ; BEGIN process begin wait for 50ns; clk = not clk; end process; process begin wait for 2000ns; jiaoshi=not jiaoshi; end process; preset jiaoshi, h_in=h_in, clk = clk, preset = preset, co = co, hour = hour) ; END a;万年历模块library ieee; use ieee.std_logic_1164.al

20、l; use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity wannianli is port( preset:in std_logic; clk:in std_logic;jiaoshi:in std_logic;d_in:in integer range 1 to 31;m_in:in integer range 1 to 12;y_in:in integer range 2012 to 2030;data: out integer range 1 to 31;month:out integer range

21、1 to 12; year:out integer range 2012 to 2030;tixing:out std_logic;co:out std_logic); end wannianli; architecture a of wannianli is signal yue:integer range 1 to 12:=11; signal nian:integer range 2012 to 2030:=2012; signal ri:integer range 1 to 31:=26; signal qm:integer range 28 to 31; begin process(

22、yue,nian) begin case yue is when 1=qm if(nian mod 4)=0 and (nian mod 100)/=0) or (nian mod 400)=0) then qm=29; else qmqm qmqmqmqmqmqmqmqmqmnull; end case ; end process; process(clk,preset) begin if preset=0 then yue =11 ; nian=2012; ri=26; else if (nian mod 4)=0 and (nian mod 100)/=0) or (nian mod 4

23、00)=0) then tixing=1; else tixing=0; end if; if (yue=5 and ri=1) or (yue=10 and ri=1 ) or (yue=1 and ri=1) or (yue=8 and ri=15) or (yue=1 and ri=15) then co=1; else co=0; end if; if clkevent and clk=1 then if(ri=qm) then ri=1; if(yue=12)then yue=1;nian=nian+1; else yue=yue+1; end if; elsif(riqm) the

24、n ri=ri+1; if jiaoshi=1 then ri=d_in;yue=m_in;nian=y_in; elsif clkevent and clk=1 then if(ri=qm) then ri=1; if(yue=12)then yue=1;nian=nian+1; else yue=yue+1; end if; elsif(riqm) then ri=ri+1; end if; end if; end if; end if; end if; end process; month=yue; year=nian; data=ri; end a; 万年历testbench文件LIB

25、RARY ieee ; USE ieee.std_logic_1164.all ;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all; ENTITY testbench IS END testbench; ARCHITECTURE a OF testbench IS SIGNAL preset : std_logic := 0 ; SIGNAL clk : std_logic := 1 ; signal co: std_logic; SIGNAL tixing:std_logic; signal jiaoshi:std_lo

26、gic:=1; SIGNAL d_in: integer range 1 to 31:=2; SIGNAL m_in: integer range 1 to 12:=2; SIGNAL y_in: integer range 2012 to 2030:=2013; signal yue:integer range 1 to 12:=11; signal nian:integer range 2012 to 2030:=2012; signal ri:integer range 1 to 31:=26; COMPONENT wannianli port( preset:in std_logic;

27、 clk:in std_logic; jiaoshi:in std_logic:=1; d_in:in integer range 1 to 31; m_in:in integer range 1 to 12; y_in:in integer range 2012 to 2030; data: out integer range 1 to 31; month:out integer range 1 to 12; year:out integer range 2012 to 2030; tixing:out std_logic; co:out std_logic); END COMPONENT ; BEGIN process begin wait for 50ns; clk = not clk; end process; process begin jiaoshi=not jiaoshi ; wait for 3

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

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