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

DE0開發(fā)板交通燈控制器紅綠燈時(shí)間可配VHDL

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

1-231031230R2963.doc

共1個(gè)文件

名稱:DE0開發(fā)板交通燈控制器紅綠燈時(shí)間可配(代碼在文末下載)

軟件:QuartusII

語言:VHDL

代碼功能:

要求:設(shè)計(jì)一個(gè)十字路口交通信號燈的控制電路。

要求紅、綠燈按一定的規(guī)律亮和滅,并在亮燈期間進(jìn)行倒計(jì)時(shí),且將運(yùn)行時(shí)間用數(shù)碼管顯示出來。

綠燈亮?xí)r,為該車道允許通行信號,紅燈亮?xí)r,為該車道禁止通行信號。

該代碼的主路支路通行時(shí)間可根據(jù)要求自行設(shè)置,默認(rèn)主路綠燈25s,主路黃燈5s,支路綠燈20s,支路黃燈5s。

設(shè)置時(shí)間時(shí),在頂層文件找到以下代碼,修改對應(yīng)時(shí)間的二進(jìn)制值即可。

--設(shè)置時(shí)間,可自行修改時(shí)間,
G1_time?<=?"00011001";--主路綠燈25s
Y1_time?<=?"00000101";--主路黃燈5s
G2_time?<=?"00010100";--支路綠燈20s
Y2_time?<=?"00000101";--支路黃燈5s

本代碼已在DE0開發(fā)板驗(yàn)證,開發(fā)板如下:

開發(fā)板DE0.png

演示視頻:

FPGA代碼Verilog/VHDL代碼資源下載網(wǎng):www.hdlcode.com

部分代碼展示

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
ENTITY?Traffic_Light_Control?IS
???PORT?(
??????clk?????:?IN?STD_LOGIC;--50Mhz
control?:?IN?STD_LOGIC;--緊急控制按鍵
??????R1??????:?OUT?STD_LOGIC;--高電平亮,主路紅燈
??????G1??????:?OUT?STD_LOGIC;--高電平亮,主路綠燈
??????Y1??????:?OUT?STD_LOGIC;--高電平亮,主路黃燈
??????R2??????:?OUT?STD_LOGIC;--高電平亮,支路紅燈
??????G2??????:?OUT?STD_LOGIC;--高電平亮,支路綠燈
??????Y2??????:?OUT?STD_LOGIC;--高電平亮,支路黃燈
??????HEX0????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--數(shù)碼管0
??????HEX1????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--數(shù)碼管1
??????HEX2????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--數(shù)碼管2
??????HEX3????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0)--數(shù)碼管3
???);
END?Traffic_Light_Control;
ARCHITECTURE?behave?OF?Traffic_Light_Control?IS
--分頻模塊
COMPONENT?CLOCK?IS--?Divide?50MHz?to?1Hz
GENERIC(D?:?INTEGER?:=?50000000);--仿真時(shí)改小為500加快仿真速度,實(shí)際上板驗(yàn)證時(shí)改為50000000
???PORT(CLK:?IN?STD_LOGIC;
?????????DAV:?OUT?STD_LOGIC);
???END?COMPONENT;
--顯示模塊
???COMPONENT?HEX?IS
??????PORT?(
?????????clk?????:?IN?STD_LOGIC;
?????????SMG_1???:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????SMG_2???:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????HEX0????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);
?????????HEX1????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);
?????????HEX2????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);
?????????HEX3????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0)
??????);
???END?COMPONENT;
???
--顯示值計(jì)算模塊
???COMPONENT?SMG?IS
??????PORT?(
?????????clk?????:?IN?STD_LOGIC;
?????????R1??????:?IN?STD_LOGIC;
?????????G1??????:?IN?STD_LOGIC;
?????????Y1??????:?IN?STD_LOGIC;
?????????R2??????:?IN?STD_LOGIC;
?????????G2??????:?IN?STD_LOGIC;
?????????Y2??????:?IN?STD_LOGIC;
?????????G1_BCD??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????Y1_BCD??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????R1_BCD??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????G2_BCD??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????Y2_BCD??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????R2_BCD??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????G1_time?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????Y1_time?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????G2_time?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????Y2_time?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????SMG1????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????SMG2????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)
??????);
???END?COMPONENT;
???
--交通燈控制模塊
???COMPONENT?RGY?IS
??????PORT?(
?????????clk_1???:?IN?STD_LOGIC;
control?:?IN?STD_LOGIC;--緊急控制按鍵
?????????G1_time?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????Y1_time?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????G2_time?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????Y2_time?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????R1??????:?OUT?STD_LOGIC;
?????????G1??????:?OUT?STD_LOGIC;
?????????Y1??????:?OUT?STD_LOGIC;
?????????R2??????:?OUT?STD_LOGIC;
?????????G2??????:?OUT?STD_LOGIC;
?????????Y2??????:?OUT?STD_LOGIC;
?????????G1_BCD??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????Y1_BCD??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????R1_BCD??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????G2_BCD??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????Y2_BCD??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????R2_BCD??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)
??????);
???END?COMPONENT;
???
???
???SIGNAL?clk_1??????:?STD_LOGIC;
???SIGNAL?G1_BCD?????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?Y1_BCD?????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?R1_BCD?????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?G2_BCD?????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?Y2_BCD?????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?R2_BCD?????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?SMG1???????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?SMG2???????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???
???SIGNAL?R1_led?????:?STD_LOGIC;
???SIGNAL?G1_led?????:?STD_LOGIC;
???SIGNAL?Y1_led?????:?STD_LOGIC;
???
???SIGNAL?R2_led?????:?STD_LOGIC;
???SIGNAL?G2_led?????:?STD_LOGIC;
???SIGNAL?Y2_led?????:?STD_LOGIC;
???
???SIGNAL?G1_time????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?Y1_time????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?G2_time????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?Y2_time????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???
???SIGNAL?HEX0_SIG?:?STD_LOGIC_VECTOR(6?DOWNTO?0);
???SIGNAL?HEX1_SIG?:?STD_LOGIC_VECTOR(6?DOWNTO?0);
???SIGNAL?HEX2_SIG?:?STD_LOGIC_VECTOR(6?DOWNTO?0);
???SIGNAL?HEX3_SIG?:?STD_LOGIC_VECTOR(6?DOWNTO?0);
BEGIN
???HEX0?<=?HEX0_SIG;
???HEX1?<=?HEX1_SIG;
???HEX2?<=?HEX2_SIG;
???HEX3?<=?HEX3_SIG;
???R1?<=?R1_led;--主路紅燈
???G1?<=?G1_led;--主路綠燈
???Y1?<=?Y1_led;--主路黃燈
???R2?<=?R2_led;--支路紅燈
???G2?<=?G2_led;--支路綠燈
???Y2?<=?Y2_led;--支路黃燈
???
--分頻到1hz???
???U_CLOCK?:?CLOCK
??????PORT?MAP?(
?????????clk??=>?clk,
?????????dav??=>?clk_1
??????);
--設(shè)置時(shí)間,可自行修改時(shí)間,
--主路紅燈時(shí)間等于支路綠燈加黃燈
--支路紅燈時(shí)間等于主路綠燈加黃燈
--紅燈25s,綠燈20s,黃燈5s
???G1_time?<=?"00011001";--主路綠燈25s
???Y1_time?<=?"00000101";--主路黃燈5s
???G2_time?<=?"00010100";--支路綠燈20s
???Y2_time?<=?"00000101";--支路黃燈5s
???
???
?--交通燈控制模塊??
???U1?:?RGY
??????PORT?MAP?(
?????????clk_1????=>?clk_1,
?????????control??=>?control,
?????????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í)間
??????);
???
???
???--倒計(jì)時(shí)數(shù)據(jù)計(jì)算模塊
???U2?:?SMG
??????PORT?MAP?(
?????????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ù)碼管顯示
??????);
???
???
???--數(shù)碼管顯示模塊
???U3?:?HEX
??????PORT?MAP?(
?????????clk????=>?clk,
?????????SMG_1??=>?SMG1,--數(shù)碼管數(shù)據(jù)顯示
?????????SMG_2??=>?SMG2,--數(shù)碼管數(shù)據(jù)顯示
?????????
?????????HEX0???=>?HEX0_SIG,--低電平亮
?????????HEX1???=>?HEX1_SIG,--低電平亮
?????????HEX2???=>?HEX2_SIG,--低電平亮
?????????HEX3???=>?HEX3_SIG--低電平亮
??????);
???
END?behave;

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

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. 管腳分配

6. Testbench

7. 仿真圖

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

  • 1-231031230R2963.doc
    下載

相關(guān)推薦