




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于VHDL的数字闹钟设计基于VHDL的数字闹钟设计 摘要:随着EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的 设计文件,自动地完成逻辑优化和仿真测试,直至实现既定的电子线路系统功能。本文介绍了基于 VHDL硬件描述语言设计的多功能数字闹钟的思路和技巧。在Quartus 11开发环境中编译和仿真了所设计的程序,并逐一调试验证程序的运行状 况。仿真和验证的结果表明,该设计方法切实可行,该数字闹钟可以实现调时定时 闹钟播放音乐功
2、能具有一定的实际应用性。关键字:闹钟FPGA VHDL Quartus II、电子钟相关功能描述如下:(1)计时功能:这是本计时器设计的基本功能,可进行时、分、秒计时,并显示。 闹钟功能:如果当前时间与设置的闹钟时间相同,贝U扬声器发出一段音乐, 并维持一分钟。(3)调时调分调闹钟功能:当需要校时或者要重新设置闹钟的时间时, 可通过实 验箱上的按键控制。、设计原理:数字闹钟电路的基本结构由两个 60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到 23时59分59秒时,再来一个计数脉冲,则 计数器清零,重新开始计时。秒计数器的计数时钟 CLK为1Hz的标准信号。当数字闹
3、钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟 计数器的进位输出信号又作为小时计数器的计数信号时、分、秒的计时结果通过 个数码管来动态显示。数字闹钟除了能够正常计时外,还应能够对时间进行调整。因此,通过模式选择信号KEY1、KEY2控制数字钟的工作状态,即控制数字钟,使其分别工作于正常计时,调整分、时和设定闹钟分、时5个状态。当数字闹钟处于计时状态时,3个计数器允许计数,且秒、分、时计数器的计数时钟信号分别为 CLK,秒的进位,分的进位;当数字闹钟处于调整时间状态时,被调的分或时会一秒一秒地 增加;当数字钟处于闹钟定时状态时,可以设定小时和分;当计时到所设定的时刻时,s
4、peak将会被赋予梁祝音乐信号用于驱动扬声器,持续1分钟。三、实验代码:1)顶层文件:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY clock ISP ORT (CLK12MHZ : IN STD_LOGIC;:IN STD_LOGIC;:OUT STD_LOGIC;:IN STD_LOGIC;:IN STD_LOGIC;:IN STD_LOGIC_VECTOR(1 DOWNTO 0);CLK8HZ SPKOUT CLKKEY1KEY2H1,H2,M1,M2,S1,S2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END
5、;P ORT (elk md1 md2 elkenARCHITECTURE one OF clock IS COMPO NENT shizho ng:in std_logic;:in std_logic;:in std_logic_vector(1 dow nto 0);:out std_logic;h1,h2,m1,m2,s1,s2: out std_logic_vector(3 dow nto 0);END COMPO NENT;COMPO NENT NoteTabsP ORT ( clk : IN STD_LOGIC;Ton eI ndex : OUT STD_LOGIC_VECTOR
6、(3 DOWNTO 0);END COMPO NENT;COMPO NENT Ton eTabaP ORT ( In dex : IN STD_LOGIC_VECTOR (3 DOWNTO 0);Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0);en : in std_logic);END COMPO NENT;COMPO NENT Sp eakeraPORT ( elk : IN STD_LOGIC;-19 -Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);SpkS : OUT STD_LOGIC );END COMPO N
7、ENT;SIGNALTone:STD_LOGIC_VECTOR (10 DOWNTO 0);SIGNALToneindex :STD_LOGIC_VECTOR (3 DOWNTO 0);clke nenSIGNALSIGNALBEGINu1 : Shizho ng P ORT MAP (clk=CLK,md1=KEY1,md2=KEY2,clke n=e n,:STD_LOGIC;:STD_LOGIC;h1=h1,h2=h2,m1=m1,m2=m2,s1=s1,s2=s2);u2 : NoteTabs P ORT MAP (clk=CLK8H Z, Ton eI ndex=To nel nde
8、x);u3 : Ton eTaba PORT MAP (In dex=T oneln dex,T on e=T on e,e n=en);u4 : Sp eakera P ORT MAP (clk=CLK12MHZ,To ne=To ne, Sp kS=S PKOUT );END;2)时钟控制模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity shizh ong isport( clk: in std_logic;md1:in std_logic;md2:in std_lo
9、gic_vector(1 dow nto 0);clke n:out std_logic;h1,h2,m1,m2,s1,s2:out std_logic_vector(3 dow nto 0); end shizho ng;architecture one of shizho ng issig nal hou1:std_logic_vector(3 dow nto 0);sig nal hou2:std_logic_vector(3 dow nto 0);sig nal mi n1:std_logic_vector(3 dow nto 0);sig nal mi n2:std_logic_ve
10、ctor(3 dow nto 0);sig nal seth1:std_logic_vector(3 dow nto 0);sig nal seth2:std_logic_vector(3 dow nto 0);sig nal setm1:std_logic_vector(3 dow nto 0);sig nal setm2:std_logic_vector(3 dow nto 0);sig nal sec1:std_logic_vector(3 dow nto 0);sig nal sec2:std_logic_vector(3 dow nto 0);begi n 小时十位h110: pro
11、cess(clk,hou2,mi n1,mi n2,sec1,sec2,md1,md2)beginif clkeve nt and clk-1 the nif (hou1=0010 a nd hou2=0011)a nd(mi n1=0101 a nd min 2=1001)the nand (sec仁0101 and sec2=1001) hou1=0000;elsif hou1=0010a nd hou2=0011a nd md1=0and md2=01 then-当时间为23点且处于校时状态时 hou1=0000;elsif (hou2=1001a nd(mi n仁0101 and mi
12、n 2=1001)and (sec仁0101 and sec2=1001)or (hou2=1001a nd md1=0 and md2=01) the n hou1=hou1+1; end if;end if;end p rocess h110; 小时个位h220: process(clk,mi n1,mi n2,sec1,sec2,md1,md2,hou1)begi nif clkeve nt and clk-1 the nif (hou仁0010 a nd hou2=0011)a nd(mi n仁0101 a nd min 2=1001)and (sec仁0101 and sec2=10
13、01) the nhou2=0000;elsif hou2=1001a nd(mi n仁0101 and min 2=1001)and (sec仁0101 and sec2=1001)the nhou2=0000;elsif (hou2=1001a nd md1=0 and md2=01)or (hou1=0010a nd hou2=0011) the nhou2=0000;-md=1;-elsif (mi n仁0101 a nd min 2=1001) and (sec1=0101 a nd sec2=1001) or (md1=O and md2=01) then hou2v=hou2+1
14、;-s peakv=clk;- end if;end if;end p rocess h220;分钟十位m110: process(clk,mi n2,sec1,sec2,md1,md2) begi nif clkeve nt and clk-1 the nif (min 仁0101 a nd mi n2=1001) and (sec仁0101 a nd sec2=1001) thenmin 1=0000;elsif min 1=0101a nd min 2=1001a nd (md1=0 and md2=00)thenmin 1=0000;elsif (mi n2=1001a nd (sec
15、仁0101 a nd sec2=1001) or (mi n2=1001a nd md1=0 and md2=00)the n min 1=min 1+1;end if;end if;-e nd if;end p rocess m110;分钟个位m220:p rocess(clk,sec1,sec2,md1,md2)beginif clkeve nt and clk-1 the nif min 2=1001a nd (sec1=0101 a nd sec2=1001)the nmin 2=0000;elsif min 2=1001a nd (md1=0 and md2=00)the nmin
16、2=0000;elseif (sec1=0101 a nd sec2=1001) or(md1=0 and md2=00)thenmin 2=min 2+1; end if;end if;e nd if;end p rocess m220;秒十位s110: process(clk)beginif clkeve nt and clk-1 the nif (sec1=0101 a nd sec2=1001)then sec1=0000;else if sec2=1001the nsec1=sec1+1;end if;end if;e nd if;end p rocess s110;秒个位s220:
17、p rocess(clk)begi nif clkeve nt and clk-1 then if sec2=1001 the n sec2=0000;else sec2v=sec2+1; end if;end if;end p rocess s220;时间设置小时部分sethourl: process(clk,seth2)beginif clkeve nt and clk-1 the nif seth1=0010a nd seth2=0011 the n seth1=0000;the nelsif seth2=1001seth1=seth1+1;end if;end if;end p roc
18、ess sethour1;sethour2: process(clk,md1,md2,seth1) beginif clkeve nt and clk-1 the nif (seth1=0010a nd seth2=0011)or seth2=1001then seth2=0000;elsif md1=1 and md2=00 the nseth2=seth2+1;end if;end if;end p rocess sethour2;时间设置分钟部分setmi n1:p rocess(clk,setm2)beginif clkeve nt and clk-1 the nif setm1=01
19、01a nd setm2=1001then setm1=0000;elsif setm2=1001the nsetm1=setm1+1;end if;end if;end p rocess setm in1;setmi n2: process(clk,md1,md2)beginif clkeve nt and clk=1thenif setm2=1001the n setm2=0000;elsif md1=1 and md2=01the n setm2=setm2+1;end if;end if;end p rocess setm in2; 闹铃sp eaker: process(clk,ho
20、u1,hou2, min1,min2)beginif clkeve nt and clk=1thenif seth1=hou1 and seth2=hou2 and setm仁 min1 and setm2=min2 the nclke *=1;else clke nv=O;end if;end if;end p rocess sp eaker;dis p:p rocess(md1,hou1,hou2,mi n1,mi n2,sec1,sec2,seth1,seth2,setm1,setm2)begin计时时间显示和设置模式if md1=0 thenh1=hou1;h2=hou2;m1=min
21、 1;m2=min2;s1=sec1;s2=sec2;闹铃时间现实和设置模式else-h1=seth1;h2=seth2;m1=setm1;m2=setm2;s1=1111;s2=1111;end if;end p rocess dis p;end one;3)乐曲演奏模块:LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Sp eakera ISP ORT ( clk : IN STD_LOGIC;Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);Sp
22、kS : OUT STD_LOGIC );END;ARCHITECTURE one OF Sp eakera ISSIGNAL P reCLK, FullS pkS : STD_LOGIC;BEGINDivideCLK : P ROCESS(clk)VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINP reCLK 11 THEN P reCLK = 1; Cou nt4 := 0000;ELSIF clkEVENT AND clk = 1 THEN Cou nt4 := Cou nt4 + 1;END IF;END P ROCESS;Ge
23、nSpkS : P ROCESS( PreCLK, Ton e)- 11位 可预置计数器VARIABLE Cou nt11 : STD_LOGIC_VECTOR (10 DOWNTO 0);BEGINIF P reCLKEVENT AND P reCLK = 1 THENIF Coun t11 = 16#7FF# THEN Coun t11 := Tone ; FullS pkS = 1;ELSE Cou nt11 := Cou nt11 + 1; FullS pkS = 0; END IF;END IF;END P ROCESS;DelaySpkS : PROCESS(FullSpkS)-将
24、输出再2分频,展宽脉冲,使扬声器有足 够功率发音VARIABLE Cou nt2 : STD_LOGIC;BEGINIF FullS pkSEVENT AND FullS pkS = 1 THEN Coun t2 := NOT Cou nt2;IF Coun t2 = 1 THEN SpkS = 1;ELSE SpkS = 0;END IF;END IF;END P ROCESS;END;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs ISP ORT (clk: I
25、N STD_LOGIC;Toneindex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END;ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC-音符数据 ROMP ORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); in clock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPO NENT;SIGNAL Cou nter : STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINCN
26、T8 : P ROCESS(clk,Co un ter)BEGINIF Cou nter=138 THEN Cou nter = 00000000;ELSIF (clkEVENT AND clk = 1) THEN Cou nter Cou nter , q=To neln dex, in clock=clk);END;LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL; ENTITY To neTaba ISIN STD_LOGIC_VECTOR (3 DOWNTO 0);Tone :P ORT ( In dex :OUT STD_LOGIC_VECTOR (1
27、0 DOWNTO 0);enIN STD_LOGIC);WHEN 0000WHEN 0001WHEN 0010WHEN 0011WHEN 0101WHEN 0110WHEN 0111WHEN 1000WHEN 1001WHEN 1010WHEN 1100WHEN 1101END;ARCHITECTURE one OF Ton eTaba ISBEGINP ROCESS(I ndex,e n)BEGINIF en=0 THEN Ton e Tone Tone Tonev=01110010000; Tonev=10000001100; Tonev=10010101101; Tonev=101000
28、01010; Tonev=10101011100; Tonev=10110000010; Tonev=10111001000; Tonev=11000000110; Tonev=11001010110; Tonev=11010000100;WHEN 1111 = To nev=11011000000;WHEN OTHERS = NULL;END CASE;END IF;END P ROCESS;END;LIBRARY ieee;程序USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_c omponen ts
29、.all; ENTITY music ISP ORT( address:IN STD_LOGIC_VECTOR (7 DOWNTO 0);in clockq:IN STD_LOGIC ;:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END music;ARCHITECTURE SYN OF music ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0);COMPO NENT altsy ncramGENERIC (in te nded_device_family:NATURAL;:NATURAL;:NATURAL;STR
30、ING;STRING;STRING;STRING;NATURAL;:STRING;width_a widthad_a nu mwords_a op erati on _mode outdata_reg_a address_aclr_a outdata_aclr_a width_bytee na_a:STRING;:STRING; :STRING);ini t_file lpm _hi nt lpm_typePORT ( clock0 : IN STD_LOGIC ;address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0);q_a : OUT STD_LOGIC_
31、VECTOR (3 DOWNTO 0);END COMPO NENT;BEGINq Cycl on e, width_a = 4, widthad_a = 8, nu mwords_a = 256, op eration_mode = ROM, outdata_reg_a = UNREGISTERED, address_aclr_a = NONE, outdata_aclr_a = NONE, width_bytee na_a = 1, in it_file = data1.mif, lpm _hi nt=INSTANCE_NAME=rom2,lpm_type = alts yn cram)
32、P ORT MAP ( clock0 = in clock, address_a = address, q_a = sub_wire0);ENABLE_RUNTIME_MOD=YES,END SYN;四、实验仿真结果:本实验是以KEY2、KEY1为控制整个闹钟的校时,校分,校闹钟时、分,分别将KEY21,KEY20,KEY1 ,送到实验上的三个键,由这三个键来控制整个校时,校分,校闹钟时,校闹钟分的过程,加上分别连接的键叫 A,B,C键,则当A=0, B=1,C=0时是对时钟进行校时,时个位和时十位会以二十四进制循环自动增加。仿真波形:JnefHu itIT.TB i,=CEJIH:I 氐1I
33、a氐2ni-H.11110 mBCMCS H2Btnoi田UECDOCS VlBCDOCB 31EcnocS E;ECDOlS嶼I 3Dcn01 IIb-iRIUZlI申. I ZZDiWi ! m!:I !:血:,L :I ! no叮IIIIIOOM当A=0 , B=O,C=O时是对时钟进行校分,分个位和分十位会以六十进制循环增加,并且不对时进位。仿真波形:H-MrCLXLHZKEH IZE當H m 田阳 田ui 0 K0 S 0 aSPZMlB 0H 00B DB 0I (ucaTWOJ WW JffiOLJ IT TJ5 PlLee1 B 1HL DDOOK DDOOI OKUU HUO
34、ELI DOCCHt MUISJEUB 41 ocnOOHOQWDoaKBDKDDOLI|LDLL另外当计数的时,分和闹钟所事先设置时、分相等时,梁祝”这首歌会响起,作为闹钟并且维持一分钟,一分钟歌曲自动停止。在有条件的情况下,为验证所设计程序是否正确,将程序下载到FPG器件中进行硬件测试。在Quartus n开发环境中进行管脚锁定,连接好数码管驱动电路,然后 将目标文件下载到器件中。最终可以看到时、分、秒正常显示。弓I脚分配如下(选 择模式5)hMKie hum*3rUtkMh11LxaiQTi邛 o eazvr*r 5rotStindird1匚LK;_fl【nc一;-B3.N JLVTTL tder-MJlt?SCLKWZti-ipi/-PIN 17nh NkLVTTL 畑卜和吩CLKIZPII-U-Eripi 两PTPJLVTTL (dnFmilt)M 1 CollOLJt-puLI(PJ:rj iQa13 H rjiO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南工学院《数据传输技术基础硬件设计方向》2023-2024学年第二学期期末试卷
- 2025年保安证真题汇编及答案
- 三亚理工职业学院《中外纪录片赏析》2023-2024学年第二学期期末试卷
- 郑州轻工业大学《文学翻译》2023-2024学年第二学期期末试卷
- 山西信息职业技术学院《钢铁冶金概论》2023-2024学年第二学期期末试卷
- 河北农业大学《中国古代史名著选读》2023-2024学年第二学期期末试卷
- 2025保安证考试备考经验谈试题及答案
- 南昌应用技术师范学院《园林植物造景实验》2023-2024学年第一学期期末试卷
- 福建师范大学协和学院《大学体育Ⅱ羽毛球》2023-2024学年第一学期期末试卷
- 2025年化学知识的试题及答案
- 医疗安全(不良)事件报告制度培训课件
- 电力建设工程施工安全管理导则
- 2024年信息技术基础考试复习题库(含答案)
- JTG-QB-003-2003公路桥涵标准图钢筋混凝土盖板涵
- 企业微信指导手册管理员版
- 甘姜苓术汤_金匮卷中_减法方剂树
- 国家标准色卡电子版
- 《尾矿库基本知识》
- PDS操作说明总结
- 银川盆地地下热水形成的地质条件分析
- 发电企业设备检修导则DL T 838-
评论
0/150
提交评论