




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、桂林電子科技大學職業技術學院實訓報告桂林電子科技大學職業技術學院FPGA應用實訓報告數字鐘學院(系): 電子信息工程系 專 業: 電子信息工程技術 學 號: 1212220217 學生姓名: 李建軍 指導教師: 葉俊明 桂林電子科技大學職業技術學院實訓報告 目 錄摘 要21 緒論32 課題背景42.1設計任務與要求42.2 設計目的42.3總體設計方案43 程序方案論證53.1分頻方案論證53.1.1分頻模塊方案I53.1.2分頻模塊方案II53.2計時模塊方案論證63.2.1計時模塊方案I63.2.2計時模塊方案 II63.3方案總結74 系統軟件設計74.1程序流程圖74.2計時模塊84.
2、3鬧鐘模塊84.4顯示模塊85系統硬件設計95.1 FPGA的介紹95.1.1 FPGA概述95.1.2 FPGA基本結構95.2原理框圖116調試126.1調時程序調試126.2鬧鐘程序調試12總 結13致 謝14參考文獻15附 錄16 摘 要 數字鐘是由振蕩器、分頻器、計數器、譯碼器、數碼顯示器等幾部分組成。振蕩電路:主要用來產生時間標準信號,因為時鐘的精度主要取決于時間標準信號的頻率及穩定度,所以采用石英晶體振蕩器。 分頻器:因為振蕩器產生的標準信號頻率很高,要是要得到“秒”信號,需一定級數的分頻器進行分頻。計數器:有了“秒”信號,則可以根據60秒為1分,24小時為1天的制,分別設定“時
3、”、“分”、“秒”的計數器,分別為 60進制,60進制,24進制計數器,并輸出一分,一小時,一天的進位信號。譯碼顯示:將“時”“分”“秒”顯示出來。將計數器輸入狀態,輸入到譯碼器,產生驅動數碼顯示器信號,呈現出對應的進位數字字型。 由于計數的起始時間不可能與標準時間(如北京時間)一致,故需要在電路上加一個校時電路可以對分和時進行校時。另外,計時過程要具有報時功能,當時間到達整點時開始響,蜂鳴器不停地響1分鐘后不響。 關鍵詞:數字鐘,振蕩,計數,校正,報時 1 緒論 數字鐘是采用數字電路實現對時、分、秒,數字顯示的計時裝置,廣泛用于個人家庭,車站,碼頭、辦公室等公共場所,成為人們日常生活中不可少
4、的必需品,由于數字集成電路的發展和石英振蕩器的廣泛應用,使得數字鐘的精度遠遠超過老式鐘表,鐘表的數字化給人們生產生活帶來了極大地方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、校時自動打鈴、時間程序自動控制、定是廣播、自動啟閉路燈、定時開關烘箱、通斷動力設備,甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數字化為基礎的。因此,研究數字鐘及擴大其應用有著非常現實的意義。 伴隨著集成電路技術的發展, 電子設計自動化(EDA)技術逐漸成為數字電路設計的重要手段。基于FPGA的EDA技術的發展和應用領域的擴大與深入,使得EDA技術在電子信息,通信,自動控制,計算機等領域的重要性日益突出
5、。本設計給出了一種基于FPGA的多功能數字鐘方法,測試結果表明本設計實現了一個多功能的數字鐘功能,具有時、分、秒計時顯示功能,以24小時循環計時;具有校正小時和分鐘的功能;以及清零,整點報時功能。2 課題背景數字化的鐘表給人們帶來了極大的方便。近些年,隨著科技的發展和社會的進步,人們對數字鐘的要求也越來越高,傳統的時鐘已不能滿足人們的需求。多功能數字鐘不管在性能還是在樣式上都發生了質的變化,有電子鬧鐘、數字鬧鐘等等。利用EDA技術進行電子系統的設計具有以下幾個特點:采用自頂向下的設計方法;用軟件的形式設計硬件;用軟件的方式設計過程中可用相關軟件進行仿真;系統可現場編程,在線升級;整個系統集成在
6、一個芯片上,體積小,功耗低,可靠性高.因此,EDA技術是現代電子設計的發展趨勢.用硬件描述語言結合FPGA可編程器件可以極大地方便集成電路的設計,使其成為集成電路的發展趨勢,也是每一個電子工程師必須掌握的技術,故基于FPGA(現場可編程門陣列)的設計型實驗成為高校電類專業學生的必修且重要環節。2.1設計任務與要求 (1)設計一個數碼管實時顯示時、分、秒的數字時鐘(24小時顯示模式) (2)到點報時、鬧鐘時間固定為8:00 (3)同時設置按鍵調時。2.2 設計目的為了更好的運用掌握FPGA多功能數字鐘編程知識,學會自我找到問題、分析問題并解決問題的方法,培養認真學習和工作的作風,鍛煉自己的思考能
7、力和團結合作能力。充分發揮思維創造性,開發功能多樣的擴展功能電路并鍛煉自己的動手能力。2.3總體設計方案 (1)方案一 用數電制作一個數字鐘,通過74L74芯片實現數碼管計數功能 用與非門結合,用按鍵來設置實現鬧鐘和整點報時的功能。 (2)方案二 用fpga來制作一個數字鐘,通過編寫程序來控制fpga芯片輸 出輸入來得到數字鐘的功能,同時用fpga板來實現該功能。 (3)方案三 用單片機來控制數字鐘,通過編寫程序來實現時鐘計時功能, 通過單片機試驗箱來實現該功能,最終達到相應的結果。 總結:方案一用數電的方式做數字鐘,用的芯片多同時之制作麻煩,不適合制做數字鐘。方案二制作比較便捷,只需要寫程序
8、,制作業是比較方便,也比較實現功能。方案三用單片機雖然也是編寫程序,可是和FPGA相比我個人覺得還是比單片機好做一點。綜合上述我選擇FPGA來制作該程序3 程序方案論證3.1分頻方案論證3.1.1分頻模塊方案I定義變量并且設定一個上限值,每次加計數到該上限值時,輸出該計數值的最高位parameter DIV_SIZE=25;always(posedge clock)counter=counter+1;assign clkdiv=counterDIV_SIZE-1;3.1.2分頻模塊方案II 定義一個變量,使得counter_1hz=20 000 000,使得輸入1hz信號,讓counter_1
9、hz自加always(posedge clk) Begin if(counter_1hz=20 000 000) begin counter_1hz=0;clk_1hz=10000)begin counter=0;clk_1khz=clk_1khz;end else begin counter=counter+1;End3.2計時模塊方案論證3.2.1計時模塊方案I計時分每個信號的高低位進行判斷及計時if(sL=9) begin sL=0;if(sH=5) begin sH=0; if(mL=9)begin mL=0; if(mH=5) begin mH=0; if(hL=9) begin h
10、L=0;hH=hH+1;end else if(hL=3&hH=2) begin hL=0;hH=0; end else hL=hL+1;end else mH=mH+1; end else mL=mL+1; end else sH=sH+1; end else sL=4&hour_h=2)|(hour_h=3)beginhour_h=0;hour_l=0;endendelse b=b+1;end3.3方案總結分頻采用方案2來實現設計。方案2在思路方面較為通俗易懂,且判斷過程簡短明了,在最終的顯示時出現毛刺干擾現象,其他方案中不便于增加小時和分鐘的調節信號,方案最終失敗。方案2比較判斷復雜,在
11、最終的數碼管顯示時可能不怎么穩定。方案2我們上課時學的也是這個方案用起來也比較熟悉。綜合考慮,使用方案2。4 系統軟件設計 軟件部分有分頻模塊,按鍵防抖動,時鐘主體,鬧鈴模塊,動態掃描模塊等來實現此方案。程序流程圖3-1使用此方案首先進行分頻得到一個信號,使得信號穩定。進而促使時鐘主體工作。再通過按鍵防抖來控制調時和鬧鐘模塊最后用動態掃描來實現軟件的所有功能。4.1程序流程圖 圖3-14.2計時模塊second_l,second_h;miniute_l,miniute_h;hour_l,hour_h;分別表示秒,分,小時的高位和低位L組成十六進制計數器。以1hz作為一秒,自加計時,當秒加到60
12、后自動向分進位,當分加到60后自動向時進位,當時到24小時候變為00。4.3鬧鐘模塊always(posedge clk)beginif(hour_h=0&hour_l=8&miniute_h=0&miniute_l=0)/8:00報時,鬧鐘模塊 begin if(counter_clock=8000) begin counter_clock=0;alarm_clock=alarm_clock;end else counter_clock=counter_clock+1;end鬧鐘模塊從CLk中分出8000hz的頻率,驅動蜂鳴器。當時鐘到8:00時,蜂鳴器電平取反,產生報時。4.4顯示模塊/動
13、態掃描模塊 always(posedge clk_1khz) begin case(state) s0:begin seg_bit=4b0111; display_tab=miniute_l; state=s1;led_test=1;end s1:begin seg_bit=4b1011; display_tab=miniute_h; state=s2;led_test=1;end s2:begin seg_bit=4b1101; display_tab=hour_l; state=s3;led_test=clk_1hz;end s3:begin seg_bit=4b1110; display
14、_tab=hour_h; state=s0;led_test=1;end default:begin led_out=7bz;state=0;end endcase end 動態顯示掃描,將分的高低位和時的高低位依次顯示在4位數碼管上。5系統硬件設計5.1 FPGA的介紹5.1.1 FPGA概述FPGA是現場可編程門陣列(FieldProgrammableGateArray)的簡稱,與之相應的CPLD是復雜可編程邏輯器件 (Complex Programmable Logic Device )的簡稱,兩者的功能基本相同,只是實現原理略有不同,所以有時可以忽略這兩者的區別,統稱為可編程邏輯器件或
15、CPLD/PGFA。CPLD/PGFA幾乎能完成任何數字器件的功能,上至高性能CPU,下至簡單的74電路。它如同一張白紙或是一堆積木,工程師可以通過傳統的原理圖輸入或硬件描述語言自由的設計一個數字系統。通過軟件仿真可以事先驗證設計的正確性,在PCB完成以后,利用CPLD/FPGA的在線修改功能,隨時修改設計而不必改動硬件電路。使用CPLA/FPGA開發數字電路,可以大大縮短設計時間,減少PCB面積,提高系統的可靠性。這些優點使得CPLA/FPGA技術在20世紀90年代以后得到飛速的發展,同時也大大推動了EDA軟件和硬件描述語言HDL的進步。5.1.2 FPGA基本結構FPGA具有掩膜可編程門陣
16、列的通用結構,它由邏輯功能塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來實現不同的設計。FPGA一般由3種可編程電路和一個用于存放編程數據的靜態存儲器SRAM組成。這3種可編程電路是:可編程邏輯模塊(CLB-ConfigurableLogicBlock)、輸入/輸出模塊(IOB-I/OBlock)和互連資源(IRInterconnectResource)。可編程邏輯模塊CLB是實現邏輯功能的基本單元,它們通常規則的排列成一個陣列,散布于整個芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長度的連接線段和一些可編程連
17、接開關,它們將各個CLB之間或CLB、IOB之間以及IOB之間連接起來,構成特定功能的電路。1.CLB是FPGA的主要組成部分。它主要由邏輯函數發生器、觸發器、數據選擇器等電路組成。CLB中3個邏輯函數發生器分別是G、F和H,相應的輸出是G、F和H。G有4個輸入變量G1、G2、G3和G4;F也有4個輸入變量F1、F2、F3和F4。這兩個函數發生器是完全獨立的,均可以實現4輸入變量的任意組合邏輯函數。邏輯函數發生器H有3個輸入信號;前兩個是函數發生器的輸出G和F,而另一個輸入信號是來自信號變換電路的輸出H1。這個函數發生器能實現3輸入變量的各種組合函數。這3個函數發生器結合起來,可實現多達9變量
18、的邏輯函數。CLB中有許多不同規格的數據選擇器(四選一、二選一等),通過對CLB內部數據選擇器的編程,邏輯函數發生器G、F和H的輸出可以連接到CLB輸出端X或Y,并用來選擇觸發器的激勵輸入信號、時鐘有效邊沿、時鐘使能信號以及輸出信號。這些數據選擇器的地址控制信號均由編程信息提供,從而實現所需的電路結構。CLB中的邏輯函數發生器F和G均為查找表結構,其工作原理類似于ROM。F和G的輸入等效于ROM的地址碼,通過查找ROM中的地址表可以得到相應的組合邏輯函數輸出。另一方面,邏輯函數發生器F和G還可以作為器件內高速RAM或小的可讀寫存儲器使用,它由信號變換電路控制。2.輸入/輸出模塊IOB。IOB提
19、供了器件引腳和內部邏輯陣列之間的連接。它主要由輸入觸發器、輸入緩沖器和輸出觸發/鎖存器、輸出緩沖器組成。每個IOB控制一個引腳,它們可被配置為輸入、輸出或雙向I/O功能。當IOB控制的引腳被定義為輸入時,通過該引腳的輸入信號先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到MUX,另一路經延時幾納秒(或者不延時)送到輸入通路D觸發器,再送到數據選擇器。通過編程給數據選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來自輸入緩沖器,還是來自觸發器。當IOB控制的引腳被定義為輸出時,CLB陣列的輸出信號OUT也可以有兩條傳輸途徑:一條是直接經MUX送至輸出緩沖器,另一條是先存入輸出通路D
20、觸發器,再送至輸出緩沖器。IOB輸出端配有兩只MOS管,它們的柵極均可編程,使MOS管導通或截止,分別經上拉電阻接通Vcc、地線或者不接通,用以改善輸出波形和負載能力。3.可編程互連資源IR。可編程互連資源IR可以將FPGA內部的CLB和CLB之間、CLB和IOB之間連接起來,構成各種具有復雜功能的系統。IR主要由許多金屬線段構成,這些金屬線段帶有可編程開關,通過自動布線實現各種電路的連接。5.2原理框圖FPGA的多功能數字鐘的設計方案是設計一個具有計時、報時和顯示這三部分的主要功能。系統原理框圖如圖4-1所示。其中計時功能是整個多功能數字鐘的核心部分;報時顧名思義,也就是在時鐘到達整點時的鳴
21、叫功能;顯示起到了一個譯碼功能,使得程序在實驗箱上下載時我們能清晰、明了的整個運行過程。這三部分相結合,就基本完成了這樣的一個多功能數字鐘。 圖4-1 數字鐘原理框圖原理框圖功能如下:首先輸入電源然后進入FPGA芯片,來實現最基本的數字鐘計時電路,其計數輸出送7段譯碼電路,由數碼管顯示。PPGA芯片工作使得基準頻率分頻器可分頻出標準的1hz 頻率信號,用于秒計數的時鐘信號;分頻出頻率信號用于校時、校分的快速遞增信號;分頻出 頻率信號用于對于按動校時、校分按鍵的消除抖動。然后用按鍵控制電路模塊是一個校時、校分、秒清零的模式控制模塊, 頻率信號用于鍵的消除抖動。而模塊的輸出則是一個邊沿整齊的輸出信
22、號。 控制電路模塊是一個校時、校分、秒清零的模式控制模塊,64Hz 頻率信號用于鍵KEY1、KEY2、KEY3的消除抖動。而模塊的輸出則是一個邊沿整齊的輸出信號。鬧時電路模塊也需要音頻信號以及來自分計數器和時計數器的輸出信號 6調試 6.1調時程序調試原始程序下載時,數字鐘能正常顯示,初始化值7:59分55秒,當到8:00時,蜂鳴器不響沒有報時。按鍵模塊沒有進位設計,調時位按鍵程序異常顯示。后加入:if(hour_l =4&hour_h=2)|(hour_l=10)begin hour_l=0;hour_h=hour_h+1;/按鍵進位if(hour_h=3)hour_h=0;程序后按鍵調時能
23、正常顯示,也可以進位。6.2鬧鐘程序調試原始程序8:00沒有報時,可能是蜂鳴器頻率不對,于是寫了個蜂鳴器響的小程序,試著探索蜂鳴器的鳴響頻率,最后發現當將CLK進行8000hz分頻是,蜂鳴器能響,將此小程序放在:if(hour_h=0&hour_l=8&miniute_h=0&miniute_l=0)條件中能實現8:00報時功能。具體程序如下:always(posedge clk)beginif(hour_h=0&hour_l=8&miniute_h=0&miniute_l=0)/8:00報時,鬧鐘模塊 begin if(counter_clock=8000) begin counter_cl
24、ock=0;alarm_clock=alarm_clock;end else counter_clock=counter_clock+1;end end 總 結 此次實訓基本實現了多功能數字鐘的功能,該程序能讓數字鐘整點報時,也能夠實現按鍵調時,和8:00報時的鬧鐘功能。不足之處在于鬧鐘時間無法自由設定,缺少鬧鐘設置按鍵,也無法復位清零。最后是設計作品時的設計邏輯和設計思想,在選擇不同的系統方案時要綜合考慮,選擇最優方案。各個模塊的實現也要考慮綜合情況而制定出最符合實際情況的實現方案,方案間要進行對比、實踐,最終確定。在這次的課程設計中我不僅學習到有關程序編寫以及設計方面的邏輯思維,對系統功能
25、的實現也有了較為深入的了解,對各模塊的調試等也學習到不少東西,總之,從這次設計中學到很多東西,也鞏固了我的理論學習。12 致 謝首先要感謝葉俊明老師,老師知識淵博,治學認真而嚴謹,感謝您從本文研究開始一路指導至本論文的完成,從論文題目的選定到論文寫作的指導,經由您悉心的點撥,再經思考后的領悟,常常讓我有“山重水復疑無路,柳暗花明又一村”的豁然開朗!由衷感謝您在論文上傾注的大量心血,您寬厚待人的學者風范令我無比感動。感謝授課老師葉俊明老師課上對我們的教導,你們豐富的授課內容拓寬了我的視野,讓我能更順利的完成這篇文章;感謝我的同學們,你們不僅讓我感受到友情的力量,也讓我感覺到了生活的愉悅,通過課堂
26、討論學到的思維方式使我受益終生。最后,我要向我的同學表示深深的謝意。你們的理解、支持、鼓勵和鞭策催我更加上進,我竭盡全力的努力,更希望的是能夠讓你們高興和滿意。你們的情感永遠都是我上進的不竭的動力源泉。這些時光會慢慢的沉淀下來,但無論何時,我想到這段歲月,都如同是看到一枚珍藏已久的夾在書里發黃的書簽,永遠都是那么璀璨、那么絢爛。13參考文獻【1】夏宇聞. Verilog 數字系統設計教程第二版.北京航空航天大學出版社,【2】康華光等. 電子技術基礎(數字部分)第五版高等教育出版社,【3】羅朝霞等. CPLD/FPGA設計及應用. 北京人民郵電出版社,【4】億特科技編著. CPLD/FPGA應用
27、系統設計與產品開發. 北京人民郵電出版 社。【5】付文紅.花漢兵著.EDA技術與實驗. 機械工業出版社【6】崔建明.電工電子EDA仿真技術。 北京高等教育出版社【7】侯伯亨.Verilog HDL硬件描述語言與數字邏輯電路設計.西安電子科技大學出版14附 錄module test(clk,led_out,seg_bit,led_test,alarm_clock,key,key_1,key_2,key_3,key_4); input clk; input key,key_1,key_2,key_3,key_4; reg clk_1hz; reg clk_1khz; output reg led_
28、test; output reg6:0 led_out; output reg3:0seg_bit; output reg alarm_clock;reg31:0counter_clock; reg20:0counter; reg30:0counter_1hz; reg7:0display_tab; reg7:0second_l,second_h; reg7:0miniute_l,miniute_h; reg7:0hour_l,hour_h; reg1:0state; parameter s0=2d0,s1=2d1,s2=2d2,s3=2d3; /定時8:00 integer j,b; ini
29、tial begin state=0;counter=0;counter_1hz=0;miniute_l=9;miniute_h=5; second_h=5;second_l=5;hour_h=0;hour_l=7;end /初始化寄存器,初始時間為7點59分55秒/分頻模塊 always(posedge clk) begin if(counter_1hz=20000000) begin counter_1hz=0;clk_1hz=10000) begin counter=0;clk_1khz=clk_1khz;end else begin counter=4&hour_h=2)|(hour_l=10)begin hour_l=0;hour_h=hour_h+1;if(hour_h=3)hour_h=0;endend if(!key_4)j=j+1; if(j=200)&(!key_4) begin j=0;hour_h=hour_h+1;if(hour_h=3)hour_h=0;endif(b=1000)/時鐘主體,計時模塊。beginb=0;s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 業務外包合同服務協議書條款
- 不銹鋼門窗承包加工安裝合同
- 凈化隔墻工程合同
- 儲能能源管理合同
- 藥物治療基礎練習試題及答案
- 國際貿易合同類型
- 窖口租房合同范本
- 財務專業知識培訓
- 簡單合伙開店合同范本
- 樂器購買簡易合同范本
- JT-GQB-016-2000關于采用交通行業標準《公路橋涵標準圖》有關問題的通知
- 2024年注冊安全工程師考試題庫及參考答案【完整版】
- 家庭農場經營與管理-家庭農場產品營銷
- 尋訪家鄉名人 主題課件 《綜合實踐活動》七年級上冊
- 建筑結構荷載規范DBJ-T 15-101-2022
- 中華民族共同體概論課件專家版4第四講 天下秩序與華夏共同體的演進(夏商周時期)
- 2023年海南省初中學業水平考試歷史真題(答案詳解)
- UHPC板幕墻施工方案
- 《中國人民站起來了》練習(含解析) 統編版高中語文選擇性必修上冊
- 創新創效方案
- 《古籍概論》課件
評論
0/150
提交評論