名稱:十字路口交通燈控制器帶左轉(zhuǎn)燈Verilog代碼Quartus仿真
軟件:Quartus
語(yǔ)言:Verilog
代碼功能:
(1)設(shè)計(jì)任務(wù)—交通燈控制器
利用VerilogHDL語(yǔ)言設(shè)計(jì)一個(gè)十字路口交通燈控制器,其示意圖如下圖1所示,A方向與B方向各設(shè)紅(R),黃(Y),綠(G),和左拐(L)四種燈,四種燈按合理的順序亮滅,并能將燈亮的時(shí)間以倒計(jì)時(shí)的形式顯示出來(lái)。
兩個(gè)方向這種燈亮的時(shí)間應(yīng)該能夠非常方便地進(jìn)行設(shè)置和修改,此外假設(shè)A方向是主干路,車流量大,因此A方向同行的時(shí)間應(yīng)該比B方向長(zhǎng)一些。
圖1
(2)交通的控制器狀態(tài)表
交通燈控制器的狀態(tài)轉(zhuǎn)換表如表1所示,表中1表示燈亮,0表示燈滅。A方向和B方向的紅、黃、綠和左拐燈分別用R1、Y1、G1、L1和R2、Y2、G2、L2來(lái)表示。
? ? ? ? ? ? ? ?A方向 |
? ? ? ? ? ? ? ?B方向 |
||||||
綠燈 (G1) |
黃燈 (Y1) |
左拐燈 (L1) |
紅燈 (R1) |
綠燈 (G2) |
黃燈 (Y2) |
左拐燈 (L2) |
紅燈 (R2) |
1
|
0
|
0
|
0
|
0 |
0 |
0 |
1 |
0
|
1
|
0
|
0
|
0 |
0 |
0 |
1 |
0
|
0
|
1
|
0
|
0 |
0 |
0 |
1 |
0
|
1
|
0
|
0
|
0 |
0 |
0 |
1 |
0
|
0
|
0
|
1
|
1 |
0 |
0 |
0 |
0
|
0
|
0
|
1
|
0 |
1 |
0 |
0 |
0
|
0
|
0
|
1
|
0 |
0 |
1 |
0 |
0
|
0
|
0
|
1
|
0 |
1 |
0 |
0 |
從狀態(tài)轉(zhuǎn)換表中可以看出,每個(gè)方向四種燈依次按如下順序點(diǎn)亮,并不斷循環(huán):
綠燈- 黃燈 左拐燈 黃燈 紅燈。
并且沒(méi)個(gè)方向紅燈亮的時(shí)間與另一方向綠、黃、左拐、黃燈亮的時(shí)間相等。黃燈所起的作用是用來(lái)在綠燈和左拐燈后進(jìn)行緩沖,以提醒行人該方向馬上要禁行了。
其中A方向紅、綠、黃、左拐燈亮的時(shí)間分別為:55秒、40秒、5秒和15秒,B方向紅、綠、黃、左拐燈亮的時(shí)間分別為:65秒、30秒、5秒和15秒。要求輸出的燈亮?xí)r間用BCD碼。
A是55秒,B是65秒(因?yàn)锳是主干路)
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. Testbench(仿真代碼)
6. 仿真圖
整體仿真圖
分頻模塊仿真圖
狀態(tài)機(jī)控制模塊仿真圖
顯示模塊仿真圖
部分代碼展示:
//交通燈 module?trafic( input?clk,//50M input?key,//復(fù)位 output?main_red,//主干道紅燈 output?main_green,//主干道綠燈 output?main_yellow,//主干道黃燈 output?main_left,//主干道左轉(zhuǎn)燈 output?branch_red,//支干道紅燈 output?branch_green,//支干道綠燈 output?branch_yellow,//支干道黃燈 output?branch_left,//支干道左轉(zhuǎn)燈 output?[7:0]?HEX0,//數(shù)碼管0 output?[7:0]?HEX1,//數(shù)碼管1 output?[7:0]?HEX2,//數(shù)碼管2 output?[7:0]?HEX3//數(shù)碼管3 ); wire?clk_1Hz; wire?[7:0]?main_cnt; wire?[7:0]?branch_cnt; //分頻模塊 div?i_div( .?clk(clk),//時(shí)鐘 .?clk_1Hz(clk_1Hz)//1Hz );
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=526