利用有限狀態(tài)機(jī)的交通燈控制系統(tǒng)設(shè)計與仿真
將編譯后的程序進(jìn)行仿真,得到交通燈控制與倒計時模塊仿真波形圖如圖3所示。由仿真波形可以看出,交通燈按St0→*St1→St2→St3 →St0順序進(jìn)行狀態(tài)循環(huán)。light按主路紅、主路黃、主路綠、支路紅、支路黃、支路綠的順序排列。如在St0狀態(tài)下,light的值為“001100 ”,當(dāng)hold緊急情況信號為高電平時,主路、支路均亮紅燈,并且停止倒計時。當(dāng)rst復(fù)位信號為高電平時,恢復(fù)到初態(tài)。本文引用地址:http://cafeforensic.com/article/160987.htm
3 頂層文件的設(shè)計及仿真
將分頻模塊和顯示控制模塊均分別用VHDL進(jìn)行編程、仿真,檢查其功能正確性,并包裝元件入庫建立元件符號。在上述3個模塊設(shè)計完成之后,按照圖1所示電路結(jié)構(gòu),用原理圖輸入方式進(jìn)行連接,構(gòu)成交通燈控制系統(tǒng)的頂層文件,并在Quartus II平臺上進(jìn)行編譯、仿真,引腳鎖定,得到仿真波形如圖4所示,圖中信號light、a(b)、dec7sa(dec7sb)分別用二進(jìn)制、十進(jìn)制、十六進(jìn)制表示。
從仿真波形中可以看出:當(dāng)復(fù)位信號rst=1有效時,電路復(fù)位,此時light復(fù)位為“001100”狀態(tài),置a方向和b方向計數(shù)器為最大值24和29;當(dāng)rst=0無效,緊急信號hold=1有效時,light為“100100”表示兩路紅燈均亮的狀態(tài);當(dāng)rst=0,hold=0時,恢復(fù)電路原來的light為“001100”狀態(tài),a和b進(jìn)行倒計時計數(shù)。7段顯示譯碼器a方向的dec7sa和b方向的dec7sb分別顯示計數(shù)器a和b的數(shù)值,如當(dāng)a計數(shù)到21時,dec7sa的高位2和低位1的0gfedcba=01011011B(5B)和00000110 B(06),即5806,同理當(dāng)b計數(shù)到26時,dec7sb的值為5B7D,所以交通燈控制系統(tǒng)的仿真結(jié)果完全正確。
最后將頂層文件下載到可編程邏輯器件EP1C12Q240C8中,經(jīng)測試,交通燈控制系統(tǒng)正常工作,完全符合設(shè)計要求。
4 結(jié)束語
有限狀態(tài)機(jī)及其設(shè)計技術(shù)是數(shù)字系統(tǒng)中實現(xiàn)高效率、高可靠性邏輯控制的重要途徑。在交通燈控制系統(tǒng)設(shè)計中,通過對控制功能的分析和實際狀態(tài)的選擇,把交通燈的控制歸納為4種工作狀態(tài),并建立狀態(tài)轉(zhuǎn)移關(guān)系,較為準(zhǔn)確、直觀的反映了實際需求。在用VHDL語言設(shè)計實現(xiàn)交通燈控制系統(tǒng)時,既有傳統(tǒng)的基于邏輯單元構(gòu)建的整體組成結(jié)構(gòu)方式,也有利用純軟件編程實現(xiàn)的邏輯模塊。設(shè)計方法靈活、實現(xiàn)簡單、性能穩(wěn)定的特點。
以上有限狀態(tài)機(jī)的設(shè)計方法具有通用性,對于較為復(fù)雜的有限狀態(tài)機(jī)可采用多個進(jìn)程,分別完成任意復(fù)雜組合邏輯和時序邏輯,包括進(jìn)程間狀態(tài)值的傳遞以及狀態(tài)轉(zhuǎn)換值的輸出,對類似含有邏輯控制功能的系統(tǒng),通過自頂向下設(shè)計、分步實現(xiàn),是切實可行的方法。
評論