版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验13 自动打铃系统第二次实验自动打铃系统(14)姓名: 曹刚 学号: 1228401082 班级:12电子信息工程 一 实验目的1、综合运用EDA技术,完成自动打铃系统的设计与操作;2、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用技巧;3、通过本实践环节,培养科学和严谨的工作作风。二 实验要求1.用6个数码管实现时,分、秒的数字显示;2.能设置当前时间;3.能实现上、下课打铃及起床铃、熄灯铃功能;4.能实现整点报时功能,并能控制启动和关闭;5.能实现调整打铃时间和间歇长短的功能;三 实验设计说明根据设计要求,可以将自动打铃系统的划分为以下几个模块
2、: 1.状态机:系统有多种显示模式,设计中将每种模式当成一种状态,采用用状态机来进行模式切换,将其作为系统的中心控制模块;2.计时调时模块:用于完成基本的数字钟功能;3.打铃时间设定模块:系统中要求打铃时间可调,此部分功能相对独立,单独用一个模块实现;4.打铃长度设定模块:用以设定打铃时间的长短;5.显示控制模块:根据当前时间和打铃时间等信息决定当前显示的内容;6.打铃控制模块:用于控制铃声音乐的输出;7.分频模块、分位模块、七段数码管译码模块等;以上各模块可用下图表示其间的联系。按键状态机计时调时模块打铃时间设定模块打铃长度设定模块显示控制及打铃控制模块七段数码管译码电路七段数码管铃声音乐控
3、制模块闪烁指示信号模块启动信号与按键调节信号等当前时间打铃时间铃声长度打铃指示信号等四 实验原理用层次化设计的方法以VHDL语言编程实现以下功能:【1】 具有“时”、“分”、“秒”计时功能;时为24进制,分和秒都为60进制。【2】 具有消抖功能:手工按下键盘到是否这个过程大概50ms左右,在按下开始到弹簧片稳,定接触这段时间为5-10ms,从释放到弹片完全分开也是5-10ms,在达到稳定接触和完全分开的微观过程中,电平是时高时低的,因此如果在首次检测到键盘按下时延时10ms再检测就不会检测到抖动的毛刺电平了。64Hz的信号周期为15.6ms,正适合做消抖信号。【3】 具有校时和清零功能,能够用
4、4Hz脉冲对“小时”和“分”进行调整,并可进行秒清零;【4】 具有整点报时功能。在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。【5】 具有一键设定闹铃及正常计时与闹铃时间的显示转换。闹时时间为一分钟。【6】 具有学校的上下课铃,熄灯铃的功能,并且可以控制打铃时间的长短。总体的设计框图如下图 自动打铃系统总体设计框图五 实验模块1.时钟模块设计:时钟模块是学校打铃器最基本的模块,主要实现基本计时、调时、调分功能,包括秒计数模块、分计数模块、时计数模块。 秒计数模块:如图所示为秒计数模块符
5、号图。输入端口clr是秒计数模块的清零信号,也是整个数字中的使能信号,低电平有效; clk是秒脉冲输入端口,外接分频模块频率为1Hz的时钟信号;输出端口cq03.0是秒时钟的低位,cq13.0是高位;co端口是进位输出端口,当秒计数到59时输出高电平,其它时候输出低电平。模块图如图。六十进制带进位计数器,可清零,当q0计满9后q1增加1,当q0满9且q1记满5,q1、q0同时归零,co输出为高电平。q1为十位q0为个位。分计数模块:如图所示为分计数模块符号图。输入端口clr1是分计数模块的清零信号,也是整个数字中的使能信号,低电平有效; clk1是秒脉冲输入端口端口;cq23.0是分计时的低位
6、,cq33.0是分计时的高位;cout端口是进位输出端口,接时计数的clk1作为时钟输入,当秒计数到59时输出高电平,其它时候输出低电平。时技术模块:如图所示为时计数模块符号图。输入端口clr是时计数模块的清零信号,也是整个数字中的使能信号,低电平有效; clk是秒脉冲输入端口输出端口;q03.0是分计时的低位,q13.0是分计时的高位。此为24进制无进位计数器,当计数信号计到23后再检测到计数信号时会自动归零。带清零,clk输入为分秒进位相与的结果。q1为十位,q0为个位。2.分频模块设计:晶体振荡器是构成数字时钟的核心,振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,它保证了时钟的走
7、时准确及稳定。石英晶体的选频特性非常好,只有某一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且振荡信号的频率与振荡电路中的R、C元件的数值无关7。模块图如图所示。由四个分频器构成,输入信号in_clk为1024Hz脉冲信号。把输入的8192Hz信号分频为四个脉冲信号,即1Hz的秒脉冲,4Hz的校时、校分脉冲,64Hz的消抖脉冲,以及512Hz和1024Hz的蜂鸣器低音输入。3.消抖模块设计:由于大部分按键式机械触点,在触点闭合和断开时都会产生抖动,为避免抖动引起的误动作造成系统的不稳定,就要求消除按键的抖动,确保按键每按一次只做一次响应。在本设计初期完成后,下载程序测试时,拨动按
8、键或者按下按键时显示出现异常,这就需要加入按键消抖模块。模块的实现方法是先判断是否有按键按下,如有按键按下则延时一段时间,待抖动过去之后再读行线状态,如果仍有低电平行线,则确定有按键按下,然后产生一个有按键按下的信号。该模块有一个时钟输入端口,输入时钟信号是分频出来的64Hz的时钟信号;对sa校时信号、sb校分信号、sc秒清零信号、sd闹时设置信号进行防抖动处理。是由四个两级d触发器构成的,分别对输入的sa、sb、sc、sd信号的相邻两个上升沿进行比较以确定按键的按下,从而达到消抖的目的。模块图如下:4.闹钟模块设计:模块如图所示。一键设定闹铃时间,内部由四个d触发器构成。当确定sd键按下时,
9、将当前时间的小时和分的个位十位分别存入四个d触发器内,作为闹时时间。ml_o3.0、mh_o3.0、hl_o3.0、hh_o3.0分别为闹钟时间的分低位、分高位、时低位和时高位。5.调时模块设计:如图所示为调时模块符号图。本设计的调时模块类似于二选一数据选择器,输入端口alarm是调时模块的调时开关,当为高电平是输出a的数据,当为低电平时输出b的数据;a端接上一个计时模块的进位输出;b端接分频器的输出时钟脉冲;y为模块的输出,作为计时模块的输入时钟。由此可知当alarm为低电平时可进行调时、调分。6.整点报时和闹钟模块设计:模块图如图所示。在59分51秒、53秒、55秒、57秒给扬声器赋以低音
10、512Hz信号,在59分59秒给扬声器赋以高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。闹时时间为一分钟。7.打铃模块设计:如表所示为学校作息时间。学校作息时间上课下课时间共包括18个时间点,将此写入程序中,当时钟时间与这些时间相同时,输出高电平,与时钟信号相与,作为报警模块的输入。表2-1 学校作息时间作息时段春季作息时间上课下课上午08:0008:4008:5009:3009:4010:2010:3011:1011:1012:00下午14:0014:4014:5015:3015:4016:2016:301
11、7:10如图所示为打铃模块设计框图。模块包括作息选择和时间比较部分,其设计思路为:将时钟的时高位、时低位、分高位、分低位分别于表2.1中的打铃时间数据进行比较,若相等,则Q_Y输出高电平,否则输出低电平。7.显示模块设计:对于本自动打铃系统的设计,必不可少的就是显示模块的设计,因为根据设计要求,时钟的计时显示、闹钟的时间设定、蜂鸣器报警时长的设定,都需要数码管来显示,实际应用的时候,用实验箱上的数码管显示是最直观的表现。六 实验程序及仿真1.时钟模块设计:(1)秒计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_un
12、signed.all;use ieee.std_logic_arith.all;entity second IS port(clk,clr:in std_logic; co:out std_logic; cq0:out std_logic_vector(3 downto 0); cq1:out std_logic_vector(3 downto 0);END second;ARCHITECTURE behave of second is SIGNAL d: std_logic_vector(3 downto 0); SIGNAL g: std_logic_vector(3 downto 0);
13、BEGIN process(clk,clr,d,g) BEGIN if (clr ='1') then d <="0000" g <="0000" elsif(clk'EVENT and clk='1')then if(d=9 and g=5)then co<='1' else co<='0' end if; if(d=9)then d<="0000" if(g=5)then g<="0000" else g
14、<=g+1; end if; else d<=d+1; end if; end if; end process; cq0<=d;cq1<=g;end behave;波形仿真:(2)分计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity minute IS port(clk1,clr1:in std_logic; co:out std_logic; cq0:out std_logic_vector(3
15、downto 0); cq1:out std_logic_vector(3 downto 0);END minute;ARCHITECTURE behave of minute is SIGNAL d: std_logic_vector(3 downto 0); SIGNAL g: std_logic_vector(3 downto 0);BEGIN process(clk1,clr1,d,g) BEGIN if (clr1 ='1') then d <="0000" g <="0000" elsif(clk1'EVE
16、NT and clk1='1')then if(d=9 and g=5)then co<='1' else co<='0' end if; if(d=9)then d<="0000" if(g=5)then g<="0000" else g<=g+1; end if; else d<=d+1; end if; end if; end process; cq0<=d;cq1<=g;end behave;波形仿真和秒计时相同。(3)时技术模块:library ie
17、ee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity hour IS port(clk3,rst3,m:in std_logic; cq4:out std_logic_vector(3 downto 0); cq5:out std_logic_vector(3 downto 0);END hour;ARCHITECTURE behave of hour is SIGNAL d: std_logic_vector(3 downto 0); SIGNAL
18、g: std_logic_vector(3 downto 0);BEGIN process(clk3,rst3,m,d,g) BEGIN if (rst3 ='1') then d <="0000" g <="0000" elsif(clk3'EVENT and clk3='1')then if(m='0') then if(d=9 or (d=1 and g=1)then d<="0000" if(g=1)then g<="0000"
19、 else g<=g+1; end if; else d<=d+1; end if; else if(d=9 or (d=3 and g=2)then d<="0000" if(g=2)then g<="0000" else g<=g+1; end if; else d<=d+1;end if; end if; end if;end process; cq4<=d;cq5<=g;end behave; 波形仿真如下:2.分频模块设计:library ieee;use ieee.std_logic_1164.
20、all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity div isport(in_clk:in std_logic;clk_1,clk_4,clk_64,clk_512,clk_1024:out std_logic);end div;architecture one of div issignal a,b,c,d,e:std_logic;signal c1,c4,c64,c512,c1024:integer range 8192 downto 0;beginprocess(in_clk)begin if
21、in_clk'event and in_clk='1' then if c1024>=7 then c1024<=0;e<=not e;else c1024<=c1024+1;end if; if c512>=15 then c512<=0;d<=not d;else c512<=c512+1;end if; if c64>=127 then c64<=0;c<=not c;else c64<=c64+1;end if; if c4>=2047 then c4<=0;b<=not
22、b;else c4<=c4+1;end if; if c1>=8191 then c1<=0;a<=not a;else c1<=c1+1;end if; end if;end process;clk_1<=a;clk_4<=b;clk_64<=c;clk_512<=d;clk_1024<=e;end one;波形仿真如下:3.消抖模块设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.
23、ALL;entity xd isport(clk_64,sa,sb,sc,m,k2:in std_logic; hj,mj,sclr,sdo,ml,k2j:out std_logic); end xd;architecture one of xd isbeginprocess(clk_64)variable sa_n,sa_p,sb_n,sb_p,sc_n,sc_p,m_n,m_p,k2_p,k2_n:std_logic;begin if clk_64'event and clk_64='1' thensa_p:=sa_n;sa_n:=sa;sb_p:=sb_n;sb_
24、n:=sb;sc_p:=sc_n;sc_n:=sc;m_p:=m_n;m_n:=m;k2_p:=k2_n;k2_n:=k2;if sa_p= sa_n then hj<=sa;end if;if sb_p= sb_n then mj<=sb;end if;if sc_p= sc_n then sclr<=sc;end if;if m_p=m_n then ml<=m;end if;if k2_p=k2_n then k2j<=k2;end if;end if;end process;end one;波形仿真如下:4.闹钟模块设计:library ieee;use
25、ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity nz isport (sd:in std_logic; hh,hl,mh,ml:in std_logic_vector(3 downto 0); hh_o,hl_o,mh_o,ml_o:out std_logic_vector(3 downto 0);end nz;architecture one of nz is beginprocess (sd,hh,hl,mh,ml) beginif sd'EVEN
26、T and sd='1' thenhh_o<=hh;hl_o<=hl;mh_o<=mh;ml_o<=ml;end if;end process;end one;波形仿真如下图:5.调时模块设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity x21 is port (alarm,a,b:in std_logic;y:out std_logic);end x21;architecture
27、one of x21 isbeginprocess(alarm,a,b) beginif alarm='0' then y<=a;else y<=b;end if;end process;end one;波形仿真如下图:6.整点报时和闹钟模块设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity voice is port (min1,min0,sec1,sec0,hh,hl,mh,ml,hou0,h
28、ou1:in std_logic_vector(3 downto 0);in_512,in_1024:in std_logic;q:out std_logic);end voice;architecture one of voice isbeginprocess(min1,min0,sec1,sec0)begin if min1="0101" and min0="1001" and sec1="0101" then if sec0="0001" or sec0="0011" or sec0=&q
29、uot;0101" or sec0="0111" then q<=in_512; elsif sec1="0101" and sec0="1001" then q<=in_1024; else q<='0' end if; else q<='0' end if;if min1=mh and min0=ml and hou1=hh and hou0=hl then q<=in_1024;end if;end process;end one;波形仿真如下图:7.打铃模
30、块设计:library ieee; use ieee.std_logic_1164.all;entity comp_time isport( q_ha,q_ma:in std_logic_vector(3 downto 0); q_hb: in std_logic_vector(3 downto 0); q_mb: in std_logic_vector(3 downto 0); Q_Y: out std_logic);end comp_time;architecture a of comp_time is signal qtime: std_logic_vector(15 downto 0)
31、; begin qtime<=q_hb & q_ha & q_mb & q_ma;process(qtime) begin case qtime is: when "0000100000000000" => Q_Y<='1' when "0000100001000000" => Q_Y<='1' when "0000100001010000" => Q_Y<='1' when "0000100100110000&
32、quot; => Q_Y<='1' when "0000100101000000" => Q_Y<='1' when "0000101000100000" => Q_Y<='1' when "0000101000110000" => Q_Y<='1' when "0000101100010000" => Q_Y<='1' when "0000101100100000&
33、quot; => Q_Y<='1' when "0000110000000000" => Q_Y<='1' when "0000111000000000" => Q_Y<='1' when "0000111001000000" => Q_Y<='1' when "0000111001010000" => Q_Y<='1' when "0000111100110000" => Q_Y<='1' when "0000111101000000" => Q_Y<='1' when "0001000000100000" => Q_Y<='1' when "0001000000110000" => Q_Y<='1' when "0001000100010000&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大队管理中队奖惩制度
- 刑警命案考核奖惩制度
- 地产公司行政部奖惩制度
- pc钢棒产品合格率奖惩制度
- 农贸市场保洁奖惩制度
- 培训班学生管理奖惩制度
- 宿舍考核奖惩制度
- 护理业务考核奖惩制度
- 按摩技师奖惩制度范本
- 收银员错漏收银奖惩制度
- 2026年六安职业技术学院单招职业适应性考试题库含答案详解(能力提升)
- 国有企业内控合规不相容岗位分离管理制度
- 黑板报培训课件
- 辅助生殖技术VTE风险评估与预防专家共识2026
- 2026年及未来5年市场数据中国原料果汁行业发展全景监测及投资方向研究报告
- 2025年注册测绘师测绘综合能力的真题卷(附答案)
- 成本实操-理发店公司成本核算实例
- 2026年温州科技职业学院单招综合素质笔试模拟试题附答案详解
- 老视矫正课件
- 沟渠清理合同协议
- 村里自来水管网施工方案
评论
0/150
提交评论