摘 要:在Max+Plus II環(huán)境下用VHDL完成了電梯狀態(tài)控制核心程序的設(shè)計(jì)和編程,。并用Synplify Pro綜合軟件對(duì)程序進(jìn)行了優(yōu)化綜合。通過(guò)三層電梯控制系統(tǒng)的仿真和實(shí)驗(yàn)?zāi)M,,表明了此方法的高效性和靈活性,。
關(guān)鍵字:有限狀態(tài)機(jī),VHDL,,綜合
Abstract: The design and programming of a lift state controller based on the Finite state machine is carried out in VHDL of Max +Plus II . The core procedure is synthesized and optimized through Synplify Pro. The simulation and experiment results on a intact three-lift control system indicate that this design method is effective and flexible.
Key Words: FSM,,VHDL, Synthesis
1 引言
Max+PlusⅡ是Altera公司提供的FPGA/CPLD開(kāi)發(fā)集成環(huán)境,,它可獨(dú)立完成簡(jiǎn)單VHDL程序的編譯,。然而,自動(dòng)電梯控制程序是一個(gè)復(fù)雜的狀態(tài)機(jī)描述,,Max+PlusⅡ無(wú)法獨(dú)立完成該程序的綜合編譯,。Synplify Pro是 Synplicity 公司針對(duì)復(fù)雜可編程邏輯設(shè)計(jì)的 FPGA 綜合工具,它帶來(lái)了無(wú)與倫比的電路性能和最有效的可編程設(shè)計(jì)的資源利用率,,所獨(dú)有的對(duì)電路的調(diào)試與優(yōu)化功能和極快的運(yùn)算速度使之成為了業(yè)界倍受歡迎的的綜合工具,。Synplify pro所特有的FSM綜合器可以自動(dòng)識(shí)別有限狀態(tài)機(jī)并根據(jù)約束條件選擇最佳的編碼方式。通過(guò)Max+PlusⅡ中的接口,,把Synplify pro 用于對(duì)電梯控制程序的綜合與優(yōu)化,,可大大提高設(shè)計(jì)效率,仿真和實(shí)驗(yàn)結(jié)果證實(shí)了該方法的有效性,。
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)的整體設(shè)計(jì)
在電梯控制系統(tǒng)的設(shè)計(jì)中,,核心是電梯運(yùn)行的狀態(tài)控制器的設(shè)計(jì)。為突出狀態(tài)之間的轉(zhuǎn)換關(guān)系,,令電梯以同一速率升降,。主要需要考慮:(1)電梯的人工手動(dòng)控制;(2)電梯的運(yùn)行狀態(tài)顯示;(3)電梯的安全性控制;(4)電梯的策略控制設(shè)計(jì),。
電梯狀態(tài)控制器部分用狀態(tài)機(jī)來(lái)實(shí)現(xiàn)?;灸P腿缦拢海?) 每一層電梯的入口處設(shè)有上下請(qǐng)求開(kāi)關(guān),,電梯內(nèi)設(shè)有顧客到達(dá)層次的停站請(qǐng)求開(kāi)關(guān);(2)設(shè)有電梯所處位置指示裝置以及電梯運(yùn)行模式(上升或下降)指示裝置;(3)電梯初始狀態(tài)為第一層開(kāi)門(mén),電梯每一秒升(降)一層樓;(4)設(shè)計(jì)一個(gè)異步的置位端口,,用于在系統(tǒng)不正常的時(shí)候回到初始狀態(tài);(5)電梯到達(dá)有停站請(qǐng)求樓層,,經(jīng)過(guò)1 秒電梯門(mén)打開(kāi),開(kāi)門(mén)4 秒后,,電梯門(mén)關(guān)閉(開(kāi)門(mén)指示燈熄滅),,電梯繼續(xù)運(yùn)行,直至執(zhí)行完最后一個(gè)請(qǐng)求信號(hào)后停留在當(dāng)前樓層;(6)能記憶電梯內(nèi)外的所有請(qǐng)求信號(hào),,并按照電梯運(yùn)行規(guī)則按順序響應(yīng),,每個(gè)請(qǐng)求信號(hào)保留至執(zhí)行完后消除;(7)電梯運(yùn)行規(guī)則:當(dāng)電梯處于上升模式時(shí),只響應(yīng)比電梯所在位置高的上樓請(qǐng)求信號(hào),,由下而上逐個(gè)執(zhí)行,,直到最后一個(gè)上樓請(qǐng)求執(zhí)行完畢;如果高層有下樓請(qǐng)求,則直接升至有下樓請(qǐng)求的最高樓層,,然后進(jìn)入下降模式,。當(dāng)電梯處于下降模式的時(shí)候與上升模式相反。
整個(gè)電梯控制系統(tǒng)將由一片CPLD來(lái)實(shí)現(xiàn),。外圍的電路主要包括:分頻器,,七段數(shù)碼顯示模塊、發(fā)光二極管顯示模塊,,以及按鍵開(kāi)關(guān)模塊,。
各模塊的功能:電梯狀態(tài)控制模塊,是整個(gè)系統(tǒng)設(shè)計(jì)的核心,,完成電梯的狀態(tài)控制;顯示模塊,,主要是將系統(tǒng)信息顯示出來(lái),判斷電梯運(yùn)行是否正常;分頻器模塊,,由4MHZ的原始頻率分頻得到系統(tǒng)所需要的頻率;按鍵開(kāi)關(guān)模塊,,消除由于機(jī)械按鍵輸入的誤操作和防抖動(dòng)。
圖1 電梯的結(jié)構(gòu)圖
2.2 電梯狀態(tài)控制器的設(shè)計(jì)
2.2.1 設(shè)計(jì)思路
?。?)電梯輸入輸出端口設(shè)計(jì),。輸入端口包括:一個(gè)異步的置位端口,用于在系統(tǒng)不正常的時(shí)候回到初始狀態(tài);在電梯外部的升降的請(qǐng)求端口,,一層不需要有下降請(qǐng)求,,最高層不需要上升請(qǐng)求,中間層上升,、下降請(qǐng)求端口都應(yīng)具備;在電梯內(nèi)部的各層停留的請(qǐng)求端口;一個(gè)用于驅(qū)動(dòng)電梯的上升下降以及開(kāi)門(mén)關(guān)門(mén)等動(dòng)作時(shí)鐘輸入端口以及一個(gè)時(shí)鐘頻率比電梯高得多的按鍵時(shí)鐘輸入端口,。而響應(yīng)的輸出端口包括:升降請(qǐng)求信號(hào)響應(yīng)端口,,有請(qǐng)求信號(hào)以后,該輸出端口的輸出邏輯“1”,,被響應(yīng)后則恢復(fù)到邏輯“0”;電梯內(nèi)部的各層停留響應(yīng)端口;在電梯外部指示電梯的位置端口;電梯開(kāi)門(mén)關(guān)門(mén)的狀態(tài)指示端口以及電梯升降指示端口,。
(2)電梯控制器的實(shí)現(xiàn)通過(guò)狀態(tài)機(jī)實(shí)現(xiàn),,將電梯等待的每秒鐘以及開(kāi)門(mén)關(guān)門(mén)都看成一個(gè)獨(dú)立的狀態(tài),。由于電梯每一秒升(降)一層,所以就可以通過(guò)一個(gè)統(tǒng)一的1 秒為周期的時(shí)鐘來(lái)觸發(fā)狀態(tài)機(jī),。由此,,狀態(tài)機(jī)設(shè)置了10 個(gè)狀態(tài),分別是“stopon1(電梯停留在1 層)”,、“dooropen(開(kāi)門(mén))”,、 “doorclose(關(guān)門(mén))”、“doorwait1(開(kāi)門(mén)等待第1 秒)”,、“doorwait2(開(kāi)門(mén)等待第2 秒)”,、“doorwait3(開(kāi)門(mén)等待第3 秒)”、“doorwait3(開(kāi)門(mén)等待第4 秒)”,、“up(上升)”、“down(下降)”和“stop(停止)”狀態(tài),。每個(gè)狀態(tài)之間的轉(zhuǎn)換條件由設(shè)計(jì)要求決定,。
2.2.2程序設(shè)計(jì)
在構(gòu)造體的設(shè)計(jì)中,設(shè)計(jì)了兩個(gè)進(jìn)程相互配合,,一個(gè)是狀態(tài)機(jī)進(jìn)程,,另外一個(gè)是信號(hào)燈控制進(jìn)程。狀態(tài)機(jī)進(jìn)程中的很多判斷條件是以信號(hào)燈進(jìn)程產(chǎn)生的信號(hào)燈信號(hào)為依據(jù)的,,而信號(hào)燈進(jìn)程中信號(hào)燈的熄滅又是由狀態(tài)機(jī)進(jìn)程中傳出來(lái)的“up(上升)”和“down(下降)”信號(hào)來(lái)控制的,。
在狀態(tài)機(jī)進(jìn)程中,在電梯處于上升狀態(tài)時(shí),,通過(guò)對(duì)信號(hào)燈來(lái)判斷,,決定下一個(gè)狀態(tài)是繼續(xù)上升還是停止;在電梯下降狀態(tài)中,也是通過(guò)對(duì)信號(hào)燈的判斷,,決定下一個(gè)狀態(tài)時(shí)繼續(xù)下降還是停止;在電梯停止?fàn)顟B(tài)中,,判斷是最為復(fù)雜的,通過(guò)對(duì)信號(hào)燈的判斷,,決定電梯是上升,、下降還是停止。
在信號(hào)燈控制進(jìn)程中,,由于使用了專(zhuān)用的按鍵時(shí)鐘,,頻率較高,,所以使得按鍵的靈敏度增大,但是時(shí)鐘頻率不能過(guò)高,,否則容易使按鍵過(guò)于靈敏,,按鍵后產(chǎn)生的點(diǎn)亮的信號(hào)燈(邏輯值為‘1’)用于作為狀態(tài)機(jī)進(jìn)程的判斷條件,而up和down信號(hào)邏輯‘1’使得相應(yīng)的信號(hào)燈熄滅,。
2.3顯示模塊的設(shè)計(jì)
采用動(dòng)態(tài)顯示模式,,循環(huán)點(diǎn)亮三個(gè)數(shù)碼管,在掃描頻率大于人眼睛的視覺(jué)暫留頻率(24HZ)以上,,就可以達(dá)到點(diǎn)亮單個(gè)七段數(shù)碼管顯示器,,卻能像有3個(gè)數(shù)碼管同時(shí)點(diǎn)亮的視覺(jué)效果。
將樓層上升,、下降以及樓層停止的信號(hào)用七段數(shù)碼管顯示出來(lái),,電梯上升、下降,、停止輸出的信號(hào)用3位二進(jìn)制數(shù)表示,,通過(guò)七段譯碼器將電梯狀態(tài)控制器輸出的3位二進(jìn)制數(shù)譯碼為七段數(shù)碼管的輸入所需要的7位二進(jìn)制數(shù)。最簡(jiǎn)的真值表如表2.3所示.相應(yīng)的譯碼程序以及多路選擇顯示程序從略,。
2.4分頻器的設(shè)計(jì)
分頻器是將輸入的4MHZ信號(hào)分頻為1Hz的信號(hào),,提供給狀態(tài)機(jī)作為輸入信號(hào),另外分頻器分頻到4000HZ給動(dòng)態(tài)顯示模塊以及按鍵模塊作為掃描信號(hào),。根據(jù)設(shè)計(jì)的需要設(shè)計(jì)了三個(gè)分頻器,。
2.5 輸入端口設(shè)計(jì)
在狀態(tài)機(jī)的設(shè)計(jì)中,針對(duì)CPLD的容量,,以三層電梯運(yùn)行為例,,定義了8個(gè)按鍵輸入端。分別是:(1) 異步置位按鍵,、(2)1層上升請(qǐng)求按鍵,、(3) 2層上升請(qǐng)求按鍵、(4) 2層下降請(qǐng)求按鍵,、(5) 3層下降請(qǐng)求按鍵 ,、(6)電梯1層停止請(qǐng)求按鍵、(7)電梯2層停止請(qǐng)求按鍵,、(8)電梯3層停止請(qǐng)求按鍵,。
3 設(shè)計(jì)結(jié)果及分析
3.1 電梯狀態(tài)控制器的Synplify綜合
使用Synplify pro對(duì)用VHDL語(yǔ)言編制的有限狀態(tài)機(jī)的狀態(tài)變化控制程序進(jìn)行綜合,經(jīng)過(guò)綜合之后的“RTL”(寄存器傳輸級(jí))方式的電路原理圖如圖2所示,。
圖2 Synplify pro 綜合后的狀態(tài)轉(zhuǎn)移圖
3.2 仿真
綜合編譯完成后,,值reset信號(hào)高電平有效,置為0,,選擇liftclk時(shí)鐘信號(hào)為1HZ,、buttonclk信號(hào)時(shí)鐘為4000HZ,。配置適當(dāng)?shù)妮斎胄盘?hào),得到如圖3的仿真結(jié)果,。
原先電梯停留在第一層,,電梯外第三層有下降請(qǐng)求,電梯上升到三層,,乘客進(jìn)入電梯以后要求下降一層,,此時(shí),電梯二層有下降請(qǐng)求,,接著又有上升請(qǐng)求,,電梯首先在第二層停留,然后下降到一層,,隨后再在響應(yīng)第二層上升請(qǐng)求,,上升到二層,乘客進(jìn)入電梯以后要求上升到三層,,所以電梯最后停留的位置是三層,。
圖3 三層電梯的仿真波形圖四
3.3 實(shí)驗(yàn)結(jié)果
在完整的系統(tǒng)設(shè)計(jì)中使用 Max+Plus II完成VHDL描述和原理圖的層次設(shè)計(jì)。在底層設(shè)計(jì)中,,用VHDL分別實(shí)現(xiàn)每一個(gè)模塊的功能,,將每個(gè)模塊生成可供Max+Plus II調(diào)用的器件符號(hào),再將這些器件符號(hào)連接在一起構(gòu)成整個(gè)系統(tǒng)原理圖,,如圖4所示,。
圖4 系統(tǒng)電路原理圖
整個(gè)系統(tǒng)設(shè)計(jì)完成后,經(jīng)過(guò)編譯生成.pof文件,,仿真成功后,下載到EPM7128SLC84-15芯片中,。根據(jù)管腳分配圖對(duì)已有的硬件電路進(jìn)行連線,,實(shí)驗(yàn)電路如圖5所示。
圖5 實(shí)驗(yàn)電路圖
3.4 結(jié)果分析
通過(guò)對(duì)實(shí)際的硬件測(cè)試,,數(shù)碼管正確顯示了樓層,,發(fā)光二極管響應(yīng)顯示了電梯的狀態(tài),通過(guò)對(duì)不同初始狀態(tài)的測(cè)試,,發(fā)現(xiàn)除了由按鍵抖動(dòng)帶來(lái)的部分誤操作外,,電梯的狀態(tài)轉(zhuǎn)換完全符合電梯運(yùn)行規(guī)則。說(shuō)明這種設(shè)計(jì)方法是有效的,。
由于很容易通過(guò)編程改變CPLD器件的控制功能,,而且電梯運(yùn)行的基本狀態(tài)變換規(guī)律是不隨樓層數(shù)變化的,因此,,只需要改變相應(yīng)的輸入,、輸出端口設(shè)計(jì)就可滿(mǎn)足不同樓層數(shù)的設(shè)計(jì)需要,。
4 結(jié)束語(yǔ)
本次設(shè)計(jì)基于自頂向下的設(shè)計(jì)方法,用vhdl實(shí)現(xiàn)了電梯各狀態(tài)之間的轉(zhuǎn)換程序控制,。在Max+Plus II環(huán)境下通過(guò)使用Synplify Pro 軟件特有的綜合功能,,從對(duì)軟件程序的編譯、仿真到可編程邏輯芯片的功能實(shí)現(xiàn)都進(jìn)行了優(yōu)化,,大大提高了設(shè)計(jì)效率,。這種方法可廣泛用于各種復(fù)雜狀態(tài)機(jī)控制的設(shè)計(jì)之中。
參考文獻(xiàn)
[1] 彭寶,、范婷婷,、馬建國(guó). 基于Verilog HDL語(yǔ)言的FPGA設(shè)計(jì).《微計(jì)算機(jī)信息》.2004年20卷第10期, p81-82。
[2] 李宗伯,,王蓉暉. VHDL設(shè)計(jì)表示和綜合. 北京:機(jī)械工業(yè)出版社,,2002
[3] 潘松,黃繼業(yè). EDA技術(shù)應(yīng)用教程. 北京:科學(xué)出版社,, 2002
[4] 褚振勇,,翁木云. FPGA設(shè)計(jì)及應(yīng)用. 西安:西安電子科技大學(xué)出版社,2002