verilog課程設(shè)計(jì)-交通燈.doc
《verilog課程設(shè)計(jì)-交通燈.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《verilog課程設(shè)計(jì)-交通燈.doc(10頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
成 績(jī)?cè)u(píng)卷人姓 名學(xué) 號(hào) 課 程 論 文論文題目 基于DE2的交通燈設(shè)計(jì) 完成時(shí)間 課程名稱 Verilog語(yǔ)言設(shè)計(jì) 任課老師 專 業(yè) 年 級(jí) 1. 交通信號(hào)控制器設(shè)計(jì)要求與思路1.1設(shè)計(jì)背景FPGA是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路,其種類很多,內(nèi)部結(jié)構(gòu)也不同,但共同的特點(diǎn)是體積小、使用方便。本文介紹了用VerilogHDL語(yǔ)言設(shè)計(jì)交通燈控制器的方法,并在QuartusII系統(tǒng)對(duì)FPGA芯片進(jìn)行編譯下載,由于生成的是集成化的數(shù)字電路,沒有傳統(tǒng)設(shè)計(jì)中的接線問(wèn)題,所以故障率低、可靠性高,而且體積非常小。本文通過(guò)EDA設(shè)計(jì),利用VerilogHDL語(yǔ)言模擬仿真交通燈控制電路。1.2設(shè)計(jì)要求根據(jù)交通燈控制器要實(shí)現(xiàn)的功能,考慮用兩個(gè)并行執(zhí)行的always語(yǔ)句來(lái)分別控制A方向和B方向的3盞燈。這兩個(gè)always語(yǔ)句使用同一個(gè)時(shí)鐘信號(hào),以進(jìn)行同步,也就是說(shuō),兩個(gè)進(jìn)程的敏感信號(hào)是同一個(gè)。每個(gè)always語(yǔ)句控制一個(gè)方向的3種燈按如下順序點(diǎn)亮,并往復(fù)循環(huán):綠燈-黃燈-紅燈,每種燈亮的時(shí)間采用一個(gè)減法計(jì)數(shù)器進(jìn)行計(jì)數(shù),計(jì)數(shù)器用同步預(yù)置數(shù)法設(shè)計(jì),這樣只需改變預(yù)置數(shù)據(jù),就能改變計(jì)數(shù)器的模,因此每個(gè)方向只要一個(gè)計(jì)數(shù)器進(jìn)行預(yù)置數(shù)就可以。為便于顯示燈亮的時(shí)間,計(jì)數(shù)器的輸出均采用BCD碼,顯示由4個(gè)數(shù)碼管來(lái)完成,A方向和B方向各用兩個(gè)數(shù)碼管。設(shè)定A方向紅燈、黃燈、綠燈亮的時(shí)間分別為:35s、5s、35s,B方向的紅燈、黃燈、綠燈亮的時(shí)間分別為:35s、5s、35s。假如要改變這些時(shí)間,只需要改變計(jì)數(shù)器的預(yù)置數(shù)即可。1.3設(shè)計(jì)思路兩個(gè)方向各種燈亮的時(shí)間能夠進(jìn)行設(shè)置和修改,此外,假設(shè)B方向是主干道,車流量大,因此B方向通行的時(shí)間應(yīng)該比A方向長(zhǎng)。交通燈控制器的狀態(tài)轉(zhuǎn)換表見下表。表中,1表示燈亮,0表示燈不亮。A方向和B方向的紅黃綠分別用R1、Y1、G1、R2、Y2、G2來(lái)表示。交通燈控制器狀態(tài)轉(zhuǎn)換表從狀態(tài)表中可以看出,每個(gè)方向3盞燈依次按如下順序點(diǎn)亮,并不斷循環(huán):綠燈-黃燈-紅燈,并且每個(gè)方向紅燈亮的時(shí)間應(yīng)該與另一個(gè)方向綠燈、黃燈亮的時(shí)間相等。黃燈所起的作用是用來(lái)在綠燈后進(jìn)行緩沖,以提醒行人該方向馬上要禁行了。在使能控制信號(hào)(EN)控制時(shí)系統(tǒng)工作,并且要求有兩個(gè)控制輸入信號(hào):即復(fù)位信號(hào)(Reset)和備用模式設(shè)置信號(hào)(Standby),在復(fù)位信號(hào)控制時(shí),兩個(gè)方向均為紅燈,在備用模式設(shè)置信號(hào)控制時(shí),兩個(gè)方向均為黃燈。1.4系統(tǒng)設(shè)計(jì)框圖ALARAYAG系統(tǒng)采用的時(shí)鐘頻率為10KHZ,經(jīng)分頻為1HZ后送入控制計(jì)時(shí)電路,同時(shí)送入控制計(jì)時(shí)電路的還有控制信號(hào)M2M1M0以及復(fù)位信號(hào)RST,控制交通燈的運(yùn)行狀態(tài)。經(jīng)處理后輸出LED燈以及數(shù)碼管顯示電路的控制信號(hào),從而完成整個(gè)電路的控制與實(shí)現(xiàn)。A組信號(hào)燈控制計(jì)時(shí)電路 分頻clk1 時(shí)鐘CLK10K 分頻CLK1 復(fù)位RSTM2 M1M0BLBRBYBGB組信號(hào)燈復(fù)位RST數(shù)碼管顯示電路復(fù)位RST 時(shí)鐘CLK10K 圖1 系統(tǒng)設(shè)計(jì)示意圖2.交通信號(hào)控制器具體模塊設(shè)計(jì)2.1時(shí)鐘分頻模塊設(shè)計(jì)系統(tǒng)的時(shí)鐘輸入為10KHZ的脈沖,而系統(tǒng)時(shí)鐘計(jì)時(shí)模塊需要1HZ的脈沖。分頻模塊主要為系統(tǒng)提供所需的時(shí)鐘計(jì)時(shí)脈沖。該模塊將10KHZ的脈沖信號(hào)進(jìn)行分頻,產(chǎn)生1S的方波(占空比為50%),作為系統(tǒng)時(shí)鐘計(jì)時(shí)信號(hào)。計(jì)時(shí)模塊用來(lái)設(shè)定路口計(jì)時(shí)器的初值,并為掃描顯示譯碼模塊提供倒計(jì)時(shí)時(shí)間。表1 I/O管腳描述名稱方向位寬功能Clk10Kinput1系統(tǒng)時(shí)鐘(10KHZ)RSTinput1復(fù)位信號(hào)(高電平有效)Clk1output1分頻后時(shí)鐘信號(hào)(1HZ)Verilog HDL源代碼如下:module fenpin(clk10k,rst,clk1); /將10K的頻率分頻為1 input clk10k,rst; output clk1; reg 7:0j; reg clk1; always(posedge clk10k or posedge rst) if(rst)begin clk1=0; j=0; end else if(j=9999)begin j=0; clk1=clk1; end else j=j+1;Endmodule2.2控制模塊設(shè)計(jì)Verilog HDL源代碼如下:module control(EN_in,SW1,RST,Red1,Red2,Yellow1,Yellow2,Green1,Green2);output Red1;output Red2;output Yellow1;output Yellow2;output Green1;output Green2;input 1:0 EN_in;input SW1;input RST;reg Red1,Red2,Yellow1,Yellow2,Green1,Green2,D_out;always (EN_in,RST,SW1)beginif(SW1=0|RST=0) Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b0;else begin case(EN_in)2b00 : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b010010;2b01 : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b011000;2b10 : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b100001;2b11 : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b100100;default : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b0;endcase endendEndmodule2.3倒計(jì)時(shí)選擇模塊Verilog HDL源代碼如下:module counter55(C_CLK,RST,C_EN,D_OUT1,D_OUT0,C_out);output C_out;output 3:0 D_OUT1;output 3:0 D_OUT0;input C_CLK;input RST;input C_EN;reg 3:0 D_OUT1;reg 3:0 D_OUT0;reg C_out;reg 3:0 CData1;reg 3:0 CData0;reg 7:0 DATA;always (posedge C_CLK)beginif(RST=0|C_EN=0) begin C_out = 1b0;CData1 = 4b0000;CData0 = 4b0000; endelse begin if(CData0 = 4b0101 & CData1 = 4b0101) begin CData1 = 4b0000; CData0 = 4b0000; C_out = 1b1; endelse if(CData0 != 4b1001) beginCData0 = CData0 + 1;C_out = 1b0; endelse if(CData0 = 4b1001 & CData1 != 4b0110) beginCData1 = CData1 + 1;CData0 = 4b0000;C_out = 1b0; endelse begin CData1 = 4b0000; CData0 = 4b0000; C_out = 1b1; endendendalwaysbeginDATA = 8b01010101-(CData14)&4b1111)4b0101)D_OUT1 4)&4b1111-4b1111;elseD_OUT1 4)&4b1111;if(DATA&4b1111)4b1001)D_OUT0 = (DATA&4b1111)-4b0110;elseD_OUT0 = DATA&4b1111;endendmodule2.4 倒計(jì)時(shí)數(shù)碼管的動(dòng)態(tài)顯示Verilog HDL源代碼如下:module dispselect(CLK,D_OUT);output 1:0 D_OUT;input CLK;reg 1:0 D_OUT;always (posedge CLK)beginif(D_OUT 2b10)D_OUT = D_OUT + 2b01;elseD_OUT = 2b01;endendmodule2.5掃描顯示譯碼模塊設(shè)計(jì)Verilog HDL源代碼如下:module dispdecoder (data_in,data_out);input 3:0data_in;output 6:0 data_out;reg 6:0 r_seg;assign data_out = r_seg;always (*)begincase(data_in)4d0: r_seg = 7b0000001; 4d1: r_seg = 7b1001111; 4d2: r_seg = 7b0010010; 4d3: r_seg = 7b0000110;4d4: r_seg = 7b1001100; 4d5: r_seg = 7b0100100;4d6: r_seg = 7b0100000; 4d7: r_seg = 7b0001111;4d8: r_seg = 7b0000000; 4d9: r_seg = 7b0000100;4d10: r_seg = 7b0001000;default r_seg = 7b1111111;endcaseendEndmodule2.5.頂層文件設(shè)計(jì)Verilog HDL源代碼如下:module jtd( Reset, SW, CLK, Red1, Red2, Yellow1, Yellow2, Green1, Green2, SEG_Data1, SEG_Data2, SEG_Data3, SEG_Data4, /SEG_Sel);input Reset;input SW;input CLK;output Red1;output Red2;output Yellow1;output Yellow2;output Green1;output Green2;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;wire SYNTHESIZED_WIRE_0;wire SYNTHESIZED_WIRE_1;wire SYNTHESIZED_WIRE_19;wire SYNTHESIZED_WIRE_3;wire SYNTHESIZED_WIRE_20;wire 1:0 SYNTHESIZED_WIRE_21;wire SYNTHESIZED_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;/assign SEG_Sel = SYNTHESIZED_WIRE_17;scan b2v_inst(.EN_in1(SYNTHESIZED_WIRE_0),.EN_in0(SYNTHESIZED_WIRE_1),.sdata(SYNTHESIZED_WIRE_21);counter05 b2v_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);fdiv1hz b2v_inst11(.clk_in(SYNTHESIZED_WIRE_20),.clk_out(SYNTHESIZED_WIRE_19);fdiv1khz b2v_inst12(.clk_in(CLK),.clk_out(SYNTHESIZED_WIRE_20);control b2v_inst14(.SW1(SW),.RST(Reset),.EN_in(SYNTHESIZED_WIRE_21),.Red1(Red1),.Red2(Red2),.Yellow1(Yellow1),.Yellow2(Yellow2),.Green1(Green1),.Green2(Green2);counter55 b2v_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);countersel b2v_inst3(.D_IN(SYNTHESIZED_WIRE_21),.D_OUT1(SYNTHESIZED_WIRE_7),.D_OUT0(SYNTHESIZED_WIRE_3);datamux b2v_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);/dispdecoder b2v_inst7(.data_in(SYNTHESIZED_WIRE_14),/.data_out(SEG_Data);/dispmux b2v_inst8(.D_IN0(SYNTHESIZED_WIRE_15),/.D_IN1(SYNTHESIZED_WIRE_16),.SEL(SYNTHESIZED_WIRE_17),.D_OUT(SYNTHESIZED_WIRE_14);/dispselect b2v_inst9(.CLK(SYNTHESIZED_WIRE_20),/.D_OUT(SYNTHESIZED_WIRE_17);dispdecoder u0(.data_in(SYNTHESIZED_WIRE_11),.data_out(SEG_Data2);dispdecoder u1(.data_in(SYNTHESIZED_WIRE_12),.data_out(SEG_Data1);dispdecoder u2(.data_in(SYNTHESIZED_WIRE_9),.data_out(SEG_Data4);dispdecoder u3(.data_in(SYNTHESIZED_WIRE_10),.data_out(SEG_Data3);endmodule3 小結(jié)再一次的體驗(yàn)到了細(xì)心對(duì)一個(gè)編程者的重要性和程序的規(guī)范性對(duì)于程序的重要。verilogHDL設(shè)計(jì)語(yǔ)言是一門很好的硬件描述語(yǔ)言,可以直白的描述實(shí)際的電路,實(shí)際的系統(tǒng)模型,易懂而且易于實(shí)現(xiàn),我覺得在以后多加練習(xí),可以對(duì)以后的學(xué)習(xí)和工作帶來(lái)莫大的幫助。這次的課程設(shè)計(jì)就是對(duì)我們的一次考核,也可以說(shuō)是一次考驗(yàn),平時(shí)做題目比較簡(jiǎn)單,而這次課程設(shè)計(jì)綜合考核了我們的學(xué)習(xí)結(jié)果。課程設(shè)計(jì)培養(yǎng)了學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程。然而從理論到實(shí)踐,我在做課程設(shè)計(jì)的時(shí)間里,我明白了想學(xué)好它要重在實(shí)踐,要通過(guò)不斷的實(shí)際操作才能更好地學(xué)習(xí)它,但是學(xué)到了很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過(guò)的知識(shí)。只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,遇到了各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知解得不夠深刻,掌握得不夠牢固,在邊編學(xué)程序的過(guò)程中我?guī)缀跏侵匦聫?fù)習(xí)課本上的知識(shí),但這還是沒能讓我完成這次課程設(shè)計(jì),通過(guò)詢問(wèn)同學(xué)、到網(wǎng)上查詢資料慢慢的完善這次作業(yè)才勉強(qiáng)完成。10- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- verilog 課程設(shè)計(jì) 交通燈
鏈接地址:http://www.szxfmmzy.com/p-6647645.html