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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

vhdl数字时钟设计.docx

1、vhdl数字时钟设计数字时钟设计一、题目分析1、功能介绍1) 具有时、分、秒计数显示功能,以 24小时循环计时2) 时钟计数显示时有LED灯的花样显示。3) 具有调节小时、分钟及清零的功能。4) 具有整点报时功能。2、总体方框图3、性能指标及功能设计1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分60进制计数,即从0到59循环计数,时钟一一24进制计数,即从0到23循环计数,并且在数码管上显示数值。2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样 使数字钟真正具有使用功能。我们可以通过实验板上的键 7 和键 4 进行任意 的调整,因为我们用的时钟信号均是1

2、HZ的,所以每LED灯变化一次就来一 个脉冲,即计数一次。3) 清零功能: reset 为复位键,低电平时实现清零功能,高电平时正常计数。 可以根据我们自己任意时间的复位。4) 蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答 .滴答”的报警声 音。5) LED灯在时钟显示时有花样显示信号产生。即根据进位情况, LED不停的 闪烁,从而产生“花样”信号。二、选择方案1、方案选择方案一:根据总体方框图及各部分分配的功能可知, 本系统可以由秒计数器、 分钟计数器、小时计数器、 整点报时、分的调整以及小时的调整和一个顶层文件 构成。采用自顶向下的设计方法,子模块利用 VHDL语言设计,顶层文件用

3、原理 图的设计方法。显示:小时采用 24 进制,而分钟均是采用 6 进制和 10 进制的 组合。方案二:根据总体方框图及各部分分配的功能可知, 本系统可以由秒计数器、 分钟计数器、小时计数器、 整点报时、分的调整以及小时的调整和一个顶层文件 构成。采用自顶向下的设计方法,子模块利用 VHDL语言设计,顶层文件用原理 图的设计方法。显示:小时采用 24 进制,而分钟和秒均 60 进制终上所述,考虑到试验时的简单性,故我选择了方案二三、细化框图根据自顶向下的方法以及各功能模块的的功能实现上述设计方案应系统细化框图:四、编写程序、仿真和分析1、秒计数器1)VHDL语言描述程序见附录2)秒计数器的仿真

4、波形图Master 1 me b it: 17.H25 ns Fohter3O5Z us Ifltet: JUbus: startEnl AHan锂17 6229.71 us 30.35 us 30 951 1 HLLS 3 . 63 UE32.21 us132elkB IjuwLrLrLruuLnjLnrjwuuuwwLmnrLrLrjuiresetB带MinS 1冒临inB I iiigaiiIjH噜3H CTFl 1 I II 1 1 1 1 II 1M h li 1 W h 丨 i3)波形分析利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来 一个时钟脉冲则产生进位

5、输出,即 enmin=1 ; reset作为复位信号低电平有效, 即高电平时正常循环计数,低电平清零。因为这种 60进制的VHDL语言是很好写的,它并不复杂,再说我们必须要学会这些基本的硬件语言的描写。2、分钟计数器1) VHDL语言描述程序见附录2) 分钟计数器的仿真波形图3)波形分析小时计数模块利用24进制计数器,通过分钟的进位信号的输入可实现从 00到23的循环计数。3、小时计数器1) VHDL语言描述程序见附录2) 小时计数器的仿真波形图3)波形分析小时计数模块利用24进制计数器,通过分钟的进位信号的输入可实现从 00 到23的循环计数4、整点报时报警模块1)VHDL语言描述程序见附录

6、2)整点报时模块仿真波形图1) 波形分析由图知对于整点报时模块,当分钟计数至59时来一个时钟脉冲则产生一个进位信号,分钟计数到00,此时产生报警信号持续一分钟。当有时钟脉冲时 lamp 显示灯就闪烁轮续点亮。五、全系统联调1、数字时钟系统原理图2、数字时钟系统波形图仿真六、附录(源程序)1、小时计数器 VHDL语言源程序(底层文件)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_LOGI

7、C_VECTOR(5 DOWNTO 0); END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINdaout=count;PROCESS(clk,reset)count=000000;END IF; END IF( count ( 3 DOWNTO 0 ) =“1001 ”) END IF; END IF(reset= 0)END PROCESS;END fun;2、分钟计数器 VHDL 语言源程序(底层文件)LIBRARY IEEE;USE IEEE.STD_LOGI

8、C_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute ISPORT(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 ISSIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0);SIGNAL enhour_1, enhour_2: STD_LOGIC; enmin_1 为

9、 59 分时的进位信号BEGIN enmin_2 由 clk 调制后的手动调时脉冲信号串 daout=count;enhour_2= (sethour and clk1); sethour 为手动调时控制信号,高电平有效 enhour= (enhour_1 or enhour_2);PROCESS(clk,reset,sethour)BEGIN IF(reset=0) THEN 若 reset 为 0,则异步清零count=0000000;ELSIF(clkevent and clk=1)THEN 否则,若 clk 上升沿到IF(count (3 DOWNTO 0) =1001)THEN 若个

10、位计时恰好到“ 1001 ”即9IF(count 16#60#) THEN 又若 count 小于 16#60# ,即 60IF(count=1011001) THEN 又若已到 59D enhour_1=1; 则置进位为 1 count=0000000; count 复 0ELSEcount=count+7; 若count未到59D,则加7,即作加6校正”END IF; 使前面的 16#60# 的个位转变为 8421BCD 的容量ELSEcount=0000000; count 复 0(有此句,则对无效状态电路可自启动)END IF; END IF( count16#60# )ELSIF (

11、count 16#60#) THENcount=count+1; 若 count16#60# 则 count 加 1 enhour_1=0 after 100 ns; 没有发生进位ELSEcount=0000000; 否则,若 count 不小于 16#60# count 复 0END IF; END IF(count (3 DOWNTO 0 )= “1001” )END IF; END IF( reset= 0)END process;END fun;3、秒钟计数器 VHDL 语言源程序(底层文件)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IE

12、EE.STD_LOGIC_UNSIGNED.ALL;ENTITY second ISPORT( clk,reset,setmin:STD_LOGIC;enmin:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC; enmin_1 为 59 秒时的进位信号BEGIN enmin_2 由 clk 调制

13、后的手动调分脉冲信号串daout=count;enmin_2=(setmin and clk); setmin 为手动调分控制信号,高电平有效 enmin=(enmin_1 or enmin_2); enmin 为向分进位信号PROCESS(clk,reset,setmin)BEGINIF(reset=0)THEN count=0000000; 若 reset 为 0,则异步清零ELSIF(clk event and clk=1)then 否则,若 clk 上升沿到IF(count(3 downto 0)=1001)then 若个位计时恰好到“ 1001”即9IF(count16#60#)th

14、en 又若 count 小于 16#60#, 即 60HIF(count=1011001)then 又若已到 59Denmin_1=1;count=0000000; 则置进位为 1 及 count 复 0ELSE 未到 59Dcount=count+7; 则加 7 ,而+7=+1+6 ,即作“加6 校正”END IF;ELSE 若 count 不小于 16#60# (即 count 等于或大于 16#60# )count 复 0END IF( count16#60# ) 若个位计数未到“ 1001 ”则转此句再判 若 count16#60# 则 count 加 1没有发生进位4、整点报时报警模

15、块 VHDL 语言源程序(底层文件) 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 DOWNTO 0);END alert;ARCHITECTURE fun OF alert ISSIGNAL count:STD_LOGIC_VECTOR(1 DOWN

16、TO 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)BEGINIF(rising_edge(clk)THENIF(count=10)THENIF(count=00)THENlamp=001; 循环点亮三只灯ELSIF(count=01)THEN lamp=010;ELSIF(count=10)THEN lamp=100; END IF;count=count+1;ELSEcount=00;END IF;END IF;END PROCESS lamper;END fun;

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

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