資源描述:
《eda課程設(shè)計(jì)-電子鐘》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、EDA課程設(shè)計(jì)-電子鐘一、設(shè)計(jì)要求1、基本功能要求:設(shè)計(jì)一個(gè)電子時(shí)鐘,要求可以顯示時(shí)、分、秒,用戶可以設(shè)置時(shí)間。擴(kuò)展功能要求:2、跑表功能,鬧鐘功能,調(diào)整數(shù)碼管的亮度。二、系統(tǒng)結(jié)構(gòu)控制鍵—jian5、jian4、jian7、jian8:數(shù)碼管顯示段選信號(hào)輸出sg:——選擇6位數(shù)碼管中的某一個(gè)顯示數(shù)據(jù);發(fā)光二極管控制信號(hào)輸出—led(7~0)鬧鐘聲音輸出—speaker通過一個(gè)10M信號(hào)分出各種所需頻率功能介紹運(yùn)行后,選擇模式7,8位數(shù)碼管分顯示時(shí)間的時(shí)、分、秒,當(dāng)前為模式0:時(shí)間顯示模式,按鍵7為模式選擇鍵,按下按鍵7,系統(tǒng)進(jìn)入模式1,第二次按下為模式2,設(shè)置時(shí)間模式,第三次按下
2、為跑表模式,第四次為鬧鐘設(shè)置模式,第五次為亮度調(diào)節(jié)模式:設(shè)置時(shí)間模式,按鍵4控制更改數(shù)碼管的位,按鍵5控制選中數(shù)碼管的數(shù)值,時(shí)間設(shè)置完成后,按鍵按鍵8,設(shè)置時(shí)間會(huì)保存住,并在模式0中顯示;系統(tǒng)進(jìn)入模式2:秒表模式,按鍵4為開始/結(jié)束鍵,按鍵5為清零鍵;系統(tǒng)進(jìn)入模式3:鬧鐘設(shè)置模式,相關(guān)設(shè)置與模式1相同,當(dāng)當(dāng)前時(shí)間與鬧鐘設(shè)置時(shí)間相同時(shí),喇叭就會(huì)響;系統(tǒng)進(jìn)入模式4:亮度調(diào)節(jié)模式,通過按鍵4設(shè)置亮度,共三種亮度;再按下按鍵7,系統(tǒng)又會(huì)進(jìn)入模式0。4、RTL圖三、VHDL源程序1、libraryieee;--通過10M分出所需頻率useieee.std_logic_1164.all;us
3、eieee.std_logic_unsigned.all;entityfenpinisport(clk_10M:instd_logic;clk_10000:outstd_logic;clk_100:outstd_logic;clk_1:outstd_logic);endentity;architecturesub1offenpinissignalQ_1:std_logic_vector(8downto0);signalQ_2:std_logic_vector(6downto0);signalQ_3:std_logic_vector(6downto0);signalclk10000
4、:std_logic;signalclk100:std_logic;signalclk1:std_logic;beginprocess(clk_10M)beginifclk_10M'eventandclk_10M='1'thenifQ_1=500thenQ_1<="";clk10000<=notclk10000;ifQ_2=100thenQ_2<="";clk100<=notclk100;ifQ_3=100thenQ_3<="";clk1<=notclk1;elseQ_3<=Q_3+1;endif;elseQ_2<=Q_2+1;endif;elseQ_1<=Q_1+1;endif
5、;endif;endprocess;clk_10000<=clk10000;clk_100<=clk100;clk_1<=clk1;endsub1;2、libraryieee;--掃描數(shù)碼管useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityxianshiisport(clk_10000:instd_logic;jian4:instd_logic;moshi:inintegerrange0to4;a0,a1,a3,a4,a6,a7:inintegerrange0to9;sg11:outstd_logic_
6、vector(6downto0);bt11:outstd_logic_vector(7downto0));end;architectureoneofxianshiissignalcnt8:std_logic_vector(2downto0);signala:integerrange0to15;signallight:std_logic;signalflash:integerrange0to2;signalcount1,count2:integerrange0to10;beginp1:process(cnt8,light,a0,a1,a3,a4,a6,a7)begincasecnt
7、8iswhen"000"=>bt11<=""&(light);a<=a0;when"001"=>bt11<=""&(light)&'0';a<=a1;when"010"=>bt11<="00000"&(light)&"00";a<=15;when"011"=>bt11<="0000"&(light)&"000";a<=a3;when"100"=>bt11<="000"&(light)&"0000";a<=a4;when"101"=>bt11<="00"&(light)&"0000