• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Quartus交通燈控制器verilog代碼

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-2312251103154J.doc

共1個(gè)文件

名稱:Quartus交通燈控制器verilog代碼

軟件:Quartus

語言:Verilog

代碼功能:

用 Verilog HDL或VHDL語言設(shè)計(jì)有限狀態(tài)機(jī)及其附屬電路(定時(shí)器),實(shí)現(xiàn)交通燈控制器。其功能為東西方向、南北方向各紅、黃綠三個(gè)燈。綠燈每次亮30秒,黃燈每次亮3秒定時(shí)器的輸入時(shí)鐘頻率為1Hz。狀態(tài)機(jī)的輸入時(shí)鐘與定時(shí)器相同,狀態(tài)機(jī)有復(fù)位輸入,復(fù)位后進(jìn)入某個(gè)確定狀態(tài)。

要求

(1)畫出狀態(tài)轉(zhuǎn)移圖;

2)完整的源代碼,含有限狀態(tài)機(jī)、附屬電路(定時(shí)器);(附代碼說明文檔、或代碼詳細(xì)注釋)

(3)仿真波形截圖(含簡(jiǎn)單說明),(可采用任意工具軟件,如: Modelsim

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. 狀態(tài)圖

5. Testbench

6. 仿真圖

部分代碼展示:

/*
紅->綠?綠->黃?黃->紅
1、紅--計(jì)時(shí)main_red_times------------------------綠--計(jì)時(shí)main_green_times---main_yellow_times黃燈---------------紅
2、綠--計(jì)時(shí)branch_green_times---branch_yellow_times黃燈--------------------紅--計(jì)時(shí)branch_reg_times-------------------綠
*/
//交通燈控制
module?traffic_light(
input?clk_1Hz,//1Hz
input?reset,//復(fù)位
output?reg?main_red,//主路燈(東西方向)
output?reg?main_green,//
output?reg?main_yellow,//
output?reg?branch_red,//支路燈(南北方向)
output?reg?branch_green,//
output?reg?branch_yellow
);
reg?[7:0]?main_green_BCD;
reg?[7:0]?main_yellow_BCD;
reg?[7:0]?main_red_BCD;
reg?[7:0]?branch_green_BCD;
reg?[7:0]?branch_yellow_BCD;
reg?[7:0]?branch_red_BCD;
parameter?main_green_state=3'd0;
parameter?main_yellow_state=3'd1;
parameter?branch_green_state=3'd2;
parameter?branch_yellow_state=3'd3;
//定義路口個(gè)燈持續(xù)時(shí)間,修改此處時(shí)間
//主路綠燈+主路黃燈=支路紅燈時(shí)間
//支路綠燈+支路黃燈=主路紅燈時(shí)間
wire?[7:0]?main_green_time;
wire?[7:0]?main_yellow_time;
wire?[7:0]?branch_green_time;
wire?[7:0]?branch_yellow_time;
assign?main_green_time=8'd30;
assign?main_yellow_time=8'd3;
assign?branch_green_time=8'd30;
assign?branch_yellow_time=8'd3;
reg?[2:0]?state=3'd0;
reg?[7:0]?main_green_cnt=8'd1;
reg?[7:0]?main_yellow_cnt=8'd1;
reg?[7:0]?branch_green_cnt=8'd1;
reg?[7:0]?branch_yellow_cnt=8'd1;
//主路綠燈+主路黃燈=支路紅燈時(shí)間
//支路綠燈+支路黃燈=主路紅燈時(shí)間
always@(posedge?clk_1Hz?or?negedge?reset)
if(!reset)
state<=main_green_state;//reset
else
case(state)
main_green_state:
if(main_green_cnt<main_green_time)?begin//主路綠燈
state<=main_green_state;
main_green_cnt<=main_green_cnt+'d1;
end
else?begin
state<=main_yellow_state;//計(jì)數(shù)到后到下一狀態(tài)
main_green_cnt<='d1;
end
main_yellow_state:???
???if(main_yellow_cnt<main_yellow_time)?begin//主路黃燈
state<=main_yellow_state;
??????main_yellow_cnt<=main_yellow_cnt+'d1;
end
else?begin
state<=branch_green_state;//計(jì)數(shù)到后到下一狀態(tài)
??????main_yellow_cnt<='d1;
end
???branch_green_state:
if(branch_green_cnt<branch_green_time)?begin//支路綠燈
state<=branch_green_state;
branch_green_cnt<=branch_green_cnt+'d1;
end
else?begin
state<=branch_yellow_state;//計(jì)數(shù)到后到下一狀態(tài)
branch_green_cnt<='d1;
end????
???branch_yellow_state:
???if(branch_yellow_cnt<branch_yellow_time)?begin//支路3s黃燈
state<=branch_yellow_state;
??????branch_yellow_cnt<=branch_yellow_cnt+'d1;
end
else?begin
state<=main_green_state;//計(jì)數(shù)到后到下一狀態(tài)
??????branch_yellow_cnt<='d1;
end
default:state<=main_green_state;
endcase
//交通燈狀態(tài)控制,state為相應(yīng)狀態(tài)時(shí)亮相應(yīng)燈
always@(posedge?clk_1Hz?)
begin
if(state==main_green_state)
main_green<=1;
else
main_green<=0;
if(state==main_yellow_state?)
main_yellow<=1;
else
main_yellow<=0;
if(state==branch_green_state?|?state==branch_yellow_state)
main_red<=1;
else
main_red<=0;
end
//交通燈狀態(tài)控制,state為相應(yīng)狀態(tài)時(shí)亮相應(yīng)燈
always@(posedge?clk_1Hz?)
begin
if(state==branch_green_state)
branch_green<=1;
else
branch_green<=0;
if(state==branch_yellow_state?)
branch_yellow<=1;
else
branch_yellow<=0;
if(state==main_green_state?|?state==main_yellow_state)
branch_red<=1;
else
branch_red<=0;
end
endmodule

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=403

  • 2-2312251103154J.doc
    下載

相關(guān)推薦