交通燈控制電路設計
一、實驗目的
1.掌握一般狀態機的設計與應用。
2.掌握交通燈的亮滅規律和控制器的工作原理。
3.進一步熟悉
vhdl 語言程式設計,了解實際設計中的優化方案。
二、實驗內容
1.實驗前完成交通燈控制電路程式的編寫。內容是設計乙個簡單的交通燈控制器,交通燈顯示用實驗箱的交通燈模組來顯示。系統時鐘選擇時鐘模組的 1hz時鐘,黃燈閃爍時鐘要求為1hz,紅燈15s,黃燈 5s,綠燈15s。系統中用 cpu板上的復位按鍵進行復位。
2.本實驗需要用到實驗箱上交通燈模組中的發光二極體,即紅、黃、綠各三個。其交通燈的亮滅規律為:初始態是兩個路口的紅燈全亮,之後東西路口的綠燈亮,南北路口的紅燈亮,東西方向通車,延時一段時間後,東西路口綠燈滅,黃燈開始閃爍。閃爍若干次後,東西路口紅燈亮,而同時南北路口的綠燈亮,南北方向開始通車,延時一段時間後,南北路口的綠燈滅,黃燈開始閃爍。閃爍若干次後,再切換到東西路口方向,重複上述過程。
4.功能選擇位 m[3…0]狀態均為0111,則16位資料線和交通燈控制電路相連線。clk_1,即對應 io3(用導線連線
io3 與 adj_clk,調整 sw17-sw20,使輸出頻率為1hz)
實驗**
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity traffic_light is
generic
( green1:integer:=15
;--定義東西綠燈亮15s
yellow1 :integer:=5
;--定義東西黃燈亮5s
green2:integer:=15
;--定義南北綠燈亮15s
yellow2 :integer:=5
);--定義南北黃燈亮5s
port
(clk,rst: in std_logic;
w_r,w_y,w_g,e_r,e_y,e_g,n_r,n_y,n_g,s_r,s_y,s_g: out std_logic
); end traffic_light;
architecture rtl of traffic_light is
type states is (st0,st1,st2,st3,st4)
;--定義控制器各種狀態
signal state:states:
=st4;
--初始化狀態
signal cnt:integer range 0 to 15
;--定義計數器
signal cnt_enb:std_logic:
='0';--
-初始化計數器使能訊號
begin
aa:process
(clk,rst)
begin
if(rst=
'1') then state<=st4;
cnt<=1;
elsif (clk'event and clk='
1') then
if(cnt_enb=
'1') then
cnt<=cnt+1;
--計數器計數
else cnt<=
1; end if
; case state is
when st4=
>state<=st0;
when st0=
>
if(cnt=green1 ) then
state<=st1;
--東西綠燈時間到
else state<=st0; endif;
when st1=
>
if(cnt=yellow1 ) then
state<=st2;
--東西黃燈時間到
else state<=st1; endif;
when st2=
>
if(cnt=green2 ) then
state<=st3;
--南北綠燈時間到
else state<=st2; endif;
when st3=
>
if(cnt=yellow2 ) then
state<=st0;
--南北黃燈時間到
else state<=st3; end
if;
end case
; end if
; end
process aa;
bb:process
(state)
begin
case
state is
when
st0=
> w_r<=
'0'; w_y<=
'0';
w_g<=
'1';e_r<=
'0';e_y<=
'0';e_g<=
'1';
--東西綠燈亮
s_r<=
'1'; s_y<=
'0';
s_g<=
'0';n_r<=
'1';n_y<=
'0';n_g<=
'0';cnt_enb<=
'1';
--南北紅燈亮
if(cnt=green1) then cnt_enb<=
'0'; end
if;
when
st1=
> w_r<=
'0'; w_y<=
'1';
w_g<=
'0';e_r<=
'0';e_y<=
'1';e_g<=
'0';
--東西黃燈亮
s_r<=
'1'; s_y<=
'0';
s_g<=
'0';n_r<=
'1';n_y<=
'0';n_g<=
'0';cnt_enb<=
'1';
--南北紅燈亮
if(cnt=yellow1) then cnt_enb<=
'0'; end
if;
when
st2=
> w_r<=
'1'; w_y<=
'0'; w_g<=
'0';e_r<=
'1';e_y<=
'0';e_g<=
'0';
--東西紅燈亮
s_r<=
'0'; s_y<=
'0';
s_g<=
'1';n_r<=
'0';n_y<=
'0';n_g<=
'1';cnt_enb<=
'1';
--南北綠燈亮
if(cnt=green2) then cnt_enb<=
'0'; end
if;
when
st3=
> w_r<=
'1'; w_y<=
'0';
w_g<=
'0';e_r<=
'1';e_y<=
'0';e_g<=
'0';
--東西紅燈亮
s_r<=
'0'; s_y<=
'1';
s_g<=
'0';n_r<=
'0';n_y<=
'1';n_g<=
'0';cnt_enb<=
'1';
--南北黃燈亮
if(cnt=yellow2) then cnt_enb<=
'0'; endif;
when st4=
> w_r<=
'1'; w_y<=
'0';
w_g<=
'0';e_r<=
'1';e_y<=
'0';e_g<=
'0';
--東西紅燈亮
s_r<=
'1'; s_y<=
'0';
s_g<=
'0';n_r<=
'1';n_y<=
'0';n_g<=
'0';cnt_enb<=
'1';
--南北紅燈亮
if(rst=
'1')then cnt_enb<=
'0';end if
;end case
;end
process bb;
end rtl;
交通燈控制
問題描述,十字路,東西方向和南北方向燈,綠20s黃5s紅25s,倒計時顯示時間,另外,警車救護車等特殊狀態,都顯紅燈,且時間顯示不斷閃爍,通過之後,恢復原狀態。以下是我編寫的源 library ieee use ieee.std logic 1164.all use ieee.std logic u...
eda交通燈控制器波形輸入 EDA交通燈控制器設計
很高 實驗五十字路 通燈控制器設計 一 實驗目的 進一步加強經典狀態機的設計 學會設計模可變倒計時計數器 二 實驗要求 一條主幹道,一條鄉間公路。組成十字路口,要求優先保證主幹道通行。有 mr 主紅 my 主黃 mg 主綠 cr 鄉紅 cy 鄉黃 cg 鄉綠 六盞交 通燈需要控制 交通燈由綠 紅有 ...
黑馬程式設計師 交通燈控制系統
asp.net unity開發 net培訓 期待與您交流!交通燈管理系統 一.專案需求 二.需求分析 1 交通訊號燈控制器的分析 1基本概念 將兩個方向對立的訊號燈歸為一組,如南訊號燈和北訊號燈為一組,東南訊號燈和西北訊號燈為一組 2.基本邏輯 任意時刻,只能有一組訊號燈保持亮的狀態,右轉車輛不受訊...