名稱:通用交通燈帶倒計(jì)時(shí)quartus紅綠燈時(shí)間可調(diào)(代碼在文末付費(fèi)下載)
軟件:Quartus
語(yǔ)言:Verilog
要求:
設(shè)計(jì)十字路口交通燈,具有倒計(jì)時(shí)功能,紅綠燈時(shí)間代碼可設(shè)置,本工程為交通燈通用代碼,其他交通燈控制器可通過(guò)本代碼簡(jiǎn)單修改得到。
演示視頻:
頂層模塊代碼:
module?Traffic_Light_Control( input?clk,//500hz input?car_detection,//car_detection==1時(shí),主路支路交替通通行,等于0時(shí)只主路通行 output?R1,//(主干道)高電平亮 output?G1,//(主干道)高電平亮 output?Y1,//(主干道)高電平亮 output?R2,//(支干道)高電平亮 output?G2,//(支干道)高電平亮 output?Y2,//(支干道)高電平亮 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_1; ?wire?[7:0]?G1_BCD; ?wire?[7:0]?Y1_BCD; ?wire?[7:0]?R1_BCD; ?wire?[7:0]?G2_BCD; ?wire?[7:0]?Y2_BCD; ?wire?[7:0]?R2_BCD; ?wire?[7:0]?SMG1; ?wire?[7:0]?SMG2; ? wire?R1_led; wire?G1_led; wire?Y1_led; wire?R2_led; wire?G2_led; wire?Y2_led; wire?G1_flash; wire?G2_flash; assign?R1=R1_led; assign?G1=G1_led?&?~G1_flash; assign?Y1=Y1_led; assign?R2=R2_led; assign?G2=G2_led?&?~G2_flash; assign?Y2=Y2_led; //分頻到1hz(脈沖發(fā)生器) div?U0 ( .?clk(clk), .?clk_1(clk_1)//輸出1Hz ); //紅綠燈時(shí)間,紅燈時(shí)間是綠燈加黃燈時(shí)間 wire[7:0]??G1_time; wire[7:0]??Y1_time; wire[7:0]??G2_time; wire[7:0]??Y2_time; //當(dāng)主干道、支干道均有車時(shí),兩者交替允許通行, //主干道每次通行60秒,支干道每次通行15秒, //在每次由綠燈向紅燈轉(zhuǎn)換的過(guò)程中,要亮3秒的黃燈作為過(guò)渡 //綠燈閃爍4s再變黃燈 assign??G1_time=8'd60;//主干道每次通行60秒 assign??Y1_time=8'd3;//亮3秒的黃燈作為過(guò)渡 assign??G2_time=8'd15;//支干道每次通行15秒 assign??Y2_time=8'd3;//亮3秒的黃燈作為過(guò)渡 //交通燈控制模塊(狀態(tài)控制器) RGY?U1( .?clk_1(clk_1), .?no_car_detection(~car_detection),//車輛檢測(cè),主干道處于長(zhǎng)允許通行狀態(tài),而支干道有車來(lái)時(shí)才允許通行,car_detection==1表示支路有車 .?R1(R1_led), .?G1(G1_led), .?Y1(Y1_led), .?R2(R2_led), .?G2(G2_led), .?Y2(Y2_led), .?G1_time(G1_time), .?Y1_time(Y1_time), .?G2_time(G2_time), .?Y2_time(Y2_time), .?G1_BCD(G1_BCD),//綠燈時(shí)間 .?Y1_BCD(Y1_BCD),//黃燈時(shí)間 .?R1_BCD(R1_BCD),//紅燈時(shí)間 .?G2_BCD(G2_BCD),//綠燈時(shí)間 .?Y2_BCD(Y2_BCD),//黃燈時(shí)間 .?R2_BCD(R2_BCD)//紅燈時(shí)間 ); //顯示數(shù)據(jù)(計(jì)數(shù)器) SMG?U2( .?clk(clk), .?R1(R1_led), .?G1(G1_led), .?Y1(Y1_led), .?R2(R2_led), .?G2(G2_led), .?Y2(Y2_led), .?G1_BCD(G1_BCD), .?Y1_BCD(Y1_BCD), .?R1_BCD(R1_BCD), .?G2_BCD(G2_BCD), .?Y2_BCD(Y2_BCD), .?R2_BCD(R2_BCD), .?G1_time(G1_time), .?Y1_time(Y1_time), .?G2_time(G2_time), .?Y2_time(Y2_time), .?SMG1(SMG1),//數(shù)碼管顯示 .?SMG2(SMG2)//數(shù)碼管顯示 ); //閃爍控制電路 FLASH_ctrl?i_FLASH_ctrl( .?clk_1(clk_1), .?G1_BCD(G1_BCD),//主路綠燈計(jì)時(shí) .?G2_BCD(G2_BCD),//支路綠燈計(jì)時(shí) .?G1_flash(G1_flash), .?G2_flash(G2_flash) ); //數(shù)碼管譯碼器 HEX?U3 ( .?clk(clk), .?SMG_1(SMG1),//數(shù)碼管數(shù)據(jù)顯示 .?SMG_2(SMG2),//數(shù)碼管數(shù)據(jù)顯示 .?HEX0(HEX0),//低電平亮 .?HEX1(HEX1),//低電平亮 .?HEX2(HEX2),//低電平亮 .?HEX3(HEX3)//低電平亮 ); endmodule
設(shè)計(jì)文檔(文檔點(diǎn)擊可下載):
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=143
閱讀全文