

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> SOPC/EDA綜合課程設計報告</p><p> 設計題目: 綜合計時系統(tǒng)</p><p> 設 計 者: 學 號: 班 級: </p><p><b> 指導老師: </b></p><p> 完成時間: </p>
2、;<p><b> 目錄</b></p><p><b> 1設計總說明3</b></p><p> 1.1系統(tǒng)設計要求3</p><p> 2綜合計時系統(tǒng)設計與分析4</p><p> 2.1 綜合計時模塊:4</p><p> 2
3、.1.1單時鐘電路構想4</p><p> 2.1.2顯示控制電路的設計7</p><p> 2.1.3調整控制電路TZKZQ的設計10</p><p> 2.2 系統(tǒng)單元仿真與分析11</p><p> 2.2.1綜合計時電路的仿真11</p><p> 2.2.2調整控制電路的仿真12<
4、;/p><p> 2.2.3顯示控制電路的仿真13</p><p> 3外圍電路設計14</p><p> 3.1 直流穩(wěn)壓電源設計電路圖14</p><p> 3.2 顯示電路的設計15</p><p> 4收獲與體會16</p><p> 4.1 改進方法16&
5、lt;/p><p> 4.2 體會16</p><p> 5設計參考資料18</p><p> 6附錄————程序段19</p><p> 6.1 CONT60計時電路的VHDL源程序19</p><p> 6.2 CONT30計時電路的VHDL源程序19</p><p&g
6、t; 6.3 顯示控制電路XSKZQ的VHDL源程序21</p><p> 6.4 調整控制電路TZKZQ的VHDL源程序23</p><p><b> 設計總說明</b></p><p> 計時系統(tǒng)對現代人們生活學習工作等各方面有著巨大的作用,從以前的時鐘、手表到至今,計時系統(tǒng)已經發(fā)展成為普遍性,綜合性,簡便性。如何用更簡單、
7、可靠的原理,更輕便、廉價的設備,更精確、綜合的計時,來設計電子計時器,是此設計的研究目的。</p><p> 隨著現代電子產品正以前所未有的高速度,向著功能多樣化、體積最小化、功耗最低化迅速發(fā)展,如何提高產品性能,縮小產品體積,降低產品功耗,是對現代電子產品的基本要求,而EDA,即電子設計自動化技術,正是為了適應現代電子產品的設計要求,伴隨著計算機、集成電路、電子系統(tǒng)設計的發(fā)展,吸收數據庫、圖形學、圖論與拓撲邏
8、輯、計算數學、優(yōu)化理論等多學科最新成果而逐步形成的一門新技術。它以大規(guī)??删幊踢壿嬈骷樵O計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達方式,以計算機、大規(guī)??删幊踢壿嬈陂g的開發(fā)軟件及實驗開發(fā)系統(tǒng)為設計工具,通過有關的開發(fā)軟件,自動完成用軟件方式設計的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯簡化、邏輯映射、編程下載等工作等。</p><p> 采用EDA技術進行綜合計時系統(tǒng)的設計,可讓計時系統(tǒng)達到精確,簡易,可靠,省
9、能。EDA技術設計電子產品,已成為當今電子研發(fā)行業(yè)的主流,它可提高電子設計自動化程度,縮短開發(fā)周期,提高產品的競爭力。</p><p> 本設計選用Altera公司的FLEX10K系列芯片,該芯片采用5V的工作模式,由Altera公司的MAXplus2開發(fā)系統(tǒng)提供軟件支持,以硬件描述語言VHDL為系統(tǒng)邏輯描述的主要表達方式,設計了一個綜合計時系統(tǒng)。</p><p><b>
10、系統(tǒng)設計要求</b></p><p> 設計一個綜合性的計時系統(tǒng),要求能實現年、月、日、時、分、秒及星期的計數等綜合計時功能,同時將計時結果通過15個七段數碼管顯示,并且可通過兩個設置鍵,對計時系統(tǒng)的有關參數進行調整。具體系統(tǒng)功能面板如圖1所示。</p><p><b> 圖1系統(tǒng)功能面板</b></p><p> 綜合計時系
11、統(tǒng)設計與分析</p><p> 2.1 綜合計時模塊:</p><p> 計時模塊又可分七個小模塊,有計秒模塊,計分模塊,計時模塊,計日模塊,計月模塊,計年模塊,計星期模塊,用于完成各種計時的功能。其中,計秒電路的輸入時鐘周期為1秒,計分電路的輸入時鐘為計秒電路的輸出進位,如此類推下去,構成每個計時模塊之間的聯(lián)系。而計日模塊又略有不同,因為每個月的日數受年份,月份影響,所以要輸入當前
12、的年份月份來判斷是否閏年,是否大月,才可以實現準確的計時。</p><p> 調整控制電路則用于調整計時系統(tǒng)的有關參數,通過兩個按鍵來對系統(tǒng)的參數進行修改,在修改過程中,對應的修改計時模塊通過相應的燈點亮來表示數據正待輸入。</p><p> 顯示控制電路用于完成計時結果的顯示控制及顯示譯碼等功能然后通過15個七段數碼管顯示出來。</p><p> 同時,設計
13、了相應的外圍電路,因為家庭用的都是220V的交流電壓,所以可通過整流,濾波,穩(wěn)壓,產生5V和12V電壓的直流穩(wěn)壓電路,5V的電壓供給FLEX10K芯片,而12V電壓供給產生1KHz頻率的方波信號源電路,還有顯示數碼管驅動電路,用于15個數碼管的顯示驅動,還有8個LED顯示燈,表示當前調整模式的選擇狀況,兩個點動式按鍵用于調整數據時的模式選擇和數據修改。</p><p> 關鍵詞:EDA;FLEX10K系列芯片;
14、VHDL硬件描述語言;計時模塊;顯示塊;</p><p> 調整模塊;外圍電路。</p><p> 2.1.1單時鐘電路構想</p><p> 數字鐘以其顯示時間的直觀性、走時準確性而受到了人們的歡迎并很快走進了千家萬戶。作為一種計時工具,數字鐘的基本組成部分離不開計數器,在控制邏輯電路的控制下完成預定的各項功能。數字鐘的基本原理方框圖如下:</p>
15、;<p> 圖2 數字鐘原理方框圖</p><p><b> 時基T產生電路</b></p><p> 由晶振產生的頻率非常穩(wěn)定的脈沖,經整形、穩(wěn)定電路后,產生一個頻率為1Hz的、非常穩(wěn)定的計數時鐘脈沖。</p><p><b> 控制邏輯電路</b></p><p> 產
16、生調時、調分信號及位選信號。調時、調分信號的產生:由計數器的計數過程可知,正常計數時,當秒計數器(60進制)計數到59 時,再來一個脈沖,則秒計數器清零,重新開始新一輪的計數,而進位則作為分計數器的計數脈沖,使分計數器計數加1?,F在我們把電路稍做變動:把秒計數器的進位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數據選擇器的兩個數據輸入端,而位選信號則接一個脈沖按鍵開關,當按鍵開關不按下去時(即為0),則數據選擇器將秒計數器的進位脈
17、沖送到分計數器,此時,數字鐘正常工作;當按鍵開關按下去時(即為1),則數據選擇器將另外一個2Hz 的信號作為分計數器的計數脈沖,使其計數頻率加快,當達到正確時間時,松開按鍵開關,從而達到調時的目的。調節(jié)小時的時間也一樣的實現。</p><p><b> 計數顯示電路</b></p><p> 由計數部分、數據選擇器、譯碼器組成,是時鐘的關鍵部分。計數部分:由兩個6
18、0進制計數器和一個12/24進制計數器組成,其中60進制計數器可用6進制計數器和10進制計數器構成;24進制的小時計數同樣可用6進制計數器和10進制計數器得到:當計數器計數到24或晚上12時,“2”和“4”(或“1” 和“2”)同時進行清零,則可實現24/12進制計數。數據選擇器:因為本實驗用到了6個動態(tài)掃描數碼管,數據的選擇輸出是由輸出相應的選擇位完成的,故需要提供掃描輸出程序。</p><p> 圖3 自
19、頂向下設計分割圖</p><p> CNT60計數模塊是一個多用計時模塊,它既可作為計秒電路調用,又可作為計分電路、計時電路調用。圖4是其輸入、輸出端口圖。其中,輸入信號LD為置數控制信號,低電平有效;輸入信號CLK為計數時鐘信號;輸入信號DATA為待預置數;輸出信號NUM為計數結果;輸出信號CO為計數溢出信號。</p><p> 圖4 CNT60計數模塊輸入、輸出端口圖</p
20、><p> CNT60的主要VHDL程序段如下:</p><p> IF(LD='0') THEN</p><p> NUM<=DATA;</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> IF NUM="
21、111011" THEN --59</p><p> NUM<="000000";CO<='1';</p><p><b> ELSE</b></p><p> NUM<=NUM+1;CO<='0';</p><p><b&
22、gt; END IF;</b></p><p><b> END IF;</b></p><p> 圖5 CNT30計數模塊的輸入、輸出端口圖</p><p> CNT30的主要VHDL程序段如下:</p><p> IF(LD='0') THEN</p><p
23、> NUM<=DATA;</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> MAX_DAYS<=TOTAL_DAYS;</p><p> IF NUM=TOTAL_DAYS THEN --99</p><p> NUM<="
24、00001";CO<='1';</p><p><b> ELSE</b></p><p> NUM<=NUM+1;CO<='0';</p><p><b> END IF;</b></p><p><b> END IF
25、;</b></p><p> 2.1.2顯示控制電路的設計</p><p> 本設計顯示需要使用的是15個七段顯示數碼管。在計時結果顯示電路中,七段數碼管顯示部分是一個不容忽視的環(huán)節(jié),如若處理不得當,可能引起系統(tǒng)功率過大,產生散熱問題,嚴重時甚至會導致系統(tǒng)的燒毀。為了解決好以上問題,下面就對七段數碼管顯示電路做簡要的分析和介紹</p><p> 通
26、常點亮一個LED所需的電流是5~50 mA,通電的電流愈大,LED的亮度愈高,相對的也會使其壽命縮短。一般以10 mA的導通電流來估算它所必須串聯(lián)的阻值,其計算方式參考圖6所示。</p><p> 圖6 單個LED的串接電阻計算方式</p><p> 七段顯示器可分為共陽極、共陰極型兩種,它們都可以等效成8個LED的連接電路,其中圖7就是共陰極型七段顯示器的等效電路和每節(jié)LED的定義
27、位置圖。</p><p> 圖7 共陰極型七段顯示器</p><p> 根據以上設計思想,本系統(tǒng)的數據顯示電路可分為兩個子模塊:</p><p> (1) 顯示控制電路XSKZQ:負責完成數據選擇掃描及數碼管位選擇信號的產生,數據掃描選擇輸出,對于選擇的數據進行BCD碼轉換等功能;</p><p> (2) 顯示譯碼電路:將用于顯示
28、的BCD碼數據進行譯碼。</p><p> XSKZQ的輸入、輸出端口如圖8所示。其中,輸入信號CLK_SCAN為用于產生數據選擇掃描等控制信號的時鐘信號;輸入信號SEC、MIN、HOUR、DAY、MON、YEAR、WEEK分別來自計秒電路、計分電路、計時電路、計日電路、計月電路、計年電路、計星期電路等計時電路的計時結果輸出端;輸出信號BCD為被選擇進行顯示的計秒/計分/計時/計日/計月/計年/計星期電路等計時
29、電路的計時結果的8位BCD碼,輸出端SELOUT經外部的3-8譯碼電路譯碼后用于選擇對應計時結果顯示數碼管的公共端COM。</p><p> 圖9為15個共陰極型七段數碼管驅動接線圖</p><p> 圖9 15個共陰極型七段數碼管驅動接線圖</p><p> 2.1.3調整控制電路TZKZQ的設計</p><p> 對于系統(tǒng)中的時
30、間調整電路,擬通過模式和調整兩個外部按鍵完成。模式按鍵負責切換正常時間計數模式和時間調整模式,調整模式切換順序如圖10所示。調整鍵負責在時間調整模式之下,對當前模式的計時結果進行調整。</p><p> 圖10 調整模式切換順序</p><p> 對于系統(tǒng)中的時間調整電路,擬通過模式和調整兩個外部按鍵完成。模式鍵負責切換正常時間計數模式和時間調整模式,調整模式切換順序如圖10所示。調
31、整鍵負責在時間調整模式之下,對當前模式的計時結果進行調整。TZKZQ模塊是負責各個模塊之間的相互切換以及對被選中的模式進行時間調整的。圖11是其輸入、輸出端口圖。</p><p> 圖11 TZKZQ的輸入、輸出端口圖</p><p> 2.2 系統(tǒng)單元仿真與分析</p><p> 各部分模塊完成后,用QUARTUS Ⅱ對程序進行編譯仿真,以得到相應的仿真
32、波形。</p><p> 2.2.1綜合計時電路的仿真</p><p> CNT60.VHD模塊仿真波形如下:</p><p> 圖12 CNT60.VHD模塊仿真圖</p><p> 從圖12可以看出,CNT60.VHD實現了從0到59的循環(huán)計數,每實現一次59到0的計數動作,計數模塊輸出一個進位信號。當LD端有低電平輸入時,說明
33、置數信號(LD)有效,模塊將預置數(DATA)56送入計數結果(NUM)中去,計數模塊從56開始重新計數。</p><p> CNT30.VHD的仿真波形如下:</p><p> 圖13 CNT30模塊仿真圖</p><p> 從圖13可以看出,該模塊首先要讀取當前年月(NIAN和YUE),再對該月的最大天數(MAX_DAYS)進行判斷并將結果向外輸出。在正
34、常計數過程中,模塊實現了從0到最大天數(MAX_DAYS)的循環(huán)計數,每實現一次最大天數(MAX_DAYS)到0的計數動作,計數模塊輸出一個進位信號。當LD端有低電平輸入時,說明置數信號(LD)有效,模塊將預置數(DATA)24送入計數結果(NUM)中去,計數模塊從24開始重新計數。</p><p> 2.2.2調整控制電路的仿真</p><p> TZKZQ.VHD的仿真波形如下:&
35、lt;/p><p> 圖14 TZKZQ.VHD仿真圖(一)</p><p> 圖15 TZKZQ.VHD仿真圖(二)</p><p> 從圖14可以看出,調整鍵被按下了8次(鍵盤產生“01”信號即為調整鍵按下一次),調整模式依次經過了正常、調秒、調分、調時、調日、調月、調年、調星期再回到正常這8種模式的循環(huán),即MODE依次從0到7,再從7回到0的循環(huán)。在按鍵過
36、程中,每按下一次按鈕,相應地被調整模式的異步并行置位使能置“0”,同時通過一個非門點亮該調整模式所對應的發(fā)光二極管,作為該調整模式的指示信號。</p><p> 從圖15可以看出,在按動了兩次模式鍵(01)后,調整模式切換到了調分模式,然后又按動了兩次調整鍵(10),實現了在調分模式下對當前分的值進行調整(從34調到36)。 </p><p> 2.2.3顯示控制電路的仿真</p
37、><p> XSKZQ.VHD的仿真波形如下:</p><p> 圖16 TZKZQ.VHD仿真圖</p><p> 從圖16可以看出,當SELOUT分別等于0,1,2,3,4,5,6,7時,分別選擇對應的輸入數據輸出,達到了設計要求。</p><p><b> 外圍電路設計</b></p><
38、p> 3.1 直流穩(wěn)壓電源設計電路圖</p><p> 圖17 直流穩(wěn)壓電源電路</p><p> 設輸出電壓為 U=+5V—15V ,輸出電流為I=800mA,則集成穩(wěn)壓器可選用CW317,其輸出電壓范圍為:U0=1.2—37V,最大輸出電流Imax為1.5A。</p><p> 在圖中,R1和R3組成輸出電壓調節(jié),輸出電壓U0≈1.25(1+
39、 R3/ R1),取R1=200Ω,可得R3≈2.2KΩ。所以R3可選2.5KΩ的精密線繞電位器。</p><p> 由于CW317的輸入電壓與輸出電壓差的最小值為3V,,輸入電壓與輸出電壓差的最大值為40V,故CW317的輸入電壓范圍為:12V到43V,所以變壓器可選擇輸入功率為20W的型號。整流二極管選用IN4001,其反向擊穿電壓為大于50V,額定工作電流為1A。濾波電容C取容量為4700uF,耐壓為25
40、V電容。其它的,C1=0.01uF, C2=10 uF, C0=1 uF。由于本系統(tǒng)需要用到12V的電壓和5V的電壓,調節(jié)R1,使輸出U1為12V,作為信號源的輸入電壓。再選用滑動變阻器Rw2=100Ω為分壓器,調節(jié)出U2為5V作為FLEX10K的輸入電壓。</p><p> 3.2 顯示電路的設計 </p><p> 圖18 顯示電路圖</p><p>
41、; 簡潔的板面實現了年,月,日,時,分,秒,星期的綜合計時,并通過兩個按鍵實現了數據的修改。內部有直流電壓源,只需接上家庭用220V交流電壓,就可實現計時。而且系統(tǒng)運行只需5V電壓,可做到節(jié)能。</p><p><b> 收獲與體會</b></p><p><b> 4.1 改進方法</b></p><p> 在
42、顯示控制電路XSKZQ的設計中,利用動態(tài)掃描顯示的原理,既簡化了顯示譯碼驅動電路的設計,又節(jié)約了硬件的I/O口,同時還減小了系統(tǒng)的驅動電流及功耗等,在實際使用中非常有價值。</p><p> 在調整控制電路TZKZQ的設計中,通過讀入系統(tǒng)當前工作的各種時間信息進行自加調整,簡化了預置值的設計,利用狀態(tài)機非常簡潔地實現了8種調整的循環(huán)變化。 </p><p> 由于本系統(tǒng)采用的是利用秒計
43、時器的進位來作為分計時器的脈沖信號,利用分計時器的進位來作為時計時器的脈沖信號,以此類推,這樣的設計雖然減少了器件的使用,卻會導致誤差呈幾何倍數的增加??梢钥紤]對于系統(tǒng)的各種控制時鐘信號,通過分頻電路對一個給定的合適頻率信號進行分頻來產生,這樣就能適當的減少誤差的產生,使該產品計時更加精確。</p><p><b> 4.2 體會</b></p><p> 開始
44、做這個課題時,發(fā)現不是和想象中那樣簡單,由于以前嘗試的都是小型系統(tǒng),從沒有嘗試過制作個單獨的系統(tǒng),而且EDA的編程思想還是與C、匯編的編程方式存在很多的不同,從一開始我就用著錯誤的思想去做這個事,結果是顯當然,毫無結果。</p><p> 終于真正的開始重視本次課程設計,參考過王老師的課程設計指導書后,我采用自上至下的編程思想,將本個系統(tǒng)大概分了幾塊,開始嘗試查找資料,與組里同學討論,在了解了別人的編程思想后,
45、我們發(fā)現資料不是絕對的、完整的,我們開始在各個資料之間挑出精華,再加上自己的知識來完善該個課程設計。</p><p> 經過幾天的調試,經過仿真終于能達到們所需的設計要求,雖然最終的設計還存在些小瑕疵.但畢竟是第一次做,我還是比較滿意的。</p><p> 本次設計讓我們那發(fā)現了自己很多的不足,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。</p><p>
46、 這次設計的綜合計時系統(tǒng)還是比較成功的,雖然這次設計的綜合計時系統(tǒng)不是很完美,在設計中遇到了很多的難題,最后在老師的辛勤的指導下,終于迎刃而解.還是覺得不錯的,終于覺得平時所學的知識有了實用的價值,達到了理論與實際相結合的目的,不僅學到了不少知識,而其鍛煉了自己的能力,使自己對以后的路有了更加清楚的認識,同時,對未來有了更多的信心。最后,對給過我?guī)椭乃型瑢W和各位指導老師再次表示衷心的感謝!</p><p>
47、 此設計反映出EDA技術在電子產品的設計的優(yōu)勢和實用性。EDA技術將更廣泛應用于高校電類專業(yè)的實踐教學當中,將更廣泛應用于科研工作和新產品的開發(fā)中,將更廣泛應用于專用集成電路的開發(fā),將更廣泛應用于傳統(tǒng)機電設備的升級換代和技術改。</p><p><b> 設計參考資料</b></p><p> [1] SOPC/EDA綜合課程設計指導書,自編</p>
48、<p> [2] 譚會生,張昌凡.EDA技術及應用(第二版). 西安:西安電子科技大學出版社,2001</p><p> [3] 第二屆全國大學生電子設計競賽組委會. 全國大學生電子設計競賽獲獎作品選編(1994-1995). 北京:北京理工大學出版社,1997</p><p> [4] 徐光軍,徐光輝.CPLD/FPGA 的開發(fā)與應用. 北京:電子工業(yè)出版社,2002
49、</p><p> [5] 李國麗,朱維勇. EDA與數字系統(tǒng)設計. 北京:機械工業(yè)出版社,2004</p><p> [6] 第三屆全國大學生電子設計競賽組委會. 全國大學生電子設計競賽獲獎作品選編(1997). 北京:北京理工大學出版社,1999</p><p> [7] 潘松,黃繼業(yè). EDA技術實用教程. 北京:科學出版社,2002</p>
50、<p> [8] www.altera.com.cn</p><p> [9] www.fpga.com.cn</p><p> [10] www.pld.com.cn</p><p><b> 附錄————程序段</b></p><p> 綜合計時電路的VHDL源程序</p>&l
51、t;p> 6.1 CONT60計時電路的VHDL源程序</p><p><b> CNT60.VHD</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED
52、.ALL;</p><p> ENTITY CNT60 IS</p><p><b> PORT(</b></p><p> CLK: IN STD_LOGIC;--時鐘脈沖</p><p> NUM: BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0); --計數結果</p>
53、<p> CO: OUT STD_LOGIC); --進位信號</p><p> END ENTITY CNT60;</p><p> ARCHITECTURE ART OF CNT60 IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK)</p&g
54、t;<p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> IF NUM="111011" THEN --59</p><p> NUM<="000000";CO<=
55、39;1';</p><p><b> ELSE</b></p><p> NUM<=NUM+1;CO<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p>
56、<p> END PROCESS;</p><p> END ARCHITECTURE ART;</p><p> 6.2 CONT30計時電路的VHDL源程序</p><p><b> CNT30.VHD</b></p><p> LIBRARY IEEE;--CONT30計時電路的VHDL源
57、程序</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CNT30 IS</p><p><b> PORT(</b></p><p> CLK:
58、IN STD_LOGIC; --時鐘脈沖</p><p> NIAN:IN STD_LOGIC_VECTOR(6 DOWNTO 0); --當前年</p><p> YUE:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --當前月</p><p> NUM:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0);
59、 --計數結果</p><p> MAX_DAYS:OUT STD_LOGIC_VECTOR(4 DOWNTO 0); --本月總天數</p><p> CO:OUT STD_LOGIC);--進位信號</p><p> END CNT30;</p><p> ARCHITECTURE ART OF CNT30 IS</p&g
60、t;<p> SIGNAL TOTAL_DAYS:STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(CLK) IS</p><p> VARIABLE IS_RUNNIAN:STD_LOGIC;</p><p>
61、;<b> BEGIN</b></p><p> CASE NIAN IS</p><p> WHEN "0000000" => IS_RUNNIAN:='1'; --0如當前年為00,</p><p><b> 則輸出閏年確認信號</b&
62、gt;</p><p> WHEN "0000100" => IS_RUNNIAN:='1';--4</p><p> WHEN "0001000" => IS_RUNNIAN:='1';--8</p><p> WHEN "0001100" =&g
63、t; IS_RUNNIAN:='1';--12</p><p> WHEN "0010000" => IS_RUNNIAN:='1';--16</p><p> WHEN "0010100" => IS_RUNNIAN:='1';--20</p><p&g
64、t; WHEN "0011000" => IS_RUNNIAN:='1';--24</p><p> WHEN "0011100" => IS_RUNNIAN:='1';--28</p><p> WHEN "0100000" => IS_RUNNIAN:='
65、1';--32</p><p> WHEN "0100100" => IS_RUNNIAN:='1';--36</p><p> WHEN "0101000" => IS_RUNNIAN:='1';--40</p><p> WHEN "01011
66、00" => IS_RUNNIAN:='1';--44</p><p> WHEN "0110000" => IS_RUNNIAN:='1';--48</p><p> WHEN "0110100" => IS_RUNNIAN:='1';--52</p&
67、gt;<p> WHEN "0111000" => IS_RUNNIAN:='1';--56</p><p> WHEN "0111100" => IS_RUNNIAN:='1';--60</p><p> WHEN "1000000" => IS_RU
68、NNIAN:='1';--64</p><p> WHEN "1000100" => IS_RUNNIAN:='1';--68</p><p> WHEN "1001000" => IS_RUNNIAN:='1';--72</p><p> WHEN
69、 "1001100" => IS_RUNNIAN:='1';--76</p><p> WHEN "1010000" => IS_RUNNIAN:='1';--80</p><p> WHEN "1010100" => IS_RUNNIAN:='1';
70、--84</p><p> WHEN "1011000" => IS_RUNNIAN:='1';--88</p><p> WHEN "1011100" => IS_RUNNIAN:='1';--92</p><p> WHEN "1100000"
71、 => IS_RUNNIAN:='1';--96</p><p> WHEN OTHERS => IS_RUNNIAN:='0';</p><p><b> END CASE;</b></p><p> CASE YUE IS</p><p> WHEN &q
72、uot;0001" => TOTAL_DAYS<="11111"; --1 </p><p> WHEN "0011" => TOTAL_DAYS<="11111";--3</p><p> WHEN "0101" => TOTAL_DAYS<
73、;="11111";--5</p><p> WHEN "0111" => TOTAL_DAYS<="11111";--7</p><p> WHEN "1000" => TOTAL_DAYS<="11111";--8</p><
74、;p> WHEN "1010" => TOTAL_DAYS<="11111";--10</p><p> WHEN "1100" => TOTAL_DAYS<="11111";--12</p><p> WHEN "0100" => T
75、OTAL_DAYS<="11110";--4</p><p> WHEN "0110" => TOTAL_DAYS<="11110";--6</p><p> WHEN "1001" => TOTAL_DAYS<="11110";--9<
76、;/p><p> WHEN "1011" => TOTAL_DAYS<="11110";--11</p><p> WHEN "0010" => --2</p><p> IF (IS_RUNNIAN='1') THEN
77、</p><p> TOTAL_DAYS<="11101"; --如是閏年2月則總天數為29</p><p><b> ELSE</b></p><p> TOTAL_DAYS<="11100";--否則,2月總天數為28</p><p><b>
78、 END IF;</b></p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> MAX_DAYS<=TOTAL_D
79、AYS;</p><p> IF NUM=TOTAL_DAYS THEN</p><p> NUM<="00001";CO<='1';</p><p> ELSE NUM<=NUM+1;CO<='0';</p><p> END IF; END IF;&l
80、t;/p><p> END PROCESS;</p><p><b> END ART;</b></p><p> 6.3 顯示控制電路XSKZQ的VHDL源程序</p><p><b> XSKZQ.VHD</b></p><p> LIBRARY IEEE;--顯
81、示控制電路XSKZQ的VHDL源程序</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ENTITY XSKZQ IS</p
82、><p> PORT(CLK_SCAN:IN STD_LOGIC; --掃描時鐘</p><p> SEC,MIN:IN STD_LOGIC_VECTOR(5 DOWNTO 0); --當前秒、分</p><p> HOUR:IN STD_LOGIC_VECTOR(4 DOWNTO 0); --當前時</p><p> DAY:
83、IN STD_LOGIC_VECTOR(4 DOWNTO 0); --當前日</p><p> MON:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --當前月</p><p> YEAR:IN STD_LOGIC_VECTOR(6 DOWNTO 0); --當前年</p><p> WEEK:IN STD_LOGIC_VECT
84、OR(2 DOWNTO 0); --當前星期</p><p> SEL:IN STD_LOGIC;--輸出時、分、秒或年、月、日選擇</p><p> SELOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); --掃描信號</p><p> HOUR_YEAR:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);&l
85、t;/p><p> MIN_MON:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SEC_DAY:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --2位LED BCD顯示碼輸出</p><p> END ENTITY XSKZQ;</p><p> ARCHITECTURE
86、ART OF XSKZQ IS</p><p> SIGNAL TEMP:INTEGER RANGE 0 TO 99;</p><p> SIGNAL BCD:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SIGNAL SELOUT:STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p&g
87、t; SIGNAL outreg:STD_LOGIC_VECTOR(23 DOWNTO 0);</p><p> SIGNAL CLK_SCAN1: STD_LOGIC;</p><p><b> BEGIN</b></p><p> PROCESS(CLK_SCAN)</p><p> VARIABLE CN
88、T:STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p><b> BEGIN</b></p><p> IF CLK_SCAN'EVENT AND CLK_SCAN='1' THEN--對各個輸出信號進行掃描</p><p> CNT:=CNT+'1';</p>
89、<p><b> END IF;</b></p><p> SELOUT<=CNT;</p><p> CASE CNT IS</p><p> WHEN "000" => TEMP<=CONV_INTEGER(SEC);</p><p> WHEN &quo
90、t;001" => TEMP<=CONV_INTEGER(MIN);</p><p> WHEN "010" => TEMP<=CONV_INTEGER(HOUR);</p><p> WHEN "011" => TEMP<=CONV_INTEGER(DAY);</p><p
91、> WHEN "100" => TEMP<=CONV_INTEGER(MON);</p><p> WHEN "101" => TEMP<=CONV_INTEGER(YEAR);</p><p> WHEN "110" => TEMP<=2;</p><p&
92、gt; WHEN "111" => TEMP<=CONV_INTEGER(WEEK);</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> PROCES
93、S(SELOUT,SEL,CLK_SCAN)—輸出選擇</p><p><b> BEGIN</b></p><p> CASE TEMP IS --2進制碼到2位BCD碼轉換</p><p> WHEN 0 =>BCD<="00000000" ;</p><p> WHEN
94、1 =>BCD<="00000001" ;</p><p> WHEN 2 =>BCD<="00000010" ;</p><p> WHEN 3 =>BCD<="00000011" ;</p><p> WHEN 4 =>BCD<="
95、00000100" ;</p><p> WHEN 5 =>BCD<="00000101" ;</p><p> WHEN 6 =>BCD<="00000110" ;</p><p> WHEN 7 =>BCD<="00000111" ;</p
96、><p> WHEN 8 =>BCD<="00001000" ;</p><p> WHEN 9 =>BCD<="00001001" ;</p><p> WHEN 10 =>BCD<="00010000" ;</p><p> WHEN
97、11 =>BCD<="00010001" ;</p><p> WHEN 12 =>BCD<="00010010" ;</p><p> WHEN 13 =>BCD<="00010011" ;</p><p> WHEN 14 =>BCD<="
98、00010100" ;</p><p> WHEN 15 =>BCD<="00010101" ;</p><p> WHEN 16 =>BCD<="00010110" ;</p><p> WHEN 17 =>BCD<="00010111" ;</p
99、><p> WHEN 18 =>BCD<="00011000" ;</p><p> WHEN 19 =>BCD<="00011001" ;</p><p> WHEN 20 =>BCD<="00100000" ;</p><p> WHEN
100、21 =>BCD<="00100001" ;</p><p> WHEN 22 =>BCD<="00100010" ;</p><p> WHEN 23 =>BCD<="00100011" ;</p><p> WHEN 24 =>BCD<="
101、00100100" ;</p><p> WHEN 25 =>BCD<="00100101" ;</p><p> WHEN 26 =>BCD<="00100110" ;</p><p> WHEN 27 =>BCD<="00100111" ;</p
102、><p> WHEN 28 =>BCD<="00101000" ;</p><p> WHEN 29 =>BCD<= "00101001";</p><p> WHEN 30 =>BCD<="00110000" ;</p><p> WHEN
103、31 =>BCD<="00110001" ;</p><p> WHEN 32 =>BCD<="00110010" ;</p><p> WHEN 33 =>BCD<="00110011" ;</p><p> WHEN 34 =>BCD<="
104、00110100" ;</p><p> WHEN 35 =>BCD<="00110101" ;</p><p> WHEN 36 =>BCD<="00110110" ;</p><p> WHEN 37 =>BCD<="00110111" ;</p
105、><p> WHEN 38 =>BCD<="00111000" ;</p><p> WHEN 39 =>BCD<="00111001" ;</p><p> WHEN 40 =>BCD<="01000000" ;</p><p> WHEN
106、41 =>BCD<="01000001" ;</p><p> WHEN 42 =>BCD<="01000010" ;</p><p> WHEN 43 =>BCD<="01000011" ;</p><p> WHEN 44 =>BCD<="
107、01000100" ;</p><p> WHEN 45 =>BCD<="01000101" ;</p><p> WHEN 46 =>BCD<="01000110" ;</p><p> WHEN 47 =>BCD<="01000111" ;</p
108、><p> WHEN 48 =>BCD<="01001000" ;</p><p> WHEN 49 =>BCD<="01001001" ;</p><p> WHEN 50 =>BCD<="01010000" ;</p><p> WHEN
109、51 =>BCD<="01010001" ;</p><p> WHEN 52 =>BCD<="01010010" ;</p><p> WHEN 53 =>BCD<="01010011" ;</p><p> WHEN 54 =>BCD<="
110、01010100" ;</p><p> WHEN 55 =>BCD<="01010101" ;</p><p> WHEN 56 =>BCD<="01010110" ;</p><p> WHEN 57 =>BCD<="01010111" ;</p
111、><p> WHEN 58 =>BCD<="01011000" ;</p><p> WHEN 59 =>BCD<="01011001" ;</p><p> WHEN 60 =>BCD<="01100000" ;</p><p> WHEN
112、61 =>BCD<="01100001" ;</p><p> WHEN 62 =>BCD<="01100010" ;</p><p> WHEN 63 =>BCD<="01100011" ;</p><p> WHEN 64 =>BCD<="
113、01100100" ;</p><p> WHEN 65 =>BCD<="01100101" ;</p><p> WHEN 66 =>BCD<="01100110" ;</p><p> WHEN 67 =>BCD<="01100111" ;</p
114、><p> WHEN 68 =>BCD<="01101000" ;</p><p> WHEN 69 =>BCD<="01101001" ;</p><p> WHEN 70 =>BCD<="01110000" ;</p><p> WHEN
115、71 =>BCD<="01110001" ;</p><p> WHEN 72 =>BCD<="01110010" ;</p><p> WHEN 73 =>BCD<="01110011" ;</p><p> WHEN 74 =>BCD<="
116、01110100" ;</p><p> WHEN 75 =>BCD<="01110101" ;</p><p> WHEN 76 =>BCD<="01110110" ;</p><p> WHEN 77 =>BCD<="01110111" ;</p
117、><p> WHEN 78 =>BCD<="01111000" ;</p><p> WHEN 79 =>BCD<="01111001" ;</p><p> WHEN 80 =>BCD<="10000000" ;</p><p> WHEN
118、81 =>BCD<="10000001" ;</p><p> WHEN 82 =>BCD<="10000010" ;</p><p> WHEN 83 =>BCD<="10000011" ;</p><p> WHEN 84 =>BCD<="
119、10000100" ;</p><p> WHEN 85 =>BCD<="10000101" ;</p><p> WHEN 86 =>BCD<="10000110" ;</p><p> WHEN 87 =>BCD<="10000111" ;</p
120、><p> WHEN 88 =>BCD<="10001000" ;</p><p> WHEN 89 =>BCD<="10001001" ;</p><p> WHEN 90 =>BCD<="10010000" ;</p><p> WHEN
121、91 =>BCD<="10010001" ;</p><p> WHEN 92 =>BCD<="10010010" ;</p><p> WHEN 93 =>BCD<="10010011" ;</p><p> WHEN 94 =>BCD<="
122、10010100" ;</p><p> WHEN 95 =>BCD<="10010101" ;</p><p> WHEN 96 =>BCD<="10010110" ;</p><p> WHEN 97 =>BCD<="10010111" ;</p
123、><p> WHEN 98 =>BCD<="10011000" ;</p><p> WHEN 99 =>BCD<="10011001" ;</p><p> WHEN OTHERS=>BCD<=NULL;</p><p><b> END CASE;&
124、lt;/b></p><p> END PROCESS;</p><p> PROCESS(SELOUT,SEL,CLK_SCAN)—輸出選擇</p><p><b> BEGIN</b></p><p> IF CLK_SCAN'EVENT AND CLK_SCAN='0' THE
125、N</p><p> IF SEL='0' THEN</p><p> CASE SELOUT IS</p><p> WHEN "000" => outreg(7 DOWNTO 0)<=BCD;</p><p> WHEN "001" => outreg(
126、15 DOWNTO 8)<=BCD;</p><p> WHEN "010" => outreg(23 DOWNTO 16)<=BCD;</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><
127、;b> ELSE</b></p><p> CASE SELOUT IS</p><p> WHEN "011" => outreg(7 DOWNTO 0)<=BCD;</p><p> WHEN "100" => outreg(15 DOWNTO 8)<=BCD;<
128、/p><p> WHEN "101" => outreg(23 DOWNTO 16)<=BCD;</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><b> END IF;</b>
129、</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> SEC_DAY<=outreg(7 DOWNTO 0);</p><p> MIN_MON<=outreg(15 DOWNTO 8);</p><p> HOUR
130、_YEAR<=outreg(23 DOWNTO 16);</p><p> END ARCHITECTURE ART;</p><p> 6.4 調整控制電路TZKZQ的VHDL源程序</p><p><b> TZKZQ.VHD</b></p><p> LIBRARY IEEE;--調整控制電路TZK
131、ZQ的VHDL源程序</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY TZKZQ IS</p><p> PORT(CLK1HZ:IN STD_LOGIC;</p><p&
132、gt; SET:IN STD_LOGIC; --校表/走時</p><p> SETEN:IN STD_LOGIC;</p><p> SEL:IN STD_LOGIC;--校表選擇</p><p> SEC_CO,MIN_CO,HOUR_CO,DAY_CO,MON_CO:IN STD_LOGIC;</p><p> ENOUT
133、:OUT STD_LOGIC;--校表使能輸出</p><p> SEL_DSP:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEC_CLK,MIN_CLK,HOUR_CLK,DAY_CLK,MON_CLK,YEAR_CLK,WEEK_CLK:OUT STD_LOGIC); --異步并行置位使能</p><p> END ENTITY TZKZQ;<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- sopceda綜合課程設計報告---智力搶答器
- sopceda綜合課程設計---出租車計費系統(tǒng)設計
- 利用cpldfpga設計綜合計時系統(tǒng) 開題報告
- sopceda綜合課程設計--車載dvd位控系統(tǒng)的設計
- sopceda綜合課程設計---1616的點陣顯示設計
- 綜合計時批文
- 音樂倒計時綜合課程設計實驗報告
- 綜合課程設計--籃球計時計分器
- sopceda綜合課程設計--等精度數字頻率計的設計
- 《gis綜合課程設計》報告
- 通信系統(tǒng)綜合課程設計
- 綜合布線系統(tǒng)課程設計
- 機電系統(tǒng)綜合課程設計
- 計時秒表課程設計---計時秒表系統(tǒng)的設計
- 小區(qū)綜合布線系統(tǒng)綜合布線課程設計
- 軟件綜合課程設計報告模板
- 綜合計時工作制的書面申請
- 綜合布線系統(tǒng)課程設計--行政樓綜合布線系統(tǒng)設計
- 課程設計---籃球競賽計時系統(tǒng)
- 課程設計學生綜合測評系統(tǒng)
評論
0/150
提交評論