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

交通燈控制器設(shè)計Verilog代碼Basys3開發(fā)板vivado軟件

05/28 14:53
259
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1-231122230130321.doc

共1個文件

名稱:交通燈控制器設(shè)計Verilog代碼Basys3開發(fā)板vivado軟件(代碼在文末下載)

軟件:VIVADO

語言:Verilog

代碼功能:

交通燈控制器

1.設(shè)計要求

分兩個方向(1、2),每個方向各有紅綠黃(RGY)三個交通燈。有自動、手動兩種控制方式。

在自動方式下,控制器的狀態(tài)轉(zhuǎn)移表為:

狀態(tài)? ? 亮燈? ? ?停留時間

S0? ? ? R1,G2? ? 2秒

S1? ? ? R1,Y2? ? 1秒

S2? ? ? G1,R2? ? 2秒

S3? ? ? Y1,R2? ? 1秒

在手動方式下,按下K0~K3時直接進入對應(yīng)序號的狀態(tài),隨后轉(zhuǎn)入自動方式

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

本代碼已在Basys3開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:

basys3開發(fā)板.png

演示視頻:

設(shè)計文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. 管腳分配

5. Testbench

6. 仿真圖

紅綠燈自動變化

按鍵K0~K3控制狀態(tài)變化

紅綠燈自動變化

部分代碼展示:

module?traffic_light(
????input?clk_100M,
????input?key0,//按鍵按下高電平--BTNL
????input?key1,//按鍵按下高電平--BTNR
????input?key2,//按鍵按下高電平--BTNU
????input?key3,//按鍵按下高電平--BTND
????output?reg?R1,///紅1--LD0
????output?reg?G1,//綠1--LD1
????output?reg?Y1,//黃1--LD2
????output?reg?R2,//紅2--LD3
????output?reg?G2,//綠2--LD4
????output?reg?Y2//黃2--LD5
????);
parameter?count_second=32'd100_000_000;//100M時鐘計數(shù)到100_000_000就是1s,仿真改小為100
reg?[31:0]?count=32'd0;
always@(posedge?clk_100M)
if(key0?|?key1?|?key2?|?key3)
????count<=32'd0;//有按鍵按下時重新計時
else
????if(count>=count_second)begin//100M時鐘計數(shù)到count_second就是1s
????????count<=32'd0;
????????end
????else?begin
????????count<=count+32'd1;//計數(shù)
????????end
//定義狀態(tài)S0~S3
parameter?S0=2'd0;
parameter?S1=2'd1;
parameter?S2=2'd2;
parameter?S3=2'd3;
reg?[1:0]?state=S0;
reg?[1:0]?count_s=2'd0;
always@(posedge?clk_100M)
????if(key0)begin
????????state<=S0;//按鍵K0,進入S0狀態(tài)
????????count_s<=0;
????????end
????else?if(key1)begin
????????state<=S1;//按鍵K1,進入S1狀態(tài)
????????count_s<=0;
????????end
????else?if(key2)begin
????????state<=S2;?//按鍵K2,進入S2狀態(tài)???
????????count_s<=0;
????????end
????else?if(key3)begin
????????state<=S3;//按鍵K3,進入S3狀態(tài)
????????count_s<=0;
????????end
????else
????????if(count==count_second)//1秒判斷一次狀態(tài)是否跳轉(zhuǎn)
????????????case(state)
????????????????S0:begin
????????????????????if(count_s>=1)begin//0~1表2秒
????????????????????????count_s<=0;?
????????????????????????state<=S1;//到S1
????????????????????????end
????????????????????else?begin
????????????????????????count_s<=count_s+1;?????
????????????????????????state<=S0;//S0保持2s

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

  • 1-231122230130321.doc
    下載

相關(guān)推薦