《多功能數(shù)字鐘》EDA實(shí)驗(yàn)報(bào)告(共20頁(yè))
《《多功能數(shù)字鐘》EDA實(shí)驗(yàn)報(bào)告(共20頁(yè))》由會(huì)員分享,可在線閱讀,更多相關(guān)《《多功能數(shù)字鐘》EDA實(shí)驗(yàn)報(bào)告(共20頁(yè))(20頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 《EDA課程設(shè)計(jì)》 實(shí)驗(yàn)報(bào)告 多功能數(shù)字鐘 姓 名: 學(xué) 號(hào): 聯(lián)系方式: 成 績(jī): 1.摘要 在當(dāng)代,隨著人類社會(huì)進(jìn)入到高度發(fā)達(dá)的信息化社會(huì)。信息技術(shù)的發(fā)展起著越來(lái)越大的作用,它幾乎涉及到我們?nèi)粘I畹拿總€(gè)領(lǐng)域,可以說(shuō)要衡量一個(gè)當(dāng)今社會(huì)的發(fā)展文明程度信息化技術(shù)的發(fā)展程度是一個(gè)非常重要的指標(biāo)。眾所周知,信息化社會(huì)的發(fā)展離不開(kāi)電子信息技術(shù)產(chǎn)品的開(kāi)發(fā)、產(chǎn)品品質(zhì)的提高和改善。電子
2、信息產(chǎn)品隨著科學(xué)技術(shù)的進(jìn)步,其電子器件和設(shè)計(jì)方法更新、換代的速度快的驚人,幾乎是日新月異。然而實(shí)現(xiàn)這種進(jìn)步的主要原因就是電子設(shè)計(jì)技術(shù)和電子制造技術(shù)的發(fā)展,其核心就是電子設(shè)計(jì)自動(dòng)化(EDA,Electronics?Design?Automation)技術(shù),EDA技術(shù)的發(fā)展和推廣應(yīng)用又極大地推動(dòng)了電子信息產(chǎn)業(yè)的發(fā)展。為保證電子系統(tǒng)設(shè)計(jì)的速度和質(zhì)量,適應(yīng)“第一時(shí)間推出產(chǎn)品”的設(shè)計(jì)要求,EDA技術(shù)正逐漸成為不可缺少的一項(xiàng)先進(jìn)技術(shù)和重要工具。目前,在國(guó)內(nèi)電子技術(shù)教學(xué)和產(chǎn)業(yè)界的技術(shù)推廣中已形成“EDA熱”,完全可以說(shuō),掌握EDA技術(shù)是電子信息類專業(yè)學(xué)生、工程技術(shù)人員所必備的基本能力和技能。 由于基于PL
3、D的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大和深入,EDA技術(shù)在電子信息、通信、自動(dòng)控制及計(jì)算機(jī)應(yīng)用領(lǐng)域的重要性日益提高。 EDA技術(shù)在電子系統(tǒng)設(shè)計(jì)領(lǐng)域越來(lái)越普及,本設(shè)計(jì)主要利用VHDL語(yǔ)言在EDA平臺(tái)上設(shè)計(jì)一個(gè)電子數(shù)字鐘,它的計(jì)時(shí)為24小時(shí)小時(shí)制,顯示滿刻度為23時(shí)59分59秒,另外還具有校時(shí)功能和鬧鐘功能。總的程序由幾個(gè)各具不同功能的單元模塊程序拼接而成,其中包括分頻程序模塊,時(shí)、分、秒計(jì)數(shù)和校時(shí)程序模塊、數(shù)據(jù)選擇器程序模塊、顯示程序模塊和例化程序模塊。并且使用QUARTUS II軟件進(jìn)行電路波形仿真,下載到EDA實(shí)驗(yàn)箱進(jìn)行驗(yàn)證。 作為現(xiàn)在的大學(xué)生應(yīng)熟練掌握這門技術(shù),為以后的發(fā)展打下良好的基礎(chǔ)
4、,本實(shí)驗(yàn)設(shè)計(jì)是應(yīng)用QuartusII環(huán)境及VHDL語(yǔ)言設(shè)計(jì)一個(gè)時(shí)間可調(diào)的數(shù)字時(shí)鐘。使自己熟練使用QuartusII環(huán)境來(lái)進(jìn)行設(shè)計(jì),掌握VHDL語(yǔ)言的設(shè)計(jì)方法。注重理論與實(shí)踐之間的不同,從而培養(yǎng)自己的實(shí)踐能力! 關(guān)鍵字:EDA,數(shù)字鐘,QUARTUS II,VHDL,PLD,模塊化,分頻,校時(shí),仿真, 2.概括 多功能數(shù)字鐘應(yīng)該具有的功能有:顯示時(shí)-分-秒、整點(diǎn)報(bào)時(shí)、小時(shí)和分鐘可調(diào)等基本功能。首先要知道鐘表的工作機(jī)理,整個(gè)鐘表的工作應(yīng)該是在1Hz信號(hào)的作用下進(jìn)行,這樣每來(lái)一個(gè)時(shí)鐘信號(hào),秒增加1秒,當(dāng)秒從59秒跳轉(zhuǎn)到00秒時(shí),分鐘增加1分,同時(shí)當(dāng)分鐘從59分跳轉(zhuǎn)到00分時(shí),小時(shí)增加1小時(shí),但
5、是需要注意的是,小時(shí)的范圍是從0~23時(shí)。 在實(shí)驗(yàn)中為了顯示的方便,由于分鐘和秒鐘顯示的范圍都是從0~59,所以可以用一個(gè)3位的二進(jìn)制碼顯示十位,用一個(gè)四位的二進(jìn)制碼(BCD碼)顯示個(gè)位,對(duì)于小時(shí)因?yàn)樗姆秶菑?~23,所以可以用一個(gè)2位的二進(jìn)制碼顯示十位,用4位二進(jìn)制碼(BCD碼)顯示個(gè)位。 實(shí)驗(yàn)中由于七段碼管是掃描的方式顯示,所以雖然時(shí)鐘需要的是1Hz時(shí)鐘信號(hào),但是掃描確需要一個(gè)比較高頻率的信號(hào),因此為了得到準(zhǔn)確的1Hz信號(hào),必須對(duì)輸入的系統(tǒng)時(shí)鐘進(jìn)行分頻。 對(duì)于整點(diǎn)報(bào)時(shí)功能,用戶可以根據(jù)系統(tǒng)的硬件結(jié)構(gòu)和自身的具體要求來(lái)設(shè)計(jì)。 本驗(yàn)設(shè)計(jì)的是當(dāng)進(jìn)行整點(diǎn)的倒計(jì)時(shí)5秒時(shí),讓LED來(lái)閃爍進(jìn)
6、行整點(diǎn)報(bào)時(shí)的提示。 要求顯示格式為 小時(shí)-分鐘-秒鐘,整點(diǎn)報(bào)時(shí),報(bào)時(shí)時(shí)間為5秒,即從整點(diǎn)前5秒鐘開(kāi)始進(jìn)行報(bào)時(shí)提示,LED開(kāi)始閃爍,過(guò)整點(diǎn)后,停止閃爍。系統(tǒng)時(shí)鐘選擇時(shí)鐘模塊的10KHz,要得到1Hz時(shí)鐘信號(hào),必須對(duì)系統(tǒng)時(shí)鐘進(jìn)行10,000次分頻。調(diào)整時(shí)間的的按鍵用按鍵模塊的S1和S2,S1調(diào)節(jié)小時(shí),每按下一次,小時(shí)增加一個(gè)小時(shí),S2調(diào)整分鐘,每按下一次,分鐘增加一分鐘。另外用S12按鍵作為系統(tǒng)時(shí)鐘復(fù)位,復(fù)位后全部顯示00-00-00。 3.總體原理 3.1功能概括 本實(shí)驗(yàn)是通過(guò)編程實(shí)現(xiàn)多功能的數(shù)字時(shí)鐘,其功能包含了基本的時(shí)間顯示部分(由00—00—00至23—59—59)的基本顯示部分;
7、同時(shí)期附帶有清零(RES)按鍵功能(這里用F12表示),當(dāng) 按下F12是所有的數(shù)字清零(00—00—00);此外還有整點(diǎn)報(bào)時(shí)功能模塊,當(dāng)時(shí)間還有5秒到達(dá)正點(diǎn)的時(shí)候通過(guò)指示燈的閃爍以及蜂鳴器的發(fā)生實(shí)現(xiàn)報(bào)時(shí)的功能;此外,還具有小時(shí),分鐘的調(diào)節(jié)功能(這里用S1,S2分別表示小時(shí)和分鐘的調(diào)節(jié)),當(dāng)按下S1一次的時(shí)候小時(shí)顯示的數(shù)字增加‘1’(直至23后清零00),當(dāng)按下S2一次的時(shí)候分鐘上面的數(shù)字增加‘1’(直至59后歸零00); 3.2功能結(jié)構(gòu)圖 a.本實(shí)驗(yàn)是采用功能分塊的模式,通過(guò)不同的功能模塊的組合,最終實(shí)驗(yàn)本實(shí)驗(yàn)的功能要求。 時(shí)顯示器 秒顯示器 分顯示器 時(shí)譯碼器 秒譯碼器
8、分譯碼器 報(bào)時(shí)/鬧鐘 時(shí)計(jì)數(shù)器 分計(jì)數(shù)器 秒計(jì)數(shù)器 校時(shí)電路 1Hz 5HZ 分頻器 振蕩器 圖1 數(shù)字鐘的系統(tǒng)框圖 b.圖為基本功能結(jié)構(gòu)圖 c.七段數(shù)碼管是電子開(kāi)發(fā)過(guò)程中常用的輸出顯示設(shè)備。在實(shí)驗(yàn)系統(tǒng)中使用的是兩個(gè)四位一體、共陰極型七段數(shù)碼管。其單個(gè)靜態(tài)數(shù)碼管如下圖所示。 靜態(tài)七段數(shù)碼管 由于七段數(shù)碼管公共端連接到GND(共陰極型),當(dāng)數(shù)碼管的中的那一個(gè)段被輸入高電
9、平,則相應(yīng)的這一段被點(diǎn)亮。反之則不亮。四位一體的七段數(shù)碼管在單個(gè)靜態(tài)數(shù)碼管的基礎(chǔ)上加入了用于選擇哪一位數(shù)碼管的位選信號(hào)端口。八個(gè)數(shù)碼管的a、b、c、d、e、f、g、h、dp都連在了一起,8個(gè)數(shù)碼管分別由各自的位選信號(hào)來(lái)控制,被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。 3.3設(shè)計(jì)的基本要求及基本參數(shù) 系統(tǒng)時(shí)鐘選擇時(shí)鐘模塊的10KHz,要得到1Hz時(shí)鐘信號(hào),必須對(duì)系統(tǒng)時(shí)鐘進(jìn)行10,000次分頻。從而的到需要的1s的信號(hào)。本實(shí)驗(yàn)中,所用到的秒,分,時(shí)的計(jì)時(shí)都是采用4位二進(jìn)制的計(jì)數(shù)器進(jìn)行設(shè)計(jì)計(jì)時(shí)的。通過(guò)設(shè)置不同的范圍實(shí)現(xiàn)對(duì)7段數(shù)碼管的顯示設(shè)定。 4具體功能分塊實(shí)現(xiàn)及介紹 4.1分頻功能模塊(這里將所有
10、用到的端口名在此同時(shí)給出) 實(shí)現(xiàn)該功能是通過(guò)對(duì)系統(tǒng)的自身的1kHZ的信號(hào)的采用10000次的分頻從而獲得1s的所需要的信號(hào)。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY LG IS PORT( Clk : IN STD_LOGIC; --時(shí)鐘輸入 S12 : IN STD_LOGIC; --復(fù)位輸入 S1,S2 :
11、 IN STD_LOGIC; --時(shí)間調(diào)節(jié)輸入 spk : OUT STD_LOGIC; led : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --整點(diǎn)輸報(bào)時(shí)輸出 Display : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --七段碼管顯示輸出 SEG_SEL : BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0) --七段碼管掃描動(dòng) ); END LG; ARCHITECT
12、URE ART OF LG IS SIGNAL Disp_Temp : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Disp_Decode : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SEC1,MIN1, : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SEC10,MIN10 : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL HOUR10 HOUR1 : STD_LOGIC_VECTOR(3 DOWNTO 0);
13、 SIGNAL Music_Count : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL Clk_Count1 : STD_LOGIC_VECTOR(13 DOWNTO 0); --產(chǎn)生1Hz時(shí)鐘的分頻計(jì)數(shù)器 SIGNAL Clk1Hz : STD_LOGIC; SIGNAL led_count : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL led_display : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL T
14、 : INTEGER RANGE 0 TO 15; BEGIN PROCESS(Clk) BEGIN IF(Clk'EVENT AND Clk='1') THEN IF(Clk_Count1<10000) THEN Clk_Count1<=Clk_Count1+1; ELSE Clk_Count1<="001"; END IF; END IF; END PROCESS; 4.2整點(diǎn)報(bào)時(shí)功能 Clk1Hz<=Clk_Count1(13); PROCESS(Clk1Hz,S
15、12) BEGIN IF(S12='0') THEN --系統(tǒng)復(fù)位 SEC1<="0000"; SEC10<="0000"; MIN1<="0000"; MIN10<="0000"; HOUR1<="0000"; HOUR10<="0000"; ELSIF(Clk1Hz'EVENT AND Clk1Hz='1') THEN --正常運(yùn)行 IF(S1='0') THEN --調(diào)節(jié)小時(shí) IF(HOUR1="1001") THEN
16、 HOUR1<="0000"; HOUR10<=HOUR10+1; ELSIF(HOUR10="0010" AND HOUR1="0011") THEN HOUR1<="0000"; HOUR10<="0000"; ELSE HOUR1<=HOUR1+1; END IF; ELSIF(S2='0') THEN --調(diào)節(jié)分鐘 IF(MIN1="1001") THEN
17、 MIN1<="0000"; IF(MIN10="0101") THEN MIN10<="0000"; ELSE MIN10<=MIN10+1; END IF; ELSE MIN1<=MIN1+1; END IF; ELSIF(SEC1="1001") THEN
18、 SEC1<="0000"; IF(SEC10="0101") THEN SEC10<="0000"; IF(MIN1="1001") THEN MIN1<="0000"; IF(MIN10="0101") THEN MIN10<="0000"; IF(HOUR1="1001") THEN
19、 HOUR1<="0000"; HOUR10<=HOUR10+1; ELSIF(HOUR10="0010" AND HOUR1="0011") THEN HOUR1<="0000"; HOUR10<="0000"; ELSE HOUR1<=HOUR1+1;
20、 END IF; ELSE MIN10<=MIN10+1; END IF; ELSE MIN1<=MIN1+1; END IF; ELSE SEC10<=SEC10+1; END IF; ELSE
21、 SEC1<=SEC1+1; END IF; END IF; END PROCESS; ---------------------------------------------------------------------- PROCESS(SEC1,T) BEGIN CASE SEC1 IS WHEN "0000"=>T<=0; WHEN "0001"=>T<=1; WHEN "0010"=>T<=2; WHEN "0011"=>T<=3; WHEN "0100"=>T<=4; WHEN "0101"=>
22、T<=5; WHEN "0110"=>T<=6; WHEN "0111"=>T<=7; WHEN "1000"=>T<=8; WHEN "1001"=>T<=9; WHEN OTHERS=>T<=0; END CASE; END PROCESS; --------------------------------------------------------------------- PROCESS(Clk,T) BEGIN IF(Clk'EVENT AND Clk='1') THEN Music_Count<=Music_Count
23、+1; IF(MIN10="0101" AND MIN1="1001" AND SEC10="0101") THEN --在59分50秒開(kāi)始提示 IF((T MOD 2)=0) THEN --在偶數(shù)秒開(kāi)始發(fā)聲 SPK<=Music_Count(2); --嘀 ELSE SPK<='0'; END IF; ELSIF(MIN10="0000" AND MIN1="0000" AND SEC10="0000
24、" AND SEC1="0000") THEN SPK<=Music_Count(1); --嗒 ELSE SPK<='0'; END IF; END IF; END PROCESS; PROCESS(Clk) BEGIN IF(Clk1hz'EVENT AND Clk1hz='1') THEN IF(MIN10="0101" AND MIN1="1001" AND SEC10="0101" AND sec1="0101") THEN
25、 --在59分55秒開(kāi)始提示 led_Count<=led_Count+1; ELSE led_count<="000"; END IF; END IF; END PROCESS; 4.3復(fù)位和時(shí)間調(diào)節(jié)功能 Clk1Hz<=Clk_Count1(13); PROCESS(Clk1Hz,S12) BEGIN IF(S12='0') THEN --系統(tǒng)復(fù)位 SEC1<="0000"; SEC10<="0000"; MIN1<="0000";
26、 MIN10<="0000"; HOUR1<="0000"; HOUR10<="0000"; ELSIF(Clk1Hz'EVENT AND Clk1Hz='1') THEN --正常運(yùn)行 IF(S1='0') THEN --調(diào)節(jié)小時(shí) IF(HOUR1="1001") THEN HOUR1<="0000"; HOUR10<=HOUR10+1; ELSIF(HOUR10="0010" AND HOUR1="0011") THEN
27、 HOUR1<="0000"; HOUR10<="0000"; ELSE HOUR1<=HOUR1+1; END IF; ELSIF(S2='0') THEN --調(diào)節(jié)分鐘 IF(MIN1="1001") THEN MIN1<="0000"; IF(MIN10="0101") THEN MIN10<="0000"; 4.4時(shí)間顯示功能 PROC
28、ESS(led_count) BEGIN CASE (led_count) IS WHEN "000"=>led_display<="0000"; WHEN "001"=>led_display<="1111"; WHEN "010"=>led_display<="0111"; WHEN "011"=>led_display<="0011"; WHEN "100"=>led_display<="0001"; WHEN "101"=>led_display<="1111"; WHEN OTHERS=>led_display<="000
29、0"; END CASE; led<=led_display; END PROCESS; -------------------------------------------------------------------------- PROCESS(SEG_SEL) BEGIN CASE (SEG_SEL+1) IS WHEN "000"=>Disp_Temp<=HOUR10; WHEN "001"=>Disp_Temp<=HOUR1; WHEN "010"=>Disp_Temp<="1010"; WHEN "
30、011"=>Disp_Temp<=MIN10; WHEN "100"=>Disp_Temp<=MIN1; WHEN "101"=>Disp_Temp<="1010"; WHEN "110"=>Disp_Temp<=SEC10; WHEN OTHERS=>Disp_Temp<=SEC1; END CASE; END PROCESS; ----------------------------------------------------------------------- --掃描累加 PROCESS(Clk) BEGI
31、N IF(Clk'EVENT AND Clk='1') THEN SEG_SEL<=SEG_SEL+1; Display<=Disp_Decode; END IF; END PROCESS; --------------------------------------------------------------------------顯示轉(zhuǎn)換 PROCESS(Disp_Temp) BEGIN CASE Disp_Temp IS WHEN "0000"=>Disp_Decode<=""; --0 WHEN "000
32、1"=>Disp_Decode<=""; --1 WHEN "0010"=>Disp_Decode<=""; --2 WHEN "0011"=>Disp_Decode<=""; --3 WHEN "0100"=>Disp_Decode<=""; --4 WHEN "0101"=>Disp_Decode<=""; --5 WHEN "0110"=>Disp_Decode<=""; --6 WHEN "0111"=>Disp_Decode<=""; --7 WHEN "1000"=>Disp_Decode<="";
33、 --8 WHEN "1001"=>Disp_Decode<=""; --9 WHEN "1010"=>Disp_Decode<=""; --- WHEN OTHERS=>Disp_Decode<=""; --全滅 END CASE; END PROCESS; END ART; 5.實(shí)驗(yàn)總結(jié)及心得 通過(guò)這次實(shí)驗(yàn)是我學(xué)習(xí)到了許多知識(shí),首先是對(duì)EDA課程設(shè)計(jì)的基本要求以及對(duì)實(shí)驗(yàn)過(guò)程的具體實(shí)現(xiàn)方法,其次是對(duì)VHDL編程語(yǔ)言的語(yǔ)法掌握和認(rèn)識(shí)有了更加深刻的理解和認(rèn)識(shí),再次是對(duì)QUARTUSII軟件的基本操作和工作有了一定的了解和認(rèn)識(shí),還有就是對(duì)實(shí)
34、驗(yàn)的過(guò)程收獲了許多,受益了許多。 經(jīng)過(guò)兩周EDA課程設(shè)計(jì),使我受益匪淺。這不僅增強(qiáng)了我對(duì)EDA設(shè)計(jì)的興趣,更鞏固了基本的電路設(shè)計(jì)流程、方法以及技巧。具備了這些基本知識(shí),為今后的自主學(xué)習(xí)奠定了良好的基礎(chǔ)。在編寫時(shí)可以相互借鑒,這樣可以節(jié)省一定的時(shí)間,但在一個(gè)問(wèn)題上糾結(jié)了很久,現(xiàn)還未明白,為什么一個(gè)變量在進(jìn)程中只能被一個(gè)邊沿信號(hào)觸發(fā)進(jìn)行修改,無(wú)奈之下選擇了另一種方法,通過(guò)一個(gè)控制端來(lái)進(jìn)行選頻,以實(shí)現(xiàn)快速調(diào)時(shí),在鬧鐘的處理上使用了數(shù)據(jù)選擇,設(shè)置鬧鈴時(shí)數(shù)碼管顯示鬧鐘時(shí)間。 在設(shè)計(jì)中還是需要注意一些常見(jiàn)的問(wèn)題,比如實(shí)體名、項(xiàng)目名等,還有在編寫VHDL文件時(shí),一些文件名也是需要注意的;在編寫程序的過(guò)程
35、中,信號(hào)與變量的使用是一個(gè)特需要注意的,進(jìn)程中一個(gè)信號(hào)不應(yīng)有多個(gè)復(fù)制源,信號(hào)的復(fù)值是在進(jìn)程結(jié)束之時(shí),而變量的復(fù)值是立即的,在書(shū)寫時(shí)容易出錯(cuò)的地方是,信號(hào)的賦值與變量的賦值符號(hào),信號(hào)作為全局的聯(lián)絡(luò)線,信號(hào)往往不允許在多個(gè)進(jìn)程中被賦值,因?yàn)檫M(jìn)程之間是并行的。 通過(guò)實(shí)驗(yàn)也徹底的認(rèn)識(shí)到了自己的不足,以及許多自己有待加強(qiáng)和努力的地方,比如說(shuō)相關(guān)語(yǔ)法的具體實(shí)驗(yàn)過(guò)程,不同設(shè)計(jì)的優(yōu)點(diǎn)分析等。還有就是對(duì)自己以后應(yīng)該學(xué)習(xí)掌握的知識(shí)還有許多,自己懂得的還知識(shí)皮毛而已,如果真的要用于實(shí)際工程及設(shè)計(jì)中要走的路還是很長(zhǎng)的。 最后在這里要感謝我的指導(dǎo)老師,感謝您的耐心指導(dǎo)和教誨,是您的耐心指導(dǎo)才使得我收獲了這么多,學(xué)會(huì)
36、了很多不懂得知識(shí),掌握了這么多的專業(yè)知識(shí),以及這么多有用的專業(yè)技巧和處理問(wèn)題的方法和能力,正式由于您的努力才能幫助我的課程設(shè)計(jì)順利的進(jìn)行并能夠最終完成自己的課程設(shè)計(jì)。在這里要表達(dá)我的感激之情以及感恩之意,是您讓我又一次的成長(zhǎng)了許多,此致敬禮! 6.源程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ------------------------------------------------
37、-------------------- ENTITY LG IS PORT( Clk : IN STD_LOGIC; --時(shí)鐘輸入 S12 : IN STD_LOGIC; --復(fù)位輸入 S1,S2 : IN STD_LOGIC; --時(shí)間調(diào)節(jié)輸入 spk : OUT STD_LOGIC; led : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --整點(diǎn)輸報(bào)時(shí)輸出 Display
38、: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --七段碼管顯示輸出 SEG_SEL : BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0) --七段碼管掃描驅(qū)動(dòng) ); END LG; -------------------------------------------------------------------- ARCHITECTURE ART OF LG IS SIGNAL Disp_Temp : STD_LOGIC_VECTOR(3 DOWNTO 0);
39、 SIGNAL Disp_Decode : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SEC1,MIN1, : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SEC10,MIN10 : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL HOUR10 HOUR1 : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Music_Count : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL Clk_Count
40、1 : STD_LOGIC_VECTOR(13 DOWNTO 0); --產(chǎn)生1Hz時(shí)鐘的分頻計(jì)數(shù)器 SIGNAL Clk1Hz : STD_LOGIC; SIGNAL led_count : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL led_display : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL T : INTEGER RANGE 0 TO 15; BEGIN PROCESS(Clk) BEGIN IF(Clk'EVENT AN
41、D Clk='1') THEN IF(Clk_Count1<10000) THEN Clk_Count1<=Clk_Count1+1; ELSE Clk_Count1<="001"; END IF; END IF; END PROCESS; ---------------------------------------------------------------------------------- Clk1Hz<=Clk_Count1(13); PROCESS(Clk1Hz,S1
42、2) BEGIN IF(S12='0') THEN --系統(tǒng)復(fù)位 SEC1<="0000"; SEC10<="0000"; MIN1<="0000"; MIN10<="0000"; HOUR1<="0000"; HOUR10<="0000"; ELSIF(Clk1Hz'EVENT AND Clk1Hz='1') THEN --正常運(yùn)行 IF(S1='0') THEN --調(diào)節(jié)小時(shí) IF(HOUR1="1001") THEN
43、 HOUR1<="0000"; HOUR10<=HOUR10+1; ELSIF(HOUR10="0010" AND HOUR1="0011") THEN HOUR1<="0000"; HOUR10<="0000"; ELSE HOUR1<=HOUR1+1; END IF; ELSIF(S2='0') THEN --調(diào)節(jié)分鐘 IF(MIN1="1001") THEN
44、 MIN1<="0000"; IF(MIN10="0101") THEN MIN10<="0000"; ELSE MIN10<=MIN10+1; END IF; ELSE MIN1<=MIN1+1; END IF; ELSIF(SEC1="1001") THEN
45、 SEC1<="0000"; IF(SEC10="0101") THEN SEC10<="0000"; IF(MIN1="1001") THEN MIN1<="0000"; IF(MIN10="0101") THEN MIN10<="0000"; IF(HOUR1="1001") THEN
46、 HOUR1<="0000"; HOUR10<=HOUR10+1; ELSIF(HOUR10="0010" AND HOUR1="0011") THEN HOUR1<="0000"; HOUR10<="0000"; ELSE HOUR1<=HOUR1+1;
47、 END IF; ELSE MIN10<=MIN10+1; END IF; ELSE MIN1<=MIN1+1; END IF; ELSE SEC10<=SEC10+1; END IF; ELSE
48、 SEC1<=SEC1+1; END IF; END IF; END PROCESS; ---------------------------------------------------------------------- PROCESS(SEC1,T) BEGIN CASE SEC1 IS WHEN "0000"=>T<=0; WHEN "0001"=>T<=1; WHEN "0010"=>T<=2; WHEN "0011"=>T<=3; WHEN "0100"=>T<=4; WHEN "0101"=>T
49、<=5; WHEN "0110"=>T<=6; WHEN "0111"=>T<=7; WHEN "1000"=>T<=8; WHEN "1001"=>T<=9; WHEN OTHERS=>T<=0; END CASE; END PROCESS; --------------------------------------------------------------------- PROCESS(Clk,T) BEGIN IF(Clk'EVENT AND Clk='1') THEN Music_Count<=Music_Count+
50、1; IF(MIN10="0101" AND MIN1="1001" AND SEC10="0101") THEN --在59分50秒開(kāi)始提示 IF((T MOD 2)=0) THEN --在偶數(shù)秒開(kāi)始發(fā)聲 SPK<=Music_Count(2); --嘀 ELSE SPK<='0'; END IF; ELSIF(MIN10="0000" AND MIN1="0000" AND SEC10="0000"
51、 AND SEC1="0000") THEN SPK<=Music_Count(1); --嗒 ELSE SPK<='0'; END IF; END IF; END PROCESS; -------------------------------------------------------- PROCESS(Clk) BEGIN IF(Clk1hz'EVENT AND Clk1hz='1') THEN IF(MIN10="0101"
52、AND MIN1="1001" AND SEC10="0101" AND sec1="0101") THEN --在59分55秒開(kāi)始提示 led_Count<=led_Count+1; ELSE led_count<="000"; END IF; END IF; END PROCESS; ------------------------------------------------------------------------- PROCESS(led_count) BEGIN CASE (led_
53、count) IS WHEN "000"=>led_display<="0000"; WHEN "001"=>led_display<="1111"; WHEN "010"=>led_display<="0111"; WHEN "011"=>led_display<="0011"; WHEN "100"=>led_display<="0001"; WHEN "101"=>led_display<="1111"; WHEN OTHERS=>led_display<="0000"; END CASE; led<=led_displ
54、ay; END PROCESS; -------------------------------------------------------------------------- PROCESS(SEG_SEL) BEGIN CASE (SEG_SEL+1) IS WHEN "000"=>Disp_Temp<=HOUR10; WHEN "001"=>Disp_Temp<=HOUR1; WHEN "010"=>Disp_Temp<="1010"; WHEN "011"=>Disp_Temp<=MIN10; WHEN
55、"100"=>Disp_Temp<=MIN1; WHEN "101"=>Disp_Temp<="1010"; WHEN "110"=>Disp_Temp<=SEC10; WHEN OTHERS=>Disp_Temp<=SEC1; END CASE; END PROCESS; ----------------------------------------------------------------------- --掃描累加 PROCESS(Clk) BEGIN IF(Clk'EVENT AND Clk='1') THEN
56、 SEG_SEL<=SEG_SEL+1; Display<=Disp_Decode; END IF; END PROCESS; --------------------------------------------------------------------------顯示轉(zhuǎn)換 PROCESS(Disp_Temp) BEGIN CASE Disp_Temp IS WHEN "0000"=>Disp_Decode<=""; --0 WHEN "0001"=>Disp_Decode<=""; --1 WHE
57、N "0010"=>Disp_Decode<=""; --2 WHEN "0011"=>Disp_Decode<=""; --3 WHEN "0100"=>Disp_Decode<=""; --4 WHEN "0101"=>Disp_Decode<=""; --5 WHEN "0110"=>Disp_Decode<=""; --6 WHEN "0111"=>Disp_Decode<=""; --7 WHEN "1000"=>Disp_Decode<=""; --8 WHEN "1001"=>Disp_Decode<=""; --9 WHEN "1010"=>Disp_Decode<=""; --- WHEN OTHERS=>Disp_Decode<=""; --全滅 END CASE; END PROCESS; END ART; 專心---專注---專業(yè)
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版地理七年級(jí)下冊(cè)--極地地區(qū)課件
- 備選方案與f課件
- 行程問(wèn)題 順流逆流
- 班集體特色創(chuàng)建
- 發(fā)電廠的控制系統(tǒng)綜述
- 英語(yǔ)專業(yè)四級(jí)考試閱讀技巧新
- 小說(shuō)中的環(huán)境描寫
- 典案二PPT教學(xué)案例SectionA2
- 血液透析患者動(dòng)靜脈內(nèi)瘺閉塞的原因及防護(hù)課件
- 運(yùn)動(dòng)快慢與方向的描述——速度課件
- 新概念第一冊(cè)lesson78ppt課件
- 原電池公開(kāi)課修改課件
- 檢量具使用方法和注意事項(xiàng)課件
- 中考賓語(yǔ)從句復(fù)習(xí)PPT課件2
- 不用文字的書(shū)和信