• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      利用有限狀態(tài)機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)與仿真

      2011-05-21 00:41:46馮競(jìng)楠
      電子設(shè)計(jì)工程 2011年12期
      關(guān)鍵詞:交通燈狀態(tài)機(jī)倒計(jì)時(shí)

      馮競(jìng)楠

      (陜西科技大學(xué) 陜西 西安 710021)

      實(shí)現(xiàn)路口交通燈控制器系統(tǒng)的方法很多,可以用標(biāo)準(zhǔn)邏輯器件、可編程序控制器PLC、單片機(jī)等方案來(lái)實(shí)現(xiàn)。但是這些方法在進(jìn)行功能修改及調(diào)試時(shí),都涉及硬件電路的調(diào)整,在一定程度上增加了工作的難度。隨著電子技術(shù)的迅猛發(fā)展,集成電路的設(shè)計(jì)方法也在不斷地更新,傳統(tǒng)的“固定功能集成電路+連線”的手工電子設(shè)計(jì)方法已被現(xiàn)代的對(duì)“芯片”進(jìn)行設(shè)計(jì)的電子設(shè)計(jì)自動(dòng)化(EDA)的設(shè)計(jì)方法所替代[1-3],使用“語(yǔ)言”進(jìn)行電子電路設(shè)計(jì)已成為一種趨勢(shì)。筆者設(shè)計(jì)開(kāi)發(fā)的交通信號(hào)燈控制器系統(tǒng),采用EDA技術(shù)和可編程邏輯器件FPGA,應(yīng)用VHDL有限狀態(tài)機(jī)來(lái)設(shè)計(jì)控制系統(tǒng)的控制功能,并可根據(jù)實(shí)際情況對(duì)燈亮?xí)r間進(jìn)行自由調(diào)整,整個(gè)系統(tǒng)通過(guò)QuartusⅡ軟件平臺(tái)進(jìn)行了仿真,并下載到FPGA器件EP1C12Q240C8中進(jìn)行調(diào)試,驗(yàn)證了設(shè)計(jì)的交通信號(hào)燈控制電路完全可以實(shí)現(xiàn)預(yù)定的功能。該系統(tǒng)可以較好地緩解交通壓力,并可實(shí)現(xiàn)對(duì)突發(fā)事件進(jìn)行緊急處理,具有一定的實(shí)用性。

      1 有限狀態(tài)機(jī)的基本特性

      有限狀態(tài)機(jī)FSM(finite state machine)由有限的狀態(tài)及其相互之間的轉(zhuǎn)移關(guān)系構(gòu)成。從有限狀態(tài)機(jī)的角度看,許多數(shù)字系統(tǒng)中的時(shí)序電路都可以用其來(lái)描述,因此,有限狀態(tài)機(jī)是一種重要的、易于建立的、比較規(guī)范、以描述控制特性為主的建模方法,它可以應(yīng)用于從系統(tǒng)分析到設(shè)計(jì)的所有階段。同時(shí),因?yàn)橛邢逘顟B(tài)機(jī)具有有限個(gè)狀態(tài),所以可以在實(shí)際的工程上實(shí)現(xiàn)。但這并不意味著其只能進(jìn)行有限次的處理。相反,有限狀態(tài)機(jī)是閉環(huán)系統(tǒng),可以用有限的狀態(tài),處理無(wú)窮的事務(wù)。

      在用VHDL語(yǔ)言來(lái)設(shè)計(jì)實(shí)用系統(tǒng)的控制功能時(shí),通常會(huì)選用有限狀態(tài)機(jī)方法來(lái)實(shí)現(xiàn),因?yàn)闊o(wú)論與VHDL的其他設(shè)計(jì)方案相比,還是與可完成相同功能的CPU相比,有限狀態(tài)機(jī)有其獨(dú)特的、難以超越的優(yōu)越性,主要表現(xiàn)在以下幾個(gè)方面[4]:

      1)有限狀態(tài)機(jī)由純硬件來(lái)實(shí)現(xiàn),工作方式是根據(jù)控制信號(hào)按照預(yù)先設(shè)定的狀態(tài)進(jìn)行順序運(yùn)行,在運(yùn)行和控制方式上類似于控制靈活和方便的CPU,而在設(shè)計(jì)中能使用各種完整的容錯(cuò)技術(shù),使其在運(yùn)行速度和工作可靠性方面又都優(yōu)于CPU。

      2)用VHDL設(shè)計(jì)有限狀態(tài)機(jī),設(shè)計(jì)流程和方案相對(duì)固定,程序?qū)哟畏置鳎绦蚪Y(jié)構(gòu)簡(jiǎn)單清晰,特別是可以定義符號(hào)化枚舉類型的狀態(tài),使VHDL綜合器對(duì)狀態(tài)機(jī)具有強(qiáng)大的優(yōu)化功能。

      3)狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序模塊,為了消除電路中的毛刺現(xiàn)象,在有限狀態(tài)機(jī)設(shè)計(jì)中有多種設(shè)計(jì)方案可供選擇,相比其他硬件設(shè)計(jì)方法,電路的完善性更能得到保證。

      因此,在控制靈活、高速、高可靠性要求的系統(tǒng)設(shè)計(jì)中應(yīng)用VHDL設(shè)計(jì)有限狀態(tài)機(jī)將是非常實(shí)用的選擇。

      利用VHDL的有限狀態(tài)機(jī)設(shè)計(jì)不同實(shí)用邏輯控制系統(tǒng)時(shí),通常采用枚舉類型來(lái)定義狀態(tài)機(jī)的狀態(tài),這樣可以獲得可綜合的、高效的VHDL描述,并且使用多進(jìn)程方式來(lái)描述狀態(tài)機(jī)的內(nèi)部邏輯。例如:可用兩個(gè)進(jìn)程來(lái)描述,一個(gè)進(jìn)程描述時(shí)序邏輯功能,通常稱為時(shí)序進(jìn)程;另一個(gè)進(jìn)程描述組合邏輯功能,即組合進(jìn)程,必要時(shí)還可以引入第3個(gè)進(jìn)程完成其他的邏輯功能,另外還需要相應(yīng)的說(shuō)明部分,在說(shuō)明部分用TYPE定義新的數(shù)據(jù)類型和狀態(tài)名,以及在此新數(shù)據(jù)下定義的狀態(tài)變量[5]。

      2 基于有限狀態(tài)機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)

      2.1 功能分析

      作為一個(gè)十字路口交通信號(hào)燈控制系統(tǒng),每條道路都需要有一組紅、綠、黃燈和倒計(jì)時(shí)計(jì)數(shù)器,用于指揮車輛的有序通行。為便于區(qū)分,將十字路口交通信號(hào)燈分為主路a和支路b,應(yīng)具有以下功能:

      1)主路a和支路b各設(shè)置兩組(雙向)紅燈、綠燈、黃燈,以指示通行狀態(tài);同時(shí)還設(shè)置數(shù)字式的時(shí)間顯示,以倒計(jì)時(shí)方式顯示每一路允許通行或禁止通行的剩余時(shí)間。

      2)具有復(fù)位功能,當(dāng)出現(xiàn)故障時(shí),可復(fù)位回到初始設(shè)置狀態(tài)。

      3)當(dāng)主路a或支路b出現(xiàn)緊急情況時(shí),按緊急情況鍵可進(jìn)入緊急情況狀態(tài),各方向(兩路)均亮紅燈,倒計(jì)時(shí)停止。當(dāng)特殊情況結(jié)束時(shí),控制其恢復(fù)到電路的原來(lái)狀態(tài)繼續(xù)運(yùn)行。

      4)主路a或支路b的通行時(shí)間可在一定范圍自定義設(shè)置。

      2.2 交通燈控制系統(tǒng)整體設(shè)計(jì)

      按照功能分析的要求,自頂向下,設(shè)計(jì)交通燈控制系統(tǒng)的整體組成框圖如圖1所示,它主要由分頻模塊,交通燈控制與倒計(jì)時(shí)模塊和動(dòng)態(tài)掃描顯示控制模塊組成。分頻電路用于產(chǎn)生倒計(jì)時(shí)控制電路所需的周期為1 s的時(shí)鐘信號(hào)頻率;倒計(jì)時(shí)控制電路控制交通信號(hào)燈(紅、綠、黃)的亮燈時(shí)間和亮燈順序。根據(jù)對(duì)VHDL的使用熟悉程度,可對(duì)各模塊繼續(xù)分解,可視情而定。

      圖1 交通燈控制系統(tǒng)整體組成框圖Fig.1 Block diagram of traffic light control system

      2.3 控制與倒計(jì)時(shí)模塊的有限狀態(tài)機(jī)設(shè)計(jì)2.3.1 建立狀態(tài)轉(zhuǎn)移圖

      在交通燈控制系統(tǒng)中,交通燈控制與倒計(jì)時(shí)模塊是系統(tǒng)的核心部分,采用有限狀態(tài)機(jī)設(shè)計(jì)實(shí)現(xiàn)。主路a和支路b分別控制該方向上紅、綠、黃信號(hào)燈的亮燈時(shí)間和亮燈順序,正常工作時(shí)共有St0、St1、St2、St3 4種狀態(tài),每個(gè)狀態(tài)之間的具體關(guān)系如表 1 所示,其中,red1_cnt、green1_cnt、yellow1_cnt和red2_cnt、green2_cnt、yellow2_cnt分別表示主路 a和支路 b 上紅綠黃燈所亮燈的時(shí)間,這里可自己定義倒計(jì)時(shí)時(shí)間。其狀態(tài)轉(zhuǎn)換圖如圖2所示。cnt為倒計(jì)時(shí)的計(jì)數(shù)值,同時(shí)用它來(lái)判斷是否進(jìn)入下一個(gè)狀態(tài)。

      表1 交通燈狀態(tài)控制關(guān)系表Tab.1 Relationship of traffic light state control

      圖2 交通燈控制與倒計(jì)時(shí)模塊的狀態(tài)轉(zhuǎn)移圖Fig.2 State transfer of traffic light control and count down module

      2.3.2 控制與倒計(jì)時(shí)模塊的VHDL描述

      用VHDL設(shè)計(jì)有限狀態(tài)機(jī)并沒(méi)有固定的格式,但需要遵循一定的編碼風(fēng)格。一般采用進(jìn)程(process)描述,有限狀態(tài)機(jī)描述方式有如下3種:三進(jìn)程描述、雙進(jìn)程描述和單進(jìn)程描述。這里采用雙進(jìn)程描述:一個(gè)是時(shí)鐘進(jìn)程,控制狀態(tài)機(jī)在時(shí)鐘有效沿,根據(jù)時(shí)鐘有效沿和某些輸入信號(hào)條件得到下一狀態(tài)并進(jìn)行狀態(tài)遷移;另一個(gè)是組合進(jìn)程,不受時(shí)鐘控制,由輸出相關(guān)的信號(hào)觸發(fā),該進(jìn)程根據(jù)觸發(fā)信號(hào)決定狀態(tài)機(jī)的輸出信號(hào)值[6],即通過(guò)簡(jiǎn)便地定義狀態(tài)變量,將狀態(tài)描述成進(jìn)程,每個(gè)狀態(tài)均可表達(dá)為CASE_WHEN語(yǔ)句結(jié)構(gòu)中的一條CASE語(yǔ)句,狀態(tài)的轉(zhuǎn)移通過(guò)IF_THEN_ELSE語(yǔ)句實(shí)現(xiàn)[7],并輸出信號(hào)以控制其他進(jìn)程,從而實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)移。

      在時(shí)序進(jìn)程中,狀態(tài)機(jī)是隨時(shí)鐘脈沖信號(hào)clk以同步方式工作,同時(shí)還受異步復(fù)位信號(hào)rst的控制。在rst=1時(shí),狀態(tài)機(jī)復(fù)位,當(dāng)rst=0(復(fù)位無(wú)效)而clk發(fā)生變化時(shí),狀態(tài)機(jī)的狀態(tài)發(fā)生變化,轉(zhuǎn)向狀態(tài)機(jī)的下一狀態(tài);在組合進(jìn)程中,狀態(tài)機(jī)根據(jù)外部輸入的控制信號(hào) (如hold),以及來(lái)自狀態(tài)機(jī)內(nèi)部(如cnt)信號(hào),或當(dāng)前狀態(tài)機(jī)的狀態(tài)值,確定其下一狀態(tài)的走向。

      基于有限狀態(tài)機(jī)的VHDL交通燈控制與倒計(jì)時(shí)模塊的源程序的實(shí)體和結(jié)構(gòu)體部分如下:

      ENTITY rgy IS

      PORT(clk,hold,rst:IN STD_LOGIC;

      light:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);

      a,b:OUT INTEGER RANGE 0 TO 35 );

      END rgy;

      ARCHITECTURE rtl OF rgy IS

      TYPE states IS (st0,st1,st2,st3);

      SIGNAL state :STATES:=st0;

      SIGNAL cnt :INTEGER RANGE 0 TO 35:=1;--cnt

      計(jì)數(shù)值

      SIGNAL cnt_enb :STD_LOGIC:='0';--cnt_enb 計(jì) 數(shù)的使能端

      BEGIN PROCESS(clk,rst) --狀態(tài)機(jī)的時(shí)序進(jìn)程(控制狀態(tài)的轉(zhuǎn)換)

      BEGIN

      IF(rst='1')THEN state<=st0; cnt<=1; --清零部分

      ELSIF(rising_edge(clk))THEN

      IF(cnt_enb='1')THEN

      IF(hold='0')THEN cnt<=cnt+1; --緊急情況的倒計(jì)時(shí)計(jì)數(shù)處理

      ELSE cnt<=cnt;

      END IF;

      ELSE cnt<=1;

      END IF;

      CASE state IS

      WHEN st0=>IF(cnt=green1_cnt)THEN state<=st1;

      ELSE state<=st0;

      END IF;

      WHEN st1=>……

      WHEN st2=>……

      WHEN st3=> IF (cnt=yellow2_cnt)THEN

      state<=st0;

      ELSE state<=st3;

      END IF;

      END CASE;

      END IF;

      END PROCESS;

      PROCESS(state,cnt,hold) --狀態(tài)機(jī)的組合邏輯進(jìn)程

      VARIABLE counta,countb:integer range 0 to 35;

      BEGIN

      IF (hold='1')THEN light<="100100";--緊急情況燈信號(hào)的處理

      ELSE

      CASE state IS --各個(gè)狀態(tài)的邏輯處理

      WHEN st0=>light<="001100";--該狀態(tài)下燈的信號(hào)賦值

      cnt_enb<='1'; --開(kāi)啟計(jì)數(shù),開(kāi)始倒計(jì)時(shí)

      counta:=green1_cnt;--給主路倒計(jì)時(shí)賦初值

      countb:=red2_cnt;--支路倒計(jì)時(shí)賦初值

      IF (cnt=green1_cnt)THEN--當(dāng) cnt計(jì)數(shù)滿足該狀態(tài)下的時(shí)間長(zhǎng)度 則進(jìn)入下一狀態(tài)

      cnt_enb<='0'; --- --停止計(jì)數(shù),進(jìn)入下一狀態(tài)開(kāi)始計(jì)數(shù)

      END IF;

      WHEN st1=>light<="010100";

      ……

      WHEN st2=>light<="100001";

      ……

      WHEN st3=>light<="100010";

      ……

      END CASE;

      END IF;

      a<=counta-cnt;b<=countb-cnt; --給倒計(jì)時(shí)賦值

      END PROCESS;

      END rtl;

      將編譯后的程序進(jìn)行仿真,得到交通燈控制與倒計(jì)時(shí)模塊仿真波形圖如圖3所示。由仿真波形可以看出,交通燈按St0→St1→St2→St3→St0順序進(jìn)行狀態(tài)循環(huán)。light按主路紅、主路黃、主路綠、支路紅、支路黃、支路綠的順序排列。如在St0狀態(tài)下,light的值為“001100”,當(dāng)hold緊急情況信號(hào)為高電平時(shí),主路、支路均亮紅燈,并且停止倒計(jì)時(shí)。當(dāng)rst復(fù)位信號(hào)為高電平時(shí),恢復(fù)到初態(tài)。

      3 頂層文件的設(shè)計(jì)及仿真

      將分頻模塊和顯示控制模塊均分別用VHDL進(jìn)行編程、仿真,檢查其功能正確性,并包裝元件入庫(kù)建立元件符號(hào)。

      在上述3個(gè)模塊設(shè)計(jì)完成之后,按照?qǐng)D1所示電路結(jié)構(gòu),用原理圖輸入方式進(jìn)行連接,構(gòu)成交通燈控制系統(tǒng)的頂層文件,并在Quartus II平臺(tái)上進(jìn)行編譯、仿真,引腳鎖定,得到仿真波形如圖 4 所示,圖中信號(hào) light、a(b)、dec7sa(dec7sb)分別用二進(jìn)制、十進(jìn)制、十六進(jìn)制表示。

      圖3 交通燈控制與倒計(jì)時(shí)模塊仿真波形Fig.3 Simulation results for traffic light control and count down module

      圖4 交通燈控制系統(tǒng)仿真波形Fig.4 Simulation results for traffic light control system

      從仿真波形中可以看出:當(dāng)復(fù)位信號(hào)rst=1有效時(shí),電路復(fù)位,此時(shí)light復(fù)位為“001100”狀態(tài),置a方向和 b方向計(jì)數(shù)器為最大值24和29;當(dāng)rst=0無(wú)效,緊急信號(hào)hold=1有效時(shí),light為 “100100”表示兩路紅燈均亮的狀態(tài);當(dāng)rst=0,hold=0時(shí),恢復(fù)電路原來(lái)的 light為“001100”狀態(tài),a和 b進(jìn)行倒計(jì)時(shí)計(jì)數(shù)。7段顯示譯碼器a方向的dec7sa和b方向的dec7sb分別顯示計(jì)數(shù)器a和b的數(shù)值,如當(dāng)a計(jì)數(shù)到21時(shí),dec7sa的高位 2和低位 1的 0gfedcba=01011011B (5B)和00000110 B(06),即 5B06,同理當(dāng) b 計(jì)數(shù)到 26 時(shí),dec7sb 的值為5B7D,所以交通燈控制系統(tǒng)的仿真結(jié)果完全正確。

      最后將頂層文件下載到可編程邏輯器件EP1C12Q240C8中,經(jīng)測(cè)試,交通燈控制系統(tǒng)正常工作,完全符合設(shè)計(jì)要求。

      4 結(jié)束語(yǔ)

      有限狀態(tài)機(jī)及其設(shè)計(jì)技術(shù)是數(shù)字系統(tǒng)中實(shí)現(xiàn)高效率、高可靠性邏輯控制的重要途徑[7]。在交通燈控制系統(tǒng)設(shè)計(jì)中,通過(guò)對(duì)控制功能的分析和實(shí)際狀態(tài)的選擇,把交通燈的控制歸納為4種工作狀態(tài),并建立狀態(tài)轉(zhuǎn)移關(guān)系,較為準(zhǔn)確、直觀的反映了實(shí)際需求。在用VHDL語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)交通燈控制系統(tǒng)時(shí),既有傳統(tǒng)的基于邏輯單元構(gòu)建的整體組成結(jié)構(gòu)方式,也有利用純軟件編程實(shí)現(xiàn)的邏輯模塊。設(shè)計(jì)方法靈活、實(shí)現(xiàn)簡(jiǎn)單、性能穩(wěn)定的特點(diǎn)。

      以上有限狀態(tài)機(jī)的設(shè)計(jì)方法具有通用性,對(duì)于較為復(fù)雜的有限狀態(tài)機(jī)可采用多個(gè)進(jìn)程,分別完成任意復(fù)雜組合邏輯和時(shí)序邏輯,包括進(jìn)程間狀態(tài)值的傳遞以及狀態(tài)轉(zhuǎn)換值的輸出,對(duì)類似含有邏輯控制功能的系統(tǒng),通過(guò)自頂向下設(shè)計(jì)、分步實(shí)現(xiàn),是切實(shí)可行的方法。

      [1]周飚,謝曉陽(yáng).有限狀態(tài)機(jī)在RTC設(shè)計(jì)中的分析與應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008(5):77-78.ZHOU Biao,XIE Xiao-yang.Analysis and application of finite state machine in RTC design[J].Computer Systems &Applications, 2008(5):77-78.

      [2]胡星,唐皓.基于CPLD的道路交通自動(dòng)控制系統(tǒng)[J].自動(dòng)化技術(shù)與應(yīng)用,2009(2):92-94.HU Xing, TANG Hao.Traffic light control based on CPLD[J].Techniques of Automation & Applications, 2009(2):92-94.

      [3]蔡軍,曹慧英.智能交通燈控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].重慶郵電學(xué)院學(xué)報(bào),2004(6):129-132.CAI Jun,CAO Hui-ying.Design and implementation of intelligent traffic light control system[J].Journal of Chongqing UniversityofPostsandTelecommunications, 2004(6):129-132.

      [4]李云,馮永浩,孟濤.基于VHDL有限狀態(tài)機(jī)控制器的設(shè)計(jì)方法[J].微計(jì)算機(jī)信息,2010(5-1):74-75,103.LI Yun, FENG Yong-hao, MENG Tao.A controller design method based on VHDL Finite state machine[J].Microcomputer Information, 2010(5-1):74-75,103.

      [5]聶茹.基于Multisim10的十字路口交通燈控制器的設(shè)計(jì)與仿真[J].現(xiàn)代電子技術(shù),2010(33-11):179-181.NIE Ru.Design and simulation of traffic lights controller at the crossroads based on multisim10[J].Modern Electronics Technique, 2010(33-11):179-181.

      [6]徐春嬌.基于VHDL狀態(tài)機(jī)設(shè)計(jì)的智能交通控制[J].電子設(shè)計(jì)工程,2007(6-2):31-35,39.XUChun-jiao.VHDLstatemachinebasedintelligenttrafficlight[J].Electronic Design Engineering, 2007(6-2):31-35,39.

      [7]王振紅.VHDL數(shù)字電路設(shè)計(jì)與應(yīng)用實(shí)踐教程[M].北京:機(jī)械工業(yè)出版社,2006.

      猜你喜歡
      交通燈狀態(tài)機(jī)倒計(jì)時(shí)
      基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
      基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)
      一直飄紅的交通燈
      基于單片機(jī)的LED模擬交通燈設(shè)計(jì)
      電子制作(2016年21期)2016-05-17 03:52:44
      基于protues仿真的交通燈即時(shí)控制的一種實(shí)現(xiàn)
      河南科技(2014年11期)2014-02-27 14:09:57
      FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
      基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
      基于VHDL的一個(gè)簡(jiǎn)單Mealy狀態(tài)機(jī)
      辰溪县| 花莲县| 黄骅市| 莱州市| 广安市| 紫云| 东明县| 景宁| 合水县| 桑日县| 岐山县| 柯坪县| 柳河县| 永善县| 临夏市| 石门县| 濮阳县| 洪泽县| 宁夏| 韩城市| 滨海县| 临桂县| 许昌市| 岫岩| 民丰县| 关岭| 全南县| 友谊县| 济源市| 贵港市| 景洪市| 濉溪县| 天镇县| 屯门区| 阳江市| 类乌齐县| 龙井市| 榆树市| 夹江县| 吉安县| 湘阴县|