1 引言
Max+PlusⅡ是Altera公司提供的FPGA/CPLD開發(fā)集成環(huán)境,它可獨立完成簡單VHDL程序的編譯。然而,自動電梯控制程序是一個復(fù)雜的狀態(tài)機描述,Max+PlusⅡ無法獨立完成該程序的綜合編譯。Synplify Pro是 Synplicity 公司針對復(fù)雜可編程邏輯設(shè)計的 FPGA 綜合工具,它帶來了無與倫比的電路性能和最有效的可編程設(shè)計的資源利用率,所獨有的對電路的調(diào)試與優(yōu)化功能和極快的運算速度使之成為了業(yè)界倍受歡迎的的綜合工具。Synplify pro所特有的FSM綜合器可以自動識別有限狀態(tài)機并根據(jù)約束條件選擇最佳的編碼方式。通過Max+PlusⅡ中的接口,把Synplify pro 用于對電梯控制程序的綜合與優(yōu)化,可大大提高設(shè)計效率,仿真和實驗結(jié)果證實了該方法的有效性。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)的整體設(shè)計
在電梯控制系統(tǒng)的設(shè)計中,核心是電梯運行的狀態(tài)控制器的設(shè)計。為突出狀態(tài)之間的轉(zhuǎn)換關(guān)系,令電梯以同一速率升降。主要需要考慮:(1)電梯的人工手動控制;(2)電梯的運行狀態(tài)顯示;(3)電梯的安全性控制;(4)電梯的策略控制設(shè)計。
電梯狀態(tài)控制器部分用狀態(tài)機來實現(xiàn)。基本模型如下:(1) 每一層電梯的入口處設(shè)有上下請求開關(guān),電梯內(nèi)設(shè)有顧客到達(dá)層次的停站請求開關(guān);(2)設(shè)有電梯所處位置指示裝置以及電梯運行模式(上升或下降)指示裝置;(3)電梯初始狀態(tài)為第一層開門,電梯每一秒升(降)一層樓;(4)設(shè)計一個異步的置位端口,用于在系統(tǒng)不正常的時候回到初始狀態(tài);(5)電梯到達(dá)有停站請求樓層,經(jīng)過1 秒電梯門打開,開門4 秒后,電梯門關(guān)閉(開門指示燈熄滅),電梯繼續(xù)運行,直至執(zhí)行完最后一個請求信號后停留在當(dāng)前樓層;(6)能記憶電梯內(nèi)外的所有請求信號,并按照電梯運行規(guī)則按順序響應(yīng),每個請求信號保留至執(zhí)行完后消除;(7)電梯運行規(guī)則:當(dāng)電梯處于上升模式時,只響應(yīng)比電梯所在位置高的上樓請求信號,由下而上逐個執(zhí)行,直到最后一個上樓請求執(zhí)行完畢;如果高層有下樓請求,則直接升至有下樓請求的最高樓層,然后進(jìn)入下降模式。當(dāng)電梯處于下降模式的時候與上升模式相反。
整個電梯控制系統(tǒng)將由一片CPLD來實現(xiàn)。外圍的電路主要包括:分頻器,七段數(shù)碼顯示模塊、發(fā)光二極管顯示模塊,以及按鍵開關(guān)模塊。
各模塊的功能:電梯狀態(tài)控制模塊,是整個系統(tǒng)設(shè)計的核心,完成電梯的狀態(tài)控制;顯示模塊,主要是將系統(tǒng)信息顯示出來,判斷電梯運行是否正常;分頻器模塊,由4MHZ的原始頻率分頻得到系統(tǒng)所需要的頻率;按鍵開關(guān)模塊,消除由于機械按鍵輸入的誤操作和防抖動。
圖1 電梯的結(jié)構(gòu)圖
2.2 電梯狀態(tài)控制器的設(shè)計
2.2.1 設(shè)計思路
?。?)電梯輸入輸出端口設(shè)計。輸入端口包括:一個異步的置位端口,用于在系統(tǒng)不正常的時候回到初始狀態(tài);在電梯外部的升降的請求端口,一層不需要有下降請求,最高層不需要上升請求,中間層上升、下降請求端口都應(yīng)具備;在電梯內(nèi)部的各層停留的請求端口;一個用于驅(qū)動電梯的上升下降以及開門關(guān)門等動作時鐘輸入端口以及一個時鐘頻率比電梯高得多的按鍵時鐘輸入端口。而響應(yīng)的輸出端口包括:升降請求信號響應(yīng)端口,有請求信號以后,該輸出端口的輸出邏輯“1”,被響應(yīng)后則恢復(fù)到邏輯“0”;電梯內(nèi)部的各層停留響應(yīng)端口;在電梯外部指示電梯的位置端口;電梯開門關(guān)門的狀態(tài)指示端口以及電梯升降指示端口。
?。?)電梯控制器的實現(xiàn)通過狀態(tài)機實現(xiàn),將電梯等待的每秒鐘以及開門關(guān)門都看成一個獨立的狀態(tài)。由于電梯每一秒升(降)一層,所以就可以通過一個統(tǒng)一的1 秒為周期的時鐘來觸發(fā)狀態(tài)機。由此,狀態(tài)機設(shè)置了10 個狀態(tài),分別是“stopon1(電梯停留在1 層)”、“dooropen(開門)”、 “doorclose(關(guān)門)”、“doorwait1(開門等待第1 秒)”、“doorwait2(開門等待第2 秒)”、“doorwait3(開門等待第3 秒)”、“doorwait3(開門等待第4 秒)”、“up(上升)”、“down(下降)”和“stop(停止)”狀態(tài)。每個狀態(tài)之間的轉(zhuǎn)換條件由設(shè)計要求決定。
2.2.2程序設(shè)計
在構(gòu)造體的設(shè)計中,設(shè)計了兩個進(jìn)程相互配合,一個是狀態(tài)機進(jìn)程,另外一個是信號燈控制進(jìn)程。狀態(tài)機進(jìn)程中的很多判斷條件是以信號燈進(jìn)程產(chǎn)生的信號燈信號為依據(jù)的,而信號燈進(jìn)程中信號燈的熄滅又是由狀態(tài)機進(jìn)程中傳出來的“up(上升)”和“down(下降)”信號來控制的。
在狀態(tài)機進(jìn)程中,在電梯處于上升狀態(tài)時,通過對信號燈來判斷,決定下一個狀態(tài)是繼續(xù)上升還是停止;在電梯下降狀態(tài)中,也是通過對信號燈的判斷,決定下一個狀態(tài)時繼續(xù)下降還是停止;在電梯停止?fàn)顟B(tài)中,判斷是最為復(fù)雜的,通過對信號燈的判斷,決定電梯是上升、下降還是停止。
在信號燈控制進(jìn)程中,由于使用了專用的按鍵時鐘,頻率較高,所以使得按鍵的靈敏度增大,但是時鐘頻率不能過高,否則容易使按鍵過于靈敏,按鍵后產(chǎn)生的點亮的信號燈(邏輯值為‘1’)用于作為狀態(tài)機進(jìn)程的判斷條件,而up和down信號邏輯‘1’使得相應(yīng)的信號燈熄滅。
2.3顯示模塊的設(shè)計
采用動態(tài)顯示模式,循環(huán)點亮三個數(shù)碼管,在掃描頻率大于人眼睛的視覺暫留頻率(24HZ)以上,就可以達(dá)到點亮單個七段數(shù)碼管顯示器,卻能像有3個數(shù)碼管同時點亮的視覺效果。
將樓層上升、下降以及樓層停止的信號用七段數(shù)碼管顯示出來,電梯上升、下降、停止輸出的信號用3位二進(jìn)制數(shù)表示,通過七段譯碼器將電梯狀態(tài)控制器輸出的3位二進(jìn)制數(shù)譯碼為七段數(shù)碼管的輸入所需要的7位二進(jìn)制數(shù)。最簡的真值表如表2.3所示.相應(yīng)的譯碼程序以及多路選擇顯示程序從略。
2.4分頻器的設(shè)計
分頻器是將輸入的4MHZ信號分頻為1Hz的信號,提供給狀態(tài)機作為輸入信號,另外分頻器分頻到4000HZ給動態(tài)顯示模塊以及按鍵模塊作為掃描信號。根據(jù)設(shè)計的需要設(shè)計了三個分頻器。
2.5 輸入端口設(shè)計
在狀態(tài)機的設(shè)計中,針對CPLD的容量,以三層電梯運行為例,定義了8個按鍵輸入端。分別是:(1) 異步置位按鍵、(2)1層上升請求按鍵、(3) 2層上升請求按鍵、(4) 2層下降請求按鍵、(5) 3層下降請求按鍵 、(6)電梯1層停止請求按鍵、(7)電梯2層停止請求按鍵、(8)電梯3層停止請求按鍵。
3 設(shè)計結(jié)果及分析
3.1 電梯狀態(tài)控制器的Synplify綜合
使用Synplify pro對用VHDL語言編制的有限狀態(tài)機的狀態(tài)變化控制程序進(jìn)行綜合,經(jīng)過綜合之后的“RTL”(寄存器傳輸級)方式的電路原理圖如圖2所示。
圖2 Synplify pro 綜合后的狀態(tài)轉(zhuǎn)移圖
3.2 仿真
綜合編譯完成后,值reset信號高電平有效,置為0,選擇liftclk時鐘信號為1HZ、buttonclk信號時鐘為4000HZ。配置適當(dāng)?shù)妮斎胄盘?,得到如圖3的仿真結(jié)果。
原先電梯停留在第一層,電梯外第三層有下降請求,電梯上升到三層,乘客進(jìn)入電梯以后要求下降一層,此時,電梯二層有下降請求,接著又有上升請求,電梯首先在第二層停留,然后下降到一層,隨后再在響應(yīng)第二層上升請求,上升到二層,乘客進(jìn)入電梯以后要求上升到三層,所以電梯最后停留的位置是三層。
圖3 三層電梯的仿真波形圖四
3.3 實驗結(jié)果
<