fpga數(shù)字鐘實訓報告
桂林電子科技大學職業(yè)技術學院
FPGA應用實訓報告
學院(系):專業(yè):學號:學生姓名:指導教師:數(shù)字鐘
電子信息工程系
電子信息工程技術
xxxxxxxxxx
xxxxxx
xxxxxx
目錄
摘要1
引言2
一、設計任務與要求3
二、總體設計方案3
三、程序設計方案3
(1)分頻模塊實現(xiàn)方案13
(2)分頻模塊實現(xiàn)方案24
(3)計時模塊實現(xiàn)方案14
(4)計時模塊實現(xiàn)方案24
(5)方案總結5
四、系統(tǒng)軟件原理5
(1)主程序入口即變量定義5
(2)計時模塊6
五、系統(tǒng)硬件原理6
心得體會8
致謝9
參考文獻10
附錄11
桂林電子科技大學職業(yè)技術學院實訓報告
摘要
數(shù)字鐘是人們日常生活中經(jīng)常使用的計時工具,本次的課程設計是基于VerilogHDL的多功能數(shù)字鐘,完成時、分、秒的顯示功能。設計利用VerilogHDL語言自頂向下的設計理念,突出其作為硬件描述語言的良好的可讀性、可移植性以及易于理解等優(yōu)點。程序下載到FPGA芯片后,可用于實際的數(shù)字鐘顯示中。
此次設計的邏輯結構主要由分頻器、計數(shù)器和譯碼顯示器三個模塊構成。分頻模塊將50Mhz系統(tǒng)基準時鐘分頻產(chǎn)生兩路時鐘信號,一路是1HZ的數(shù)字鐘計時工作頻率,一路是數(shù)碼管動態(tài)顯示的掃描頻率;計時模塊對1HZ的時鐘信號進行計時,分為時、分、秒三個部分;與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更長的使用壽命,已得到廣泛的使用。數(shù)字鐘的設計方法有許多種,例如,可用中小規(guī)模集成電路組成電子鐘;也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘;鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。譯碼顯示模塊采用動態(tài)掃描的方式完成數(shù)碼管的顯示。最后通過主模塊調用三個子模塊函數(shù)完成整個設計。
【關鍵詞】硬件描述語言FPGA數(shù)字鐘
第1頁桂林電子科技大學職業(yè)技術學院實訓報告
引言
現(xiàn)代電子設計技術進入了一個新的階段。傳統(tǒng)的電子設計方法、工具和器件在更大程度上被EDA所取代。EDA技術就是以計算機為工具,設計者在EDA軟件平臺上,用硬件描述語言HDL完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和模擬,直至對于特定目標芯片的適配編譯、邏輯映像和程序設計下載等工作。EDA技術的出現(xiàn),極大地提高了電路設計的效率和可操作性,減輕了設計者的勞動強度。VerilogHDL是EDA技術的重要組成部分,VerilogHDL具有極強的描述能力,能支持系統(tǒng)行為級、寄存器傳輸級、邏輯門級三個不同層次的設計,支持結構、數(shù)據(jù)流、行為三種描述形式的混合描述。ASIC是專用的系統(tǒng)集成電路而FPGA是特殊的ASIC芯片具有設計開發(fā)周期短、設計制造成本低、開發(fā)工具先進等優(yōu)點。一、設計任務與要求
(1)設計一個數(shù)碼管實時顯示時、分、秒的數(shù)字時鐘(24小時顯示模式)(2)為了演示方便,應具有分鐘、小時快進功能。(3)到點報時、鬧鐘時間固定為8:00(4)同時設置按鍵調時。
二、總體設計方案
(1)方案一用數(shù)電制作一個數(shù)字鐘,通過74L74芯片實現(xiàn)數(shù)碼管計數(shù)功能
用與非門結合,用按鍵來設置實現(xiàn)鬧鐘和整點報時的功能。(2)方案二用fpga來制作一個數(shù)字鐘,通過編寫程序來控制fpga芯片輸出輸入來得到數(shù)字鐘的功能,同時用fpga板來實現(xiàn)該功能。通過單片機試驗箱來實現(xiàn)該功能,最終達到相應的結果。總結:
方案一用數(shù)電的方式做數(shù)字鐘,用的芯片多同時之制作麻煩,不適合制做數(shù)字鐘。方案二制作比較便捷,只需要寫程序,制作業(yè)是比較方便,也比較實現(xiàn)功能。方案三用單片機雖然也是編寫程序,可是和FPGA相比我個人覺得還是比單片機好做一點。綜合上述我選擇FPGA來制作該程序
(3)方案三用單片機來控制數(shù)字鐘,通過編寫程序來實現(xiàn)時鐘計時功能,
三、程序設計方案
(1)分頻模塊實現(xiàn)方案1
第2頁桂林電子科技大學職業(yè)技術學院實訓報告
定義變量并且設定一個上限值,每次加計數(shù)到該上限值時,輸出該計數(shù)值的
parameterDIV_SIZE=25;always@(posedgeclock)counter=counter+1;
assignclkdiv=counter[DIV_SIZE-1];(2)分頻模塊實現(xiàn)方案2
最高位
定義一個變量,使得counter_1hz==201*0000,使得輸入1hz信號,讓counter_1hz自加always@(posedgeclk)
Beginif(counter_1hz==201*0000)
begincounter_1hz=0;clk_1hz桂林電子科技大學職業(yè)技術學院實訓報告
if(second_l==10)beginsecond_l=0;second_h=second_h+1;endif(second_h==6)beginsecond_h=0;miniute_l=miniute_l+1;endif(miniute_l==10)beginminiute_l=0;miniute_h=miniute_h+1;endif(miniute_h==6)beginminiute_h=0;hour_l=hour_l+1;endif(((hour_l==4)&&(hour_h==2))||((hour_l==10)&&(hour_h桂林電子科技大學職業(yè)技術學院實訓報告
始終按鍵,高電平有效。Display_tab為數(shù)碼管顯示驅動輸出,狀態(tài)機用于循環(huán)掃描點亮數(shù)碼管,掃描頻率1024Hz,Spk將報時音訊輸出至揚聲器。
2)計時模塊
second_l,second_h;miniute_l,miniute_h;hour_l,hour_h;分別表示秒,分,小時的高位和低位L組成十六進制計數(shù)器。程序利用1Hz時鐘作為輸入,首先判斷是否有清零信號Key(高電平清零),然后系統(tǒng)判斷當前狀態(tài)是否為23:59:59,而后判斷分鐘與秒為59:59時小時個位是否為9,此后以此類推。
五、系統(tǒng)硬件原理
VerilogHDL的多功能數(shù)字鐘的設計方案是設計一個具有計時、報時和顯示
這三部分的主要功能。系統(tǒng)原理框圖如圖4-1所示。其中計時功能是整個多功能數(shù)字鐘的核心部分;報時顧名思
義,也就是在時鐘到達整點時的鳴叫功能;顯示起到了一個譯碼功能,使得程序在實驗箱上下載時我們能清晰、明了的整個運行過程。這三部分相結合,就基本完成了這樣的一個多功能數(shù)字鐘。
圖4-1數(shù)字鐘原理框圖
原理框圖功能如下:
①首先輸入電源然后進入FPGA芯片,來實現(xiàn)最基本的數(shù)字鐘計時電路,其②PPGA芯片工作使得基準頻率分頻器可分頻出標準的1hz頻率信號,用于計數(shù)輸出送7段譯碼電路,由數(shù)碼管顯示。
秒計數(shù)的時鐘信號;分頻出頻率信號用于校時、校分的快速遞增信號;分頻出頻率信號用于對于按動校時、校分按鍵的消除抖動。
③然后用按鍵控制電路模塊是一個校時、校分、秒清零的模式控制模塊,頻率信號用于鍵的消除抖動。而模塊的輸出則是一個邊沿整齊的輸出信號。④控制電路模塊是一個校時、校分、秒清零的模式控制模塊,64Hz頻率信
第2頁桂林電子科技大學職業(yè)技術學院實訓報告
號用于鍵KEY1、KEY2、KEY3的消除抖動。而模塊的輸出則是一個邊沿整齊的輸出信號。
⑤報時電路模塊需要通過一個組合電路完成,前五聲訊響功能報時電路還需用一個觸發(fā)器來保證整點報時時間為1秒。
⑥鬧時電路模塊也需要音頻信號以及來自秒計數(shù)器、分計數(shù)器和時計數(shù)器的輸出信號作本電路的輸入信號。
心得體會
這次的課程設計結束了,在這次的設計中我學會了很多東西。首先是對
VerilogHDL語言的設計思想有了深入理解,將這種自頂向下的設計理念運用于實踐中,設計多功能數(shù)字鐘,突出了VerilogHDL作為硬件描述語言的良好可讀性和可移植性,對上學期所學的而理論知識有了深刻的理解。
其次是對VerilogHDL語言的語法熟悉,在這次的課程設計中,我學習到很多VerilogHDL語言的語法知識,比如在兩個不同的語句塊中不能對同一個變量進行操作,比如在用VerilogHDL語言中編寫程序時要注意begin和end語句的匹配問題,在使用VerilogHDL語言時不可以使用中文注釋等等。對于這種語言的學習也有了很大的幫助。
最后是設計作品時的設計邏輯和設計思想,在選擇不同的系統(tǒng)方案時要綜合考慮,選擇最優(yōu)方案。各個模塊的實現(xiàn)也要考慮綜合情況而制定出最符合實際情況的實現(xiàn)方案,方案間要進行對比、實踐,最終確定。
在這次的課程設計中我不僅學習到有關程序編寫以及設計方面的邏輯思維,對系統(tǒng)功能的實現(xiàn)也有了較為深入的了解,對各模塊的調試等也學習到不少東西,總之,從這次設計中學到很多東西,也鞏固了我的理論學習。
第7頁桂林電子科技大學職業(yè)技術學院實訓報告
致謝
首先要感謝我的老師xxx,老師知識淵博,治學認真而嚴謹,感謝您從本文研究開始一路指導至本論文的完成,從論文題目的選定到論文寫作的指導,經(jīng)由您悉心的點撥,再經(jīng)思考后的領悟,常常讓我有“山重水復疑無路,柳暗花明又一村”的豁然開朗!由衷感謝您在論文上傾注的大量心血,您寬厚待人的學者風范令我無比感動。感謝授課老師課上對我們的教導,你們豐富的授課內容拓寬了我的視野,讓我能更順利的完成這篇文章;感謝我的同學們,你們不僅讓我感受到友情的力量,也讓我感覺到了生活的愉悅,通過課堂討論學到的思維方式使我受益終生。
最后,我要向我的家人表示深深的謝意。你們的理解、支持、鼓勵和鞭策催我更加上進,我竭盡全力的努力,更希望的是能夠讓你們高興和滿意。你們的情感永遠都是我上進的不竭的動力源泉。這些時光會慢慢的沉淀下來,但無論何時,我想到這段歲月,都如同是看到一枚珍藏已久的夾在書里發(fā)黃的書簽,永遠都是那么璀璨、那么絢爛。
第9頁桂林電子科技大學職業(yè)技術學院實訓報告
參考文獻
【1】夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[第二版].北京航空航天大學出版社,【2】康華光等.電子技術基礎(數(shù)字部分)[第五版]高等教育出版社,【3】羅朝霞等.CPLD/FPGA設計及應用.北京人民郵電出版社,
【4】億特科技編著.CPLD/FPGA應用系統(tǒng)設計與產(chǎn)品開發(fā).北京人民郵電出版社。
【5】付文紅.花漢兵著.EDA技術與實驗.機械工業(yè)出版社【6】崔建明.電工電子EDA仿真技術。北京高等教育出版社
【7】侯伯亨.VerilogHDL硬件描述語言與數(shù)字邏輯電路設計.西安電子科技大學出版
第10頁桂林電子科技大學職業(yè)技術學院實訓報告
附錄
moduleb(clk,led_out,seg_bit,led_test,alarm_clock,led,key,key_1,key_2,key_3,key_4);inputclk;
inputkey,key_1,key_2,key_3,key_4;regclk_1hz;regclk_1khz;outputregled_test;outputregled;outputreg[3:0]seg_bit;outputreg[6:0]led_out;outputregalarm_clock;reg[20:0]counter;reg[30:0]counter_1hz;reg[7:0]display_tab;reg[7:0]second_l,second_h;reg[7:0]miniute_l,miniute_h;reg[3:0]hour_l,hour_h;reg[1:0]state;
parameters0=2"d0,s1=2"d1,s2=2"d2,s3=2"d3;//定時8:00
parametertiming_miniute_h=0,timing_miniute_l=0,
timing_second_h=0,timing_second_l=0,timing_hour_h=0,timing_hour_l=8;
integera,b,c,d,e;integer
latch_second_l,latch_second_h,latch_miniute_l,latch_miniute_h,latch_hour_l,latch_hour_h;
initialbeginstate=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//初始化寄存器
第11頁桂林電子科技大學職業(yè)技術學院實訓報告
//分頻模塊
always@(posedgeclk)begin
if(counter_1hz==201*0000)begincounter_1hz=0;clk_1hz=201*0)
begin
counter桂林電子科技大學職業(yè)技術學院實訓報告
if(((hour_l==4)&&(hour_h==2))||((hour_l==10)&&(hour_h桂林電子科技大學職業(yè)技術學院實訓報告
if((latch_miniute_h==timing_miniute_h)&&(latch_miniute_l==timing_
alarm_clock=~alarm_clock;end
miniute_l)&&
(latch_hour_h==timing_hour_h)&&(latch_hour_l==timing_hour_l))
elsec=c+1;
if(e==1000)begine=0;if((miniute_l||miniute_h)==0)led=~led;if((miniute_l||miniute_h)==1)led=0;endelsee=e+1;
if(!key)d=d+1;if((d==200)&&(!key))beginlatch_miniute_l=latch_miniute_l+1;alarm_clock=0;end
end
//動態(tài)掃描模塊
always@(posedgeclk_1khz)
begincase(state)s0:beginseg_bit=4"b0111;display_tab=miniute_l;
state=s1;led_test=1;end
s1:beginseg_bit=4"b1011;display_tab=miniute_h;
state=s2;led_test=1;end
s2:beginseg_bit=4"b1101;display_tab=hour_l;
state=s3;led_test=~clk_1hz;end
s3:beginseg_bit=4"b1110;display_tab=hour_h;
state=s0;led_test=1;end
default:beginled_out=7"bz;state=0;end
","p":{"h":18,"w":9,"x":166.53,"y":961.907,"z":97},"ps":{"_enter":1},"t"
友情提示:本文中關于《fpga數(shù)字鐘實訓報告》給出的范例僅供您參考拓展思維使用,fpga數(shù)字鐘實訓報告:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權問題,請聯(lián)系我們及時刪除。