軟件:Quartus
語(yǔ)言:VHDL
代碼功能:交通燈
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
Bdf
Vhd
3. 程序編譯
4. RTL圖
5. 仿真圖
圖中,設(shè)置d1為15,d2為10,d3為5.即路口1綠燈為15秒,黃燈為5秒;路口2綠燈為10秒,黃燈為5秒。
圖中R1,G1,Y1分別表示路口1的紅、綠、黃燈。
圖中R2,G2,Y2分別表示路口2的紅、綠、黃燈。
可以看出,實(shí)現(xiàn)了路口1綠燈為15秒,黃燈為5秒;路口2綠燈為10秒,黃燈為5秒的功能
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; --LED控制模塊 ENTITY?RGY_led?IS ???PORT?( ??????clk????:?IN?STD_LOGIC; ??state?????:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0);--狀態(tài)機(jī) ??????R1???????:?OUT?STD_LOGIC;--紅綠燈信號(hào) ??????G1???????:?OUT?STD_LOGIC;--紅綠燈信號(hào) ??????Y1???????:?OUT?STD_LOGIC;--紅綠燈信號(hào) ??????R2???????:?OUT?STD_LOGIC;--紅綠燈信號(hào) ??????G2???????:?OUT?STD_LOGIC;--紅綠燈信號(hào) ??????Y2???????:?OUT?STD_LOGIC--紅綠燈信號(hào) ???); END?RGY_led; ARCHITECTURE?behave?OF?RGY_led?IS ???SIGNAL?R1_temp?:?STD_LOGIC:='0'; ???SIGNAL?G1_temp?:?STD_LOGIC:='0'; ???SIGNAL?Y1_temp?:?STD_LOGIC:='0'; ???SIGNAL?R2_temp?:?STD_LOGIC:='0'; ???SIGNAL?G2_temp?:?STD_LOGIC:='0'; ???SIGNAL?Y2_temp?:?STD_LOGIC:='0'; BEGIN ???R1?<=?R1_temp;--紅 ???G1?<=?G1_temp;--綠 ???Y1?<=?Y1_temp;--黃 ???R2?<=?R2_temp;--紅 ???G2?<=?G2_temp;--綠 ???Y2?<=?Y2_temp;--黃 ??? ? ???--控制東西方向交通燈 ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????IF?(state?=?"001")?THEN ????????????G1_temp?<=?'1'; ?????????ELSE ????????????G1_temp?<=?'0'; ?????????END?IF; ?????????IF?(state?=?"010")?THEN ????????????Y1_temp?<=?'1'; ?????????ELSE ????????????Y1_temp?<=?'0'; ?????????END?IF; ?????????IF?(state?=?"011"?OR?state?=?"100")?THEN ????????????R1_temp?<=?'1'; ?????????ELSE ????????????R1_temp?<=?'0'; ?????????END?IF; ??????END?IF; ???END?PROCESS; ??? ???--控制南北方向交通燈 ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????IF?(state?=?"011")?THEN ????????????G2_temp?<=?'1'; ?????????ELSE ????????????G2_temp?<=?'0'; ?????????END?IF; ?????????IF?(state?=?"100"?)?THEN ????????????Y2_temp?<=?'1'; ?????????ELSE ????????????Y2_temp?<=?'0'; ?????????END?IF; ?????????IF?(state?=?"001"?OR?state?=?"010")?THEN ????????????R2_temp?<=?'1'; ?????????ELSE ????????????R2_temp?<=?'0'; ?????????END?IF; ??????END?IF; ???END?PROCESS; ??? ? END?behave;
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=430
閱讀全文