張 昭, 樊 迪, 張開生
(1.陜西科技大學 教育部輕化工助劑化學與技術(shù)重點實驗室, 陜西 西安 710021; 2.河北工業(yè)大學 信息工程學院, 天津 300401; 3.陜西科技大學 電氣與信息工程學院, 陜西 西安 710021)
由于設(shè)計交通燈的方案有很多,目前比較成熟的方案中,控制器的設(shè)計可以用到51單片機作為控制核心[1],也可以采用EDA技術(shù),用FPGA實現(xiàn)控制和倒數(shù)計時器的設(shè)計[2-5],本文就是采用后者的技術(shù),直接驅(qū)動LED燈和數(shù)碼管,這樣也省去了外部硬件驅(qū)動電路的設(shè)計.通過VHDL語言編程控制信號燈的時序變化,采用多進程的設(shè)計和主程序調(diào)用各功能模塊的方法實現(xiàn)上述各項功能,之后利用軟件平臺對設(shè)計系統(tǒng)進行仿真[6],在以往的仿真過程中經(jīng)常采用Max+Plus II進行仿真,本文考慮到Max+Plus II相對于Quartus II來說比較傳統(tǒng),其軟件的發(fā)展前景和應用的廣泛性都在Quartus II之下,Quartus II軟件含有FPGA設(shè)計所有階段的解決方案,不存在人工接線的問題,所以故障率低、可靠性好,更提供了對一些新器件和新技術(shù)的支持,是設(shè)計者能夠輕松全面的介入到設(shè)計的每個環(huán)節(jié),所以在編譯仿真時選取了Quartus II 9.1軟件平臺,最后根據(jù)得到的仿真波形,就可以直接的觀察出程序的功能實現(xiàn)是否符合研究要求.
FPGA系統(tǒng)設(shè)計的相關(guān)技術(shù)很多,包括了FPGA的結(jié)構(gòu)原理,電路硬件設(shè)計與調(diào)試,硬件描述語言(HDL),開發(fā)工具EDA軟件,仿真驗證技術(shù)以及FPGA和其他處理器的互聯(lián)接口技術(shù)等[7-10].進行VHDL設(shè)計實現(xiàn)時,首先考慮到大多數(shù)情況是通過自動控制的方式指揮交通,所以為了使系統(tǒng)正常運行,電路中必須有一個穩(wěn)定的時鐘源,再用分頻器得到想要的時鐘頻率,并且可以通過計數(shù)器轉(zhuǎn)換成BCD碼顯示出來,其中可以用到七段顯示器,之后根據(jù)不同的功能模塊進行設(shè)計,并且利用軟件平臺對設(shè)計系統(tǒng)進行仿真.
按所需時序控制變化,在整個系統(tǒng)中可以按照功能分為幾個不同的模塊[11-12],分別有分頻模塊、計數(shù)模塊、狀態(tài)控制模塊、分位顯示模塊和譯碼驅(qū)動模塊,各個模塊之間的連接如圖1所示.其中,計數(shù)模塊里包含了一個24 h的時鐘控制器部分,它是為了實現(xiàn)夜間信號變化而存在的模擬時鐘.狀態(tài)控制模塊類似于一個狀態(tài)機,由主控時序邏輯進程和組合邏輯進程兩個部分組成,通過狀態(tài)控制模塊改變二極管的顯示情況,而倒計時則由分位譯碼后的二進制數(shù)輸出給7段數(shù)碼管后顯示出來.
圖1 系統(tǒng)原理圖
此模塊是為了產(chǎn)生所需倒計時的秒數(shù),將輸入的clk信號分頻為所需的1 Hz,在選取有源晶振時為保證時鐘的準確度,晶振頻率不能過小.本課題中用到的有源晶振是100 kHz,已經(jīng)可以滿足鐘表所需的頻率,所以設(shè)計時應在經(jīng)過105個clk上升沿后full信號發(fā)生跳變,產(chǎn)生一個脈沖,這樣full信號就是一個周期為1 s的時鐘信號,且信號沒有按照常規(guī)的占空比為50%的時鐘信號設(shè)計,而是一個一個相隔時間為1 s的脈沖.
計數(shù)模塊主要實現(xiàn)累加循環(huán)計數(shù),在時鐘full的驅(qū)動下,計數(shù)值timer不斷自加,當達到一規(guī)定數(shù)值時計數(shù)返回到0,開始新一輪的計數(shù),其中規(guī)定數(shù)值就是信號燈所有狀態(tài)循環(huán)一遍所需要的時間.考慮到一共六個狀態(tài)都需要計時,如果采用六個計時器的話對資源是一種浪費,所以用一個通用的計數(shù)器,運行到某一狀態(tài)就開始對這一狀態(tài)進行計時.另外,在數(shù)碼管顯示倒計時時,數(shù)字應不斷減少,而本課題為了便于通用計時器的設(shè)計,采用的是加法計數(shù)器,所以在狀態(tài)轉(zhuǎn)換模塊中執(zhí)行的計數(shù)時間是用倒計時間總數(shù)減去timer當前的數(shù),這樣就可以依次得到遞減的數(shù)值.
狀態(tài)控制模塊類似于一個狀態(tài)機,由兩部分組成,分別是主控時序邏輯進程和組合邏輯進程,不論當前狀態(tài)如何,時序邏輯進程只將當前狀態(tài)轉(zhuǎn)換為下一狀態(tài),只有當來自時序邏輯進程的信號改變時,組合邏輯進程才開始執(zhí)行.圖2是整個模塊的狀態(tài)轉(zhuǎn)換圖,輸入輸出按照時序圖的流程,可以將整個時序變換分割為六個狀態(tài),在倒計時計數(shù)達到規(guī)定時間時發(fā)生狀態(tài)變化.由于主路和支路的信號燈共有8個,所以在程序中設(shè)定一個八位的輸出信號comb_out,從高位到低位分別依次控制主路直行綠燈,主路左轉(zhuǎn)綠燈,主路黃燈,主路紅燈,支路直行綠燈,支路左轉(zhuǎn)綠燈,支路黃燈,支路紅燈.其中高電平代表燈亮,低電平代表燈滅.
考慮到夜間黃燈閃爍的情況,應再添加一個S6夜間狀態(tài),當模擬時鐘到達22點時,不論現(xiàn)在處于什么狀態(tài),都要跳轉(zhuǎn)到S6狀態(tài)開始兩個路口同時黃燈閃爍,并且倒計時每一位全部顯示為0,最后在6點時再跳轉(zhuǎn)回初始狀態(tài).
圖2 狀態(tài)轉(zhuǎn)換圖
分位模塊的設(shè)計主要是將燈亮的時間拆分成十位和個位后分別通過兩個7段數(shù)碼管顯示出來,在本設(shè)計中燈亮時間最長為58 s,程序中tm、ts分別為主路和支路的倒計的時間,分別把他們分為十位thm、ths和個位tlm、tls兩個數(shù)組合表示一個十進制數(shù),從而實現(xiàn)了分位功能.如圖3所示是基本分位模塊t分位的過程圖.
分位后,通過對照7段數(shù)碼管顯示的對應二進制碼,對應相應的譯碼數(shù)值,將十位和個位分別由7段數(shù)碼管顯示出來,這就完成了倒計時的顯示功能.
圖3 分位模塊設(shè)計圖
考慮到智能交通未來的發(fā)展情況和本文應用于實際的成本問題,本系統(tǒng)選用的是Alter公司生產(chǎn)的Cyclone系列的EP1C6Q204C8芯片,是新一代采用SRAM工藝的中等規(guī)模FPGA芯片,成本相對較低.EP1C6Q204C8具有5 980個邏輯單元,完全能夠滿足用戶邏輯的需要,內(nèi)嵌有20個M4K RAM嵌入式存儲器塊和兩個Pll,可以為系統(tǒng)提供時鐘信號,大大降低了系統(tǒng)的時鐘延時,并且最大支持185個用戶I/O管腳資源,能夠提供足夠的各類接口[16].在完成之前的編譯與仿真后,選擇EP1C6Q204C8芯片為設(shè)計文件進行管腳分配并編譯整個工程文件,最后完成系統(tǒng)的原理圖設(shè)計.
圖4 信號燈正常指示仿真波形
圖5 發(fā)生復位時仿真波形
圖6 緊急情況時仿真波形
圖7 夜間指示時仿真波形
圖4~圖7為不同條件下的仿真波形.根據(jù)仿真波形可以看到當復位開關(guān)按下,EN變?yōu)榈碗娖降囊欢蔚褂嫊r全部歸零,狀態(tài)保持在初始狀態(tài),當開關(guān)再次彈起時,開始從初始狀態(tài)的正常信號燈運轉(zhuǎn).
緊急情況功能用一個HOLD信號來控制,當HOLD為高電平時正常運行,為低電平時各方向紅燈均亮起,所有車輛禁止通行,并且所有數(shù)碼管顯示暫停倒計時,等HOLD又跳回高電平時繼續(xù)運行,仿真波形如圖6所示.另一個夜間指示的仿真波形如圖7所示,到了22點時所有路口黃燈開始交替閃爍,倒計時數(shù)碼管始終顯示時間為零.
功能仿真正確后,可以加入延時模型,將Simulation mode選為Timing模式進行時序仿真.
在設(shè)計好工程文件后,首先要進行工程的約束,約束主要包括器件選擇、管腳分配及時序約束等.時序約束屬于較為高級的應用,通過時序約束可以使工程設(shè)計文件的綜合更加優(yōu)化.在選擇器件系列以及器件的型號后就可以為設(shè)計文件進行管腳分配了,按照需求進行管腳定義,最后再編譯整個工程文件,就可以下載到硬件了.在設(shè)計中沒有用到的管腳很容易導致系統(tǒng)程序運行不正常,因此對于一些未使用的FPGA管腳一定要將其設(shè)為三態(tài)輸入,以隔離其它電信號的干擾.
通過時序仿真結(jié)果可以看到,信號燈正常交替運轉(zhuǎn)時的波形和夜間黃燈閃爍的波形正確,波形如圖8和圖9所示.
從兩個特殊狀態(tài)的時序仿真看到,從EN和HOLD給出信號到波形發(fā)生變化之間產(chǎn)生了一定的延時,但是并沒有影響系統(tǒng)的功能實現(xiàn).圖10和圖11所示分別是通過放大工作區(qū)和拖動時間測量游標觀察兩個特殊狀態(tài)的波形延時情況,盡管輸出相對于開關(guān)信號存在一定延時,但輸出結(jié)果是正確的,符合設(shè)計要求,不影響系統(tǒng)功能的實現(xiàn).
圖8 信號燈正常指示仿真波形
圖9 夜間模式的時序仿真波形
圖10 發(fā)生復位時的波形延時
圖11 緊急情況下的波形延時
功能仿真并不包含延遲,而時序仿真則會根據(jù)具體的器件參數(shù)配置及資源使用情況將延時仿真出來.功能仿真主要用于驗證工程設(shè)計文件邏輯的正確性,而時序仿真更能體現(xiàn)真實的硬件運行過程中設(shè)計文件的執(zhí)行過程.在進行時序仿真時,如果改變了設(shè)計程序或者管腳的配置,就會出現(xiàn)沒有波形的情況,這時候就要重新對設(shè)計分析與綜合,包括程序的匯編和管腳的適配,之后才能進行時序分析.時序仿真更側(cè)重觀察信號的延時,所以在波形圖中網(wǎng)格的大小應該適當調(diào)小來觀察延時程度.
在進行了功能仿真和時序仿真之后就可以開始物理綜合于硬件的下載了,可以用仿真軟件中的Assembler為整個系統(tǒng)設(shè)計建立編程文件,通過編程器將設(shè)計下載到FPGA芯片中.
傳統(tǒng)的交通燈控制系統(tǒng)大多數(shù)由單片機或PLC來實現(xiàn),而本文在設(shè)計過程中,綜合運用了FPGA的相關(guān)知識和EDA技術(shù),并利用VHDL硬件描述語言編程,最后借助Quartus II軟件平臺對系統(tǒng)進行編譯及仿真測試.隨著EDA技術(shù)的發(fā)展和應用領(lǐng)域的擴大與深入,它在日常生活中的重要性日益突出,其中交通信號燈的控制就是與人們生活息息相關(guān)的常見應用之一,本文的設(shè)計研究具有一定的實用性,對城市交通的暢通起到了重要作用.采用EDA技術(shù)實現(xiàn)交通燈控制電路的設(shè)計方案可以有效的克服傳統(tǒng)的交通燈控制的缺點,采取自頂而下的設(shè)計思路,從設(shè)計思路、描述方法及語句運用上對電路進行多方面的優(yōu)化設(shè)計,通過電路優(yōu)化設(shè)計,可以使用規(guī)模更小的可編程邏輯芯片,從而降低系統(tǒng)成本.本文采用的相關(guān)技術(shù)不僅可以大大縮短開發(fā)研制周期,提高設(shè)計效率,還使整個系統(tǒng)具有靈活應變能力,并且性能穩(wěn)定,實現(xiàn)簡單,有效降低了數(shù)字系統(tǒng)的設(shè)計難度,易于發(fā)現(xiàn)錯誤并進行修改.
[1] Wu L,Liu J X,Min D.Single chip fuzzy control system based on mixed-signal FPGA intelligent human-machine systems and cybernetics[C]//2009 International Conference on Intelligent Human-Machine.Hangzhou:IEEE Conference Publications,2009:397-400.
[2] Zhu Hao,Wang Mulan,Su Wei,et al.Design of servo system intelligent control chip based on FPGA[J].Advanced Materials Research,2012,542-543:949-952.
[3] 譚會生.基于FPGA的網(wǎng)絡(luò)通訊流量模糊控制器的實現(xiàn)[J].測試技術(shù)學報,2011,25(5):421-426.
[4] Liu zhenggang,Xiong jialong,Zhou mingyun,et al.FPGA-based dual-mode traffic lights system design[C]//2009 First International Conference on Information Science and Engineering.Nanjing:IEEE Computer Society,2009:558-561.
[5] Li li,Song jingyan,Wang feiyue.New developments and research trends for intelligent vehicles[J].IEEE Intelligent Systems,2005,20(4):10-14.
[6] Xu C F,Yuan Y,Wang J J.A new method for FPGA development[C]//2011 International Conference on Information Science and Technology.Nanjing:IEEE Computer Society,2011:314-317.
[7] Lee P S,Lee C S,Lee J H.Development of FPGA-based digital signal processing system for radiation spectroscopy[J].Radiation Measurements,2013,48:12-17.
[8] Liu C R,Zhang S Y.Hydro-generating unit axis intelligent detection system design based on single-chip microcomputer[C]//2011 International Conference on Consumer Electronics,Communications and Networks.Xianning:IEEE Conference Publications,2011:402-405.
[9] Moon Y S,Roh S H,Jo K H,et al.A study on the development of servo motor control IP core based on FPGA[J].Journal of Korean Institute of Intelligent Systems,2010,20(4):562-568.
[10] Weber J,Chin M,Timossi C,et al.Hardware and software development and integration in an FPGA embedded processor based control system module for the ALS[C]//2007 IEEE Particle Accelerator Conference.Albuquerque:IEEE Conference Publications,2007:503-505.
[11] Zhao haimeng,Zheng xifeng,Liu weiya.Intelligent traffic control system based on DSP and nios II[C]// International Asia Conference on Informatics in Control, Automation and Robotics, CAR′09.Bangkok: IEEE Computer Society,2009:90-94.
[12] 楊曉慧,楊 旭.FPGA系統(tǒng)設(shè)計與實例[M].北京:人民郵電出版社,2010:13-22.