版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、各專業(yè)全套優(yōu)秀畢業(yè)設計圖紙基于fpga的多功能數(shù)字鐘一、設計題目基于xilinx fpga的多功能數(shù)字鐘設計二、設計目的1.掌握可編程邏輯器件的應用開發(fā)技術(shù)設計輸入、編譯、仿真和器件編程;2.熟悉一種eda軟件使用;3.掌握verilog設計方法;4.掌握分模塊分層次的設計方法;5.用verilog完成一個多功能數(shù)字鐘設計;6.學會fpga的仿真。三、設計內(nèi)容設計實驗項目九多功能電子鐘 功能要求:利用實驗板設計實現(xiàn)一個能顯示時分秒的多功能電子鐘,具體要求為:基本功能:1) 準確計時,以數(shù)字形式顯示時、分、秒,可通過按鍵選擇指示當前顯示時間范圍模式;2) 計時時間范圍 00:00:0023:59
2、:593) 可實現(xiàn)校正時間功能;4) 可通過實現(xiàn)時鐘復位功能:00:00:00擴展功能:1) 定時報:時間自定(不要求改變),鬧1分鐘(1khz)-利用實驗板led或外接電路實現(xiàn)。2) 仿廣播電臺正點報時:xx:59:51,53,55,57(500hz);59(1khz) -利用實驗板led或外接電路實現(xiàn)。3) 報整點時數(shù):xx:00:00.5-xx.5(1khz),自動、手動-利用實驗板led或外接電路實現(xiàn)。4) 手動輸入校時;5) 手動輸入定時鬧鐘;6) 萬年歷;7) 其他擴展功能; 設計步驟與要求:1) 計算并說明采用basys2實驗板時鐘50mhz實現(xiàn)系統(tǒng)功能的基本原理。2) 在xil
3、inx ise13.1軟件中,利用層次化方法,設計實現(xiàn)模一百計數(shù)及顯示的電路系統(tǒng),設計模塊間的連接調(diào)用關系,編寫并輸入所設計的源程序文件。3) 對源程序進行編譯及仿真分析(注意合理設置,以便能夠在驗證邏輯的基礎上盡快得出仿真結(jié)果)。4) 輸入管腳約束文件,對設計項目進行編譯與邏輯綜合,生成下載所需.bit類型文件。5) 在basys2實驗板上下載所生成的.bit文件,觀察驗證所設計的電路功能。四、總體設計思路主體分為分頻模塊,正常時間模塊(包含兩個模60計數(shù)器和一個模24計數(shù)器子模塊),鬧鐘模塊(分為一個模60計數(shù)器模塊,一個模24計數(shù)器模塊,四個比較器模塊),電臺報時模塊,數(shù)碼管顯示模塊(分
4、為模式選擇模塊,片選信號及掃描程序模塊,和譯碼模塊)。將各模塊連接好各接線口即得到數(shù)字鐘頂層模塊complete.sch。五、各模塊設計及源代碼1.分頻模塊分頻模塊要將50mhz的時鐘信號分成三個分別為1hz,500hz,1khz的三個脈沖信號,設置三個計數(shù)器,在三個頻率信號分別對應的延時時間進行翻轉(zhuǎn),就可以得到三個不同的脈沖信號。源代碼如下:/freq.vmodule freq(clk,_1hz,_500hz,_1khz);input clk;output _1hz,_500hz,_1khz;reg _1hz=0,_500hz=0,_1khz=0;reg 24:0 cnt1=0,cnt2=0
5、,cnt3=0;always (posedge clk)beginif (cnt125d24999999)/if (cnt125d249)/做test仿真時讓變化更快cnt1=cnt1+1;/未達到計數(shù)時間計數(shù)器加一elsebegin _1hz=_1hz;/達到計時時間,信號翻轉(zhuǎn)且計數(shù)器歸零cnt1=0;endendalways (posedge clk)beginif (cnt225d49999)/if(cnt225d49)cnt2=cnt2+1;elsebegin _500hz=_500hz;cnt2=0;endendalways (posedge clk)beginif (cnt325d
6、24999)/if (cnt325d25)cnt3=cnt3+1;elsebegin _1khz=_1khz;cnt3=0;endendendmodule2.時鐘正常顯示模塊正常顯示模塊分為時分秒三個子模塊,分別對應一個模24計數(shù)器和兩個模60計數(shù)器。模24計數(shù)器和模60計數(shù)器設計都bcd碼來表示時分秒的值,每個分為高位和低位,均對應一個十進制的數(shù)。對模24計數(shù)器,每個脈沖信號來臨時當?shù)臀恍∮?時加一;等于9時高位加一且低位置零;且高位小于3,低位小于9,超過時高低位均置零;當高位等于2時,低位只能到3,同時復位ncr低電平時高低位均置零。同理可得模60計數(shù)器的設計。根據(jù)這個思路,得到模24計
7、數(shù)器源代碼如下:/counter24.vmodule counter24(cnth,cntl,ncr,en,cp);input ncr,en,cp;output 3:0 cnth,cntl;/分別為高位和低位reg 3:0 cnth,cntl;always (posedge cp or negedge ncr)beginif (ncr) cnth,cntl=8h00;/復位鍵清零else if(en) cnth,cntl2)|(cntl9)|(cnth=2)&(cntl=3)cnth,cntl=8b00;/出現(xiàn)計數(shù)錯誤全部清零else if(cnth=2)&(cntl3)cntl=cntl+1
8、;/超過20時計數(shù)方式else if(cntl=9)begin cnth=cnth+1b1; cntl=4b0 ;/一般情況下計數(shù)方式endelsecntl=cntl+1b1;end模60計數(shù)器代碼如下:/counterm60.vmodule counterm60(cntmh,cntml,ncr,en,cp);input cp,en,ncr;output 3:0 cntmh,cntml;reg 3:0 cntmh=0,cntml=0; always (posedge cp or negedge ncr) begin if(ncr)cntmh,cntml=8b00;else if (en)cnt
9、mh,cntml9|cntmh5|(cntmh=5&cntml=9)begincntmh,cntml=8h00;endelse if(cntmh5&cntml=9)begincntmh=cntmh+1b1;cntml=4b0;endelsecntml=cntml+1b1;endendmodule而時鐘計時就是調(diào)用兩個模60計數(shù)器和一個模24計數(shù)器,但相應的cp信號是需要修改的使得秒的60計數(shù)一周期可以使分加一,同時分鐘跑一個周期能使得時針加一。同時按照設計要求需要加入按鍵調(diào)時功能,將兩個按鍵adjhr和adjmin分別作為調(diào)時針和分針的按鍵,按下時時針和分鐘的脈沖信號變?yōu)?hz脈沖,由此時針分
10、鐘會以1hz的頻率改變而達到調(diào)時間的目的。設置分鐘和時鐘的驅(qū)動信號分別為mincp,hrcp,則可以設置mincp=adjmin?_1hz:(second=8h59); hrcp=adjhr?_1hz:(minute,second=16h5959);源代碼如下:/top_clock.vmodule top_clock(hour,minute,second,_1hz,ncr,adjmin,adjhr);input _1hz,ncr,adjmin,adjhr;output 7:0 hour,minute,second;/分別為時分秒輸出wire 7:0 hour,minute,second;sup
11、ply1 vdd;/設置使能wire mincp,hrcp;/定義激勵信號counterm60 ut1(second7:4,second3:0,ncr,vdd,_1hz);counterm60 ut2(minute7:4,minute3:0,ncr,vdd,mincp);counter24 ut3(hour7:4,hour3:0,ncr,vdd,hrcp);assign mincp=adjmin?_1hz:(second=8h59);/分鐘激勵assign hrcp=adjhr?_1hz:(minute,second=16h5959);/時鐘激勵endmodule3.仿電臺報時模塊設置alar
12、m為報時輸出,minute和second分別為分鐘信號和秒鐘信號,先用if-else語句來進行minute是否為59的判斷,之后再用case語句在second為51,53,55,57時輸出500hz的信號,在59時輸出為1khz的信號,在板子上沒有輸出聲音的設備,就接入led來驗證是否正常報時。/radio.vmodule radio(alarm,minute,second,_1khz,_500hz);input _1khz,_500hz;input 7:0 minute,second;output alarm;reg alarm;always (minute or second)if(min
13、ute=8h59)case(second)8h51,8h53,8h55,8h57:alarm=_500hz;/500hz方式輸出,報時8h59:alarm=_1khz;/59s以1khz輸出default:alarm=1b0;/一般不輸出endcaseelse alarm=1b0;endmodule4.鬧鐘模塊鬧鐘模塊分為設定鬧鐘(包含兩個按鍵),鬧鐘正常響鈴,一個關閉鬧鐘的按鍵ctrring。設定鬧鐘同樣可以以1hz脈沖為激勵信號,其主體電路為一個以1hz為激勵信號的受setminkey控制的模60計數(shù)器和一個受sethrkey控制的模24計數(shù)器,調(diào)用之前已經(jīng)寫好的模塊即可。同時響鈴設置為a
14、larm_clock,受按鍵ctrring控制。設置四個比較器,分別為小時高位比較,小時低位比較,分鐘高位比較和分鐘低位比較。當四個比較信號都為1時才會鬧鐘響鈴。比較器的設計很簡單直接給出源代碼:/comparator.vmodule comparator(equ,a,b);input 3:0 a,b;output equ;assign equ=(a=b);endmodule而鬧鐘主體源代碼如下:/ring.vmodule ring(alarm_clock,set_hr,set_min,hour,minute,second,sethrkey,setminkey,_1khz,_500hz,_1h
15、z,ctrring );output alarm_clock;output 7:0 set_hr,set_min;/輸出的鬧鐘設定時間wire alarm_clock;wire 7:0 set_hr,set_min;input _1khz,_500hz,_1hz;input 7:0 hour,minute,second;input sethrkey,setminkey,ctrring;/鬧鐘設定按鍵和關閉鬧鐘按鍵supply1 vdd;/設置高電平wire hrh_cop,minh_cop,hrl_cop,minl_cop;/中間變量,為設定鬧鐘時間和正常時間比較wire time_equ;c
16、ounterm60 su1(set_min7:4,set_min3:0,vdd,setminkey,_1hz);/調(diào)用模60計數(shù)器模塊counter24 su2(set_hr7:4,set_hr3:0,vdd,sethrkey,_1hz);comparator su4(hrh_cop,set_hr7:4,hour7:4);/調(diào)用比較器模塊comparator su5(hrl_cop,set_hr3:0,hour3:0);comparator su6(minh_cop,set_min7:4,minute7:4);comparator su7(minl_cop,set_min3:0,minute3
17、:0);assign time_equ=(hrh_cop&hrl_cop&minh_cop&minl_cop);/時間比較信號assign alarm_clock=ctrring?(time_equ&(second0=1b1)&_500hz)|(second0=1b0)&_1khz):1b0;/設置鬧鈴輸出endmodule5.數(shù)碼管顯示模塊之前的模塊設置了兩個音頻信號輸出alarm和alarm_clock,這里可以統(tǒng)一起來。數(shù)碼管既要顯示鬧鐘設定時間,也要顯示時鐘正常顯示時間。設置一個按鍵mode來切換顯示模式,為0時顯示正常時間,為1時顯示鬧鐘定時時間。設置led_hr和led_min為得
18、到的當前顯示的時和分。還有由led_hr和led_min到數(shù)碼管的顯示需要設計掃描程序,分為片選和譯碼模塊。分別貼出源代碼如下:模式選擇模塊:/mode.vmodule mode(mode,hour,minute,second,set_hr,set_min,led_hr,led_min,alarm,alarm_clock,alarmout);input mode,alarm,alarm_clock;input 7:0 hour,minute,second,set_hr,set_min;output 7:0 led_hr,led_min;output alarmout;wire alarm,al
19、arm_clock;wire 7:0 set_hr,set_min;assign alarmout=alarm|alarm_clock;/時鐘響鈴,鬧鐘和電臺報時均有效assign led_hr=mode?set_hr:hour;/選擇當前顯示的小時assign led_min=mode?set_min:minute;/選擇當前顯示的分endmodule之后是譯碼模塊在配置引腳時將小數(shù)點dp配置為最高位,其余g,f,e,d,c,b,a按從高到低的順序配置,低電平段碼管亮,由此可以寫出對應段碼,源代碼如下:/translate.vmodule translate(seg_in,seg_outh,
20、seg_outl);input7:0 seg_in;/輸入的數(shù)碼output 7:0 seg_outh;/翻譯后的高位段碼output 7:0 seg_outl;/翻譯后的低位段碼wire 7:0 seg_outh,seg_outl;reg 7:0 seg_outh1,seg_outl1; always (seg_in7:4)/高位譯碼case (seg_in7:4)4b0000 : seg_outh1=8b11000000;/0的段碼4b0001 : seg_outh1=8b11111001;/14b0010 : seg_outh1=8b10100100;/24b0011 : seg_out
21、h1=8b10110000;/34b0100 : seg_outh1=8b10011001;/44b0101 : seg_outh1=8b10010010;/54b0110 : seg_outh1=8b10000010;/64b0111 : seg_outh1=8b11111000;/74b1000 : seg_outh1=8b10000000;/84b1001 : seg_outh1=8b10010000;/9default: seg_outh1=8b10100011;/出錯顯示endcasealways (seg_in3:0)/低位譯碼case (seg_in3:0)4b0000 : se
22、g_outl1=8b11000000;4b0001 : seg_outl1=8b11111001;4b0010 : seg_outl1=8b10100100;4b0011 : seg_outl1=8b10110000;4b0100 : seg_outl1=8b10011001;4b0101 : seg_outl1=8b10010010;4b0110 : seg_outl1=8b10000010;4b0111 : seg_outl1=8b11111000;4b1000 : seg_outl1=8b10000000;4b1001 : seg_outl1=8b10010000;default: se
23、g_outl1=8b10100011;endcaseassign seg_outh=seg_outh1;assign seg_outl=seg_outl1;endmodule之后是數(shù)碼管片選信號的設置和掃描程序,以500hz為掃描頻率。代碼如下:/trans.vmodule trans(_500hz,led_hr,led_min,sgg,sele);input 7:0 led_hr,led_min;input _500hz;output 7:0 sgg;output 3:0 sele;wire 7:0 sgml,sgmh,sghl,sghh;/經(jīng)過翻譯的段碼reg 1:0 count=2b00
24、;/掃描的計數(shù)控制wire 3:0 sele;/片選信號wire 7:0 sgg;/輸入數(shù)碼管的輸出信號reg 7:0 sg;/數(shù)碼管段碼中間變量reg 3:0 sel=1110;/片選中間變量translate st1(led_hr,sghh,sghl);translate st2(led_min,sgmh,sgml);always (posedge _500hz)case(count)2b00:begin sg=sgml;/選中第一個數(shù)碼管 sel=4b1110; count=count+1b1;/掃描信號不斷加一,從而實現(xiàn)掃描end2b01:begin sg=sgmh;/選中第二個管 s
25、el=4b1101; count=count+1b1;end2b10:begin sg=sghl;/選中第三個管 sel=4b1011;count=count+1b1;end2b11:begin sg=sghh;/選中第四個管 sel=4b0111; count=count+1b1;endendcaseassign sele=sel;/設置片選信號assign sgg=sg;/設置數(shù)碼管顯示信號endmodule6、多功能數(shù)字鐘頂層模塊設計采用圖形設計方法,將以上已經(jīng)寫好的各模塊都選擇create schematic symbol封裝成各個器件。名字設置為complete.sch,在這個文件里
26、將各個器件拖出來進行各引腳連線和標記輸入輸出端口。由于圖太小截圖看不清楚,只能先給個大概如下:其生成的vf文件如下:/complete.vfmodule complete(xlxn_10, xlxn_15, xlxn_16, xlxn_17, xlxn_19, xlxn_20, xlxn_21, xlxn_33, xlxn_32, xlxn_39, xlxn_40); input xlxn_10; input xlxn_15; input xlxn_16; input xlxn_17; input xlxn_19; input xlxn_20; input xlxn_21; input xlx
27、n_33; output xlxn_32; output 7:0 xlxn_39; output 3:0 xlxn_40; wire xlxn_4; wire xlxn_5; wire 7:0 xlxn_6; wire 7:0 xlxn_7; wire 7:0 xlxn_8; wire xlxn_11; wire 7:0 xlxn_13; wire 7:0 xlxn_14; wire xlxn_22; wire xlxn_24; wire 7:0 xlxn_37; wire 7:0 xlxn_38; freq xlxi_1 (.clk(xlxn_10), ._1hz(xlxn_24), ._1
28、khz(xlxn_4), ._500hz(xlxn_5); radio xlxi_5 (.minute(xlxn_77:0), .second(xlxn_87:0), ._1khz(xlxn_4), ._500hz(xlxn_5), .alarm(xlxn_11); ring xlxi_6 (.ctrring(xlxn_21), .hour(xlxn_67:0), .minute(xlxn_77:0), .second(xlxn_87:0), .sethrkey(xlxn_19), .setminkey(xlxn_20), ._1hz(xlxn_24), ._1khz(xlxn_4), ._5
29、00hz(xlxn_5), .alarm_clock(xlxn_22), .set_hr(xlxn_137:0), .set_min(xlxn_147:0); top_clock xlxi_7 (.adjhr(xlxn_16), .adjmin(xlxn_15), .ncr(xlxn_17), ._1hz(xlxn_24), .hour(xlxn_67:0), .minute(xlxn_77:0), .second(xlxn_87:0); mode xlxi_8 (.alarm(xlxn_11), .alarm_clock(xlxn_22), .hour(xlxn_67:0), .minute
30、(xlxn_77:0), .mode(xlxn_33), .second(xlxn_87:0), .set_hr(xlxn_137:0), .set_min(xlxn_147:0), .alarmout(xlxn_32), .led_hr(xlxn_377:0), .led_min(xlxn_387:0); trans xlxi_9 (.led_hr(xlxn_377:0), .led_min(xlxn_387:0), ._500hz(xlxn_5), .sele(xlxn_403:0), .sgg(xlxn_397:0);endmodule7.引腳配置撥碼開關sw0對應mode(高電平為鬧鐘
31、時間,低電平為正常時間),sw1對應sethrkey(高電平有效),sw2對應seyminkey(高電平有效),sw3對應ctrring(高電平有效),sw5對應adjmin(高電平有效),sw6對應adjhr(高電平有效),sw7對應ncr(高電平有效)。alarm_out對應led0。得到的代碼如下:#created by constraints editor (xc3s100e-cp132-4) - 2014/12/03net xlxn_10 tnm_net = xlxn_10;timespec ts_xlxn_10 = period xlxn_10 20 ns high 50 %;ne
32、t xlxn_10 loc = b8;net xlxn_10 iostandard = lvcmos25;net xlxn_15 iostandard = lvcmos25;net xlxn_32 loc = m5;net xlxn_33 loc = p11;net xlxn_19 loc = l3;net xlxn_20 loc = k3;net xlxn_21 loc = b4;net xlxn_17 loc = n3;net xlxn_15 loc = f3;net xlxn_16 loc = e2;net xlxn_397 loc = p6;net xlxn_390 loc = l14;net xlxn_391 loc = h12;net xlxn_392 loc = n14;n
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電子商務客戶關系管理系統(tǒng)集成合同3篇
- 二零二五年環(huán)保設施工程設計合同補充協(xié)議3篇
- 二零二五版中藥材撫育承包合作合同3篇
- 二零二五年綠色環(huán)保外架爬架租賃與施工合同3篇
- 二零二五年教育資源共享與銷售合同樣本3篇
- 二零二五版房地產(chǎn)項目土地二級開發(fā)與銷售合同協(xié)議書3篇
- 二零二五版企業(yè)內(nèi)部股權(quán)交易及管理服務合同2篇
- 二零二五年酒店集團年度客戶關系管理合作合同范本2篇
- 二零二五年船舶開荒保潔與設備維護合同范本3篇
- 二零二五版廢棄物處理廠環(huán)境監(jiān)測與治理服務合同3篇
- 建筑保溫隔熱構(gòu)造
- 智慧財務綜合實訓
- 安徽省合肥市2021-2022學年七年級上學期期末數(shù)學試題(含答案)3
- 教育專家報告合集:年度得到:沈祖蕓全球教育報告(2023-2024)
- 肝臟腫瘤護理查房
- 護士工作壓力管理護理工作中的壓力應對策略
- 2023年日語考試:大學日語六級真題模擬匯編(共479題)
- 皮帶拆除安全技術(shù)措施
- ISO9001(2015版)質(zhì)量體系標準講解
- 《培訓資料緊固》課件
- 黑龍江省政府采購評標專家考試題
評論
0/150
提交評論