交通燈控制電路設計

2021-10-05 14:28:49 字數 4365 閱讀 8761

交通燈控制電路設計

一、實驗目的

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.基本邏輯 任意時刻,只能有一組訊號燈保持亮的狀態,右轉車輛不受訊...