FPGA實驗報告_第1頁
FPGA實驗報告_第2頁
FPGA實驗報告_第3頁
FPGA實驗報告_第4頁
FPGA實驗報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、FPGA課程設計報告 專業(yè)班級: 13電信1班 學號: 130101011104 姓名: 汪遠通 指導老師: 祝宏 實驗日期:2015.11.272015.12.18文華學院信息學部多功能數(shù)字鐘電路設計一、 設計題目多功能數(shù)字鐘電路的分層次設計7二、 設計要求技術指標設計一個具有時、分、秒計時的電子鐘電路,按24小時制計時。三、 設計分析在設計一個比較復雜的數(shù)字電路或系統(tǒng)時,通常采用自上而下和自下而上的設計方法。在自上而下設計中,先定義頂層模塊,然后再定義頂層模塊中用到的子模塊。而在自下而上設計中,底層的各個子模塊首先被確定下來,然后將這些子模塊組合起來構成頂層模塊。將電路分為不同層次和多個模

2、塊分別進行設計,然后將這些模塊組合起來實現(xiàn)電路邏輯功能,這種方法通常被稱為分層次的電路設計。工作原理:振蕩器產(chǎn)生的穩(wěn)定的高頻脈沖信號,作為數(shù)字鐘的時間基準,再經(jīng)分頻器輸出標準秒脈沖。秒計數(shù)器計滿60后向分計數(shù)器進位,分計數(shù)器計滿60后向小時計數(shù)器進位,小時計數(shù)器按照24進制規(guī)律計數(shù)。計數(shù)器的輸出送譯碼顯示電路,即可顯示出數(shù)碼(時間)。計時出現(xiàn)誤差時可以用校時電路進行校時和校分。仿電臺報時和定時鬧鐘為擴展電路,只有在計時主題電路正常運行的情況下才能進行功能擴展。虛線框內的部分用Verilog HDL進行描述,然后用FPGA/CPLD實現(xiàn),譯碼顯示電路用中規(guī)模IC實現(xiàn),振蕩器由集成電路定時器555

3、與RC電路組成1kHz的多諧振蕩器。四、 設計步驟多功能數(shù)字鐘主體電路邏輯設計:采用自下而上的設計方法,首先定義數(shù)字鐘下層的各個模塊,再調用這些模塊組合成頂層的數(shù)字鐘電路。1.模24計數(shù)器的Verilog HDL設計小時計數(shù)器的計數(shù)規(guī)律為00-01-09-10-11-22-23-00,即在設計時要求小時計數(shù)器的個位和十位均按8421BCD碼計數(shù)。/文件名:counter24.v(BCD計數(shù):023)module counter24(CntH,CntL,nCR,EN,CP);input CP,nCR,EN; /分別為計時脈沖CP、清0信號、nCR和使能信號ENoutput 3:0 CntH,Cn

4、tL;/計時計數(shù)器的十位和個位輸出信號reg 3:0 CntH,CntL;/輸出為8421BCD碼always (posedge CP or negedge nCR)beginif(nCR) CntH,CntL<=8'h00;/異步清零else if (EN) CntH,CntL<=CntH,CntL; /對使能信號無效的處理else if (CntH>2)|(CntL>9)|(CntH=2)&&(CntL>=3) CntH,CntL<=8'h00; /對小時計數(shù)器出錯的處理else if (CntH=2)&&

5、(CntL<3)/進行20-23計數(shù) begin CntH<=CntH; CntL<=CntL+1'b1;endelse if (CntL=9) /小時十位級的計數(shù) begin CntH<=CntH+1'b1; CntL<=4'b0000;endelse /小時個位的計數(shù) begin CntH<=CntH; CntL<=CntL+1'b1;endendendmodule 2.模60計數(shù)器的Verilog HDL設計分和秒計數(shù)器的計數(shù)規(guī)律為00-01-09-10-11-58-59-00,可見個位計數(shù)器從09計數(shù),是一個十進

6、制計數(shù)器;十位計數(shù)器則從05計數(shù),是一個六進制計數(shù)器。設計時,可以先分別設計一個十進制計數(shù)器模塊(counter8.v)和一個六進制計數(shù)器模塊(counter6.v),然后將這兩個模塊組合起來,構成六十進制計數(shù)器。/counter60.v (BCD:0059)/六十進制計數(shù)器:調用十進制和六進制底層模塊構成module counter60(Cnt,nCR,EN,CP);input CP,nCR,EN;output 7:0 Cnt; /模六十計數(shù)器的輸出信號wire 7:0 Cnt; /輸出為8421BCD碼wire ENP; /計數(shù)器十位的使能信號(中間變量)counter10 UC0 (Cn

7、t3:0,nCR,EN,CP);/計數(shù)器的個位counter6 UC1 (Cnt7:4,nCR,ENP,CP);/計數(shù)器的十位assign ENP=(Cnt3:0=4'h9); /產(chǎn)生計數(shù)器十位的使能信號endmodule/counter10.v (BCD:09)module counter10(Q,nCR,EN,CP);input CP,nCR,EN;output 3:0 Q;reg 3:0 Q;always (posedge CP or negedge nCR)beginif (nCR) Q<=4'b0000; /nCR=0,計數(shù)器被異步清零else if (EN)

8、Q<=Q; /EN=0,暫停計數(shù)else if (Q=4'b1001) Q<=4'b0000;else Q<=Q+1'b1; /計數(shù)器增1計數(shù)endendmodule/counter6.v (BCD:05)module counter6(Q,nCR,EN,CP);input CP,nCR,EN;output 3:0 Q;reg 3:0 Q;always (posedge CP or negedge nCR)beginif (nCR) Q<=4'b0000;/nCR=0,計數(shù)器被異步清零else if(EN) Q<=Q;/EN=0,暫

9、停計數(shù)else if(Q=4'b0101) Q<=4'b0000;else Q<=Q+1'b1;/計數(shù)器增1計數(shù)endendmodule3.數(shù)字鐘主體電路的Verilog HDL設計/top_clock.vmodule top_clock(Hour,Minute,Second,_1Hz,nCR,AdjMinKey,AdjHrKey);input _1Hz,nCR,AdjMinKey,AdjHrKey;/定義輸入端口變量output 7:0 Hour,Minute,Second;/定義輸出端口變量wire 7:0 Hour,Minute,Sncond;/說明輸

10、出變量類型supply1 Vdd;/定義VDD為高電平wire MinCP,HrCP; /分別為分鐘、小時計數(shù)器時鐘信號(中間變量)/Hour:Minute:Second countercounter60 UT1 (Second,nCR,Vdd,_1Hz);/秒計數(shù)器counter60 UT2 (Minute,nCR,Vdd,MinCP);/分計數(shù)器counter24 UT3 (Hour7:4,Hour3:0,nCR,Vdd,HrCP);/小時計數(shù)器/產(chǎn)生分鐘計數(shù)器時鐘信號 AdjMinkey=1,校正分鐘;Adjminkey=0,分鐘正常計時assign MinCP=AdjMinKey ?

11、_1Hz:(Second=8'h59);/產(chǎn)生小時計數(shù)器時鐘信號。AdjHrkey=1,校正小時;AdjHrkey=0,小時正常計時assign HrCP = AdjHrKey ? _1Hz:(Minute,Second=16'h5959);endmodule數(shù)字鐘主體電路包括正常計時和對時間進行校正兩部分電路,其Verilog HDL為top_clock。整個程序分為兩個層次三個模塊,底層有兩個六十進制計數(shù)器模塊(counter60.v)和一個二十四進制計數(shù)器模塊(counter24.v),這三個模塊組成一個頂層模塊(top_clock.v)完成數(shù)字鐘的主要功能。又由于六十進

12、制計數(shù)器模塊由兩個下層模塊組成,所以整個程序實際上形成三個層次。電路的工作工程:對小時和分鐘進行校正的控制端分別為AdjHrkey和AdjMinkey,進行時間調整,AdjHrkey和AdjMinkey均為高電平,此時將1Hz信號直接輸入到小時、分鐘計數(shù)器,每秒鐘來1個時鐘信號,計數(shù)器加1計數(shù),就可以實現(xiàn)對小時和分鐘的校正。正常計時時,秒計數(shù)器接受分頻器送來的標準秒脈沖信號,每隔1秒鐘,計數(shù)器的值增1,當秒計數(shù)器計到59秒時,產(chǎn)生的輸出信號作為分計數(shù)器的時鐘信號,使分計數(shù)器加1,分、秒計數(shù)器同時計到最大值(59分59秒)時,產(chǎn)生的輸出信號作為小時計數(shù)器的時鐘信號,使小時計數(shù)器加1,從而實現(xiàn)計時

13、功能。程序中,MinCP和HrCp分別為分鐘計數(shù)器和小時計數(shù)器的時鐘信號,將程序"assign MinCP=AdjMin ? _1Hz:(Second=8'h59);"綜合后,會得到一個2選1數(shù)據(jù)選擇器電路。當AdjMinkey=1時,選擇1Hz信號作為分鐘計數(shù)器的時鐘信號MinCP,實現(xiàn)分鐘校正;當AdjMinkey=0時,選擇秒計數(shù)器進位信號(Second=8'h59)作為分鐘計數(shù)器的時鐘信號MinCP,實現(xiàn)分鐘正常計時。小時計數(shù)器時鐘信號HrCP的選擇原理類似。多功能數(shù)字鐘擴展電路邏輯設計:1. 仿電臺正點報時模塊的Verilog HDL設計/Radi

14、o.vmodule Radio (ALARM_Radio,Minute,Second,_1kHzIN,_500Hz);input _1kHzIN,_500Hz;/定義輸入端口變量input 7:0Minute,Second;output ALARM_Radio;/定義輸入端口變量reg ALARM_Radio;/說明變量的類型always(Minute or Second)/generate alarm signalif(Minute = 8'h59)case (Second)8'h51,8'h53,8'h55,8'h57:ALARM_Radio= _5

15、00Hz;8'h59:ALARM_Radio= _1kHzIN;default:ALARM_Radio=1'b0;endcaseelse ALARM_Radio=1'b0;endmodule仿廣播電臺正點報時模塊的程序為Radio.v。ALARM_Radio為輸出的正點報時信號,Minute、Second分別為數(shù)字鐘當前時刻的分鐘和秒鐘信號,它們作為本模塊的輸入。程序中使用if-else語句判斷數(shù)字鐘當前時刻是否為59分,若正好為59分,再用case-endcase語句判斷秒鐘是否為要求發(fā)出聲響的時刻。若均滿足要求,就發(fā)出相應頻率的信號。即按照4低音1高音的順序發(fā)出間斷

16、聲響,以最后一聲高音結束的時刻為正點時刻。2. 定時鬧鐘模塊的Verilog HDL設計/Bell.vmodule Bell (ALARM_Clock,Set_Hr,Set_Min,Hour,Minute,Second,SetHrkey,SetMinkey, _1kHzIN, _500Hz,_1Hz,CtrlBell);output ALARM_Clock; /定義輸出端口變量output 7:0 Set_Hr,Set_Min; /設定的鬧鈴時間(BCD碼)wire7:0 Set_Hr,Set_Min;wire ALARM_Clock; /鬧鈴輸出信號input _1kHzIN, _500Hz

17、, _1Hz; /定義輸入端口變量input SetHrkey,SetMinkey; /設定鬧鐘小時、分鐘的輸入鍵input CtrlBell; /控制鬧鐘的聲音是否輸出的按鍵input 7:0 Hour,Minute,Second; /定義內部節(jié)點信號supply1 Vdd; /定義Vdd為高電平wire HrH_EQU,HrL_EQU,MinH_EQU,MinL_EQU; /比較器的內部信號wire Time_EQU; /相等比較電路的輸出/鬧時設定模塊(Set Hour & Minute counter)/60進制分計數(shù)器;用于鬧時設定分鐘counter60 su1(Set_Mi

18、n,Vdd,SetMinkey, _1Hz);/24進制小時計數(shù)器:用于鬧時設定小時counter24 SU2(Set_Hr7:4,Set_Hr3:0,Vdd,SetHrKey, _1Hz);/比較鬧鐘的設定時間和計時器的當前時間是否相等_4bitcomparator SU4(HrH_EQU,Set_Hr7:4,Hour7:4);_4bitcomparator SU5(HrL_EQU,Set_Hr3:0,Hour3:0);_4bitcomparator SU6(MinH_EQU,Set_Min7:4,Minute7:4);_4bitcomparator SU7(MinH_EQU,Set_Min

19、3:0,Minute3:0);/鬧鐘聲音控制信號assign Time_EQU=(HrH_EQU && HrL_EQU && MinH_EQU && MinL_EQU);assign ALARM_Clock = CtrlBell ? (Time_EQU && (Second0=1'b1) && _500Hz) | (Second0=1'b0) && _1kHzIN):1'b0;endmodule/_4bitcomparator.vmodule _4bitcomparator (EQU,A,B); /4-bit comparatorinput 3:0 A,B;output EQU;assign EQU=(A=B);endmodule圖中,SetHrkey、SetMinKey分別為小時、分鐘的設置鍵,用于任意設置鬧鐘的小時和分鐘,Set_Hr和Set_Min為指定的鬧鐘時刻(8421BCD碼)。Hour和Minute為來自主體電路的數(shù)字鐘當前時刻的小時和分鐘信號,當設定的鬧鐘時間和數(shù)字

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論