EDA 課程設(shè)計報告 數(shù)字時鐘

上傳人:仙*** 文檔編號:30053250 上傳時間:2021-10-09 格式:DOC 頁數(shù):24 大小:253KB
收藏 版權(quán)申訴 舉報 下載
EDA 課程設(shè)計報告 數(shù)字時鐘_第1頁
第1頁 / 共24頁
EDA 課程設(shè)計報告 數(shù)字時鐘_第2頁
第2頁 / 共24頁
EDA 課程設(shè)計報告 數(shù)字時鐘_第3頁
第3頁 / 共24頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《EDA 課程設(shè)計報告 數(shù)字時鐘》由會員分享,可在線閱讀,更多相關(guān)《EDA 課程設(shè)計報告 數(shù)字時鐘(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、淮陰工學(xué)院 《EDA技術(shù)與應(yīng)用》課程設(shè)計報告 選題名稱: 電子時鐘設(shè)計 系(院): 計算機(jī)工程學(xué)院 專 業(yè):計算機(jī)科學(xué)與技術(shù)(嵌入式系統(tǒng)軟件設(shè)計) 班 級: 嵌入式 1091 姓 名: 王 榮 學(xué) 號: 1091306422 指導(dǎo)教師: 趙建洋 馬岱 顧相平 學(xué)年學(xué)期: 2011 ~ 2012 學(xué)年 第 2 學(xué)期 2012 年 6 月 21 日 設(shè)計任務(wù)

2、書 課題 名稱 電子時鐘設(shè)計 設(shè)計 目的 1. 了解電子時鐘的功能; 2. 理解EDA開發(fā)應(yīng)用系統(tǒng)的基本思路及方法; 3. 練習(xí)使用vhdl語言編寫應(yīng)用程序的基本步驟; 4. 學(xué)習(xí)EDA開發(fā)過程及資料收集與整理,學(xué)會撰寫課程設(shè)計報告; 5. 學(xué)會對所學(xué)知識進(jìn)行總結(jié)與提高; 實驗 環(huán)境 1.Windows 2000以上操作系統(tǒng); 2.QURTUS 6.0開發(fā)環(huán)境; 任務(wù) 要求 1. 利用課余時間去圖書館或上網(wǎng)查閱課題相關(guān)資料,深入理解課題含義及設(shè)計要求,注意材料收集與整理;制定完整的設(shè)計方案,結(jié)合框圖進(jìn)行說明。 2. 給出主要模塊的VHDL程序。 3. 在第

3、18周末之前完成預(yù)設(shè)計,并請指導(dǎo)教師審查。通過后方可進(jìn)行下一步工作; 4. 按指導(dǎo)書要求設(shè)計軟件,實現(xiàn)設(shè)計的功能,并顯示正確的結(jié)果; 5. 要求形成穩(wěn)定的程序軟件,可以在實驗箱上進(jìn)行下載驗證,方可申請參加答辯; 工作進(jìn)度計劃 序號 起止日期 工 作 內(nèi) 容 1 2012.6.18~2012.6.18 在預(yù)設(shè)計的基礎(chǔ)上,進(jìn)一步查閱資料,完成硬件電路設(shè)計。 2 2012.6.18~2012.6.19 編寫軟件代碼, 調(diào)試與完善。 3 2012.6.19~2012.6.21 測試程序,優(yōu)化代碼,增強(qiáng)功能,撰寫課程設(shè)計報告。 4 2012.6.21~2012.6

4、.21 提交軟件代碼、硬件電路成果和設(shè)計報告,參加答辯。 指導(dǎo)教師(簽章): 年 月 日 摘要: 隨著大規(guī)模集成電路技術(shù)和計算機(jī)技術(shù)的不斷發(fā)展,在涉及通信、國防、航天、醫(yī)學(xué)、工業(yè)自動化、計算機(jī)應(yīng)用、儀器儀表等領(lǐng)域的電子系統(tǒng)設(shè)計工作中,EDA技術(shù)的含量正以驚人的速度上升;電子類的高新技術(shù)項目的開發(fā)也逾益依賴于EDA技術(shù)的應(yīng)用。即使是普通的電子產(chǎn)品的開發(fā),EDA技術(shù)常常使一些原來的技術(shù)瓶頸得以輕松突破,從而使產(chǎn)品的開發(fā)周期大為縮短、性能價格比大幅提高。不言而喻,EDA技術(shù)將迅速成為電子設(shè)計領(lǐng)域中的極其重要的組成部分。本設(shè)計中我們運用EDA

5、課程中所學(xué)的知識,設(shè)計了一個擁有時間校正和鬧鐘功能的24小時制多功能數(shù)字時鐘。通過本次課程設(shè)計,我們初步了解EDA的設(shè)計過程;初步掌握用VHDL語言的設(shè)計方法和設(shè)計思想;初步熟悉Quartus II 6.0軟件平臺的編程和仿真,并通過EDA實驗板下載模擬實現(xiàn)初步了解了硬件實現(xiàn)的方法。 關(guān)鍵詞:EDA;數(shù)字時鐘;VHDL;Quartus II 6.0;鬧鐘;仿真 目錄 1 課題綜述 1 1.1 課題來源 1 1.2 預(yù)期目標(biāo) 1 1.3 面對的問題 2 2 系統(tǒng)設(shè)計及分析 2 2.1 涉及的基礎(chǔ)知識 2 2.2 實驗方案 6 2.3 程序流程圖

6、7 3 程序代碼 7 3.1 庫,程序包以及實體定義 7 3.2 結(jié)構(gòu)體功能 8 4 程序運行與調(diào)試 13 4.1 實驗結(jié)果 13 總 結(jié) 16 參考文獻(xiàn) 17 《EDA技術(shù)與應(yīng)用》課程設(shè)計報告 1 課題綜述 1.1 課題來源 電子鐘亦稱數(shù)顯鐘(數(shù)字顯示鐘),是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機(jī)械時鐘相比,直觀性為其主要顯著特點,且因非機(jī)械驅(qū)動,具有更長的使用壽命,相較石英鐘的石英機(jī)芯驅(qū)動,更具準(zhǔn)確性。電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚谋匦杵?,廣泛用于個人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大地

7、方便。 目前,在國內(nèi),電子鐘因LCD數(shù)字顯示效用直接有效,所以大多運用在城市的主要營業(yè)場所,以及車站、碼頭等公共場所。在對公共場所的電子鐘設(shè)定的時候,使用者還可根據(jù)周邊的氣候、溫度等對LCD屏進(jìn)行設(shè)置。同時,因為LCD的顯示耗電量很省,所以能夠保持持續(xù)的工作效果。   夜間在睡覺的時候,床頭如果放個帶投影功能的電子鐘,可以不用起床,直接讓時間顯示在天花板上,非常直觀與有效。 現(xiàn)在生產(chǎn)的大部分汽車中,車內(nèi)前方儀表盤旁邊一般也都自帶電子鐘功能,采取藍(lán)色背景光板成像效果,非常清晰。 相對于其他時鐘類型,它的特點可歸結(jié)為“兩強(qiáng)一弱 ”:比機(jī)械鐘強(qiáng)在觀時顯著,比石英鐘強(qiáng)在走時準(zhǔn)確,但是它的弱點為顯

8、時較為單調(diào)。 1.2 預(yù)期目標(biāo) 本次課程設(shè)計的主要目的旨在通過獨立完成一個 “電子時鐘”的設(shè)計,達(dá)到對EDA技術(shù)的熟練掌握,提升對《EDA技術(shù)及應(yīng)用》課程所學(xué)內(nèi)容的掌握和應(yīng)用。 在本次課程設(shè)計中使用Altera公司的EP2C5Q系列的208C8芯片,基于實驗室現(xiàn)有的EDA實驗箱,實現(xiàn)“電子時鐘”的設(shè)計要求。 (1)計數(shù)24小時的時鐘 (2)六位數(shù)碼管顯示“時-分-秒” (3)五個功能鍵 Timer 從其它狀態(tài)放回時鐘狀態(tài) Alarm 切換到鬧鐘時間的設(shè)定 Set 按一下,跳到下一個設(shè)置區(qū) Down 按一下,所設(shè)置區(qū)的數(shù)字減1 Up 按一下,所設(shè)置區(qū)的

9、數(shù)字加1 (4)帶有鬧鐘功能; (5)鍵盤的設(shè)定值要求在LED上顯示。 1.3 面對的問題 電子時鐘設(shè)計需要掌握和了解如下幾個知識:數(shù)碼管時間顯示設(shè)計,時間校準(zhǔn)設(shè)計,鬧鐘設(shè)定設(shè)計,蜂鳴器的工作。 2 系統(tǒng)設(shè)計及分析 2.1 涉及的基礎(chǔ)知識 2.1.1 時間顯示設(shè)計 24小時制顯示當(dāng)前時間:小時用8與7數(shù)碼管,分鐘用5與4位數(shù)碼管,秒由2與1位數(shù)碼管表示,小時與分鐘之間、分鐘與秒之間用3和6位數(shù)碼管顯示“—”,總計八位七段數(shù)碼顯示管。此模式下顯示當(dāng)前時間。 圖2-1 顯示譯碼電路原理 可將BCD碼轉(zhuǎn)換為數(shù)字顯示碼,有四個輸入引腳,此七個輸出引腳分別對應(yīng)到七段譯碼

10、器的a,b,c,d,e,f,g這七段LED,實驗班用的LED是共陰極的,因此七段譯碼器的真值表如上圖所示。 七段譯碼程序如下所示: case cnt is -- To display the time. when 0 => L<="111"; -- Enable the leftmost display. case ahourH is when 0 => dled<=X"3F";--0 when 1 => dled<=X"06";--1 when 2 => dled<=X"

11、5B";--2 when others => null; end case; when 1 => L<="110"; -- Enable the second display. case ahourL is when 0 => dled<=X"3F";--0 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";

12、--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when 6 => dled<=X"7D";--6 when 7 => dled<=X"07";--7 when 8 => dled<=X"7F";--8 when 9 => dled<=X"6F";--9 when others => null; end case;

13、 when 2 => L<="101"; -- Enable the third display. dled<=X"40"; -- Blanked. when 3 => L<="100"; -- Enable the fourth display. case aminuteH is when 0 => dled<=X"3F";--0 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2

14、 when 3 => dled<=X"4F";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when others => null; end case; when 4 => L<="011"; -- Enable the fifth display. case aminuteL is when 0 => dled<=X"3F";--0

15、 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when 6 => dled<=X"7D";--6 when 7 => dled<=X"07";--7 when 8 => dled<=X"7F";--

16、8 when 9 => dled<=X"6F";--9 when others => null; end case; when 5 => L<="010"; -- Enable the sixth display. dled<=X"40"; -- Blanked. when 6 => L<="001"; -- Enable the seventh display. case asecondH is when 0

17、=> dled<=X"3F";--0 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when others => null; end case; when 7 => L<="000"; --

18、 Enable the rightmost display case asecondL is when 0 => dled<=X"3F";--0 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5

19、 when 6 => dled<=X"7D";--6 when 7 => dled<=X"07";--7 when 8 => dled<=X"7F";--8 when 9 => dled<=X"6F";--9 when others => null; end case; end case; 2.1.2 時間校準(zhǔn)設(shè)計 通過一個開關(guān)的兩種電平,來打開個關(guān)閉一個二輸入與非門,另一個輸入端接1Hz的信號。因此這個開關(guān)實現(xiàn)了1Hz信號是否加入電路的作用,開關(guān)打在高電平上,

20、1Hz信號通過與非門,開關(guān)打在低電平上,與非門輸出為高電平。把與非門的輸出信號,和時鐘正常走時所需要的時鐘信號,一起通過與門,加給分個位時鐘信號的輸入端即可,這樣分校時開關(guān)打在高電平上,分個位以1Hz的頻率跳動起來,分校時開關(guān)打在低電平上時,正常走時。同理小時校準(zhǔn)與此相同。 將time鍵置于‘0’, 運用功能鍵set鍵對八位數(shù)碼管進(jìn)行選擇,并由功能鍵up鍵進(jìn)行+1與down鍵進(jìn)行-1操作,通過此4個功能鍵進(jìn)行校時設(shè)置。 輸入:time狀態(tài)轉(zhuǎn)換鍵,set數(shù)碼管選定鍵,up+1鍵,down-1鍵 輸出:設(shè)定后的 秒,分,小時 時間校準(zhǔn)代碼如下: if time=0 then if (

21、 d=0 and clk_1=1)then set<=set+1; end if; case set is when 1 => if(k=0 and clk_2=1)then hourH<=hourH+1; elsif( p=0 and clk_3=1)then hourH<= hourH-1; end if; when 2 => if( k=0 and clk_2=1)then hourL<= hourL+1;

22、 elsif( p=0 and clk_3=1)then hourL<= hourL-1; end if; when 3 => if(k=0 and clk_2=1)then minuteH<= minuteH +1; elsif( p=0 and clk_3=1)then minuteH<= minuteH -1; end if; when 4 => if( k=0 and clk_2=1)then

23、 minuteL<= minuteL+1; elsif( p=0 and clk_3=1)then minuteL<= minuteL-1; end if; when 5=> if(k=0 and clk_2=1)then secondH<= secondH +1; elsif(p=0 and clk_3=1)then secondH<= secondH-1;

24、 end if; when 6 => if( k=0 and clk_2=1)then secondL<= secondL +1; elsif( p=0 and clk_3=1)then secondL<= secondL-1; end if; when others=>null; end case; end if; 2.1.3 鬧鐘設(shè)定設(shè)計 將time鍵置于‘1’,設(shè)定模式與校時時設(shè)定一樣,運用功能鍵set鍵對八位數(shù)碼管進(jìn)行選擇,并由功能鍵up鍵

25、進(jìn)行+1與down鍵進(jìn)行-1操作,通過此4個功能鍵進(jìn)行校時設(shè)置。 Set->數(shù)碼管7-> Set->數(shù)碼管6-> Set->數(shù)碼管5-> Set->數(shù)碼管4-> Set->數(shù)碼管3-> Set->數(shù)碼管2-> Set->數(shù)碼管1 ;Up->+1;down->-1; 與校時操作類似,只是先將time鍵置于‘1’, 再運用功能鍵set鍵對八位數(shù)碼管進(jìn)行選擇,并由功能鍵up鍵進(jìn)行+1與down鍵進(jìn)行-1操作,通過此4個功能鍵進(jìn)行校時設(shè)置 輸入:time狀態(tài)轉(zhuǎn)換鍵,set數(shù)碼管選定鍵,up+1鍵,down-1鍵 輸出:所定的鬧鐘時間 秒,分,小時 2.1.4 整點蜂鳴器報時 運用軟件進(jìn)行

26、設(shè)置,當(dāng)minuteH與minuteL均為零時,蜂鳴器響,也就是每次整點時,蜂鳴器自動響一分鐘,如果想設(shè)置響的時間,可以手動改即可。并且可以手動按下功能鍵naozhong,這樣就可以手動關(guān)閉蜂鳴器。 輸入:naozhong關(guān)閉蜂鳴器鍵 輸出:蜂鳴器發(fā)出蜂鳴聲 2.2 實驗方案 輸入一個250KHZ的方波信號,運用VHDL語言對其進(jìn)行編譯,用計數(shù)器對方波信號進(jìn)行技術(shù),當(dāng) cnt=2500000時,secondl自動+1,不斷進(jìn)行累加,可以達(dá)到實現(xiàn)數(shù)字鐘自動計時功能。并且此多功能數(shù)字鐘設(shè)有5個功能鍵,(1)time鍵控制顯示狀態(tài),可以選擇時鐘狀態(tài)與鬧鐘狀態(tài)的轉(zhuǎn)換(2)naozhong鍵可

27、以手動關(guān)閉蜂鳴器(3) set鍵可以選擇需要改變的數(shù)碼管,以便進(jìn)行調(diào)時與設(shè)定鬧鐘(4)up鍵對對應(yīng)的數(shù)據(jù)進(jìn)行+1操作(5)down鍵對對應(yīng)的數(shù)據(jù)進(jìn)行-1操作。通過次5個功能鍵,便可實現(xiàn)多功能數(shù)字時鐘,擁有計時/校時功能,設(shè)定鬧鐘功能,整點報時功能。 校時電路 秒計數(shù)器 分計數(shù)器 分譯碼器 秒譯碼器 分顯示器 秒顯示器 時譯碼器 時計數(shù)器 時顯示器 報時 振蕩器 分頻器 圖2-2總體框架圖 2.3 程序流程圖 電子時鐘設(shè)計程序流程圖如下所示。 圖2-3 程序流程圖 3 程序代碼 我主要完成校

28、準(zhǔn)模塊代碼編寫(包括時間校準(zhǔn)與鬧鐘設(shè)定校準(zhǔn)),因此對主程序和其他模塊不做詳細(xì)的解釋。 3.1 庫,程序包以及實體定義 library IEEE; use IEEE.std_logic_1164.all; entity timer is port(clk : in std_logic; -- System clock input port(250KHz). naozhong:in std_logic; L : out std_logic_vector(2 downto 0); dled: out std_logic_vector(7 downt

29、o 0); time:in std_logic; sound: out std_logic; clk_1:in std_logic; clk_2:in std_logic; clk_3:in std_logic); end timer; 3.2 結(jié)構(gòu)體功能 architecture display of timer is signal cnt: integer range 0 to 7; -- 8 seven-segment displays seletion counter. signal ct:integer r

30、ange 0 to 250000 ; -- 1 second generator counter. signal hourH,ahourH,alarm_hourH: integer range 0 to 2; signal minuteH,secondH,aminuteH,asecondH,alarm_minuteH,alarm_secondH: integer range 0 to 6; signal hourL,minuteL,secondL,ahourL,aminuteL,asecondL,alarm_hourL,alarm_minuteL,alarm_s

31、econdL: integer range 0 to 10; signal set : integer range 0 to 7; signal d,k,p: std_logic; begin process (clk) begin if clkevent and clk = 1 then sound<=1; cnt<=cnt+1; ct<=ct+1; if ct=250000 then -- 1 second ct<=0; secondL<=secondL+1;

32、 end if; if secondL=10 then -- 10 seconds secondL<=0; secondH<=secondH+1; end if; if secondH=6 then -- 60 seconds(1 minute) secondH<=0; minuteL<=minuteL+1; end if; if minuteL=10 then -- 10 minutes minuteL<=0;

33、 minuteH<=minuteH+1; end if; if minuteH=6 then -- 60 minutes(1 hour) minuteH<=0; hourL<=hourL+1; end if; if hourL=10 then -- 10 hours hourL<=0; hourH<=hourH+1; end if; if hourH=2 and hourL =4 then -- 24 hours

34、 hourH<=0; hourL<=0; end if; if (time=0) then ahourH<=hourH; ahourL<=hourL; aminuteH<=minuteH; aminuteL<=minuteL; asecondH<=secondH; asecondL<=secondL; elsif(time=1)then ahourH<=alarm_hourH; ahourL<= alarm_hourL; aminuteH<= alarm_minuteH; aminuteL<= alarm_minuteL; as

35、econdH<= alarm_secondH; asecondL<= alarm_secondL; end if; --------------------------------顯示---------------------------------------- case cnt is -- To display the time. when 0 => L<="111"; -- Enable the leftmost display. case ahourH is when 0 => dled<=X"3F";--0

36、 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when others => null; end case; when 1 => L<="110"; -- Enable the second display. case ahourL is when 0 => dled<=X"3F";--0 when 1 => dled<=X"06";--1

37、 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when 6 => dled<=X"7D";--6 when 7 => dled<=X"07";--7 when 8 => dled<=X"7F";--8 when 9 => dled<=X"6

38、F";--9 when others => null; end case; when 2 => L<="101"; -- Enable the third display. dled<=X"40"; -- Blanked. when 3 => L<="100"; -- Enable the fourth display. case aminuteH is when 0 => dled<=X"3F";--0 whe

39、n 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when others => null; end case; when 4 => L<="011"; -- Enable the fifth display.

40、 case aminuteL is when 0 => dled<=X"3F";--0 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when 6 => dled<=X"7D";--6

41、 when 7 => dled<=X"07";--7 when 8 => dled<=X"7F";--8 when 9 => dled<=X"6F";--9 when others => null; end case; when 5 => L<="010"; -- Enable the sixth display. dled<=X"40"; -- Blanked. when 6 => L<="001"; -- Enable

42、the seventh display. case asecondH is when 0 => dled<=X"3F";--0 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when

43、 others => null; end case; when 7 => L<="000"; -- Enable the rightmost display case asecondL is when 0 => dled<=X"3F";--0 when 1 => dled<=X"06";--1 when 2 => dled<=X"5B";--2 when 3 => dled<=X"4F";--3 whe

44、n 4 => dled<=X"66";--4 when 5 => dled<=X"6D";--5 when 6 => dled<=X"7D";--6 when 7 => dled<=X"07";--7 when 8 => dled<=X"7F";--8 when 9 => dled<=X"6F";--9 when others => null; end case; end case; --------------------

45、----------------校時----------------------------------- d<=clk_1; --定義按鍵1選擇改變數(shù)碼管 k<=clk_2; --定義按鍵2增加數(shù)碼管顯示數(shù)字 p<=clk_3; --定義按鍵3減少數(shù)碼管顯示數(shù)字 if time=1 then—設(shè)置鬧鐘時間 if ( d=0 and clk_1=1)then --確定按下了clk_1鍵 set<=set+1;--set自加1用來選擇數(shù)碼管顯示的數(shù)字 end if; case set is when 1 => if(k=0 and clk_2=1)t

46、hen--確定按下了clk_2鍵 alarm_hourH<= alarm_hourH+1;--設(shè)置鬧鐘小時的高位加1來改變 elsif( p=0 and clk_3=1)then –確定按下了clk_3鍵 alarm_hourH<= alarm_hourH-1;-- 設(shè)置鬧鐘小時的高位減1來改變 end if; when 2 => if( k=0 and clk_2=1)then --確定按下了clk_2鍵 alarm_hourL<= alarm_hourL+1; --設(shè)置鬧鐘小時的低位加1來改變

47、 elsif( p=0 and clk_3=1)then –確定按下了clk_3鍵 alarm_hourL<= alarm_hourL-1; --設(shè)置鬧鐘小時的低位減1來改變 end if; when 3 => if(k=0 and clk_2=1)then alarm_minuteH<= alarm_minuteH +1; --設(shè)置分鐘的高位+1 elsif( p=0 and clk_3=1)then alarm_minuteH<= alarm_minuteH -1

48、; --設(shè)置分鐘的高位-1 end if; when 4 => if( k=0 and clk_2=1)then--設(shè)置分鐘的低位 alarm_minuteL<= alarm_minuteL+1; --設(shè)置分鐘的低位+1 elsif( p=0 and clk_3=1)then alarm_minuteL<= alarm_minuteL-1; --設(shè)置分鐘的低位-1 end if; when 5=> if(k=0 and clk_2=1)t

49、hen--設(shè)置秒鐘的高位 alarm_secondH<= alarm_secondH +1; --設(shè)置秒鐘的高位+1 elsif(p=0 and clk_3=1)then alarm_secondH<=alarm_secondH-1; --設(shè)置秒鐘的高位-1 end if; when 6 => if( k=0 and clk_2=1)then--設(shè)置秒鐘的低位 alarm_secondL<= alarm_secondL +1; --設(shè)置秒鐘的低位+1

50、 elsif( p=0 and clk_3=1)then alarm_secondL<= alarm_secondL-1; --設(shè)置秒鐘的低位-1 end if; when others=>null; end case; end if; if time=0 then--設(shè)置實時時間,以下部分具與鬧鐘設(shè)置原理相同 if ( d=0 and clk_1=1)then –選擇需要改變數(shù)碼管的位數(shù) set<=set+1; end if; case set is when 1 =>

51、if(k=0 and clk_2=1)then –設(shè)置實時小時的高位 hourH<=hourH+1;+1計數(shù) elsif( p=0 and clk_3=1)then hourH<= hourH-1; -1計數(shù) end if; when 2 => if( k=0 and clk_2=1)then –設(shè)置實時小時的低位 hourL<= hourL+1; +1計數(shù) elsif( p=0 and clk_3=1)then hourL<= hourL-1; -1計數(shù) end i

52、f; when 3 => if(k=0 and clk_2=1)then –設(shè)置實時分鐘的高位 minuteH<= minuteH +1; +1計數(shù) elsif( p=0 and clk_3=1)then minuteH<= minuteH -1; -1計數(shù) end if; when 4 => if( k=0 and clk_2=1)then–設(shè)置實時分鐘的低位 minuteL<= minuteL+1; +1計數(shù) e

53、lsif( p=0 and clk_3=1)then minuteL<= minuteL-1; -1計數(shù) end if; when 5=> if(k=0 and clk_2=1)then –設(shè)置實時秒鐘的高位 secondH<= secondH +1; +1計數(shù) elsif(p=0 and clk_3=1)then secondH<= secondH-1; -1計數(shù) end if; when 6 => i

54、f( k=0 and clk_2=1)then –設(shè)置實時秒鐘的低位 secondL<= secondL +1; +1計數(shù) elsif( p=0 and clk_3=1)then secondL<= secondL-1; -1計數(shù) end if; when others=>null; end case; end if; ---------------------------------------蜂鳴器整點報時------------------------------------------

55、--------- if ((hourH = alarm_hourH) and (hourL= alarm_hourL) and (minuteH = alarm_minuteH) and (minuteL = alarm_minuteL)) or ((minuteH=0)and(minuteL=0) )then sound<=1; end if; if (secondH=1)or(naozhong=1)then sound<=0; end if; end if; end process; end architecture display; 4 程序運行與調(diào)試 4

56、.1 實驗結(jié)果 (1)將time鍵置于‘0’,輸入clk信號,可以得到時鐘輸出波形為: 圖4-1 時鐘clk信號輸入 此時時鐘自動計時,并且將計時數(shù)據(jù)傳送至顯示管顯示。如上圖asecond=second; (2)將time鍵置于‘0’,輸入clk信號,并將set改為20分頻信號,up與down信號交叉為1,得到時鐘輸出波形為: 圖4-2 修改時鐘顯示時間 如圖所示此時時間不是正常變化,因為有手動設(shè)置進(jìn)行up(+1)操作和down(-1)操作,并且將時間由數(shù)碼管顯示。 (3)將time鍵置于‘1’,則顯示鬧鐘初始調(diào)節(jié)狀態(tài): 圖4-3 處于鬧鐘設(shè)置狀態(tài) 此時s

57、econdl,secondH,minuteL,minuteH,hourL,hourH不受影響,均自動計時,但是并不由數(shù)碼管進(jìn)行顯示,此時顯示的是鬧鐘初定時間,這時均為0。由于set變化,stat 順序發(fā)生變化。 (4)將time置于‘1’,并可以改變set鍵進(jìn)行數(shù)碼管選擇,并用up(+1)操作和down(-1)操作,進(jìn)行鬧鐘的初步設(shè)定;此時可以得到時鐘的初步設(shè)定。 圖4-4 鬧鐘時間設(shè)置 總 結(jié) EDA的課程設(shè)計持續(xù)了四天,但我卻覺得仿佛還是當(dāng)日,真是揮指之間,時光已匆匆流逝。在這短短的四天里,我不僅感受到了成功做出一個模塊的歡喜,還有修改那無限errors時的憂愁,可以

58、說是無數(shù)次的苦盡甘來,換來了最后的成功。 本身我就對動手的實驗相當(dāng)有興趣,這次能夠擁有這四天的課程設(shè)計時間,我甚是高興。從第一天開始知道我的多功能時鐘課題開始,我就第一時間跑去圖書館借資料,回去反復(fù)研究,從看懂程序開始入手。雖然開始有些棘手,但我覺得特別的興奮,我不把困難當(dāng)成攔路虎,反而成為我前進(jìn)的動力,遇到困難不會就翻書,找不到就問同學(xué),再不行就上網(wǎng)搜,實在不行再問老師,總之想盡一切辦法找到解決方案。 經(jīng)過兩三天的基礎(chǔ)訓(xùn)練,我終于能夠完整的看懂程序。首先我將老師給我們基本的時鐘程序進(jìn)行編譯,封鎖引腳,然后在硬件上得到正確的數(shù)碼管顯示。整點報時自然是最簡單的,我首先就加到程序內(nèi)部,其次我在

59、網(wǎng)上找到了鬧鐘程序,因為跟要求差距過大,所以我先讀懂程序,然后根據(jù)自己理解,一步步的加進(jìn)初始的時鐘程序。這個看似很簡單的過程,期間錯誤百出。我先是運用了多個process,進(jìn)行模塊化的處理,通過這里面出現(xiàn)的問題我才知道敏感參數(shù)列表是不能亂設(shè)置的,single是全局變量,而variable只能在一個process中使用等等。后來慢慢理解了其中的原委,發(fā)現(xiàn)我的程序竟如此之長,我決定要大量的刪減,于是我又把多個process改成了一個,看似好像我是又回到了出發(fā)點,但我覺得這絕對是一次質(zhì)的飛躍,是我能夠依照我的想法自由變換程序的映照。當(dāng)我自認(rèn)為要成功的時候,我卻遇到了一個相當(dāng)棘手的問題,此時error

60、顯示unkown problem internal error:”widthe mismatch in relation opreator”in ebuildbinaryop an line 1347 of file,雖然只有一個問題,但這個問題卻無法定位,以至于我找了很久都沒找到。那幾天我心里很壓抑,明明對的程序,為什么就出現(xiàn)這樣的問題,讓我真的很頭疼,差點絕望放棄。直至周二,我決定從新回到起點,再寫一次,一個模塊一個模塊往里加。終于在我不倦的努力下,我找出了錯誤的語句,并用其他語句替換了它,然后輕松地加入比較簡單的校時模塊、蜂鳴模塊。終于在周四之前將程序順利的完成。 通過這次獨立的課程設(shè)

61、計,我學(xué)到了很多書本上學(xué)不到的東西,尤其是在改正錯誤的時候,我能更加深入的了解VHDL語言的精妙之處。希望以后能多多進(jìn)行這樣的實習(xí),讓自己的能力越來越高。 參考文獻(xiàn) 1 閻石主編.數(shù)字電子技術(shù)基礎(chǔ).高等教育出版社,1998 2 譚會生等主編.EDA技術(shù)及應(yīng)用.西安電子科技大學(xué)出版社,2001 3 彭介華.電子技術(shù)課程設(shè)計指導(dǎo).高等教育出版社,2000 4 牛國柱主編.EDA課程設(shè)計指導(dǎo).南京:南理工翻印,2009 5 寇戈,蔣立平.模擬電路與數(shù)字電路.北京:電子工業(yè)出版社,2005 6 潘松,黃繼業(yè)編著.EDA技術(shù)實用教程[ M ] .科學(xué)出版社,2002 第1

62、7頁共17頁 指導(dǎo)教師評語 學(xué)號 1091306422 姓名 王榮 班級 嵌入式 1091 選題 名稱 數(shù)字時鐘設(shè)計 序號 評價內(nèi)容 權(quán)重(%) 得分 1 考勤記錄、學(xué)習(xí)態(tài)度、工作作風(fēng)與表現(xiàn)。 5 2 自學(xué)情況: 上網(wǎng)檢索機(jī)時數(shù)、文獻(xiàn)閱讀情況(筆記)。 10 3 論文選題是否先進(jìn),是否具有前沿性或前瞻性。 5 4 成果驗收: 是否完成設(shè)計任務(wù);能否運行、可操作性如何等。 20 5 報告的格式規(guī)范程度、是否圖文并茂、語言規(guī)范及流暢程度;主題是否鮮明、重心是否突出、論述是否充分、結(jié)論是否正確;是否提出了自己的獨到見解。 30 6 文獻(xiàn)引用是否合理、充分、真實。 5 7 答辯情況: 自我陳述、回答問題的正確性、用語準(zhǔn)確性、邏輯思維、是否具有獨到見解等。 25 合計 指導(dǎo)教師(簽章): 年 月 日

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!