【正文】
基于FPGA的數字時鐘的設計課 題: 基于FPGA的數字時鐘的設計 綜 述近年來隨著數字技術的迅速發(fā)展,各種中、大規(guī)模集成電路在數字系統(tǒng)、控制系統(tǒng)、信號處理等方面都得到了廣泛的應用。這就迫切要求理工科大學生熟悉和掌握常用中、大規(guī)模集成電路功能及其在實際中的應用方法,除通過實驗教學培養(yǎng)數字電路的基本實驗方法、分析問題和故障檢查方法以及雙蹤示波器等常用儀器使用方法等基本電路的基本實驗技能外,還必須培養(yǎng)大學生工程設計和組織實驗能力。本次課程設計的目的在于培養(yǎng)學生對基本電路的應用和掌握,使學生在實驗原理的指導下,初步具備基本電路的分析和設計能力,并掌握其應用方法;自行擬定實驗步驟,檢查和排除故障 、分析和處理實驗結果及撰寫實驗報告的能力。綜合實驗的設計目的是培養(yǎng)學生初步掌握小型數字系統(tǒng)的設計能力,包括選擇設計方案,進行電路設計、安裝、調試等環(huán)節(jié),運用所學知識進行工程設計、提高實驗技能的實踐。數字電子鐘是一種計時裝置,它具有時、分、秒計時功能和顯示時間功能;具有整點報時功能。本次設計我查閱了大量的文獻資料,學到了很多關于數字電路方面的知識,并且更加鞏固和掌握了課堂上所學的課本知識,使自己對數字電子技術有了更進一步的認識和了解。 課題要求本課程是電子與信息類專業(yè)的專業(yè)的專業(yè)基礎必修課——“數字電路”的配套實驗課程。目的在于培養(yǎng)學生的理論聯系實際,分析和解決問題的能力。通過本課程設計,使學生在理論設計、計算機仿真、指標調測、故障排除等方面得到進一步的訓練,加強學生的實踐能力。學生通過設計、仿真、調試、撰寫設計報告等過程,培養(yǎng)學生的動手能力和嚴謹的工作作風。1)根據課題要求,復習鞏固數字電路有關專業(yè)基礎知識;2)掌握數字電路的設計方法,特別是熟悉模塊化的設計思想;3) 掌握QUARTUS2軟件的使用方法。4) 熟練掌握EDA工具的使用,特別是原理圖輸入,波形仿真,能對仿真波形進行分析;5) 具備EDA技術基礎,能夠熟練使用VHDL語言進行編程,掌握層次化設計方法。6) 掌握多功能數字鐘的工作原理,學會不同進制計數器及時鐘控制電路的設計方法。7) 能根據設計要求對設計電路進行仿真和測試。8) 掌握將所設計軟件下載到FPGA芯片的下載步驟等等。9) 將硬件與軟件連接起來,調試電路的功能?;竟δ埽耗苓M行正常的時、分、秒計時功能,分別由6個數碼管顯示24小時,60分鐘,60秒鐘的計數器顯示。附加功能:1)能利用硬件部分按鍵實現“校時”“校分”“清零”功能; 2)能利用蜂鳴器做整點報時:當計時到達59’59’’時開始報時,鳴叫時間1秒鐘; 3)定時鬧鈴:本設計中設置的是在七點時進行鬧鐘功能,鳴叫過程中,能夠進行中斷鬧鈴工作。本人工作:負責軟件的編程與波形的仿真分析。 方案設計與分析 時鐘功能,具有顯示時、分、秒的功能; 具有整點報時功能,在整點時使用蜂鳴器進行報時,具有鬧鐘功能,鳴叫過程中,具有中斷鬧鈴功能。數字鐘一般是由振蕩器、分頻器、計數器、譯碼器、顯示器等幾部分組成。這些都是數字電路中應用最廣泛的基本電路,本設計分模塊設計實現各部分功能,采用軟件編程控制FPGA芯片內部產生振動周期為1s的脈沖。并將信號送入計數器進行計算,并把累加的結果以“時”、“分”、“秒”的數字顯示出來。“秒”的顯示由兩級計數器和譯碼器組成的六十進制計數電路實現;“分”的顯示電路“秒”相同,“時”的顯示由兩級計數器和譯碼器組成的二十四進制電路來實現。所有計時結果由六位數碼管顯示。數字電子鐘由振蕩器、分頻器 計數器、譯碼顯示、報時等電路組成。振蕩器產生穩(wěn)定的高頻脈沖信號,作為數字鐘的時間基準,然后經過分頻器輸出標準秒脈沖。秒計數器滿60后向分計數器進位,分計數器滿60后向小時計數器進位,小時計數器按照“24翻1”規(guī)律計數。計滿后各計數器清零,重新計數。計數器的輸出分別經譯碼器送數碼管顯示,計時出現誤差時,可以用校時電路“校時”“校分”“清零”。秒脈沖可以通過分頻電路得到。通過報時設計模塊可以實現整點報時及定時鬧鈴,譯碼顯示由七段譯碼器完成,顯示由數碼管構成,采用的是動態(tài)顯示方式。數碼管動態(tài)顯示:動態(tài)掃描電路將計數器輸出的8421BGD碼轉換為數碼管需要的邏輯狀態(tài),并且輸出數碼管的片選信號和為選信號。所謂動態(tài)掃描顯示方式是在顯示某一位LED 顯示塊的數據的時候,讓其它位不顯示,然后再顯示下一位的數據。只要保證每一位顯示的時間間隔不要太大,利用人眼的視覺暫留的現象,就可以造成各位數據同時顯示的假象。一般每一位的顯示時間為1~10ms。 單元電路的設計,仿真與分析(1)分頻模塊(fenpin)1)程序:library ieee。use 。entity fenpin is port(clk6:in std_logic。 q1000,q5,q1:out std_logic)。end fenpin。architecture ccc_arc of fenpin issignal x:std_logic。begin process(clk6) variable t:integer range 0 to 24999。 begin if clk639。event and clk6=39。139。 then if t24999 then t:=t+1。 else t:=0。 x=not x。 end if。 end if。end process。q1000=x。process(x)variable t2:integer range 0 to 999。variable y:std_logic。begin if x39。event and x=39。139。 then if t2999 then t2:=t2+1。 q1=39。039。