交通訊號燈控制系統的Verilog實現

2021-10-08 05:03:04 字數 3722 閱讀 8988

交通訊號燈控制系統的verilog實現

作為數字系統設計入門案例,下面簡單介紹最簡單的交通控制系統,說明設計思路。

首先給出要求:設計乙個主幹道和支幹道十字路口的交通訊號燈控制電路

(1)一般情況下保持主幹道通暢,主幹道綠燈亮、支幹道紅燈亮,並且主幹道綠燈亮時間不少於60秒。

(2)主幹道綠燈亮超過60秒,且支幹道有車時,主幹道紅燈亮,支幹道綠燈亮,但支幹道亮燈時間不超過30秒。

(3)每次主幹道或支幹道綠燈變紅燈時,黃燈先亮5秒。

1.邏輯抽象,明確輸入輸出。

主幹道和支幹道的十字路**通燈系統求優先保證主幹道的暢通。平時處於主幹道綠燈、支幹道紅燈的狀態。當支幹道有車時,感測器發出訊號s=1,主幹道綠燈先轉換成黃燈、再變成紅燈,支幹道由紅燈變成綠燈。如果支幹道繼續有車通過時,則感測器繼續有訊號,使支幹道保持綠燈亮,但支幹道綠燈持續亮的時間不得超過30s,否則支幹道綠燈先轉換成黃燈再變成紅燈,同時主幹道由紅燈變成綠燈。主幹道每次通行時間不得短於60s,在此期間,即使支幹道s有訊號,也不能中止主幹道的綠燈亮。

輸入訊號有時鐘、復位、感測器訊號;輸出有主幹道紅黃綠燈和支幹道紅黃綠燈。

2.確定系統框圖

首先用狀態機作為主控制,狀態機轉換條件根據計時器資訊判斷轉換條件,解碼電路中根據所在狀態輸出對應幹道訊號燈狀態。

控制單元根據時鐘和感測訊號向計數器發出訊號,計時器向控制單元發出60s(t1)、30s(t2)、5s(t3)計時訊號。主幹道紅黃綠用h_r,h_y,h_g表示,支幹道紅黃綠用f_r,f_y,f_g表示。

因此,用計時分別產生三個持續的時間段後,向控制單元發出時間已到訊號,控制單元根據計時器及感測器的訊號,決定是否進行狀態轉換。如果肯定,則控制單元發出狀態轉換訊號st,計時器開始清零,準備重新計時。

交通燈控制單元的控制過程分為四個階段,對應的輸出有四種狀態,分別用s0、s1、s2和s3表示:

s0狀態主幹道綠燈亮支幹道紅燈亮,此時若支幹道有車等待通過,而且主幹道綠燈已亮足規定的時間t1,控制器發出狀態轉換訊號st,輸出從狀態s0轉換到s1 **換條件:綠燈亮夠60s且檢測到支幹道有車即t1&&s=1

s1狀態主幹道黃燈亮,支幹道紅燈亮,進人此狀態,黃燈亮足規定的時間t3時,控制器發出狀態轉換訊號st,輸出從狀態s1轉換到s2。 **換條件:黃燈亮夠5s就轉換狀態即t3=1

s2狀態支幹道綠燈亮,主幹道紅燈亮,若此時支幹道繼續有車,則繼續保持此狀態,但支幹道綠燈亮的時間不得超過t2,否則控制單元發出狀態轉換訊號st,使輸出轉換到s3狀態。若此時支幹道沒有車,則控制單元立即發出狀態轉換訊號st,使輸出轉換到s3狀態。

**換條件:支幹道綠燈亮夠30s或者檢測到支幹道沒車即t2+(~s)=1

s3狀態支幹道黃燈亮,主幹道紅燈亮,此時狀態與s1狀態持續的時間相同均為t3,時間到時,控制器發出st訊號,輸出從狀態s3回到s0狀態。對上述s0、s1、s2和s3四種狀態按照格雷碼進行編碼分別為00,01,11和10。

/控制狀態機/

計時部分採用2個暫存器代表十位(t_h)和個位(t_l)計數,同時每次檢測到轉換訊號都要清零重新計時

always@(posedge clk or negedge rst)   //計時模組

begin

if(!rst)

<=8'd0;

else if(st) //控制訊號有效說明燈的顏色改變重新計數

<=8'd0;

else if((t_h==4'd5)&(t_l==4'd9)) //判斷是否計數到60

begin

<=

;

endelse if(t_l==4'd9) //判斷個位是否計數滿,是則十位加一

begin

t_h<=t_h+1'b1;

t_l<=4'd0;

endelse begin

t_h<=t_h;

t_l<=t_l+1'b1;

endend

assign t3=

(t_h==4'd0)&(t_l==4'd4)

; //主幹道綠燈計數時間

assign t2=

(t_h==4'd2)&(t_l==4'd9)

; // 支幹道綠燈計數時間

assign t1=

(t_h==4'd5)&(t_l==4'd9)

; //黃燈計數時間

解碼部分根據狀態機所在狀態輸出對應訊號燈狀態

always@(current_state)

begin

case(current_state)

s0: begin

=3'b100; //主幹道綠燈

=3'b001; //支幹道紅燈

ends1: begin

=3'b010; //主幹道黃燈

=3'b001; //支幹道紅燈

ends2: begin

=3'b001; //主幹道紅燈

=3'b100; //支幹道綠燈

end

s3: begin

=3'b001; //主幹道紅燈

=3'b010; //支幹道黃燈

**結果圖

總結:本文設計較簡單,對於複雜交通還需改善,但是能夠從中慢慢建立對系統架構的認知和聯絡,從中理清各模組間關係。後續還需多查資料研究,如有錯誤不合理之處,請告知。

交通訊號燈實訓裝置 交通訊號燈實訓系統裝置

zn znsdhx交通訊號燈實訓裝置 交通訊號燈實訓系統裝置 一 概述 本裝置是plc學習中典型的執行機構,本裝置可模擬複雜的十字路 通訊號控制系統,包括車輛直行 行人直行 過街手動按鈕等的邏輯控制。二 主要特點 1 直觀的環境介面,便於操作和理解。2 可做複雜交通環境的現場模擬。三 效能引數 3 ...

微控制器交通訊號燈程式

微控制器交通燈程式,黃燈閃6次轉紅燈1分,然後黃燈6次轉綠燈1分鐘 str acall yello mov a,81h mov p1,a acall deone acall yello mov a,24h mov p1,a acall deone jmp str yello mov r4,6 yel...

微機課設 交通訊號燈自動控制模擬指示系統

乙個很水的課設,發出來給學弟學妹們參考參考 採用mfc完成,vs2008環境下編譯執行正常。對於數碼管用單獨執行緒維護重新整理,由於重新整理延時小於1ms,用的是while作為延時,所以不能用release模式,只能debug 系統有自動模式,手動模式,夜間模式,路人模式 行人控制,可參考 23 0...