版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 交通燈控制器</b></p><p> ——數(shù)字系統(tǒng)設(shè)計報告</p><p><b> 姓名: </b></p><p><b> 學(xué)號:</b></p><p><b> 實驗?zāi)康?lt;/b></p>&l
2、t;p> 1.基本掌握自頂向下的電子系統(tǒng)設(shè)計方法</p><p> 2.學(xué)會使用PLD和硬件描述語言設(shè)計數(shù)字電路,掌握 Quartus II等開發(fā)工具的使用方法</p><p> 3.培養(yǎng)學(xué)生自主學(xué)習(xí)、正確分析和解決問題的能力 </p><p><b> 二. 設(shè)計要求</b></p><p> 我所選擇
3、的課題是用Verilog HDL實現(xiàn)交通燈控制器。該課題的具體內(nèi)容及要求如下:</p><p> 主干道與鄉(xiāng)村公路十字交叉路口在現(xiàn)代化的農(nóng)村星羅棋布,為確保車輛安全、迅速地通過,在交叉路口的每個入口處設(shè)置了紅、綠、黃三色信號燈。紅燈禁止通行;綠燈允許通行;黃燈亮則給行駛中的車輛有時間行駛到禁行線之外。主干道和鄉(xiāng)村公路都安裝了傳感器,檢測車輛通行情況,用于主干道的優(yōu)先權(quán)控制。 </p><
4、p> (1)當(dāng)鄉(xiāng)村公路無車時,始終保持鄉(xiāng)村公路紅燈亮,主干道綠燈亮。</p><p> ?。?)當(dāng)鄉(xiāng)村公路有車時,而主干道通車時間已經(jīng)超過它的最短通車時間時,禁止主干道通行,讓鄉(xiāng)村公路通行。主干道最短通車時間為25s 。</p><p> (3)當(dāng)鄉(xiāng)村公路和主干道都有車時,按主干道通車25s,鄉(xiāng)村公路通車16s交替進行。</p><p> ?。?)不論主干
5、道情況如何,鄉(xiāng)村公路通車最長時間為16s。</p><p> (5)在每次由綠燈亮變成紅燈亮的轉(zhuǎn)換過程中間,要亮5s時間的黃燈作為過渡。</p><p> ?。?)用開關(guān)代替?zhèn)鞲衅髯鳛闄z測車輛是否到來的信號。用紅、綠、黃三種顏色的發(fā)光二極管作交通燈。</p><p> (7)要求顯示時間,倒計時。 </p><p> 交通燈控制器框圖如
6、下:</p><p> (C表示鄉(xiāng)村道路是否有車到來,1表示有,0表示無;SET用來控制系統(tǒng)的開始及停止;RST是復(fù)位信號,高電平有效,當(dāng)RST=1時,恢復(fù)到初始設(shè)置;CLK是外加時鐘信號;MR、MY、MG分別表示主干道的紅燈、黃燈和綠燈;CR、CY、CG分別表示鄉(xiāng)村道路的紅燈、黃燈和綠燈,1表示亮,0表示滅)</p><p> 系統(tǒng)流程圖如下:(MGCR:主干道綠燈,鄉(xiāng)村道路紅燈;M
7、YCR:主干道黃燈,鄉(xiāng)村道路紅燈;MRCG:主干道紅燈,鄉(xiāng)村道路綠燈;MRCY:主干道紅燈,鄉(xiāng)村道路黃燈;T0=1表示主干道最短通車時間到,T1=1表示5秒黃燈時間到,T2=1表示鄉(xiāng)村道路最長通車時間到。)</p><p><b> 三.設(shè)計方案</b></p><p> 本交通燈控制系統(tǒng)設(shè)計利用Verilog HDL語言進行設(shè)計編程,利用Cyclone EP1C
8、6Q240C8芯片和一些外圍器件組成硬件電路,利用QUARTUS II軟件將編寫好的程序進行編譯、仿真,并將調(diào)試完成的程序下載到Cyclone EP1C6Q240C8芯片上,觀測電路板上的紅綠信號燈以及數(shù)碼管顯示,看是否按設(shè)計要求正常工作.</p><p><b> 四、設(shè)計流程</b></p><p> 本系統(tǒng)采用自頂向下的設(shè)計,設(shè)計一個頂層文件和三個底層文件。
9、各模塊關(guān)系如下:</p><p><b> 設(shè)計文件如下:</b></p><p><b> 低層文件</b></p><p> (1)系統(tǒng)工作模塊(traffic1)如下:</p><p> 功能:該模塊完成對輸入信號CLK,rst,c的處理,實現(xiàn)交通燈控制的主要功能。</p>
10、<p><b> 源程序:</b></p><p> module traffic1(CLK,rst,c,LAMPA,LAMPB,TAH,TAL,TBH,TBL);</p><p> output[3:0] TAH,TAL,TBH,TBL;//TAH,TAL分別表示主干道倒計時的高位和低位,TBH,TBL表示鄉(xiāng)村道路倒計時的高位和低位</p&
11、gt;<p> output[2:0] LAMPA,LAMPB;//從高位到低位分別表示紅,黃,綠</p><p> input CLK,rst,c;</p><p> reg[7:0] numa,numb,s1,s2;//numa,numb分別表示主干道和鄉(xiāng)村道路的倒計時;s1用來表示主干道最短通車時間是否已到,到了s1=1;s2用來表示鄉(xiāng)村道路最長通車時間是否已到,
12、到了s2=1</p><p> reg[3:0] TAH,TAL,TBH,TBL;</p><p> reg[2:0] LAMPA,LAMPB;</p><p> always @(posedge CLK or posedge rst ) //該進程控制主道方向的四種燈</p><p><b> begin</b>
13、;</p><p> if(rst)//重置</p><p><b> begin </b></p><p> LAMPA =1;LAMPB =4; //重置情況視鄉(xiāng)村道路無車,主干道一直通行</p><p> numa = 8'b00100000;//主干道計時20秒</p><p
14、> numb = 8'b00100101; //鄉(xiāng)村道路計時25秒</p><p><b> end </b></p><p><b> else</b></p><p><b> begin</b></p><p> if(LAMPA==1)
15、 //主干道綠燈亮</p><p><b> begin </b></p><p> if(numa==1&&c==0&&s1) //主干道最短通車時間已到,但鄉(xiāng)村道路沒車</p><p><b> begin </b></p><p> num
16、a=1;//倒計時停在1秒</p><p> LAMPA=1;//保持在主干道綠燈</p><p><b> end</b></p><p> else if(numa==1&&c==1&&s1)//主干道最短通車時間沒到,并且鄉(xiāng)村道路有車</p><p> begin //主干
17、道變黃燈倒計時變成5秒</p><p><b> s1=0;</b></p><p><b> LAMPA =2;</b></p><p> numa = 8'b00000110;//為了配合時鐘設(shè)置為6秒</p><p><b> end</b></p&
18、gt;<p><b> else</b></p><p><b> begin</b></p><p> if(numa[3:0] == 0 && numa[7:4]) //逢十時</p><p><b> begin</b></p><p
19、> numa[3:0] = 9; </p><p> numa[7:4] = numa[7:4] - 1;</p><p><b> end</b></p><p><b> else</b></p><p> if(numa[7:0] && numa[3:0])&l
20、t;/p><p><b> begin</b></p><p> numa[3:0] = numa[3:0] - 1;</p><p><b> end</b></p><p> if (numa==0) </p><p> begin //主干道
21、變黃燈倒計時變成5秒</p><p><b> LAMPA =2;</b></p><p> numa = 8'b00000110;//為了配合時鐘設(shè)置為6秒</p><p><b> end</b></p><p><b> end</b></p>
22、<p><b> end</b></p><p> if(LAMPA==2) //假如主干道是黃燈</p><p><b> begin</b></p><p> if(numa[3:0] == 0 && numa[7:4]) //開始主干道黃燈的倒計時</p>&l
23、t;p><b> begin</b></p><p> numa[3:0] = 9; </p><p> numa[7:4] = numa[7:4] - 1;</p><p><b> end</b></p><p><b> else</b></p>
24、;<p> if(numa[7:0] && numa[3:0])</p><p><b> begin</b></p><p> numa[3:0] = numa[3:0] - 1;</p><p><b> end</b></p><p> if(numa[
25、7:0]==0) //黃燈倒計時時間到</p><p><b> begin</b></p><p> if(c) //鄉(xiāng)村道路有車</p><p> begin //主干道變紅燈,倒計時變成16秒</p><p><b> LAMPA =4;</b></p>&
26、lt;p> numa =8'b00010111; //為了配合時鐘設(shè)置為17秒 </p><p><b> end</b></p><p> else if(!c)</p><p><b> begin</b></p><p><b> s1=1;</b&
27、gt;</p><p> LAMPA =1; </p><p> numa = 8'b00000001;//主干道計時1秒</p><p><b> end</b></p><p><b> end</b></p><p><b> end<
28、/b></p><p> if(LAMPA==4&&c)//假如主干道是紅燈并且鄉(xiāng)村道路有車</p><p><b> begin</b></p><p> if(numa[3:0] == 0 && numa[7:4]) //開始主干道紅燈的倒計時</p><p><
29、b> begin</b></p><p> numa[3:0] = 9; </p><p> numa[7:4] = numa[7:4] - 1;</p><p><b> end</b></p><p><b> else</b></p><p>
30、; if(numa[7:0] && numa[3:0])</p><p><b> begin</b></p><p> numa[3:0] = numa[3:0] - 1;</p><p><b> end</b></p><p> if(numa==0)//紅燈倒計時到
31、</p><p> begin //主干道變綠燈,倒計時變成20秒</p><p><b> LAMPA =1;</b></p><p> numa =8'b00100000; </p><p><b> end</b></p><p><b
32、> end</b></p><p> if(LAMPA==4&&!c&& numa>5)//假如主干道是紅燈并且鄉(xiāng)村道路無車并且倒計時時間大于5米秒,使主干道倒計時變成5秒</p><p> begin //主干道仍是紅燈,倒計時變成5秒</p><p> numa =8'b00000110;
33、</p><p><b> end</b></p><p> if(LAMPA==4&&!c&& numa<7) </p><p><b> begin </b></p><p> if(numa[3:0] == 0 && numa
34、[7:4]) //開始主干道5秒的倒計時</p><p><b> begin</b></p><p> numa[3:0] = 9; </p><p> numa[7:4] = numa[7:4] - 1;</p><p><b> end</b></p><p&g
35、t;<b> else</b></p><p> if(numa[7:0] && numa[3:0])</p><p><b> begin</b></p><p> numa[3:0] = numa[3:0] - 1;</p><p><b> end</
36、b></p><p> if(numa==0)//5秒倒計時到</p><p> begin //主干道變綠燈,倒計時變成20秒</p><p><b> LAMPA =1;</b></p><p> numa =8'b00100000;</p><p><
37、b> end </b></p><p><b> end</b></p><p> if(LAMPB==4) //鄉(xiāng)村道路紅燈亮</p><p> begin //開始鄉(xiāng)村道路紅燈的倒計時</p><p> if(c==0&&numb==1) numb=1;<
38、;/p><p> if(c==1&&numb==1&&s2==1)</p><p> begin </p><p><b> numb=5;</b></p><p><b> s2=0;</b></p><p>&l
39、t;b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> if(numb[3:0] == 0 && numb[7:4]) //逢十時</p><p><b> beg
40、in</b></p><p> numb[3:0] = 9; </p><p> numb[7:4] = numb[7:4] - 1;</p><p><b> end</b></p><p><b> else</b></p><p> if(numb
41、 && numb[3:0])</p><p><b> begin</b></p><p> numb[3:0] = numb[3:0] - 1;</p><p><b> end</b></p><p> if(numb==0) //紅燈時間到</p>&
42、lt;p><b> begin </b></p><p><b> if(c)</b></p><p> begin //鄉(xiāng)村道路變綠燈,倒計時變11秒</p><p><b> LAMPB =1;</b></p><p> numb =8'b00
43、010010;</p><p><b> end</b></p><p> else if(!c)</p><p><b> begin</b></p><p> LAMPB =4; </p><p> numb = 8'b00000001; //鄉(xiāng)村道路計
44、時1</p><p> s2=1;//s置為1;</p><p><b> end </b></p><p><b> end</b></p><p><b> end</b></p><p><b> end</b>&l
45、t;/p><p> if(LAMPB==1&&c) //假如鄉(xiāng)村道路是綠燈并且鄉(xiāng)村道路有車并且倒計時大于五秒</p><p><b> begin</b></p><p> if(numb[3:0] == 0 && numb[7:4]) //開始鄉(xiāng)村道路綠燈的倒計時</p><p>
46、<b> begin</b></p><p> numb[3:0] = 9; </p><p> numb[7:4] = numb[7:4] - 1;</p><p><b> end</b></p><p><b> else</b></p><
47、p> if(numb && numb[3:0])</p><p><b> begin</b></p><p> numb[3:0] = numb[3:0] - 1;</p><p><b> end</b></p><p> if(numb==0) //綠燈倒計
48、時時間到</p><p> begin //鄉(xiāng)村道路變黃燈,倒計時變成5秒</p><p><b> LAMPB =2;</b></p><p> numb =8'b00000110;</p><p><b> end</b></p><p><b
49、> end</b></p><p> if(LAMPB==1&&!c) //假如鄉(xiāng)村道路是綠燈并且鄉(xiāng)村道路無車</p><p> begin //綠燈變黃燈,倒計時變成5秒</p><p><b> LAMPB =2;</b></p><p> numb =8
50、39;b00000110;</p><p><b> end</b></p><p> if(LAMPB==2) //假如鄉(xiāng)村道路是黃燈</p><p><b> begin</b></p><p> if(numb[3:0] == 0 && numb[7:4]) //開
51、始鄉(xiāng)村道路黃燈的倒計時</p><p><b> begin</b></p><p> numb[3:0] = 9; </p><p> numb[7:4] = numb[7:4] - 1;</p><p><b> end</b></p><p><b>
52、 else</b></p><p> if(numb && numb[3:0])</p><p><b> begin</b></p><p> numb[3:0] = numb[3:0] - 1;</p><p><b> end</b></p>
53、<p> if(numb==0) //黃燈倒計時時間到</p><p> begin //鄉(xiāng)村道路變紅燈,倒計時變成25秒</p><p><b> LAMPB =4;</b></p><p> numb =8'b00100101; </p><p><b> end&l
54、t;/b></p><p><b> end</b></p><p><b> end</b></p><p> TAH=numa[7:4];</p><p> TAL=numa[3:0];</p><p> TBH=numb[7:4];</p>
55、<p> TBL=numb[3:0];</p><p><b> end</b></p><p><b> endmodule</b></p><p><b> 仿真結(jié)果:</b></p><p> 對該模塊進行仿真,考慮各種情況,結(jié)果如下:</p&
56、gt;<p> 鄉(xiāng)村道路一直沒車,即c=0:</p><p> 可以看到主干道是綠燈20秒,黃燈5秒,然后變成綠燈,倒計時停在1秒,鄉(xiāng)村道路一直是紅燈,倒計時從25一直到1停止。</p><p> 鄉(xiāng)村道路開始沒車,T時間后(T<25秒)有車來:</p><p> 從圖中可以看出主干道綠燈20秒后變成黃燈,5秒后變成紅燈,16秒后又變成綠
57、燈,鄉(xiāng)村道路紅燈25秒后變成綠燈,11秒后變成黃燈,5秒后又變成紅燈。符合設(shè)計要求。</p><p> 3)鄉(xiāng)村道路開始沒車,T時間后(T>25秒)有車來:</p><p> 從圖中可以看到開始時c=0,主干道綠燈20秒后變成黃燈,5秒后由于沒車又變成綠燈,倒計時停在1,鄉(xiāng)村道路紅燈25秒后變成綠燈,倒計時停在1。c變成1后,主干道變成黃燈倒計時5秒,之后變成紅燈,鄉(xiāng)村道路紅燈倒
58、計時5秒后變成綠燈,再后面的變化同情況2。</p><p> 4)當(dāng)鄉(xiāng)村道路為綠燈時c變成0:</p><p> 可以看到,當(dāng)鄉(xiāng)村道路為綠燈,c變成0時,鄉(xiāng)村道路立刻變成黃燈,倒計時5秒后變成紅燈,而主干道紅燈倒計時5秒后變成綠燈。</p><p> ?。?)八段譯碼模塊(decode4_7)如下:</p><p> 功能:將輸入的四位
59、信號進行譯碼,輸出到八段共陽極數(shù)碼管顯示出來。用于顯示倒計時。</p><p><b> 源程序:</b></p><p> module decode4_7(decodeout,indec);</p><p> output[7:0] decodeout;</p><p> input[3:0] indec;&
60、lt;/p><p> reg[7:0] decodeout;</p><p> always @(indec)</p><p><b> begin</b></p><p> case(indec) //用case 語句進行譯碼,小數(shù)點始終不亮</p><p> 4'd0:decod
61、eout=8'b00000011;</p><p> 4'd1:decodeout=8'b10011111;</p><p> 4'd2:decodeout=8'b00100101;</p><p> 4'd3:decodeout=8'b00001101;</p><p> 4&
62、#39;d4:decodeout=8'b10011001;</p><p> 4'd5:decodeout=8'b01001001;</p><p> 4'd6:decodeout=8'b01000001;</p><p> 4'd7:decodeout=8'b00011111;</p>&
63、lt;p> 4'd8:decodeout=8'b00000001;</p><p> 4'd9:decodeout=8'b00001001;</p><p> default: decodeout=8'bx;</p><p><b> endcase</b></p><p
64、><b> end</b></p><p><b> endmodule</b></p><p><b> 仿真結(jié)果:</b></p><p> 從圖中可以看到輸入0~9,輸出與之對應(yīng)的八段碼,結(jié)果正確。</p><p> (3)分頻模塊(blk1)如下:<
65、;/p><p> 功能:由于實驗箱提供的是2MHZ的時鐘信號,為了得到1HZ的時鐘信號,要對輸入時鐘信號進行2000000分頻。得到合適的時鐘信號。set信號可以控制系統(tǒng)的起始及終止。</p><p><b> 源程序:</b></p><p> module blk1(clk,set,out);</p><p>
66、input clk,set; //基頻與使能</p><p> output out; //分頻后的輸出</p><p><b> reg out;</b></p><p> reg[23:0] count1,count2;//count1用于記錄時鐘總數(shù),count2用于記錄經(jīng)過了多少個時鐘周期</p><p>
67、; always @ (posedge clk)</p><p><b> begin</b></p><p><b> if(set)</b></p><p><b> begin</b></p><p> count1 = 1000000;//實際下載時改成500
68、000,方便看到結(jié)果 count1 = count1 - 1;</p><p> count2 = 0;</p><p><b> out = 0;</b></p><p><b> end</b></p><p><b> else</b></p&g
69、t;<p><b> begin</b></p><p> if(count2 < count1)</p><p><b> begin</b></p><p> count2 = count2 + 1;</p><p><b> end</b>&
70、lt;/p><p><b> else</b></p><p><b> begin</b></p><p> out = ~out;</p><p> count2 = 0;</p><p><b> end</b></p><
71、;p><b> end</b></p><p><b> end</b></p><p><b> endmodule</b></p><p><b> 仿真結(jié)果:</b></p><p> 由于2000000分頻看不出仿真結(jié)果,這里改成4
72、分頻。如圖,當(dāng)set信號有一個正跳變之后,out才開始有輸出。而之后set為高電平時,out停止產(chǎn)生時鐘信號,相當(dāng)于起到暫停的作用。另外,可以看出out的頻率是clk的1/4,實現(xiàn)了4分頻。</p><p><b> 2.頂層文件</b></p><p> 交通燈控制器(jiaotongdeng):由三個底層模塊構(gòu)成,結(jié)構(gòu)圖如下:</p><p
73、><b> 仿真結(jié)果:</b></p><p> 分析亮燈情況及倒計時情況,與設(shè)計要求相符合,仿真結(jié)果正確。</p><p><b> 五、管腳綁定</b></p><p> clk綁定到晶振時鐘信號,設(shè)定管腳號為28;</p><p> rst,c,set分別綁定到三個乒乓開關(guān),這
74、里設(shè)定管腳號分別為139,138,137;</p><p> LAMPA[0],LAMPA[1],LAMPA[2]分別綁定到綠燈,黃燈,紅燈上,這里設(shè)定管腳號分別為221,204,233;</p><p> LAMPB[0],LAMPB[1],LAMPB[2]分別綁定到綠燈,黃燈,紅燈上,這里設(shè)定管腳號分別為206,186,222;</p><p> TAH[
75、0]~TAH[7], TAL[0]~TAL[7],TBH[0]~TBH[7] ,TBL[0]~TBL[7]分別綁定到四個數(shù)碼管上,管腳號這里就不一一贅述。</p><p> 六、編譯下載,驗證結(jié)果。</p><p> 實驗結(jié)果分析:c為鄉(xiāng)村道路信號,當(dāng)c=0時,即鄉(xiāng)村道路無車,主干道經(jīng)過綠燈20秒,黃燈5秒,此時若c=1,則變成紅燈,倒計時變成16秒,否則,又回到綠燈,倒計時停在1;鄉(xiāng)
76、村道路經(jīng)過紅燈25秒,此時若c=1,則變成綠燈,倒計時變成11秒,否則仍為紅燈,倒計時停在1秒。如果開始時c=0,經(jīng)過一段時間后有車來,假設(shè)此時主干道通行時間已經(jīng)超過最短通行時間25秒,則主干道變黃燈,倒計時5秒后變紅燈,鄉(xiāng)村道路紅燈倒計時5秒后變綠燈。假設(shè)鄉(xiāng)村道路綠燈時,c=0,則不管鄉(xiāng)村道路倒計時有沒有到1都變黃燈,5秒后變紅燈,主干道倒計時5秒后變綠燈。</p><p> 分析實驗結(jié)果可以看到該系統(tǒng)實現(xiàn)了
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通燈課程設(shè)計報告---交通燈控制器
- 實驗報告 交通燈控制器實驗報告
- 數(shù)字邏輯課程設(shè)計報告--交通燈控制器
- 交通燈課程設(shè)計--交通燈控制器
- 數(shù)字邏輯課程設(shè)計---交通燈控制器
- 交通燈控制器課程設(shè)計報告
- 交通燈控制器課程設(shè)計報告
- 交通燈控制器課程設(shè)計
- 交通燈控制器課程設(shè)計
- 課程設(shè)計---交通燈控制器
- eda課程設(shè)計報告-- 交通燈控制器
- 交通燈控制器課程設(shè)計
- 課程設(shè)計---交通燈控制器
- 課程設(shè)計--交通燈控制器
- 課程設(shè)計----交通燈控制器
- 數(shù)字電路課程設(shè)計--交通燈控制器
- 數(shù)字電路課程設(shè)計--交通燈控制器
- 課程設(shè)計---交通燈控制器設(shè)計
- 數(shù)字電路課程設(shè)計報告—交通燈控制器的設(shè)計
- pld課程設(shè)計報告-- 交通燈控制器設(shè)計
評論
0/150
提交評論