VHDL课程设计(数字钟)_第1页
VHDL课程设计(数字钟)_第2页
VHDL课程设计(数字钟)_第3页
VHDL课程设计(数字钟)_第4页
VHDL课程设计(数字钟)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录1. 设计任务及要求.022. 设计原理.023. 设计过程.02 3.1. 设计思路.02 3.2. 数字钟的设计方案.03 3.2.1. 编码模块.03 3.2.2. 分频模块.03 3.2.3. 秒计时模块.03 3.2.4. 分计时模块.03 3.2.5. 小时计时模块.03 3.2.6. 报时模块.034. 源程序.03 4.1. 数字钟整体程序.03 4.2. VHDL 及波形分析.03 4.2.1. VHDL 程序.03 4.2.2. 仿真波形.065. 硬件测试.07 5.1. 引脚设置.07 5.2. 配置文件下载.08 5.3. 硬件调试.086. 心得体会.09数字

2、钟的VHDL设计1. 设计任务及要求:设计任务:设计一台能显示时、分、秒的数字钟。具体要求如下:(1) 由实验箱上的时钟信号经分频产生秒脉冲;(2) 计时计数器用24进制计时电路;(3) 可手动校时,能分别进行时、分的校正;(4) 整点报时;(5) 选做:可设置闹时功能,当计时计到预定时间时,扬声器发出闹铃信号,闹铃时间为4s,并可提前终止闹铃。设计要求:(6) 采用VHDL语言描述系统功能,并在QUARTUS II工具软件中进行仿真,下载到EDA实验箱进行验证。(7) 编写设计报告,要求包括方案选择、程序代码清单、调试过程、测试结果及心得体会。(8) 设计时间和地点:两个星期,信息楼4楼ED

3、A实验室。2. 设计原理时显示器秒显示器分显示器时译码器秒译码器分译码器报时时计数器分计数器秒计数器校时电路 1HZ分频器振荡器图1 数字钟的系统框图该系统由振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等组成。石英晶体振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。“时、分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对“时、分、秒”进行校

4、对调整。整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后去触发音频发生器实现报时。 3. 设计过程3.1. 设计思路时钟脉冲信号作为数字钟的时间基准,再经分频器输出标准秒脉冲。秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器是计满24后,系统自动复位重新开始计数。计数器的输出经译码电路后送到显示器显示。可以用校时电路进行校时。整点报时电路在每小时的最后50秒开始报时间隔一秒报一次时直至下一小时开始。3.2. 数字钟的设计方案数字钟的设计包括编码模块、分频模块、秒计时模块、分计时模块、小时计时模块和报时模块。该数字钟可以实现3个功能:计时功能、报时功能和设

5、置时间功能。3.2.1. 编码模块编码模块主要是对时(sethour)、分(setmin)、秒(setsec)的设置输入。3.2.2. 分频模块在数字钟的设计中,外部输入时钟信号clk1的频率为8hz,其分频后的频率为clk,使其分频结果为1hz,用来提供给秒计时模块、分计时模块、小时计时模块。3.2.3. 秒计时模块将“秒计时脉冲”clk接信号源单元的1HZ脉冲信号,此时秒显示将从00计时到59,然后回到00,重新计时。在秒位进行计时的过程中。秒计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中rst为置数信号,当rst为1时,秒计时器置数。clk为驱动秒计时器的时钟,sec1、

6、sec0为秒计时器的高位和低位输出。3.2.4. 分计时模块分计时电路:将“分计时脉冲”clk接信号源单元的1HZ脉冲信号,此时分显示将从00计时到59,然后回到00,重新计时。在分位进行计时的过程中。分计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中rst为置数信号,当rst为1时,分计时器置数。min1、min0为分计时器的高位和低位输出。3.2.5. 小时计时模块将“小时计时脉冲”clk接信号源单元的1HZ脉冲信号,此时小时显示将从00计时到24,然后回到00,重新计时。时计时器是由一个24进制的计数器构成的,具有置数和计数功能。其中的rst为置数信号,当rst为1时,时计

7、时器置数。hr1、hr0为时计时器的高位和低位输出。3.2.6, 报时模块当分位到59时,秒位计到51秒、53秒、55秒、57秒、59秒时报时一次,而后小时位加1。4. 源程序4.1. 数字钟整体程序整个程序分为六个部分,分别为分频部分、校时部分、秒部分、分部分、小时部分和报时部分。4.2. VHDL程序及波形分析4.2.1. VHDL程序library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity clock is port(clk1,rst,setsec,setmin,sethour:in

8、std_logic; sec1,sec0,min1,min0,hr1,hr0:buffer std_logic_vector(3 downto 0); speaker:out std_logic);end entity;architecture one of clock is signal tmp,clk:std_logic; begin p0:process(clk) -分频注释见variable count :std_logic_vector(1 downto 0);beginif(clk1event and clk1=1) then if(count=10) then count:=(o

9、thers=0); tmp=not tmp; else count:=count+1; end if;end if;end process p0;clk=tmp; p1:process(clk,rst,setsec,setmin,sethour)-校时注释见 variable s1,s0,m1,m0,h1,h0:std_logic_vector(3 downto 0); begin if clkevent and clk=1 then if rst=1 then if setsec=1 then s0:=s0+1;if s0=1010 then s0:=0000; s1:=s1+1; if s

10、1=0110 then s1:=0000; end if;end if; end if; if setmin=1 then m0:=m0+1; if m0=1010then m0:=0000; m1:=m1+1;if m1=0110 then m1:=0000;end if; end if; end if; if sethour=1 then h0:=h0+1; if h0=1010 then h0:=0000; h1:=h1+1; if h0=0100and h1=0010 then h0:=0000;h1:=0000;end if;end if; end if; else s0:=s0+1

11、;-秒,分、时的计时注释见 if s0=1010 then s0:=0000; s1:=s1+1;if s1=0110then s1:=0000; m0:=m0+1; if m0=1010 then m0:=0000; m1:=m1+1; if m1=0110 then m1:=0000;h0:=h0+1; if h0=1010 then h0:=0000;h1:=h1+1; if h0=0100and h1=0010then h1:=0000;h0:=0000; end if; end if;end if; end if;end if;end if;end if;sec0=s0;sec1=s

12、1;min0=m0;min1=m1;hr0=h0;hr1=h1;end if;if clk1event and clk1=1 then -报时注释见if m1=0101 and m0=1001 and s1=0101 then if s0=0001 or s0=0011 or s0=0101 or s0=0111 or s0=1001 then speaker=1; else speaker=0; end if; end if; end if;end process;end architecture one;注释:分频模块:根据EDA技术与VHDL中的实验47数控分频器的设计设计,其功能就是当

13、在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,而本实验用count从0010就使输入的时钟信号做一次翻转,从而到达了8分频的效果。校时功能:当将rst值1时,就可以通过外部按键对秒、分、时进行校准,setsec,setmin,sethour是分别实现校时的信号,可实现对秒、分、时的加1操作,且满足当秒计到59时分能进1,分计到59时小时能进1.计时部分:计时就是一个计数器,秒和分是从00到59,小时是从00到24,它们之间的计数是有前提的,即只有当秒计到59时分才能加1,分计到59时小时才能加1,当小时计时到24后,则回到00。报时功能:当分为59,秒到51开始每隔一秒让扬声器

14、响一次。4.2.2. 仿真波形设置仿真时间为1ns,end time为50us,以使其有足够长的时间反应各个输出信号的变化。设置rst为低电平,即外部不能校时,可以看到秒低位sec0从0到9后,秒高位sec1加1,sec1从0加到5,分和小时类似。当51秒,53秒,55秒,57秒,59秒时speaker有一个高电平,即发声一次。5. 硬件测试5.1. 引脚设置选择电路系统的电路模式7,引脚分配分别为:主频时钟clk1接clock2(第17引脚);setsec、setmin、sethour分别接键1、键4、键7、(PIO0、PIO3、PIO6分别对应第1、4、7脚);rst接键5(PIO4对应第

15、5脚);sec1【3.0】由数码管2显示,分别接PIO23、PIO22、PIO21、PIO20(对应第50、49、48、47脚)、sec0【3.0】由数码管1显示,分别接PIO19、PIO18、PIO17、PIO16(对应第42、41、40、39脚);min1【3.0】由数码管5显示,分别接PIO31、PIO30、PIO29、PIO28(对应第72、71、70、69脚);min0【3.0】由数码4来显示,分别接PIO27、PIO26、PIO25、PIO24(对应第68、67、52、51脚);hr1【3.0】由数码管8显示,分别接PIO39、PIO38、PIO37、PIO36(对应第84,83、

16、78、77脚);hr0【3.0】由数码管7显示,分别接PIO35、PIO34、PIO33、PIO32(对应第76、75、74、73脚);speaker由D8显示,接PIO47(对应第106脚);5.2 配置文件下载将编译产生的SOF格式配置进FPGA中,打开编程窗和配置文件,将实验系统和并口通信线连接好,打开电源。在菜单TOOL中选择programmer,单机下载标符start按钮,即进入对目标器件FPGA的配置下载操作。5.3硬件调试配置文件下载成功后,选择电路模式No.7,clock2选择8HZ。 上电后,秒满59向分进1后又从00开始计数,分满59向小时进1后从00开始计数,小时满24从00开始计数。按键5(rst)后,计时停止,可以用键7、4、1分别对小时、分、秒进行重新设置时间数码管显示为设置的新时间,再按键5(rst)后,系统就再设置的时间上开始计数。当时间到59分51、53、55、55、59秒时,输出报时信号。6、心得体会实验分频部分由于在上学期学习时对这一实验的原理了解并不是很深,所以在设计分频程序时不知如何下手,通过对实验书的数控分频器的设计实验的研究写出的一个8分频的程序,即对输入的时钟信

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论