版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 目錄</b></p><p> 一、系統(tǒng)設計要求 ……………………………………………………2</p><p> 系統(tǒng)設計方案 ……………………………………………………2</p><p> 三、 綜合及時電路的設計 ……………………………………………2</p><p> 3.1 計
2、時電路的設計 ……………………………………………………………3</p><p> 3.2 計數(shù)電路CNT60、CNT30計數(shù)模塊的具體設計 ………………………3</p><p> 顯示控制電路的設計 ……………………………………………4</p><p> 4.1 顯示控制電路 ………………………………………………………………4</p><
3、;p> 4.2 顯示譯碼電路 ………………………………………………………………4</p><p> 調(diào)整控制電路TZKZQ的設計 …………………………………5</p><p> 5.1狀態(tài)切換電路 ………………………………………………………………5</p><p> 5.2 加一調(diào)整電路………………………………………………………………5</p&
4、gt;<p> 5.3 TZKZQ的輸入、輸出 ……………………………………………………5</p><p> 系統(tǒng)總體電路組裝圖 ……………………………………………6</p><p> 主要的VHDL源程序 …………………………………………6</p><p> 7.1 顯示控制電路DISPLAY.VHDL源程序 …………………………………6
5、</p><p> 7.2 調(diào)整控制電路TZKAQ.VHDL源程序 …………………………………9</p><p> 7.3 計數(shù)電路CNT60.VHDL源程序 …………………………………………11</p><p> 7.4 計時電路CNT30.VHDL源程序 …………………………………………12</p><p> 7.5 系統(tǒng)總體組
6、裝電路的源程序 …………………………………………14</p><p> 系統(tǒng)仿真/硬件驗證 ……………………………………………19</p><p> 8.1 CNT60.VHDL仿真 …………………………………………………19</p><p> 8.2 CNT30.VHDL仿真 …………………………………………………20</p&g
7、t;<p> 8.3 DISPLAY.VHDL仿真 ……………………………………………………20</p><p> 8.4 TZKZQ.VHDL仿真 ………………………………………………………20</p><p> 8.5 系統(tǒng)硬件驗證 ……………………………………………………………20</p><p> 設計技巧分析 …………………………
8、………………………21</p><p> 系統(tǒng)拓展思路 …………………………………………………21</p><p> 系統(tǒng)設計心得體會 ……………………………………………22</p><p><b> 一、系統(tǒng)設計要求</b></p><p> 設計一個綜合性的計時系統(tǒng),要求能實現(xiàn)年、月、日、時、分、秒以及星
9、期的計數(shù)等中和計時功能,同時將計數(shù)結(jié)果通過七段數(shù)碼管或1602液晶顯示。設計也能進行時、分、秒計時的十二小時制或二十四小時制的數(shù)字鐘,并具有定時與鬧鐘功能,能在設定的時間發(fā)出鬧鈴音,能非常方便地對年、月、日‘時、分鐘和秒進行手動調(diào)節(jié)以校準時間,每逢整點,產(chǎn)生報時音報時。 </p><p><b> 二、系統(tǒng)設計方案</b></p><p> 根據(jù)系統(tǒng)的設計要求,綜
10、合設計系統(tǒng)可分為三個主要模塊:綜合計時電路模塊、顯示控制電路模塊和調(diào)整控制電路模塊。其綜合控制電路模塊主要用于完成年、月、日、十、分、秒及星期的計時功能,顯示控制模塊主要用于完成各計時結(jié)果的顯示控制和顯示譯碼等相關的功能,調(diào)整控制電路主要用于調(diào)整及時電路的初始值即校正顯示時間。 </p><p> 三、 綜合及時電路的設計</p><p> 綜合計時電路可分為計秒電路、計分電路、計時電
11、路、計星期電路、計日電路、計月電路和計年電路等7個模塊電路,這七個模塊電路分別設置了預置數(shù)、計數(shù)和進位等功能,其設計如下描述:</p><p> 3.1 計秒電路/計分電路/計時電路/計星期電路/ 計日電路/計月電路/計年電路設計</p><p> 用秒脈沖作為計秒電路的計數(shù)時鐘信號,每當計滿60就會溢出,同時進位位進位,計分電路加1,同時計秒電路清零并重新計數(shù)。</p>
12、<p> 將計秒電路的進位信號作為計分電路的計數(shù)時鐘信號,每當計滿60就會溢出,同時進位位進位,計時電路加1,同時計分電路清零并重新計數(shù)。</p><p> 將計分電路的進位信號作為計時電路的計數(shù)時鐘信號,每當計滿24或12就會溢出,同時進位位進位,計星期/日電路加1,同時計時電路清零并重新計數(shù)。</p><p> 將計日電路的進位信號作為計星期電路的計數(shù)時鐘信號,每當計
13、滿7就會溢出,計星期電路返回加1并重新計數(shù)。</p><p> 將計時電路的進位脈沖信號作為計日電路的計數(shù)時鐘信號,通過系統(tǒng)辨認,確定本月總天數(shù)后,每當計滿本月天數(shù)就會溢出進位,計月電路加1,計日電路重新計數(shù)。</p><p> 將計日電路的進位信號作為計月電路的計數(shù)時鐘信號,每當計滿12就會溢出進位,計年電路加1,計月電路返回加1并重新計數(shù)。</p><p>
14、 將計月電路的進位信號作為計年電路的計數(shù)時鐘信號,每當計滿100就會溢出,計年電路返回加1并重新計數(shù)。</p><p> 3.2 計數(shù)電路CNT60、CNT30計數(shù)模塊的具體設計</p><p> CNT60計數(shù)模塊是一個多用計時模塊,它既可以作為計秒電路調(diào)用,又可以作為計分電路調(diào)用,如圖1是其輸入、輸出端口圖,其中,輸入信號LD為置數(shù)控制信號,低電平有效,輸入信號CLK是計數(shù)時鐘信
15、號,輸入型號DATA為預置數(shù),輸出信號NUM為計數(shù)結(jié)果,輸出信號CO為計數(shù)溢出信號。</p><p> 圖1. CNT60計數(shù)模塊輸入、輸出端口圖</p><p> CNT30計數(shù)模塊是一個計日模塊。由于該計數(shù)模塊涉及到大小月及閏年問題,所以CNT30的計數(shù)范圍并不是固定不變,存在28、29、30和31四種計數(shù)情況。圖2是其輸入、輸出端口圖,其中,輸入信號LD為置數(shù)控制信號,低電平有效
16、,輸入信號CLK是計數(shù)時鐘信號,輸入型號DATA為預置數(shù),輸入YEAR為當前計時的年份數(shù),輸入信號MONTH為當前計時的月份數(shù),輸出信號NUM為計數(shù)結(jié)果,輸出信號CO為計數(shù)溢出信號輸出信號CURRUT_MAX_DAYS為當前月的天數(shù)。</p><p> 圖2 CNT30計數(shù)模塊輸入、輸出端口圖</p><p> 四、顯示控制電路的設計</p><p> 顯示
17、主要用數(shù)碼管顯示,主要用于顯示當前年、月、日、時、分、秒、及星期,本系統(tǒng)的數(shù)據(jù)顯示電路可分為兩個子模塊即顯示控制電路和顯示譯碼電路。</p><p> 4.1 顯示控制電路</p><p> 主要負責完成數(shù)據(jù)選擇掃描及數(shù)碼管選擇信號的產(chǎn)生。數(shù)據(jù)掃描選擇輸出,同時對選擇的數(shù)據(jù)進行BCD碼轉(zhuǎn)換等功能</p><p> 4.2 顯示譯碼電路</p>&
18、lt;p> 將用于顯示的BCD碼數(shù)據(jù)進行譯碼。XSKZQ的輸入、輸出端口如圖3所示。其中,,輸入信號LD為置數(shù)控制信號,低電平有效,輸入信號CLK_SCAN是計數(shù)時鐘信號,輸入信號SEC、MIN、HOUR、DAY、MON、YEAR、WEEK分別來自計秒電路、計分電路、計時電路、計日電路、計月電路、計年電路和計星期電路等計時電路的計數(shù)結(jié)果的輸出:輸出信號BCD為被選擇進行顯示的計時電路的計時結(jié)果的8為BCD碼,輸出端
19、 SELOUT經(jīng)外部的3-8譯碼電路譯碼后用于選擇對應計時結(jié)果顯示數(shù)碼管的公共端</p><p> 五、調(diào)整控制電路TZKZQ的設計</p><p> 調(diào)整控制電路TZKZQ主要有狀態(tài)切換模塊和加一調(diào)整模塊,狀態(tài)切換模塊主要負責切換正常時間計數(shù)模式和時間調(diào)整模式并負責切換調(diào)整那個時間塊的狀態(tài),加一調(diào)整模塊主要用于對年、月、日、時、分、秒及星期的加一調(diào)整,調(diào)整調(diào)正常的時間是運作。<
20、/p><p><b> 5.1狀態(tài)切換電路</b></p><p> 在狀態(tài)的切換過程中,被選著的狀態(tài)所對應的二極管點亮,沒被選著的狀態(tài)調(diào)整所對應的發(fā)光二極管就熄滅,以便調(diào)試,被選中的狀態(tài)就可以用加一按鍵進行相應的時間調(diào)整,知道調(diào)整的正確的時間</p><p> 5.2 加一調(diào)整電路</p><p> 主要對年、月、
21、日、時、分、秒及星期的加一調(diào)整,是本設計很重要的部分,以防止電或出現(xiàn)異常情況出現(xiàn)時間錯亂,這時就要對相應的時間模塊進行調(diào)整,直到對應真確的當?shù)貢r間。</p><p> 5.3 TZKZQ的輸入、輸出</p><p> 圖4是其輸入、輸出端口圖,其中輸入信號KEY[1..0]為鍵盤信號,當KEY=10時表示按下了設置鍵,系統(tǒng)切換到下一狀態(tài),當KEY=10時表示按下了調(diào)整鍵,系統(tǒng)進行自加一
22、。輸入信號CLK_KEY為按鍵掃描時鐘信號,輸入信號YEAR_CUR、MON_CUR、 DAY_CUR、 HOUR_CUR、 MIN_CUR、 SEC_CUR、 WEEK_CUR、 CURRENT_MAX_CUR為各計時電路輸出的當前計時結(jié)果的反饋值,輸出信號YEAR_EN、MON_EN、 DAY_EN、 HOUR_CEN、 MIN_EN、 SEC_EN、 WEEK_EN為各計時電路的異步置數(shù)使能信號;輸出信號SEC 、MIN 、HOU
23、R、 DAY 、MON 、YEAR、 WEEK為調(diào)整后對應時間預置的數(shù)。</p><p> 圖4 TZKZQ輸入、輸出端口圖</p><p> 六、系統(tǒng)總體電路圖的設計</p><p> 經(jīng)過系統(tǒng)的分析,系統(tǒng)的電路圖由調(diào)節(jié)控制電路、顯示控制電路和和綜合計時電路組轉(zhuǎn)而成。由于排版原因,本綜合計時系統(tǒng)的組裝電路原理圖在(下一頁)</p><
24、p> 七、主要VHDL源程序</p><p> 7.1 顯示控制電路DISPLAY的VHDL源程序</p><p> --DISPLAY_CONTRAL.VHD</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p>
25、USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ENTITY DISPLAY IS</p><p> PORT(CLK_SCAN:IN STD_LOGIC;</p><p> SEC,MIN:IN STD_LOGIC_VE
26、CTOR(5 DOWNTO 0);</p><p> HOUR:IN STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> DAY:IN STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> MON:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> YE
27、AR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> WEEK:IN STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p> SELOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p> BCD_DATA:OUT STD_LOGIC_VECTOR(7 DOWNTO
28、0));</p><p> END ENTITY DISPLAY;</p><p> ARCHITECTURE ART3 OF DISPLAY IS</p><p> SIGNAL TEMP:INTEGER RANGE 0 TO 99;</p><p> SIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);
29、</p><p><b> BEGIN</b></p><p> PROCESS(CLK_SCAN)IS</p><p><b> BEGIN</b></p><p> IF CLK_SCAN'EVENT AND CLK_SCAN='1'THEN</p>
30、<p> IF CNT<="111"THEN</p><p> CNT<="000";</p><p><b> ELSE</b></p><p> CNT<=CNT+'1';</p><p><b> END IF
31、;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> SELOUT<=CNT;</p><p> PROCESS(CNT)IS</p><p><b> BEGIN</b><
32、;/p><p> CASE CNT IS</p><p> WHEN"000"=>TEMP<=CONV_INTEGER(SEC);</p><p> WHEN"001"=>TEMP<=CONV_INTEGER(MIN);</p><p> WHEN"010"
33、;=>TEMP<=CONV_INTEGER(HOUR);</p><p> WHEN"011"=>TEMP<=CONV_INTEGER(DAY);</p><p> WHEN"100"=>TEMP<=CONV_INTEGER(MON);</p><p> WHEN"101&q
34、uot;=>TEMP<=CONV_INTEGER(YEAR);</p><p> WHEN"110"=>TEMP<=2;</p><p> WHEN"111"=>TEMP<=CONV_INTEGER(WEEK);</p><p> WHEN OTHERS=>NULL;</p
35、><p><b> END CASE;</b></p><p> CASE TEMP IS</p><p> WHEN 0=>BCD_DATA<="00000000";</p><p> WHEN 1=>BCD_DATA<="00000001";<
36、/p><p> WHEN 2=>BCD_DATA<="00000010";</p><p> WHEN 3=>BCD_DATA<="00000011";</p><p> WHEN 4=>BCD_DATA<="00000100";</p><p>
37、; WHEN 5=>BCD_DATA<="00000101";</p><p> WHEN 6=>BCD_DATA<="00000110";</p><p> WHEN 7=>BCD_DATA<="00000111";</p><p> WHEN 8=>BC
38、D_DATA<="00001000";</p><p> WHEN 9=>BCD_DATA<="00001001";</p><p> WHEN 10=>BCD_DATA<="00010000";</p><p> WHEN 11=>BCD_DATA<=&qu
39、ot;00010001";</p><p> WHEN 12=>BCD_DATA<="00010010";</p><p> WHEN 13=>BCD_DATA<="00010011";</p><p> WHEN 14=>BCD_DATA<="00010100&q
40、uot;;</p><p> WHEN 15=>BCD_DATA<="00010101";</p><p> WHEN 16=>BCD_DATA<="00010110";</p><p> WHEN 17=>BCD_DATA<="00010111";</p&g
41、t;<p> WHEN 18=>BCD_DATA<="00011000";</p><p> WHEN 19=>BCD_DATA<="00011001";</p><p> WHEN 20=>BCD_DATA<="00100000";</p><p>
42、 WHEN 21=>BCD_DATA<="00100001";</p><p> WHEN 22=>BCD_DATA<="00100010";</p><p> WHEN 23=>BCD_DATA<="00100011";</p><p> WHEN 24=>
43、;BCD_DATA<="00100100";</p><p> WHEN 25=>BCD_DATA<="00100101";</p><p> WHEN 26=>BCD_DATA<="00100110";</p><p> WHEN 27=>BCD_DATA<
44、="00100111";</p><p> WHEN 28=>BCD_DATA<="00101000";</p><p> WHEN 29=>BCD_DATA<="00101001";</p><p> WHEN 30=>BCD_DATA<="001100
45、00";</p><p> WHEN 31=>BCD_DATA<="00110001";</p><p> WHEN 32=>BCD_DATA<="00110010";</p><p> WHEN 33=>BCD_DATA<="00110011";<
46、/p><p> WHEN 34=>BCD_DATA<="00110100";</p><p> WHEN 35=>BCD_DATA<="00110101";</p><p> WHEN 36=>BCD_DATA<="00110110";</p><p
47、> WHEN 37=>BCD_DATA<="00110111";</p><p> WHEN 38=>BCD_DATA<="00111000";</p><p> WHEN 39=>BCD_DATA<="00111001";</p><p> WHEN 40
48、=>BCD_DATA<="01000000";</p><p> WHEN 41=>BCD_DATA<="01000001";</p><p> WHEN 42=>BCD_DATA<="01000010";</p><p> WHEN 43=>BCD_DATA
49、<="01000011";</p><p> WHEN 44=>BCD_DATA<="01000100";</p><p> WHEN 45=>BCD_DATA<="01000101";</p><p> WHEN 46=>BCD_DATA<="01
50、000110";</p><p> WHEN 47=>BCD_DATA<="01000111";</p><p> WHEN 48=>BCD_DATA<="01001000";</p><p> WHEN 49=>BCD_DATA<="01001001";
51、</p><p> WHEN 50=>BCD_DATA<="01010000";</p><p> WHEN 51=>BCD_DATA<="01010001";</p><p> WHEN 52=>BCD_DATA<="01010010";</p>&
52、lt;p> WHEN 53=>BCD_DATA<="01010011";</p><p> WHEN 54=>BCD_DATA<="01010100";</p><p> WHEN 55=>BCD_DATA<="01010101";</p><p> WHE
53、N 56=>BCD_DATA<="01010110";</p><p> WHEN 57=>BCD_DATA<="01010111";</p><p> WHEN 58=>BCD_DATA<="01011000";</p><p> WHEN 59=>BCD_
54、DATA<="01011001";</p><p> WHEN 60=>BCD_DATA<="01100000";</p><p> WHEN 61=>BCD_DATA<="01100001";</p><p> WHEN 62=>BCD_DATA<=&quo
55、t;01100010";</p><p> WHEN 63=>BCD_DATA<="01100011";</p><p> WHEN 64=>BCD_DATA<="01100100";</p><p> WHEN 65=>BCD_DATA<="01100101&qu
56、ot;;</p><p> WHEN 66=>BCD_DATA<="01100110";</p><p> WHEN 67=>BCD_DATA<="01100111";</p><p> WHEN 68=>BCD_DATA<="01101000";</p>
57、;<p> WHEN 69=>BCD_DATA<="01101001";</p><p> WHEN 70=>BCD_DATA<="01110000";</p><p> WHEN 71=>BCD_DATA<="01110001";</p><p>
58、 WHEN 72=>BCD_DATA<="01110010";</p><p> WHEN 73=>BCD_DATA<="01110011";</p><p> WHEN 74=>BCD_DATA<="01110100";</p><p> WHEN 75=>
59、BCD_DATA<="01110101";</p><p> WHEN 76=>BCD_DATA<="01110110";</p><p> WHEN 77=>BCD_DATA<="01110111";</p><p> WHEN 78=>BCD_DATA<=
60、"01111000";</p><p> WHEN 79=>BCD_DATA<="01111001";</p><p> WHEN 80=>BCD_DATA<="10000000";</p><p> WHEN 81=>BCD_DATA<="1000000
61、1";</p><p> WHEN 82=>BCD_DATA<="10000010";</p><p> WHEN 83=>BCD_DATA<="10000011";</p><p> WHEN 84=>BCD_DATA<="10000100";</
62、p><p> WHEN 85=>BCD_DATA<="10000101";</p><p> WHEN 86=>BCD_DATA<="10000110";</p><p> WHEN 87=>BCD_DATA<="10000111";</p><p&
63、gt; WHEN 88=>BCD_DATA<="10001000";</p><p> WHEN 89=>BCD_DATA<="10001001";</p><p> WHEN 90=>BCD_DATA<="10010000";</p><p> WHEN 91=
64、>BCD_DATA<="10010001";</p><p> WHEN 92=>BCD_DATA<="10010010";</p><p> WHEN 93=>BCD_DATA<="10010011";</p><p> WHEN 94=>BCD_DATA&
65、lt;="10010100";</p><p> WHEN 95=>BCD_DATA<="10010101";</p><p> WHEN 96=>BCD_DATA<="10010110";</p><p> WHEN 97=>BCD_DATA<="100
66、10111";</p><p> WHEN 98=>BCD_DATA<="10011000";</p><p> WHEN 99=>BCD_DATA<="10011001";</p><p> WHEN OTHERS=>BCD_DATA<="00000000&quo
67、t;;</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE ART3;</p><p> 7、2調(diào)整控制電路TZKZQ的VHDL源程序</p><p> --TZKZQ.VHD</p&
68、gt;<p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY TZKZQ IS</p><p><b> PORT(</b>
69、</p><p> CLK_KEY:IN STD_LOGIC;</p><p> SEC_EN,MIN_EN,HOUR_EN,</p><p> DAY_EN,MON_EN,YEAR_EN,</p><p> WEEK_EN:OUT STD_LOGIC;</p><p> CURRUT_MONTH_DAYS:
70、IN STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> KEY:IN STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p> SEC_CUR:IN STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> HOUR_CUR:IN STD_LOGIC_VECTOR(4 DOWNTO 0);&l
71、t;/p><p> MIN_CUR:IN STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> YEAR_CUR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> MON_CUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> DAY_CUR:I
72、N STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> WEEK_CUR:IN STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p> SEC,MIN:BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> HOUR:BUFFER STD_LOGIC_VECTOR(4 DOWN
73、TO 0);</p><p> YEAR:BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> MON:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> DAY:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> W
74、EEK:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0));</p><p> END ENTITY TZKZQ;</p><p> ARCHITECTURE ART4 OF TZKZQ IS</p><p> TYPE STATETYPE IS(NORMAL,SEC_SET,MIN_SET,HOUR_SET,DAY_SET,MON_SE
75、T,YEAR_SET,WEEK_SET);</p><p> SIGNAL MODE:STATETYPE;</p><p><b> BEGIN </b></p><p> PROCESS(KEY,CLK_KEY)IS</p><p><b> BEGIN</b></p>&l
76、t;p> IF CLK_KEY'EVENT AND CLK_KEY='1'THEN</p><p> IF KEY="01"THEN</p><p> SEC_EN<='1';MIN_EN<='1';HOUR_EN<='1';</p><p>
77、 DAY_EN<='1';MON_EN<='1';YEAR_EN<='1';</p><p> WEEK_EN<='1';</p><p> CASE MODE IS</p><p> WHEN NORMAL=> MODE<=SEC_SET;SEC<=SE
78、C_CUR;SEC_EN<='0';</p><p> WHEN SEC_SET=>MODE<=MIN_SET;MIN<=MIN_CUR;SEC_EN<='1';--MIN<='0';</p><p> WHEN MIN_SET=>MODE<=HOUR_SET;</p><
79、;p> HOUR<=HOUR_CUR;MIN_EN<='1';HOUR_EN<='0';</p><p> WHEN HOUR_SET=>MODE<=DAY_SET;</p><p> DAY<=DAY_CUR;HOUR_EN<='1';DAY_EN<='0';<
80、;/p><p> WHEN DAY_SET=>MODE<=MON_SET;</p><p> MON<=MON_CUR;DAY_EN<='1';MON_EN<='0';</p><p> WHEN MON_SET=>MODE<=YEAR_SET;</p><p>
81、YEAR<=YEAR_CUR;MON_EN<='1';YEAR_EN<='0';</p><p> WHEN YEAR_SET=>MODE<=WEEK_SET;</p><p> WEEK<=WEEK_CUR;YEAR_EN<='1';WEEK_EN<='0';</p&
82、gt;<p> WHEN WEEK_SET=>MODE<=NORMAL;</p><p><b> END CASE;</b></p><p> ELSIF KEY="10"THEN</p><p> CASE MODE IS</p><p> WHEN SEC_S
83、ET=>SEC_EN<='0';</p><p> IF SEC="111011"THEN SEC<="000000";--IF>59</p><p> ELSE SEC<=SEC+1;</p><p><b> END IF;</b></p>
84、;<p> WHEN MIN_SET=>MIN_EN<='0';</p><p> IF MIN="111011"THEN MIN<="000000";--IF>59</p><p> ELSE MIN<=MIN+1;</p><p><b> EN
85、D IF;</b></p><p> WHEN HOUR_SET=>HOUR_EN<='0';</p><p> IF HOUR="11000"THEN HOUR<="00000";--IF>23</p><p> ELSE HOUR<=HOUR+1;</
86、p><p><b> END IF;</b></p><p> WHEN DAY_SET=>DAY_EN<='0';</p><p> IF DAY=CURRUT_MONTH_DAYS THEN DAY<="00001";</p><p> ELSE DAY<
87、;=DAY+1;</p><p><b> END IF;</b></p><p> WHEN MON_SET=>MON_EN<='0';</p><p> IF MON="1100" THEN MON<="0001";--IF>12</p>&
88、lt;p> ELSE MON<=MON+1;</p><p><b> END IF;</b></p><p> WHEN YEAR_SET=>YEAR_EN<='0';</p><p> IF YEAR="1100011" THEN YEAR<="000000
89、0";--IF>99</p><p> ELSE YEAR<=YEAR+1;</p><p><b> END IF;</b></p><p> WHEN WEEK_SET=>WEEK_EN<='0';</p><p> IF WEEK="111&quo
90、t; THEN WEEK<="001";--IF>7</p><p> ELSE WEEK<=WEEK+1;</p><p><b> END IF;</b></p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;
91、</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE ART4;</p><p> 7.3、CNT60
92、計數(shù)模塊的VHDL源程序</p><p> --CNT60.VHD</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CN
93、T60 IS</p><p> PORT(LD:IN STD_LOGIC;</p><p> CLK:IN STD_LOGIC;</p><p> DATA:IN STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> NUM:BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0);</p&
94、gt;<p> CO:OUT STD_LOGIC);</p><p> END ENTITY CNT60;</p><p> ARCHITECTURE ART1 OF CNT60 IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK,LD)IS</p&
95、gt;<p><b> BEGIN</b></p><p> IF(LD='0')THEN</p><p> NUM<=DATA;</p><p> ELSIF CLK'EVENT AND CLK='1'THEN</p><p> IF NUM=&qu
96、ot;111011"THEN</p><p> NUM<="000000";CO<='1';</p><p><b> ELSE</b></p><p> NUM<=NUM+1;CO<='0';</p><p><b>
97、 END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE ART1;</p><p> 7.4 、CNT30計時電路的VHDL源程序</p><p> --CN
98、T30.VHD</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CNT30A IS </p><p> PORT(LD:
99、IN STD_LOGIC;</p><p> CLK: IN STD_LOGIC;</p><p> YEAR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> MONTH:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> DATA:IN STD_LOGIC_VECT
100、OR(4 DOWNTO 0);</p><p> NUM:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> CURRUT_MONTH_DAYS:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> CO:OUT STD_LOGIC);</p><p> END
101、ENTITY CNT30A;</p><p> ARCHITECTURE ART2 OF CNT30A IS</p><p> SIGNAL TOTAL_DAYS:STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(CLK,L
102、D)IS</p><p> VARIABLE IS_RUNYEAR:STD_LOGIC;</p><p><b> BEGIN</b></p><p> CASE YEAR IS</p><p> WHEN"0000000"=>IS_RUNYEAR:='1';--0<
103、;/p><p> WHEN"0000100"=>IS_RUNYEAR:='1';--4</p><p> WHEN"0001000"=>IS_RUNYEAR:='1';--8</p><p> WHEN"0001100"=>IS_RUNYEAR:='
104、;1';--12</p><p> WHEN"0010000"=>IS_RUNYEAR:='1';--16</p><p> WHEN"0010100"=>IS_RUNYEAR:='1';--20</p><p> WHEN"0011000"=>
105、;IS_RUNYEAR:='1';--24</p><p> WHEN"0011100"=>IS_RUNYEAR:='1';--28</p><p> WHEN"0100000"=>IS_RUNYEAR:='1';--32</p><p> WHEN"
106、0100100"=>IS_RUNYEAR:='1';--36</p><p> WHEN"0101000"=>IS_RUNYEAR:='1';--30</p><p> WHEN"0101100"=>IS_RUNYEAR:='1';--44</p><
107、p> WHEN"0110000"=>IS_RUNYEAR:='1';--48</p><p> WHEN"0110100"=>IS_RUNYEAR:='1';--52</p><p> WHEN"0111000"=>IS_RUNYEAR:='1';--5
108、6</p><p> WHEN"0111100"=>IS_RUNYEAR:='1';--60</p><p> WHEN"1000000"=>IS_RUNYEAR:='1';--64</p><p> WHEN"1000100"=>IS_RUNYEAR
109、:='1';--68</p><p> WHEN"1001000"=>IS_RUNYEAR:='1';--72</p><p> WHEN"1001100"=>IS_RUNYEAR:='1';--76</p><p> WHEN"1010000&quo
110、t;=>IS_RUNYEAR:='1';--80</p><p> WHEN"1010100"=>IS_RUNYEAR:='1';--84</p><p> WHEN"1011000"=>IS_RUNYEAR:='1';--88</p><p> WHEN
111、"1011100"=>IS_RUNYEAR:='1';--92</p><p> WHEN"1100000"=>IS_RUNYEAR:='1';--96</p><p> WHEN OTHERS =>IS_RUNYEAR:='0';</p><p><
112、b> END CASE;</b></p><p> CASE MONTH IS</p><p> WHEN"0000"=>TOTAL_DAYS<="11111";--1YUE</p><p> WHEN"0011"=>TOTAL_DAYS<="11
113、111";--3YUE</p><p> WHEN"0101"=>TOTAL_DAYS<="11111";--5YUE</p><p> WHEN"0111"=>TOTAL_DAYS<="11111";--7YUE</p><p> WHEN&qu
114、ot;1000"=>TOTAL_DAYS<="11111";--8YUE</p><p> WHEN"1010"=>TOTAL_DAYS<="11111";--10YUE</p><p> WHEN"1100"=>TOTAL_DAYS<="11111&
115、quot;;--12YUE</p><p> WHEN"0100"=>TOTAL_DAYS<="11110";--4YUE</p><p> WHEN"0110"=>TOTAL_DAYS<="11110";--6YUE</p><p> WHEN"
116、1001"=>TOTAL_DAYS<="11110";--9YUE</p><p> WHEN"1011"=>TOTAL_DAYS<="11110";--11YUE</p><p> WHEN"0010"=>IF(IS_RUNYEAR='1')THEN
117、</p><p> TOTAL_DAYS<="11101";--29</p><p><b> ELSE</b></p><p> TOTAL_DAYS<="11100";--28</p><p><b> END IF;</b></
118、p><p> WHEN OTHERS =>NULL;</p><p><b> END CASE;</b></p><p> IF(LD='0')THEN </p><p> NUM<=DATA;</p><p> ELSIF CLK'EVENT'
119、ANDCLK='1'THEN</p><p> CURRUT_MONTH_DAYS<=TOTAL_DAYS;</p><p> IF NUM=TOTAL_DAYS THEN </p><p> NUM<="00001";CO<='1';</p><p><b&g
120、t; ELSE</b></p><p> NUM<=NUM+1;CO<='1';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p>&
121、lt;p> END ARCHITECTURE ART2;</p><p> 7.5、系統(tǒng)總體組裝電路的VHDL源程序</p><p> -- COPYRIGHT (C) 1991-2007 ALTERA CORPORATION</p><p> -- YOUR USE OF ALTERA CORPORATION'S DESIGN TOOLS,
122、LOGIC FUNCTIONS </p><p> -- AND OTHER SOFTWARE AND TOOLS, AND ITS AMPP PARTNER LOGIC </p><p> -- FUNCTIONS, AND ANY OUTPUT FILES FROM ANY OF THE FOREGOING </p><p> -- (INCLUDING
123、DEVICE PROGRAMMING OR SIMULATION FILES), AND ANY </p><p> -- ASSOCIATED DOCUMENTATION OR INFORMATION ARE EXPRESSLY SUBJECT </p><p> -- TO THE TERMS AND CONDITIONS OF THE ALTERA PROGRAM LICENSE
124、 </p><p> -- SUBSCRIPTION AGREEMENT, ALTERA MEGACORE FUNCTION LICENSE </p><p> -- AGREEMENT, OR OTHER APPLICABLE LICENSE AGREEMENT, INCLUDING, </p><p> -- WITHOUT LIMITATION, THA
125、T YOUR USE IS FOR THE SOLE PURPOSE OF </p><p> -- PROGRAMMING LOGIC DEVICES MANUFACTURED BY ALTERA AND SOLD BY </p><p> -- ALTERA OR ITS AUTHORIZED DISTRIBUTORS. PLEASE REFER TO THE </p>
126、;<p> -- APPLICABLE AGREEMENT FOR FURTHER DETAILS.</p><p> -- PROGRAM "QUARTUS II"</p><p> -- VERSION "VERSION 7.2 BUILD 151 09/26/2007 SJ FULL VERSION"</p>
127、<p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> LIBRARY WORK;</p><p> ENTITY SHUZISHIZHONG IS </p><p><b> PORT</b></p><
128、;p><b> (</b></p><p> CLK_SCAN : IN STD_LOGIC;</p><p> CLK_SEC : IN STD_LOGIC;</p><p> CLK_KEY : IN STD_LOGIC;</p><p> KEY : IN STD_LOGIC_VEC
129、TOR(1 DOWNTO 0);</p><p> LED_MIN : OUT STD_LOGIC;</p><p> LED_HOUR : OUT STD_LOGIC;</p><p> LED_SEC : OUT STD_LOGIC;</p><p> LED_DAY : OUT STD_LOGIC;</p&
130、gt;<p> LED_MON : OUT STD_LOGIC;</p><p> LED_YEAR : OUT STD_LOGIC;</p><p> LED_WEEK : OUT STD_LOGIC</p><p><b> );</b></p><p> END SHUZISHI
131、ZHONG;</p><p> ARCHITECTURE BDF_TYPE OF SHUZISHIZHONG IS </p><p> COMPONENT TZKZQ</p><p> PORT(CLK_KEY : IN STD_LOGIC;</p><p> CURRUT_MONTH_DAYS : IN STD_LOGIC_VECT
132、OR(4 DOWNTO 0);</p><p> DAY_CUR : IN STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> HOUR_CUR : IN STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> KEY : IN STD_LOGIC_VECTOR(1 DOWNTO 0);</p>&
133、lt;p> MIN_CUR : IN STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> MON_CUR : IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> SEC_CUR : IN STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> WEEK_CUR : IN S
134、TD_LOGIC_VECTOR(2 DOWNTO 0);</p><p> YEAR_CUR : IN STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> SEC_EN : OUT STD_LOGIC;</p><p> MIN_EN : OUT STD_LOGIC;</p><p> HOUR_EN : O
135、UT STD_LOGIC;</p><p> DAY_EN : OUT STD_LOGIC;</p><p> MON_EN : OUT STD_LOGIC;</p><p> YEAR_EN : OUT STD_LOGIC;</p><p> WEEK_EN : OUT STD_LOGIC;</p><p>
136、 DAY : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> HOUR : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> MIN : OUT STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> MON : OUT STD_LOGIC_VECTOR(3 DO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文--電子時鐘設計
- 電子時鐘設計畢業(yè)論文
- 畢業(yè)論文-----電子時鐘設計
- 電子時鐘設計畢業(yè)論文
- 電子時鐘設計--畢業(yè)論文初稿
- 畢業(yè)論文電子時鐘設計
- 基于fpga的電子時鐘設計
- 單片機電子時鐘畢業(yè)論文
- 單片機電子時鐘畢業(yè)論文
- 電子時鐘程序設計畢業(yè)論文
- 數(shù)字電子時鐘的設計 畢業(yè)論文
- 畢業(yè)論文--數(shù)字電子時鐘的設計
- 單片機電子時鐘畢業(yè)論文
- 單片機電子時鐘畢業(yè)論文
- 多功能電子時鐘設計畢業(yè)論文
- 基于單片機的電子時鐘設計畢業(yè)論文
- 畢業(yè)論文---基于單片機的電子時鐘設計
- 畢業(yè)論文--基于單片機電子時鐘的設計
- 畢業(yè)論文--基于單片機的電子時鐘設計
- 畢業(yè)論文基于單片機的電子時鐘設計
評論
0/150
提交評論