版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录摘要及关键字2abstract2一. 设计要求2二. 总体方案设计3 三.各子模块设计原理 31.计秒模块32.计分模块53.计时模块64.校准模块75.显示模块96.报时模块127.分频模块138.去抖动模块15四. 硬件下载与测试161.硬件下载162.测试173.功能扩展17五.结论17参考文献18 数字电子钟的设计摘要及关键字: 数字电子钟是生活中最常用的电子设备之一,其主要功能是能够显示时、分、秒实时信息,并能够方便地进行时、分、秒的初始值设置,以便时间校准。实现数字电子钟有很多方法,本课程是采用vhdl硬件语言的强大描述能力和eda工具的结合在电子设计领域来设计一个具有多功能
2、的数字电子钟。关键字: 数字电子钟vhdl硬件语言eda工具abstract: digital electric clock in life are the most commonly used one of the electronic equipment. its main function is to display, minutes and seconds real-time information and can be easily when carried out, minutes and seconds, so that the initial value is set time
3、 calibration. there are many methods of design digital electric clock.this course is a powerful by vhdl hardware language describe ability and eda tools in electronic design field with versatile to design a digital electric clock .key work: digital electric clockvhdl hardware language eda tools一 设计要
4、求:1. 设计一个电子钟能够显示时,分,秒;24小时循环显示。2. 电子钟有校时,校分,清零,保持和整点报时的功能,具体如下:(1) 数字钟最大计时显示23:59:59 。(2) 在数字钟正常工作时可以对数字钟进行快速校时、校分,即拨动开关k1可以对小时进行校正,拨动开关k2可以对分进行校正。(3) 在数字中正常工作情况下可以对其进行不断地复位,即拨动开关k3可以是时,分,秒显示回零。(4) 在数字钟正常工作时拨动开关k4可以使数字钟保持原有显示,停止计时。(5) 整点报时是要求数字钟在每小时整点到来前进行鸣叫,鸣叫频率是在59:53, 59:55, 59:57 为1khz,59:59为2kh
5、z。3. 要求所有开关具有去抖动功能。利用开发工具quartus ii 7.0并结合硬件描述语言vhdl,采用层次化的方法进行设计,要求设计层次清晰,合理;构成整个设计的功能可以采用原理图输入或文本输入法实现。4. 通过开发工具quartus ii 7.0对设计电路进行功能仿真。5. 将仿真通过的逻辑电路下载到eda试验系统,对其功能进行验证。二 总体方案设计:从设计要求可以对其进行层次化设计,将所要设计的多功能数字钟分层6个模块:(1) 计时模块: 包括两个模60的计数器(计秒与计分)和一个模24的计数器(计时)。(2) 清零,保持模块: 此模块功能是可以在计时模块直接嵌入即利用计数器的清零
6、、保持 功能就可以实现。 (3) 校准模块: 其对时、分进行校正。(4) 显示模块: 将数字钟在数码管上显示。(5) 整点报时模块: 由两部分组成,一部分选择报时时间(59:53, 59:55, 59:57,59:59),一部分选择报时频率(1khz,2khz)。(6) 分频模块: 电子钟的激励源要求的是稳定1hz,而试验台提供48mhz的时钟,所以要设计一个分频器将48mhz进行分频得到1hz。(7) 防抖动模块:因为设计中有使用到开关,而对机械开关而言出现抖动现象 会导致系统误差甚至不能正常工作。所以在设计中要求有去抖动电路。将数字钟的各功能模块级联,生成顶层电路,实现总体设计要求,设计框
7、图如下图所示:计时模块显示模块报时模块清零保持校时校分分频模块 三 各子模块设计原理:1. 计秒模块: 是一个模60的计数器,具有计时、保持、清零的功能。采用vhdl硬件语言编写,程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity second isport(clk: in std_logic;rst: in std_logic;en: in std_logic;qout1: out std_logic_vector
8、(3 downto 0);qout2: out std_logic_vector(3 downto 0);co: out std_logic);end second;architecture behav of second issignal tem1: std_logic_vector(3 downto 0);signal tem2: std_logic_vector(3 downto 0);beginprocess(clk,rst)beginif(en=1)thentem1=tem1;tem2=tem2;elsif(rst=0)thentem1=0000;tem2=0000;elsif(cl
9、kevent and clk=1)thenif tem1=1001 thentem1=0000;if tem2=0101 thentem2=0000;co=1;elsetem2=tem2+1; co=0;end if;elsetem1=tem1+1;end if;end if;qout1=tem1;qout2=tem2;end process;end behav;其仿真波形图如下:封装图为:2. 计分模块:本质上是跟计秒模块一样,也是模60 的计数器,具有计数、保持、清零功能。程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.st
10、d_logic_unsigned.all;use ieee.std_logic_arith.all;entity minute isport(clk: in std_logic;rst: in std_logic;en: in std_logic;qout1: out std_logic_vector(3 downto 0);qout2: out std_logic_vector(3 downto 0);co: out std_logic);end minute;architecture behav of minute issignal tem1: std_logic_vector(3 dow
11、nto 0);signal tem2: std_logic_vector(3 downto 0);beginprocess(clk,rst)beginif (en=1)thentem1=tem1;tem2=tem2;elsif(rst=0)thentem1=0000;tem2=0000;elsif(clkevent and clk=1)thenif tem1=1001 thentem1=0000;if tem2=0101 thentem2=0000;co=1;elsetem2=tem2+1; co=0;end if;elsetem1=tem1+1;end if;end if;qout1=tem
12、1;qout2=tem2;end process;end behav;仿真波形图如下:封装图为:3. 计时模块:是一个模24的计数器,vhdl的程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity hour isport(clk: in std_logic;rst: in std_logic;en: in std_logic;qout1: out std_logic_vector(3 downto 0);qout2:
13、out std_logic_vector(3 downto 0);co: out std_logic);end hour;architecture behav of hour issignal tem1: std_logic_vector(3 downto 0);signal tem2: std_logic_vector(3 downto 0);beginprocess(clk,rst)beginif (en=1)thentem1=tem1;tem2=tem2;elsif(rst=0)thentem1=0000;tem2=0000;elsif(clkevent and clk=1)thenif
14、 (tem2=0010 and tem1=0011) thentem1=0000;tem2=0000;co=1;elseco=0;if(tem1=1001)then tem1=0000; tem2=tem2+1;elsetem1=tem1+1;end if;end if;end if;qout1=tem1;qout2=tem2;end process;end behav;仿真波形图如下:封装图为:4. 校准模块:在正常情况下,分的输入时钟clk信号是由秒的进位输出给的,而时的输入时钟clk信号由分进位输出信号给的。当要进行校准时可以直接将2hz的时钟信号(从分频器直接分出来)送到分或时的输入时
15、钟clk端上,这样就可以快速的进行对电子钟的分或时校准。因此采用vhdl语言实现,程序代码如下:(1) 校时:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jiaoshi isport(clk: in std_logic;clk_2h: in std_logic;key: in std_logic;en: out std_logic;co: out std_logic);end jiaoshi;architecture be
16、hav of jiaoshi issignal tem: std_logic;signal x: std_logic;beginprocess(key)beginif(key=0) thenx=0;tem=clk;elsex=1;tem=clk_2h;end if;co=tem;en=x;end process;end behav;其封装图为:(2) 校分:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jiaofen isp
17、ort(clk: in std_logic;clk_2h: in std_logic;key: in std_logic;co: out std_logic);end jiaofen;architecture behav of jiaofen issignal tem: std_logic;beginprocess(key)beginif(key=0) thentem=clk;elsetem=clk_2h;end if;co=tem;end process;end behav;其封装图为:5. 显示模块:采用动态显示方法,其动态扫描频率为1mhz。显示模块包括一个6选1数据选择器(其从计数模块
18、输出的6个输出选1个送出显示)和一个译码器(其对6选1数据选择器的输出信号进行译码送至数码管上显示)。用vhdl硬件语言实现即程序代码如下:(1) 6选1数据选择器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sel isport(clk: in std_logic;rst: in std_logic;qin1: in std_logic_vector(3 downto 0);qin2: in std_logic_vect
19、or(3 downto 0);qin3: in std_logic_vector(3 downto 0);qin4: in std_logic_vector(3 downto 0);qin5: in std_logic_vector(3 downto 0);qin6: in std_logic_vector(3 downto 0);qout: out std_logic_vector(3 downto 0);sel: out std_logic_vector(7 downto 0);end sel;architecture behav of sel isbeginprocess(clk,rst
20、)variable cnt: integer range 0 to 5;beginif(rst=0) then cnt:=0;sel=00000000;qoutqout=qin1;selqout=qin2;selqout=qin3;selqout=qin4;selqout=qin5;selqout=qin6;selqout=0000;sel=11111111;end case;end if;end process;end behav;仿真波形:例如显示23:15:39其从仿真波形结果可看知所设计的是正确的。其封装图为:(2) 4-7译码器:library ieee;use ieee.std_l
21、ogic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity decode47 isport(qin: in std_logic_vector(3 downto 0);qout: out std_logic_vector(7 downto 0);end decode47;architecture behav of decode47 isbeginwith qin selectqout=00000011 when 0000, 10011111 when 0001, 00100101 when 0
22、010, 00001101 when 0011, 10011001 when 0100, 01001001 when 0101, 01000001 when 0110, 00011111 when 0111, 00000001 when 1000, 00011001 when 1001, 00000011 when others;end behav;其封装图为:6. 报时模块:由设计要求电子钟在每小时到来前进行报时:59:53, 55:55,59:57 鸣叫频率为1khz;59:59鸣叫频率为2khz,从而可以很容易采用vhdl语言编写程序实现,代码如下: library ieee;use i
23、eee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity bell isport(clk_1k: in std_logic;clk_2k: in std_logic;qin1: in std_logic_vector(3 downto 0);qin2: in std_logic_vector(3 downto 0);qin3: in std_logic_vector(3 downto 0);qin4: in std_logic_vector(3 downto 0);bel
24、: out std_logic);end bell;architecture behav of bell issignal temp: std_logic;beginprocess(qin1,qin2,qin3,qin4)beginif(qin4=0101 and qin3=1001 and qin2=0101)thenif(qin1=0011or qin1=0101 or qin1=0111)thentemp=clk_1k;elsif(qin1=1001)thentemp=clk_2k;end if;else temp=0;end if;bel=temp;end process;end be
25、hav;封装图如下:7. 分频模块:因为设计中要有很多不同的频率:1hz的提供给计时模块;2hz供给校准用;1khz、2khz供给蜂鸣器报时用;1mhz用来实现动态显示。而试验台只有唯一一个48mhz的基准时钟,所以要对其进行分频其将48mhz分成1hz、2hz、1khz、2khz、1mhz。用vhdl就可以很方便的实现分频,程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fenpin isport(clk: i
26、n std_logic; clk_1hz: out std_logic;clk_2hz: out std_logic;clk_1khz: out std_logic;clk_2khz: out std_logic;clk_1mhz: out std_logic);end fenpin;architecture behav of fenpin issignal clk_1: std_logic;signal clk_2: std_logic;signal clk_1k: std_logic;signal clk_2k: std_logic;signal clk_1m: std_logic;beg
27、inprocess(clk)variable count1: integer range 0 to 24;begin if (clkevent and clk=1) then if count1=23 thencount1:=0;clk_1m= not clk_1m; elsecount1:=count1+1; end if; end if;clk_1mhz=clk_1m;end process;-1mhzprocess(clk_1m)variable count2: integer range 0 to 250;beginif (clk_1mevent and clk_1m=1) then
28、if count2=249 thencount2:=0;clk_2k= not clk_2k; elsecount2:=count2+1; end if; end if;clk_2khz=clk_2k;end process;-2khzprocess(clk_1m)variable count3: integer range 0 to 500;beginif (clk_1mevent and clk_1m=1) then if count3=499 thencount3:=0;clk_1k= not clk_1k; elsecount3:=count3+1; end if; end if;cl
29、k_1khz=clk_1k;end process;-1khzprocess(clk_1k)variable count4: integer range 0 to 250;beginif (clk_1kevent and clk_1k=1) then if count4=249 thencount4:=0;clk_2= not clk_2; elsecount4:=count4+1; end if; end if;clk_2hz=clk_2;end process;-2hzprocess(clk_1k)variable count5: integer range 0 to 500;begini
30、f (clk_1kevent and clk_1k=1) then if count5=499 thencount5:=0;clk_1= not clk_1; elsecount5:=count5+1; end if; end if;clk_1hz=clk_1;end process;-1hzend behav;封装图如下:8. 去抖动模块:因为机械开关的抖动现象对系统产生误差,甚至使不能正常工作,所以要适当地在开关和电路之间加入一个去抖动模块以防止机械开关所引起的不良影响。采用锁存器就可以很方便地设计去抖动电路,如图下所示。因为设计中一共有4开关所以采用两片7474,每片包括两个d锁存器,7474输出端的qn是开关信号稳定状态。封装图如下所示:将上面所有各功能模块进行级联,生成顶层电路,实现了总体设计要求。在开发工具quartus ii 7.0的顶层电路图如图所示:四 硬件下载与测试:1. 硬件下载:利用quartus ii 7.0进行各个模块设计,然后将这些模块按所需要的功能连接,经编译,进行芯片配置管脚。配置管脚如图所示:再经编译无误就可以进行硬件下载。2. 验证:当开关k1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告公司自由职业者合同模版
- 合同补充协议签订汇报
- 高中历史第三章第二次世界大战3.5二战伤亡人数统计文本素材北师大版选修3
- 2025届高考地理一轮复习第十五章区域发展与区域联系36产业转移-以东亚为例学案新人教版
- 2025届高考历史一轮复习模块一政治文明历程专题一古代中国的政治制度第2讲走向“大一统”的秦汉政治学案人民版
- 2024外墙涂料施工合同范本
- 2024餐饮店铺转让合同文档模板
- 2024新版销售代理合同范本
- 2024全屋定制合同
- 2024户外广告经营权的转让合同
- 三级数学下册 面积1 沪教
- 圆面积公式的推导优秀课件
- 科学实验:磁悬浮课件
- 六病区护理创新 改良冰敷袋课件
- 海康威视-视频监控原理培训教材课件
- 冲电桩-物业同意安装证明-范本
- 船舶电子电气英语考试题库(含答案)
- 2021年中国盐业集团有限公司校园招聘笔试试题及答案解析
- 输煤系统配煤优化qc成果报告运行四值
- 投标货物项目实施方案
- 幼儿园中班科学《中国茶》课件
评论
0/150
提交评论