宋秀萍,龔猷龍
(1.重慶電子工程職業(yè)學(xué)院通信學(xué)院,重慶 401331;2.中國(guó)移動(dòng)通信集團(tuán)重慶有限公司,重慶 401121)
語(yǔ)音信箱系統(tǒng)業(yè)務(wù)是一種電信增值業(yè)務(wù),在電信業(yè)務(wù)中占有重要地位。該業(yè)務(wù)基于語(yǔ)音消息平臺(tái),用于語(yǔ)音信箱業(yè)務(wù)的實(shí)現(xiàn),主要提供語(yǔ)音留言的編輯、發(fā)送及接收等互動(dòng)式語(yǔ)音應(yīng)答功能(IVR),包括完成信息投遞、存儲(chǔ)、提取、刪除、轉(zhuǎn)發(fā)、通知等功能。
語(yǔ)音信箱服務(wù)是一種留言服務(wù),每個(gè)信箱使用者均擁有一個(gè)附有信箱號(hào)碼的個(gè)人語(yǔ)音信箱,每個(gè)來(lái)話者均可通過電話語(yǔ)音的引導(dǎo)給任意一個(gè)語(yǔ)音信箱留言,信箱使用者通過外線或內(nèi)線分機(jī)撥入系統(tǒng),輸入密碼后可聽取該信箱中的留言。
有限狀態(tài)機(jī)及其技術(shù)是語(yǔ)音信箱系統(tǒng)設(shè)計(jì)中實(shí)現(xiàn)高效可靠的重要途徑,是一種簡(jiǎn)單清晰、設(shè)計(jì)靈活、易于理解和維護(hù)的實(shí)現(xiàn)方法。尤其是針對(duì)具有大量狀態(tài)轉(zhuǎn)移和復(fù)雜邏輯控制的語(yǔ)音信箱系統(tǒng),擁有明顯的優(yōu)勢(shì)。
FSM包含5類基本要素:狀態(tài)、輸入、輸出、狀態(tài)轉(zhuǎn)移函數(shù)及輸出函數(shù)[1]。
有限狀態(tài)機(jī)(FSM)可用下面包含5種元素的集合表示{X,Y,S,f,g},其中 S={S1,S2,…,SK}是 FSM 中狀態(tài)的集合;X={X1,X2,…,Xn}是 FSM 中輸入的集合;Y={Y1,Y2,…,Ym}是 FSM 中輸出的集合;f為狀態(tài)轉(zhuǎn)移函數(shù),表示由輸入信號(hào)變量X和當(dāng)前狀態(tài)S決定下一個(gè)狀態(tài);g為輸出函數(shù),表示由輸入信號(hào)變量X和狀態(tài)S決定狀態(tài)機(jī)的輸出變量Y。矢量函數(shù)表示如下[2]
圖1為有限狀態(tài)機(jī)轉(zhuǎn)換圖。根據(jù)是否使用輸入信號(hào),F(xiàn)SM通常劃分為Moore有限狀態(tài)機(jī)和Mealy有限狀態(tài)機(jī)。狀態(tài)機(jī)的輸出與輸入有關(guān),則是Mealy有限狀態(tài)機(jī);與輸入無(wú)關(guān),則為Moore有限狀態(tài)機(jī)。本文的語(yǔ)音信箱系統(tǒng)采用Moore型有限狀態(tài)機(jī)實(shí)現(xiàn)[3]。
圖1 有限狀態(tài)機(jī)轉(zhuǎn)換圖
語(yǔ)音信箱系統(tǒng)業(yè)務(wù)已實(shí)現(xiàn)多年,狀態(tài)遷移方式主要采用純軟件的方式實(shí)現(xiàn),只能實(shí)現(xiàn)相對(duì)簡(jiǎn)單的狀態(tài)遷移,對(duì)復(fù)雜的狀態(tài)遷移容易產(chǎn)生性能風(fēng)險(xiǎn)甚至循環(huán)誤判,且所承載的硬件也只能與同型號(hào)的交換機(jī)匹配,導(dǎo)致與其他系統(tǒng)對(duì)接不靈活,成本較高。另外,由于傳統(tǒng)語(yǔ)音信箱系統(tǒng)采用了簡(jiǎn)單的狀態(tài)遷移方式,提供的功能有限,不易擴(kuò)展,安全性較低。
本文提出的基于有限狀態(tài)機(jī)的實(shí)現(xiàn)方法,將大幅減少設(shè)計(jì)的復(fù)雜性,且易于擴(kuò)展。尤其采用EDA數(shù)字電路實(shí)現(xiàn)后,產(chǎn)生的時(shí)延小,狀態(tài)遷移過程清晰,不易產(chǎn)生狀態(tài)錯(cuò)位而導(dǎo)致誤判的情況,且實(shí)現(xiàn)成本較低,易于推廣。
有限狀態(tài)機(jī)的實(shí)現(xiàn)步驟如下:(1)分析控制器設(shè)計(jì)指標(biāo),建立系統(tǒng)算法模型圖[4]。(2)分析被控對(duì)象的時(shí)序狀態(tài),確定控制器有限狀態(tài)機(jī)各個(gè)狀態(tài)及輸入輸出條件。(3)應(yīng)用VHDL語(yǔ)言完成編程,并采用MAX+plus II實(shí)現(xiàn)仿真。(4)將程序加載到EDA實(shí)驗(yàn)開發(fā)系統(tǒng)中進(jìn)行驗(yàn)證。
算法模型圖,(1)控制器設(shè)計(jì)指標(biāo)。狀態(tài)轉(zhuǎn)移正確率為100%;時(shí)延的最大容忍度為0.1個(gè)時(shí)鐘周期。(2)算法模型圖。有限狀態(tài)機(jī)可分為兩類狀態(tài):當(dāng)前狀態(tài)(CURRNET_STATE)和下一狀態(tài)(NEXT_STATE)。本文需設(shè)計(jì)的有限狀態(tài)機(jī),采用CLK時(shí)鐘觸發(fā),當(dāng)外界KEY輸入相應(yīng)指令后,會(huì)根據(jù)當(dāng)前狀態(tài)和KEY輸入值進(jìn)入下一狀態(tài),同時(shí)可通過輔助電路將當(dāng)前狀態(tài)或下一狀態(tài)顯示。圖2為算法模型設(shè)計(jì)圖。
圖2 算法模型設(shè)計(jì)圖
根據(jù)以上方法,語(yǔ)音信箱控制系統(tǒng)主要部分設(shè)計(jì)過程如下[5]:
(1)外部輸入。CLK為系統(tǒng)時(shí)鐘;KEY為系統(tǒng)控制信號(hào)。
(2)輸出狀態(tài)。PLAY為重復(fù)狀態(tài)的指示。高電平(燈亮)表示進(jìn)入此狀態(tài);低電平(燈滅)表示未進(jìn)入此狀態(tài);RECORD_1為錄音指示。高電平表示開始錄音,并記錄錄音;低電平表示低未進(jìn)入錄音狀態(tài);ERASE為信息擦除指示。高電平表示擦除信息;低電平表示未擦除信息。SAVE為保存信息指示。高電平表示將信息保存;低電平表示未保存信息;ADDRESSS為所發(fā)信息的尋址指示。高電平表示所發(fā)信息尋址完畢;低電平(燈亮)表示未尋址。
(3)狀態(tài)機(jī)內(nèi)部狀態(tài)[6]。MAIN_ST為語(yǔ)音信箱主狀態(tài),即是正常起始狀態(tài);REVIEW_ST為收信閱覽狀態(tài);SEND_ST為發(fā)信息狀態(tài)。REPEAT_ST為重復(fù)狀態(tài);SAVE_ST為信息保存狀態(tài);ERASE_ST為信息擦除狀態(tài)。ADDRESS_ST為發(fā)信息尋址狀態(tài);RECORD_ST為記錄狀態(tài);BEGIN_REC_ST為開始錄音狀態(tài);MESSAGE_ST為記錄錄音狀態(tài)。
(4)兩類狀態(tài)。CURRENT_STATE為當(dāng)前狀態(tài);NEXT_STATE為下一狀態(tài)。
由于系統(tǒng)的當(dāng)前狀態(tài)有10個(gè),所以在狀態(tài)機(jī)中引入一個(gè)4位組合輸出COMB_OUTPUTS,這是對(duì)當(dāng)前狀態(tài)的譯碼。在驗(yàn)證結(jié)果時(shí),可通過這一輸出值了解狀態(tài)機(jī)內(nèi)部的運(yùn)行情況。其中,4位組合COMB_OUTPUTS與各狀態(tài)之間的對(duì)應(yīng)關(guān)系及經(jīng)數(shù)碼顯示之后對(duì)應(yīng)的16進(jìn)制數(shù),如表1所示。
表1 狀態(tài)與輸出4位2進(jìn)制組合的對(duì)應(yīng)關(guān)系
圖3為語(yǔ)音信息系統(tǒng)狀態(tài)轉(zhuǎn)換圖(#表示任意鍵)。
圖3 語(yǔ)音信息系統(tǒng)狀態(tài)轉(zhuǎn)換圖
根據(jù)語(yǔ)音信箱系統(tǒng)狀態(tài)轉(zhuǎn)換圖,設(shè)計(jì)的VHDL源程序如下[7]。
將VHDL源程序加載到MAX+plus II平臺(tái)進(jìn)行仿真,得到仿真波形如圖4所示。
圖4 有限狀態(tài)機(jī)仿真結(jié)果
分析波形,此電路達(dá)到了預(yù)期設(shè)計(jì)的要求。為了解狀態(tài)機(jī)內(nèi)部的運(yùn)行情況,這里引入一個(gè)4位2進(jìn)制組合的輸出COMB_OUTPUTS,并將輸出COMB_OUTPUTS接入數(shù)碼顯示管[8],得到的數(shù)碼顯示為SEG[7…0]。圖5為接入數(shù)碼顯示管后的輸出結(jié)果,與“4位2進(jìn)制組合COMB_OUTPUTS經(jīng)數(shù)碼顯示之后對(duì)應(yīng)的16進(jìn)制數(shù)”對(duì)照,發(fā)現(xiàn)內(nèi)部狀態(tài)轉(zhuǎn)移與設(shè)計(jì)一致,狀態(tài)轉(zhuǎn)移成功率達(dá)到100%。
圖5 語(yǔ)音信箱系統(tǒng)狀態(tài)機(jī)仿真結(jié)果
EDA實(shí)驗(yàn)平臺(tái)有多種,如EDA2000仿真系統(tǒng)和康芯電子的GW48實(shí)驗(yàn)平臺(tái),本次采用GW48實(shí)驗(yàn)平臺(tái)進(jìn)行驗(yàn)證。
(1)GW48實(shí)驗(yàn)開發(fā)系統(tǒng)驗(yàn)證。根據(jù)GW48系統(tǒng)結(jié)構(gòu)圖信號(hào)名與芯片引腳對(duì)照表,確定各個(gè)輸入和輸出所對(duì)應(yīng)的芯片引腳號(hào),其對(duì)應(yīng)關(guān)系如下表[9]。
表2 輸入端與芯片引腳的對(duì)應(yīng)關(guān)系
表3 輸出端與芯片引腳的對(duì)應(yīng)關(guān)系
按照表2和表3的說(shuō)明接線,編程下載成功后,首先通過模式選擇鍵(SW9)將實(shí)驗(yàn)?zāi)J睫D(zhuǎn)換到模式6,若輸入和輸出涉及時(shí)鐘、聲音、視頻等信號(hào),還應(yīng)將相應(yīng)部分的短路帽或接口部分連接好,這里只有一個(gè)時(shí)鐘CLK。之后輸入設(shè)計(jì)實(shí)體所規(guī)定的各種輸入信號(hào)即可進(jìn)行語(yǔ)音信箱控制的實(shí)驗(yàn)[10]。在硬件仿真實(shí)驗(yàn)時(shí),為系統(tǒng)所設(shè)計(jì)了編碼器。雖在實(shí)驗(yàn)箱上可用總線代替,例如按鍵“1”和按鍵“2”,但在驗(yàn)證時(shí)發(fā)現(xiàn):當(dāng)輸入總線輸入值為0時(shí),若需下一個(gè)輸入值為2,而按鍵“1”只能先提供輸入值1,之后才能提供輸入值2。因此,在設(shè)計(jì)語(yǔ)音信箱控制系統(tǒng)時(shí)引入編碼器[11]。
根據(jù)軟件波形仿真的步驟,在實(shí)驗(yàn)箱上做硬件仿真時(shí),其結(jié)果與軟件仿真一致。
(2)系統(tǒng)的時(shí)延是由于在仿真的過程中產(chǎn)生的。系統(tǒng)對(duì)程序進(jìn)行仿真、編譯等過程中需要一定的時(shí)間,這樣輸出端相對(duì)于輸入端必然會(huì)產(chǎn)生一定的時(shí)延。設(shè)計(jì)系統(tǒng)產(chǎn)生的時(shí)延如圖6所示,產(chǎn)生的最大時(shí)延為11.5 ns,相當(dāng)于11.5 ns/200 ns個(gè)時(shí)鐘,即0.057 5個(gè)時(shí)鐘,小于最大時(shí)延容忍度0.1個(gè)時(shí)鐘。對(duì)于數(shù)字電路而言,完全可滿足語(yǔ)音信箱系統(tǒng)的設(shè)計(jì)要求[12]。
圖6 時(shí)延結(jié)果
語(yǔ)音信箱主要為語(yǔ)音留言應(yīng)用。隨著技術(shù)的發(fā)展及業(yè)務(wù)需求增多,語(yǔ)音信箱還可擴(kuò)展為支持傳真、圖片及視頻的應(yīng)用。例如Visual Voice Mail能顯示呼叫者的信息,并可任意挑選語(yǔ)音信件查看,而無(wú)需按照順序逐一查看,在歐美運(yùn)營(yíng)商已有了大規(guī)模的應(yīng)用。VVM也是運(yùn)營(yíng)商將重點(diǎn)發(fā)展的智能網(wǎng)業(yè)務(wù)之一。
仿真及GW48硬件平臺(tái)驗(yàn)證表明,采用上述有限狀態(tài)機(jī)原理進(jìn)行語(yǔ)音信箱系統(tǒng)設(shè)計(jì),不但可減少設(shè)計(jì)復(fù)雜度,降低開發(fā)成本,且實(shí)用性強(qiáng)、時(shí)延少。本設(shè)計(jì)可直接作為語(yǔ)音信箱系統(tǒng)開發(fā)實(shí)例,同時(shí)對(duì)類似的業(yè)務(wù)應(yīng)用也有實(shí)際參考意義。
[1]王曉磊,李宏生.基于有限狀態(tài)機(jī)的數(shù)字溫度傳感器控制系統(tǒng)設(shè)計(jì)[J].艦船電子工程,2010,12(1):1-3.
[2]徐紹劍,張平,孫吉利.基于有限狀態(tài)機(jī)的通用雷達(dá)定時(shí)器設(shè)計(jì)[J].電子器件,2007,30(5):4 -5.
[3]周澤朋,金甌.基于有限狀態(tài)機(jī)的自動(dòng)售貨機(jī)控制器[J].單片機(jī)與嵌入式系統(tǒng),2009,10(2):6-5.
[4]徐琳茜,吳開炎,趙建濤.基于語(yǔ)音卡的語(yǔ)音信箱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].華北電力大學(xué)學(xué)報(bào),2006,33(4):19-25.
[5]李國(guó)麗,朱維勇,何劍春.EDA與數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2013.
[6]沈任元.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:機(jī)械工業(yè)出版社,2010.
[7]楊剛.基于狀態(tài)機(jī)的嵌入式系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,2010.
[8]苗麗華.VHDL數(shù)字電路設(shè)計(jì)教程[M].北京:人民郵電出版社,2012.
[9]李學(xué)華,何建新.基于PCI總線的雷達(dá)數(shù)據(jù)采集及定時(shí)板的設(shè)計(jì)[J].計(jì)算機(jī)工程,2006,32(9):273 -274.
[10]李列文,桂衛(wèi)華,胡小龍.一種基于FPGA的低功耗、容錯(cuò)狀態(tài)機(jī)設(shè)計(jì)方法[J].湖南大學(xué)學(xué)報(bào):自然科學(xué)版,2010,37(6):77-82.
[11]劉小平,何云斌,董懷國(guó).基于Verilog HDL的有限狀態(tài)機(jī)設(shè)計(jì)與描述[J].計(jì)算機(jī)工程與設(shè)計(jì),2008(4):12-14.
[12]Wagner F.Modeling software with finite state machines:a practical approach[M].Germany:Auerbach Publications,2006.