FPGA課程設(shè)計交通燈信號控制器設(shè)計報告_第1頁
FPGA課程設(shè)計交通燈信號控制器設(shè)計報告_第2頁
FPGA課程設(shè)計交通燈信號控制器設(shè)計報告_第3頁
FPGA課程設(shè)計交通燈信號控制器設(shè)計報告_第4頁
FPGA課程設(shè)計交通燈信號控制器設(shè)計報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課程設(shè)計報 告交通燈信號控制器的設(shè)計報告學 院專 業(yè) 班 級 學 號 姓 名 交通燈信號控制器的設(shè)計 1、實驗目的 (1)熟悉Quartus/ISE Design Suite/ispLEVER軟件的基本使用方法。 (2)熟悉GW48-CK或其他EDA實驗開發(fā)系統(tǒng)的基本使用方法。 (3)學習和掌握Verilog HDL過程區(qū)塊語句、if條件語句、case選擇語句、for循環(huán)語句和元件實例化語句等的綜合使用。 (4)學習計數(shù)器、分頻器、選擇器等Verilog HDL基本邏輯電路、動態(tài)掃描顯示電路和狀態(tài)機控制電路的綜合設(shè)計應用。 2、實驗要求 設(shè)計并調(diào)試好一個十字交叉口的交通燈信號控制器,要求為:

2、(1)設(shè)置兩個開關(guān)SW1、SW2,其中固定開關(guān)實現(xiàn)交通警察人為監(jiān)督交通秩序和無人自動控制交通秩序之間的切換,默認開關(guān)置于高電平端,為自動控制模式交通燈按事先的規(guī)定工作,開關(guān)置于低電平時,為人為監(jiān)督控制模式(交通燈不再工作)。點動開關(guān)SW2用于整個系統(tǒng)的總復位,如系統(tǒng)出現(xiàn)故障,則需要總復位。 (2)當交通燈處于無人控制自動狀態(tài)時,若方向燈1綠燈亮,則方向2紅燈亮。計數(shù)55s后,方向1的綠燈熄滅、黃燈亮,再計數(shù)5s后,方向1的紅燈亮,黃燈滅,同時方向2的綠燈亮,然后方向2重復方向1的工作過程,這樣就實現(xiàn)了無人自動控制交通燈。有關(guān)控制的定時使用倒計時方式,計時過程用數(shù)碼管顯示。 3、總體設(shè)計思路 3

3、.1系統(tǒng)組成交通燈控制器擬由單片的CPLD/FPGA來實現(xiàn),結(jié)合設(shè)計任務(wù)要求和確定的實現(xiàn)方案,按照自頂向下的層次化設(shè)計方法,整個系統(tǒng)可分為6個模塊組成。主控制模塊control:根據(jù)外部輸入控制信號及來自內(nèi)部計時模塊的控制信號,控制兩個方向道路信號燈的亮與滅。55s倒計時模塊cnt55:實現(xiàn)55s綠燈點亮時間的倒計時。5s倒計時模塊cnt05:實現(xiàn)5s黃燈點亮時間的倒計時。時鐘信號分頻模塊fdiv:將給定的主頻時鐘信號經(jīng)分頻得到頻率分別是1KHZ和1HZ.顯示數(shù)據(jù)多路選擇模塊datasel:根據(jù)來自control模塊的控制信號進行倒計時模塊cnt55和cnt05計時結(jié)果的顯示數(shù)據(jù)選擇。數(shù)據(jù)動態(tài)

4、顯示驅(qū)動模塊display:使用動態(tài)掃描的方式,進行顯示數(shù)據(jù)的選擇及顯示驅(qū)動譯碼。3.2功能模塊設(shè)置及實現(xiàn) 系統(tǒng)采用的是系統(tǒng)級層次設(shè)計方法,對整個系統(tǒng)進行方案設(shè)計和功能劃分,系統(tǒng)的關(guān)鍵電路用一片F(xiàn)PGA芯片實現(xiàn),首先用VHDL語言編寫各個功能模塊程序,最后通過綜合器和適配器生成最終的目標器件,然后用頂層原理圖將各個功能模塊連接起來。下面分別來介紹各個功能模塊的實現(xiàn)和調(diào)試過程。 主控制模塊 輸入端口:en0、en1:分別來自cnt55、cnt5的定時溢出信號 sw1:交通控制轉(zhuǎn)換開關(guān) rst:復位信號輸出端口:ce0、ce1:用于cnt05、cnt55模塊是否定時的控制信號 sel:用于data

5、sel模塊進行數(shù)據(jù)選擇的控制信號 red1、red2、gre1、gre2、yel1、yel2:信號燈控制 該模塊主要完成根據(jù)外部輸入信號rst、sw1控制輸出,用于控制交通燈的信號Red1,Red2,Yellow1,Yellow2,Green1,Green2。這中間包含了必要的內(nèi)部模塊之間的信號EN(來自倒計時時間選擇驅(qū)動模塊)。 55s定時模塊 輸入端口: clk:時鐘脈沖信號 rst:復位信號 ce:來自控制模塊的計數(shù)使能信號輸出端口:dout1、dout0:分別為定時值的高4位和低四位 cout:定時計數(shù)溢出信號 該模塊主要完成55 秒的倒計時,控制紅燈的點亮時間。實際中在1 分鐘內(nèi)還要

6、有綠到黃燈的轉(zhuǎn)換以提醒車輛與行人,所以選擇了55 秒作為綠燈的點亮時間。5s定時模塊 輸入端口: clk:時鐘脈沖信號 rst:復位信號 ce:來自控制模塊的計數(shù)使能信號輸出端口:dout1、dout0:分別為定時值的高4位和低四位 cout:定時計數(shù)溢出信號 該模塊主要完成5 秒的倒計時,控制黃燈的點亮時間。實際中在1 分鐘內(nèi)還要有紅到黃燈的轉(zhuǎn)換以提醒車輛與行人,所以選擇了55 秒作為紅燈的點亮時間后,黃燈的點亮時間必定為5 秒。 分頻器模塊 輸入端口: clk:輸入主頻時鐘脈沖信號,假設(shè)為10MHZ 輸出端口: clk1Khz:分頻后為1Khz的輸出信號 clk1hz:分頻后為1hz的輸出

7、信號該模塊完成從10MHz 的主頻時鐘信號經(jīng)過分頻得到1KHz的時鐘信號,即完成一個10000 分頻的分頻器,完成從模塊1KHz 中的1KHz 時鐘信號經(jīng)過分頻得到1Hz 的計數(shù)時鐘信號,即完成一個1000 分頻的分頻器。顯示數(shù)據(jù)多路選擇模塊 輸入端口: din:數(shù)據(jù)顯示選擇信號 sel:控制選擇信號 輸出端口:dout1、dout0:選擇輸出 該模塊主要完成兩組不同倒計時時間數(shù)據(jù)的選擇輸出到后續(xù)顯示模塊中。4 總體調(diào)試與結(jié)果說明4.1 頂層電路 在設(shè)計完各個模塊后,需要將各個模塊有機地組合成一個整體,最后來實現(xiàn)系統(tǒng)的功能在數(shù)字頻率計的設(shè)計中,同時采用了電路原理圖的設(shè)計以及Verilog HD

8、L語言來編寫的頂層電路。電路原理圖見下圖 總系統(tǒng)電路圖4.2 系統(tǒng)仿真圖4.3 管腳分配4.4 硬件仿真通過試驗箱下載程序調(diào)試之后,基本滿足了要求。 5 心得與體會 本次實驗所學的VHDL和QUARTUSII的知識的鞏固和應用,通過對一個綜合性的課題的分析、設(shè)計、編寫代碼、調(diào)試和實踐來檢驗學習的成果和提高獨立思考能力和動手實踐能力。并且,我們在實驗課中繼續(xù)學習了綜合性課題的設(shè)計方法-自頂向下的設(shè)計方法,從單一性的設(shè)計到模塊化的設(shè)計,在深入理解VHDL語言的同時,鍛煉了個人的邏輯思維和設(shè)計能力,提高了個人的自學能力個學習素質(zhì)。雖然在設(shè)計的過程中也會出現(xiàn)一些問題,但是通過和同學們的交流和對程序的調(diào)

9、試和改進,最終成功完成了課題任務(wù)的設(shè)計和實踐,基本上算是一次成功的實驗經(jīng)歷。 本次實驗是對VHDL語言的深入學習,主要學習并實踐了VHDL的自頂向下的設(shè)計方法。在學習和實踐的過程中,體會到各種語言的共同性。如C+高級語言程序設(shè)計也是利用自頂向下的設(shè)計方法來完成課題功能的設(shè)計,從這一點可以看出各個高級語言的邏輯互通性。這給我們今后的思維和學習一個很大的啟示。程序:/control.vmodule control (en0,en1,sw1,rst,ce0,ce1,sel,red1,red2,yel1,yel2,gre1,gre2);input en0,en1;input sw1,rst;outpu

10、t ce0,ce1;output 1:0sel;output red1,red2,yel1,yel2,gre1,gre2;wire en;reg ce1,ce0;reg1:0sel;reg red1,red2,yel1,yel2,gre1,gre2,dout;assign en=en1|en0;always (posedge en) begin sel=sel+2b01; end always begin case(sel) 2b00:ce1,ce0=2b10; 2b01:ce1,ce0=2b01; 2b10:ce1,ce0=2b10; 2b11:ce1,ce0=2b01; default:c

11、e1,ce0=2b00; endcase endalways (sel,rst,sw1) begin if(sw1=0|rst=0) red1,red2,yel1,yel2,gre1,gre2=6b0; else begin case(sel) 2b00:red1,red2,yel1,yel2,gre1,gre2=6b010010; 2b01:red1,red2,yel1,yel2,gre1,gre2=6b011000; 2b10:red1,red2,yel1,yel2,gre1,gre2=6b100001; 2b11:red1,red2,yel1,yel2,gre1,gre2=6b10010

12、0; default:red1,red2,yel1,yel2,gre1,gre2=6b0; endcase end endEndmodule/cnt05s.vmodule cnt05s(clk,rst,ce,dout1,dout0,cout); input clk,rst,ce; output 3:0dout1,dout0; output cout; reg 3:0dout1,dout0; reg cout; reg 3:0cdata1,cdata0; reg 7:0data; always (posedge clk) begin if(rst=0|ce=0) begin cout=1b0;c

13、data1=4b0000;cdata0=4b0000;end else begin if(cdata0!=4b0101) begin cdata0=cdata0+1;cout=1b0;end else begin cdata1=4b0000;cdata0=4b0000;cout=1b1; end end endalways begin data=8b00000101-(cdata14)+cdata0); dout14b0101) dout0=data&4b1111-4b1011; else dout0=data&4b1111; endendmodule /cnt55s.vmodule cnt5

14、5s(clk,rst,ce,dout1,dout0,cout); input clk,rst,ce; output 3:0dout1,dout0; output cout; reg 3:0dout1,dout0; reg cout; reg 3:0cdata1,cdata0; reg 7:0data; always (posedge clk) begin if(rst=0|ce=0) begin cdata1=4b0000;cdata0=4b0000;cout=1b0;end else begin if(cdata0=4b0101&cdata1=4b0101) begin cdata1=4b0

15、000;cdata0=4b0000;cout=1b1; end else if(cdata0!=4b1001) begin cdata0=cdata0+1;cout=1b0;end else if(cdata0=4b1001&cdata1!=4b0110) begin cdata1=cdata1+1;cdata0=4b0000;cout=1b0; end else begin cdata1=4b0000;cdata0=4b0000;cout=1b1; end end endalways begin data=8b01010101-(cdata14)&4b1111)4b0101) dout14)

16、&4b1111-4b1111; else dout14)&4b1111; if(data&4b1111)4b1001) dout0=(data&4b1111)-4b0110; else dout0=data&4b1111; endEndmodule/datasel.vmodule datasel(din0,din1,din2,din3,sel,dout0,dout1); input3:0 din0,din1,din2,din3; input1:0 sel; output3:0 dout0,dout1; reg 3:0 dout0,dout1; always begin if(sel=2b00)

17、 begin dout1=din2;dout0=din3;end else if(sel=2b01) begin dout1=din0;dout0=din1;end else if(sel=2b10) begin dout1=din2;dout0=din3;end else if(sel=2b11) begin dout1=din0;dout0=din1;end else begin dout1=4b0000;dout0=4b0000;end endendmodule /fdiv.vmodule fdiv(clk,clk1khz,clk1hz);input clk;output clk1khz,clk1hz;reg clk1khz,clk1hz;integer cnt1=0;in

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論