verilog課程設(shè)計-交通燈_第1頁
verilog課程設(shè)計-交通燈_第2頁
verilog課程設(shè)計-交通燈_第3頁
verilog課程設(shè)計-交通燈_第4頁
verilog課程設(shè)計-交通燈_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

成績評卷人姓名學(xué)號課程論文論文題目 基于DE2的交通燈設(shè)計完成時間 課程名稱Verilog語言設(shè)計任課老師 專 業(yè) 年 級 1.交通信號控制器設(shè)計要求與思路1.1設(shè)計背景FPGA是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路,其種類很多,內(nèi)部結(jié)構(gòu)也不同,但共同的特點(diǎn)是體積小、使用方便。本文介紹了用VerilogHDL語言設(shè)計交通燈控制器的方法,并在QuartusII系統(tǒng)對FPGA芯片進(jìn)行編譯下載,由于生成的是集成化的數(shù)字電路,沒有傳統(tǒng)設(shè)計中的接線問題,所以故障率低、可靠性高,而且體積非常小。本文通過EDA設(shè)計,利用VerilogHDL語言模擬仿真交通燈控制電路。1.2設(shè)計要求根據(jù)交通燈控制器要實(shí)現(xiàn)的功能,考慮用兩個并行執(zhí)行的always語句來分別控制A方向和B方向的3盞燈。這兩個always語句使用同一個時鐘信號,以進(jìn)行同步,也就是說,兩個進(jìn)程的敏感信號是同一個。每個always語句控制一個方向的3種燈按如下順序點(diǎn)亮,并往復(fù)循環(huán):綠燈 黃燈 紅燈,每種燈亮的時間采用一個減法計數(shù)器進(jìn)行計數(shù),計數(shù)器用同步預(yù)置數(shù)法設(shè)計,這樣只需改變預(yù)置數(shù)據(jù),就能改變計數(shù)器的模,因此每個方向只要一個計數(shù)器進(jìn)行預(yù)置數(shù)就可以。為便于顯示燈亮的時間,計數(shù)器的輸出均采用BCD碼,顯示由4個數(shù)碼管來完成,A方向和B方向各用兩個數(shù)碼管。設(shè)定A方向紅燈、黃燈、綠燈亮的時間分別為:35s、5s、35s,B方向的紅燈、黃燈、綠燈亮的時間分別為:35s、5s、35s。假如要改變這些時間,只需要改變計數(shù)器的預(yù)置數(shù)即可。1.3設(shè)計思路兩個方向各種燈亮的時間能夠進(jìn)行設(shè)置和修改,此外,假設(shè)B方向是主干道,車流量大,因此B方向通行的時間應(yīng)該比A方向長。交通燈控制器的狀態(tài)轉(zhuǎn)換表見下表。表中,1表示燈亮,0表示燈不亮。A方向和B方向的紅黃綠分別用R1、Y1、G1、R2、Y2、G2來表示。

交通燈控制器狀態(tài)轉(zhuǎn)換表A.-5nJ黃燈CH)紅燈(R1)綠燈德)黃燈<Y2^紅1100001C10001C0110001010從狀態(tài)表中可以看出,每個方向3盞燈依次按如下順序點(diǎn)亮,并不斷循環(huán):綠燈一一黃燈一一紅燈,并且每個方向紅燈亮的時間應(yīng)該與另一個方向綠燈、黃燈亮的時間相等。黃燈所起的作用是用來在綠燈后進(jìn)行緩沖,以提醒行人該方向馬上要禁行了。在使能控制信號(EN)控制時系統(tǒng)工作,并且要求有兩個控制輸入信號:即復(fù)位信號(Reset)和備用模式設(shè)置信號(Standby),在復(fù)位信號控制時,兩個方向均為紅燈,在備用模式設(shè)置信號控制時,兩個方向均為黃燈。1.4系統(tǒng)設(shè)計框圖系統(tǒng)采用的時鐘頻率為10KHZ,經(jīng)分頻為1HZ后送入控制計時電路,同時送入控制計時電路的還有控制信號M2M1M0以及復(fù)位信號RST,控制交通燈的運(yùn)行狀態(tài)。經(jīng)處理后輸出LED燈以及數(shù)碼管顯示電路的控制信號,從而完成整個電路的控制與實(shí)現(xiàn)。ALAARALAAR組AY信AG號燈BLBBR組BY信BG號燈圖1系統(tǒng)設(shè)計示意圖2.交通信號控制器具體模塊設(shè)計2.1時鐘分頻模塊設(shè)計系統(tǒng)的時鐘輸入為10KHZ的脈沖,而系統(tǒng)時鐘計時模塊需要1HZ的脈沖。分頻模塊主要為系統(tǒng)提供所需的時鐘計時脈沖。該模塊將10KHZ的脈沖信號進(jìn)行分頻,產(chǎn)生1S的方波(占空比為50%),作為系統(tǒng)時鐘計時信號。計時模塊用來設(shè)定路口計時器的初值,并為掃描顯示譯碼模塊提供倒計時時間。表1 I/O管腳描述名稱方向位寬功能Clk10Kinput1系統(tǒng)時鐘(10KHZ)RSTinput1復(fù)位信號(咼電平有效)Clk1output1分頻后時鐘信號(1HZ)VerilogHDL源代碼如下:modulefenpin(clk10k,rst,clk1); //將10K的頻率分頻為1inputclk10k,rst;outputclk1;reg[7:0]j;regclk1;always@(posedgeclk10korposedgerst)if(rst)beginclk1<=0;j<=0;endelseif(j==9999)beginj<=0;clk1<=~clk1;endelsej<=j+1;Endmodule2.2控制模塊設(shè)計VerilogHDL源代碼如下:modulecontrol(EN_in,SW1,RST,Red1,Red2,Yellow1,Yellow2,Green1,Green2);outputRed1;outputRed2;outputYellow1;outputYellow2;outputGreen1;outputGreen2;input[1:0]EN_in;inputSW1;inputRST;regRed1,Red2,Yellow1,Yellow2,Green1,Green2,D_out;always@(EN_in,RST,SW1)beginif(SW1==0||RST==0){Red1,Red2,Yellow1,Yellow2,Green1,Green2}=6'b0;elsebegincase(EN_in)2'b00:{Red1,Red2,Yellow1,Yellow2,Green1,Green2}=6'b010010;2'b01:{Red1,Red2,Yellow1,Yellow2,Green1,Green2}=6'b011000;2'b10:{Red1,Red2,Yellow1,Yellow2,Green1,Green2}=6'b100001;2'b11:{Red1,Red2,Yellow1,Yellow2,Green1,Green2}=6'b100100;default:{Red1,Red2,Yellow1,Yellow2,Green1,Green2}=6'b0;endcaseendendEndmodule2.3倒計時選擇模塊VerilogHDL源代碼如下:modulecounter55(C_CLK,RST,C_EN,D_OUT1,D_OUT0,C_out);outputC_out;output[3:0]D_OUT1;output[3:0]D_OUT0;inputC_CLK;inputRST;inputC_EN;reg[3:0]D_OUT1;reg[3:0]D_OUT0;regC_out;reg[3:0]CData1;reg[3:0]CData0;reg[7:0]DATA;always@(posedgeC_CLK)beginif(RST==0||C_EN==0)beginC_out<=1'b0;CData1<=4'b0000;CData0<=4'b0000;endelsebeginif(CData0==4'b0101&&CData1==4'b0101)beginCData1<=4'b0000;CData0<=4'b0000;C_out=1'b1;endelseif(CData0!=4'b1001)beginCData0<=CData0+1;C_out<=1'b0;endelseif(CData0==4'b1001&&CData1!=4'b0110)beginCData1<=CData1+1;CData0<=4'b0000;C_out<=1'b0;endelsebeginCData1<=4'b0000;CData0<=4'b0000;C_out=1'b1;endendendalwaysbeginDATA<=8'b01010101-((CData1<<4)+CData0);if(((DATA>>4)&4'b1111)>4'b0101)D_OUT1<=(DATA>>4)&4'b1111-4'b1111;elseD_OUT1<=(DATA>>4)&4'b1111;if((DATA&4'b1111)>4'b1001)D_OUT0<=(DATA&4'b1111)-4'b0110;elseD_OUT0<=DATA&4'b1111;endendmodule2.4倒計時數(shù)碼管的動態(tài)顯示VerilogHDL源代碼如下:moduledispselect(CLK,D_OUT);output[1:0]D_OUT;inputCLK;reg[1:0]D_OUT;always@(posedgeCLK)beginif(D_OUT<2'b10)D_OUT<=D_OUT+2'b01;elseD_OUT<=2'b01;endendmodule2.5掃描顯示譯碼模塊設(shè)計VerilogHDL源代碼如下:moduledispdecoder(data_in,data_out);input[3:0]data_in;output[6:0]data_out;reg[6:0]r_seg;assigndata_out=r_seg;always@(*)begincase(data_in)4'd0r_seg=7'b0000001;4'd1r_seg=7'b1001111;4'd2r_seg=7'b0010010;4'd3r_seg=7'b0000110;4'd4r_seg=7'b1001100;4'd5r_seg=7'b0100100;4'd6r_seg=7'b0100000;4'd7r_seg=7'b0001111;4'd8:r_seg=7'b0000000;4'd9:r_seg=7'b0000100;4'd10:r_seg=7'b0001000;defaultr_seg=7'b1111111;endcaseendEndmodule2.5.頂層文件設(shè)計VerilogHDL源代碼如下:modulejtd(Reset,SW,CLK,Red1,Red2,Yellow1,Yellow2,Green1,Green2,SEG_Data1,SEG_Data2,SEG_Data3,SEG_Data4,//SEG_Sel);inputReset;inputSW;inputCLK;outputRed1;outputRed2;outputYellow1;outputYellow2;outputGreen1;outputGreen2;output[6:0]SEG_Data1;output[6:0]SEG_Data2;output[6:0]SEG_Data3;output[6:0]SEG_Data4;//output[1:0]SEG_Sel;wireSYNTHESIZED_WIRE_0;wireSYNTHESIZED_WIRE_1;wireSYNTHESIZED_WIRE_19;wireSYNTHESIZED_WIRE_3;wireSYNTHESIZED_WIRE_20;wire[1:0]SYNTHESIZED_WIRE_21;wireSYNTHESIZED_WIRE_7;wire [3:0]SYNTHESIZED_WIRE_9;wire [3:0]SYNTHESIZED_WIRE_10;wire [3:0]SYNTHESIZED_WIRE_11;wire [3:0]SYNTHESIZED_WIRE_12;//wire[3:0]SYNTHESIZED_WIRE_14;wire [3:0]SYNTHESIZED_WIRE_15;wire [3:0]SYNTHESIZED_WIRE_16;//wire[1:0]SYNTHESIZED_WIRE_17;//assignSEG_Sel=SYNTHESIZED_WIRE_17;scanb2v_inst(.EN_in1(SYNTHESIZED_WIRE_0),.EN_in0(SYNTHESIZED_WIRE_1),.sdata(SYNTHESIZED_WIRE_21));counter05b2v_inst1(.C_CLK(SYNTHESIZED_WIRE_19),.RST(Reset),.C_EN(SYNTHESIZED_WIRE_3),.C_out(SYNTHESIZED_WIRE_1),.D_OUT0(SYNTHESIZED_WIRE_11),.D_OUT1(SYNTHESIZED_WIRE_12));fdiv1hzb2v_inst11(.clk_in(SYNTHESIZED_WIRE_20),.clk_out(SYNTHESIZED_WIRE_19));fdiv1khzb2v_inst12(.clk_in(CLK),.clk_out(SYNTHESIZED_WIRE_20));controlb2v_inst14(.SW1(SW),.RST(Reset),.EN_in(SYNTHESIZED_WIRE_21),.Red1(Red1),.Red2(Red2),.Yellow1(Yellow1),.Yellow2(Yellow2),.Green1(Green1),.Green2(Green2));counter55b2v_inst2(.C_CLK(SYNTHESIZED_WIRE_19),.RST(Reset),.C_EN(SYNTHESIZED_WIRE_7),.C_out(SYNTHESIZED_WIRE_0),.D_OUT0(SYNTHESIZED_WIRE_9),.D_OUT1(SYNTHESIZED_WIRE_10));counterselb2v_inst3(.D_IN(SYNTHESIZED_WIRE_21),.D_OUT1(SYNTHESIZED_WIRE_7),.D_OUT0(SYNTHESIZED_WIRE_3));datamuxb2v_inst6(.D_IN0(SYNTHESIZED_WIRE_9),.D_IN1(SYNTHESIZED_WIRE_10),.D_IN2(SYNTHESIZED_WIRE_11),.D_IN3(SYNTHESIZED_WIRE_12),.SEL(SYNTHESIZED_WIRE_21),.D_OUT0(SYNTHESIZED_WIRE_15),.D_OUT1(SYNTHESIZED_WIRE_16));//dispdecoderb2v_inst7(.data_in(SYNTHESIZED_WIRE_14),//.data_out(SEG_Data));//dispmuxb2v_inst8(.D_IN0(SYNTHESIZED_WIRE_15),//.D_IN1(SYNTHESIZED_WIRE_16),.SEL(SYNTHESIZED_WIRE_17),.D_OUT(SYNTHESIZED_WIRE_14));//dispselectb2v_inst9(.CLK(SYNT

溫馨提示

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

評論

0/150

提交評論