名稱:基于DE0開發(fā)板的交通燈十字路口紅綠燈(代碼在文末付費(fèi)下載)
軟件:Quartus
語言:VHDL
要求:
設(shè)計(jì)一個(gè)十字路口交通信號(hào)燈的控制電路。分為兩種情況,正常狀態(tài)和報(bào)警狀態(tài)。
1.正常狀態(tài):要求紅、綠燈按一定的規(guī)律亮和滅,并在亮燈期間進(jìn)行倒計(jì)時(shí),且將運(yùn)行時(shí)間用數(shù)碼管顯示出來。
綠燈亮?xí)r,為該車道允許通行信號(hào),紅燈亮?xí)r,為該車道禁止通行信號(hào)。
要求主干道每次通行時(shí)間為 60秒,支干道每次通行時(shí)間為 30 秒。
每次變換運(yùn)行車道前綠燈閃爍,持續(xù)時(shí)間為 5 秒。
即車道要由 X轉(zhuǎn)換為 Y時(shí),X在通行時(shí)間只剩下 5 秒鐘時(shí),綠燈閃爍顯示, Y仍為紅燈。
2.報(bào)警狀態(tài):亮黃燈,蜂鳴器響起。(蜂鳴器高電平觸發(fā))
外接鍵盤:三種模式的切換:高峰,正常,夜晚
高峰:x:綠燈 35S 紅燈25S;y:綠燈 25S 紅燈35S。
夜晚:x:綠燈 45S 紅燈45S;y:綠燈 45S紅燈45S
本代碼已在DE0-CV開發(fā)板驗(yàn)證,板子資料如下:
演示視頻:
部分代碼展示
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ENTITY?Traffic_Light_Control?IS ???PORT?( ??????clk?????:?IN?STD_LOGIC;--50Mhz reset??????????:?IN?STD_LOGIC;--復(fù)位 ??????key_1??????????:?IN?STD_LOGIC;--正常狀態(tài)按鍵 ??????key_2??????????:?IN?STD_LOGIC;--高峰狀態(tài)按鍵 ??????key_3??????????:?IN?STD_LOGIC;--夜晚狀態(tài)按鍵 ??????sw1????????????:?IN?STD_LOGIC;--主路報(bào)警開關(guān) ??????sw2????????????:?IN?STD_LOGIC;--支路報(bào)警開關(guān) ??????beep????????????:?OUT?STD_LOGIC;--報(bào)警蜂鳴器 ??????red_1??????????:?OUT?STD_LOGIC;--主路燈 ??????green_1????????:?OUT?STD_LOGIC;--主路燈 ??????yellow_1???????:?OUT?STD_LOGIC;--主路燈 ??????red_2??????????:?OUT?STD_LOGIC;--支路燈 ??????green_2????????:?OUT?STD_LOGIC;--支路燈 ??????yellow_2???????:?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í)改小為50加快仿真速度,實(shí)際上板驗(yàn)證時(shí)改為50000000 ???PORT(CLK:?IN?STD_LOGIC; ?????????DAV:?OUT?STD_LOGIC); ???END?COMPONENT; --交通燈控制模塊 COMPONENT?Traffic_Light_ctrl?IS ???PORT?( ??????clk????????????:?IN?STD_LOGIC; ??????reset??????????:?IN?STD_LOGIC; ??????clk_1Hz????????:?IN?STD_LOGIC;--1Hz信號(hào) ??????key_1??????????:?IN?STD_LOGIC;--正常狀態(tài)按鍵 ??????key_2??????????:?IN?STD_LOGIC;--高峰狀態(tài)按鍵 ??????key_3??????????:?IN?STD_LOGIC;--夜晚狀態(tài)按鍵 ??????sw1????????????:?IN?STD_LOGIC;--主路報(bào)警開關(guān) ??????sw2????????????:?IN?STD_LOGIC;--支路報(bào)警開關(guān) beep????????????:?OUT?STD_LOGIC;--報(bào)警蜂鳴器 ??????red_1??????????:?OUT?STD_LOGIC;--主路燈 ??????green_1????????:?OUT?STD_LOGIC;--主路燈 ??????yellow_1???????:?OUT?STD_LOGIC;--主路燈 ??????red_2??????????:?OUT?STD_LOGIC;--支路燈 ??????green_2????????:?OUT?STD_LOGIC;--支路燈 ??????yellow_2???????:?OUT?STD_LOGIC;--支路燈 ??????main_time??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--主路倒計(jì)時(shí) ??????branch_time????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--支路倒計(jì)時(shí) ???); 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; ???SIGNAL?clk_1??????:?STD_LOGIC; ???SIGNAL?main_time????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?branch_time????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
設(shè)計(jì)文檔(文檔點(diǎn)擊可下載):
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 管腳分配
6. Testbench
7. 仿真圖
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=182