【正文】
logic:=39。 signal setmn : std_logic:=39。 25 architecture one of test is signal clkmn : std_logic:=39。 use 。 分 testbench: library ieee。 mny=qmn。 end process。 then mnx=mna。 process(alarmmn,mna) begin if alarmmn=39。 end if。039。 elsif qmn59 then qmn=qmn+1。 clk2=39。139。 elsif(clkmn39。 else qmn=mns。139。 architecture fen of minute is signal qmn:integer range 0 to 59。 mny: out integer range 0 to 59) 。 clk2: out std_logic。 mns: in integer range 0 to 59。 alarmmn: in std_logic。 entity minute is port 24 ( clkmn: in std_logic。 use 。 END。 wait。 ss=0。 sa=0。139。 wait。 sets = 39。139。 end process。039。 wait for clk_period/2。 clk_process :process begin clks = 39。 end ponent。 sx : out integer range 0 to 59。 qts : out integer range 0 to 59。 sa : in integer range 0 to 59。 sets : in std_logic。 constant clk_period : time := 1ms。 signal sx : integer :=0。 signal qts : integer :=0。 signal sa : integer :=0。 signal alarms : std_logic:=39。 signal sets : std_logic:=39。 architecture one of test is signal clks : std_logic:=39。 use 。 秒 testbench library ieee。 sy=qs。 end process。 then sx=sa。 process(alarms,sa) begin if alarms=39。 end if。039。 輸出分模塊時鐘信號 elsif qs59 then qs=qs+1。 clk1=39。139。 elsif(clks39。 else qs=ss。139。 architecture miao of second is signal qs:integer range 0 to 60。鬧鈴制定時間 sy: out integer range 0 to 59) 。輸出時間 clk1: out std_logic。鬧鈴預置時間參數(shù) ss: in integer range 0 to 59。 alarms: in std_logic。 entity second is port ( clks: in std_logic。 use 。 從這次設計開始到完成 ,這整個過程中讓我終于覺得平時所學的知識有了實用的價值,達到了理論與實際相結(jié)合的目的,不僅學到了不少知識,而且鍛煉了自己的能力,自己對以后的路有了更加清楚的認識,同時,對未來有了更多的信心。層次化設計的好處是帶給我們很大的靈活性,我們可以單獨對某個功能的模塊進行修改而不影響其他的模塊,便于升級、局部優(yōu)化和維護。自頂向下的設計思想在設計數(shù)字電子系統(tǒng)時非常實用,可以將較為復雜的問題化簡為一個個小問題,這樣設計人員的思路會變得很清晰。在設計中我使用了元件例化,程序包,函數(shù),過程等手段綜合實現(xiàn)。在這整個設計過程中,當每一步的設計提示錯誤,在通過修改編譯正確后,都讓我感到一種成就感,讓我感到我在這個過程中,我學到了知識,并且學會了應用,比如進一步 加深了對 VHDL 代碼編寫 的了解,讓我對它有了更加濃厚的興趣, 鞏固了層次化的設計方法,從設計到模塊到具體的編程一步步走下去,最終在先前設計好的框架下完成了設計。剛開始時,我是先從比較熟練的 Quartus II 入手,當所有的設計模塊都編譯成功后再進一步運用 modelsim進行波形仿真,在開始編寫 testbench 時,感到有些難度,后來經(jīng)過翻閱查找多種相關的資料后,最終了解了 testbench 編寫的方式,最終仿真出了各個模 塊的波形圖。由以上的分析,可以看出此次的數(shù)據(jù)電子鐘設計完成年月日時分秒,隨時設置時間,鈴聲提醒,閏年提醒的功能,所以這次論文設計是成功的。2020 是閏年,則ring=1 起始設置時間 11 圖 14 圖 15 結(jié)果分析:以上仿真波形可以觀察出數(shù)字電子鐘具有年月日時分秒的功能,具有鬧鈴設計,閏年提醒,隨時設置時間功能 閏年提醒 秒 分 時 天 月 時間 12: :30 鬧鈴提醒 12 十一、 各個電路模塊的 DV 綜合的網(wǎng)標和電路模型: second 模塊 圖 16 minute 模塊 圖 17 13 Hour模塊: 圖 18 圖 19 14 Day 模塊: 圖 20 圖 21 15 Month 模塊: 圖 22 圖 23 16 Years 模塊: 圖 24 圖 25 17 Alarm_clock(鬧鐘)模塊: 圖 26 圖 27 18 總模塊: 圖 28 圖 29 19 Testbench 模塊: 圖 30 十二、設計結(jié)果分析: 此次數(shù)字電子鐘設計中由圖 圖 3 可以看出,秒可以由 0 計數(shù)到 59 ,當重新計數(shù)到 0 時會出現(xiàn)一個進位信號,作為分的時鐘信號;由圖 4 可以看出 ,此波形和秒一致;由圖 5 可以看出,時可以由 0 計數(shù)到 23,當重新計數(shù)回 0 時,會出現(xiàn)一個進位信號作為天的時鐘信號;由圖 圖 圖 圖 9 可以看出,如果當年為非閏年 12 月是 31 天(還有 10 為 31 天,沒有截圖標出)、 2 月 28 天, 4 月 30 天(還有 11 為 30 天,沒有獨立截圖標出), 而當年是閏年時,與以上不同之處在于 2 月是 29 天,當計數(shù)到對應月份天數(shù)終值后,都會輸出一個進位信號作為月的時鐘信號;由圖 11 可以看出,月由 1 計數(shù)到 12,重新計數(shù)回 1 時會出現(xiàn)一個進位信號作為年模塊的時鐘信號;由圖 12可以看出,年從 2020 年開始,一直往下計數(shù)。 Set(時間校對)模塊: 圖 13 結(jié)果分析:將校對時間設置為 2020 年 12 月 1 號 8 點 30 分,當 set=1 時,時鐘時間就重置了,然后當 set=0 時,時鐘就由你設置的時間開始計時。) 十、各個模塊的波形仿真結(jié)果 : second 模塊 圖 2 圖 3 結(jié)果分析:預置初始值為 0,因此由 0 計數(shù)到 59,之后出現(xiàn)進位 clk1=1. minute 模塊 圖 4 結(jié)果分析:預置初值為 12,因此由 12 計數(shù)到 59,最終回 0,波形注釋大致和 second模塊注釋一樣。 “ hs”即為你要設置的時間,當 set=1 時 就把“ hs”上的值賦給“ h”,然后“ h” 7 就從你設置的時間開始計時,就實現(xiàn)了時間設置功能。 end if。then if hs=0 then qh=qh 。 Set 時間校對模塊: process(set,hs) —— 這是小時模塊的 set,其他計時模塊與其相同 begin if set=39。 end process。039。139。139。”賦初始值,這樣計數(shù)器就會從 2020 開始計數(shù)。 end process。) then q=q+1。event and clk=39。 當上一個模塊的控制信號來臨時, month 模塊開始從 1 計數(shù)到 12,并輸出一個控制信號 clk3 控制 year 模塊,此時 clk3=1 ,并回到 1 然后循環(huán)計數(shù),此時 clk3=0。 6 end if。039。 elsif q12 then q=q+1。 clk3=39。139。 Month 計時模塊: begin process(clk) begin if(clk39。如果是非閏年,并且是 1月, day 模塊開始則從 1 計數(shù)到 31,而如果是 2 月,則 day 模塊開始計時從 1 計數(shù)到 29,如果其他月份時,則計數(shù)從 1 到 30,之后并輸出一個控制信號 clk2 控制 month 模塊,此時 clk2=1 ,計數(shù)到最大值時都會回到 1 然后循環(huán)計數(shù),此時 clk2=0。 end if。 end if。 clk2=39。139。 elsif ((monthin=4) or (monthin=6) or (monthin=9) or (monthin=11)) then if(qd=30) then qd=1。039。 elsif qd28 then qd=qd+1。 clk2=39。 end if。 clk2=39。139。 el