吳 瓊,張 明,田明才
(1.沈陽大學(xué) 信息學(xué)院,遼寧 沈陽 110044;2.東軟股份有限公司,遼寧 沈陽 110179)
基于有限狀態(tài)機(jī)的Morse碼識別算法的VHDL實(shí)現(xiàn)
吳 瓊1,張 明1,田明才2
(1.沈陽大學(xué) 信息學(xué)院,遼寧 沈陽 110044;2.東軟股份有限公司,遼寧 沈陽 110179)
基于Morse碼的基本原理,提出了一種基于有限狀態(tài)機(jī)的Morse碼自動識別算法·將電鍵拍發(fā)過程劃分為6種狀態(tài),利用VHDL硬件描述語言的強(qiáng)大邏輯描述能力,給出了在MAX PlusⅡ開發(fā)軟件環(huán)境下,設(shè)計識別Morse碼的具體方法和仿真分析結(jié)果·算法能根據(jù)報務(wù)員發(fā)報時的碼速確定Morse碼的判別門限,大大提高了碼字識別的準(zhǔn)確率·
莫爾斯碼;有限狀態(tài)機(jī);VHDL;碼速
莫爾斯(S F B Morse,1791—1872)將電訊實(shí)用化,發(fā)明了莫爾斯碼,建立了早期的電訊通訊模式·莫爾斯信號作為短波通信中簡單、實(shí)用的一種方式,目前仍廣泛應(yīng)用在海事移動通信、航空移動通信、廣播、衛(wèi)星通信當(dāng)中[1]·
本文基于VHDL硬件描述語言,應(yīng)用有限狀態(tài)機(jī)的描述思想,將Morse碼發(fā)報過程劃分為6種不同的狀態(tài),在各自狀態(tài)下完成個體發(fā)報速度判別,以此確定碼字判決門限,實(shí)施狀態(tài)轉(zhuǎn)換,完成Morse電報的碼字識別功能,在考慮個體差異的前提下,大大提高了報文識別的準(zhǔn)確率·
莫爾斯碼是將文字以數(shù)個長短不同的訊號代表,作成最簡單的電報通訊,標(biāo)準(zhǔn)的Morse碼由點(diǎn)(·)、劃(-)兩種符號組成·以點(diǎn)為一基本信號單位,劃長∶點(diǎn)長=3∶1,點(diǎn)與點(diǎn)、點(diǎn)與劃、劃與劃間隔均為標(biāo)準(zhǔn)信號單位·字符間隔為3個標(biāo)準(zhǔn)信號單位,字之間的間隔為5個標(biāo)準(zhǔn)信號單位·
目前,莫爾斯碼識別算法主要有岡瑟算法、相對比較法、絕對比較法、概率分區(qū)法等[2]·這些算法都要求以固定參考時間或碼字概率來分析判別,但實(shí)際發(fā)報過程中,由于報務(wù)員的個體差異,發(fā)報速度不同,莫爾斯碼的判別時間門限不能適應(yīng)相應(yīng)的變化,所以判別準(zhǔn)確率不高,實(shí)際應(yīng)用中往往達(dá)不到譯碼要求·
圖1 系統(tǒng)譯碼算法流程圖
系統(tǒng)譯碼算法流程如圖1所示·
該系統(tǒng)主要由如下三部分組成·
狀態(tài)機(jī)判別部分:在時鐘上升沿對按鍵信號進(jìn)行抽樣采集,依當(dāng)前狀態(tài)機(jī)狀態(tài)與輸入信號值i共同進(jìn)行判別,執(zhí)行狀態(tài)確定與轉(zhuǎn)換·
狀態(tài)機(jī)響應(yīng)部分:依據(jù)時鐘采樣得到的電鍵首次按下周期數(shù)作為基準(zhǔn)信號單位,設(shè)定各碼字判別的域界標(biāo)準(zhǔn)·以間隔確定出每種信號的類別·
譯碼表譯碼部分:遇到字符間隔時對碼字(點(diǎn)劃)進(jìn)行適當(dāng)組合,查“碼表”得到相應(yīng)的碼字·對于字組間隔,對碼字進(jìn)行適當(dāng)組合,得到單詞·
根據(jù)電鍵按下與抬起過程可劃分為6種不同的拍發(fā)狀態(tài)[3]·6個按鍵狀態(tài)的定義如表1所示·
將有限狀態(tài)機(jī)各個狀態(tài)作成狀態(tài)轉(zhuǎn)移圖(見圖2)·在任意發(fā)報狀態(tài)中,當(dāng)接收到高低電平時,都可由狀態(tài)轉(zhuǎn)移圖判斷出系統(tǒng)下一步處于什么狀態(tài)·對各狀態(tài)機(jī)設(shè)計相應(yīng)的響應(yīng),從而最終判決出碼字與組字·例如:系統(tǒng)當(dāng)前處于狀態(tài)機(jī)在 Keyup(電鍵抬起)狀態(tài),當(dāng)輸入為1時,表征電鍵持續(xù)抬起,進(jìn)入 Keykeepup狀態(tài);當(dāng)輸入為 0時,進(jìn)入Keydown狀態(tài),表征電鍵按下·
表1 狀態(tài)機(jī)狀態(tài)與按鍵狀態(tài)的對應(yīng)關(guān)系
圖2 狀態(tài)轉(zhuǎn)移圖
圖3 碼字判斷規(guī)則域及流程圖
考慮到報務(wù)員個體發(fā)報時間存在差異,在發(fā)報前,由選定的報務(wù)員作“點(diǎn)”時長確認(rèn),依據(jù)首次電鍵按下持續(xù)時間的時鐘周期數(shù)作為標(biāo)準(zhǔn)信號單元,進(jìn)行歸一化,設(shè)定各信號閾值判決標(biāo)準(zhǔn)·在Keyup狀態(tài)和 Keydown狀態(tài),分別對歸一化的按鍵時間與抬鍵時間作判斷,表征輸出碼字類型,碼字判斷規(guī)則域及流程如圖3所示·
該系統(tǒng)采樣時鐘頻率設(shè)定 100 Hz,即每隔0.01 s對時鐘上升沿進(jìn)行信號監(jiān)測,判別有限狀態(tài)機(jī)的狀態(tài),對狀態(tài)持續(xù)時間累加,判別碼字,輸出Morse電報碼·
Invalid狀態(tài)設(shè)定為系統(tǒng)初始狀態(tài),檢測到電鍵首次按下,將狀態(tài)轉(zhuǎn)移至 Keyfirstdown并持續(xù)直到電鍵抬起,依據(jù)該狀態(tài)持續(xù)時間來確定標(biāo)準(zhǔn)信號單元,存儲于信號量a中,系統(tǒng)轉(zhuǎn)入 Keyup狀態(tài)·進(jìn)入循環(huán)檢測·
Keyup狀態(tài):由 Keydown或 Keykeepdown狀態(tài)轉(zhuǎn)入,表明按鍵狀態(tài)發(fā)生變化,用于確定按鍵按下狀態(tài)持續(xù)的時間,存儲于信號量中·
Keykeepdown狀態(tài)機(jī):由 Keyup狀態(tài)轉(zhuǎn)入,表明電鍵處于持續(xù)按下狀態(tài),開始計數(shù)·
Keydown狀態(tài):由 Keyup或 Keykeepup狀態(tài)轉(zhuǎn)入,表明按鍵按下,用于確定按鍵按下狀態(tài)持續(xù)的時間,存儲于信號量中·
Keykeepup狀態(tài)機(jī):由 Keyup狀態(tài)轉(zhuǎn)入,表明電鍵處于持續(xù)抬起狀態(tài),開始計數(shù)·
過程如下:假定現(xiàn)在按鍵處于 Keykeepdown狀態(tài),若硬件電路下一時刻對電鍵抽樣得到的是低電平,即按鍵沒有抬起,則根據(jù)狀態(tài)轉(zhuǎn)移圖可知,按鍵還在 Keykeepdown狀態(tài),并將Keykeepdown狀態(tài)時間累加·若對電鍵抽樣時間得到的是高電平,即電鍵抬起了,根據(jù)狀態(tài)轉(zhuǎn)移圖,按鍵此刻處于 Keyup狀態(tài),此時便可得出Keykeepdown狀態(tài)總共所持續(xù)的時間·以此類推,可以得到各個狀態(tài)持續(xù)的時間·
外部時鐘信號Clk,i為串行輸入按鍵狀態(tài),o為輸出信號碼字判別·在時鐘上升沿對輸入信號i進(jìn)行檢測,判斷狀態(tài)機(jī)狀態(tài),進(jìn)行狀態(tài)轉(zhuǎn)換或信號累加工作,最終完成碼字識別·Morse碼識別過程核心代碼[4]見附錄·
如圖4所示,i為電鍵狀態(tài)模擬,首次按下時間累加值a=3,作為報務(wù)員標(biāo)準(zhǔn)信號單元,信號量b依據(jù)狀態(tài)基持續(xù)時間進(jìn)行計數(shù),直至按鍵抬起(或按下)判別b的取值區(qū)間,確定輸入鍵碼類型,通過輸出引腳o輸出·本例中輸出依次為“0,3,0,2,1”,依照約定即“點(diǎn)、字符間隔、點(diǎn)、點(diǎn)間隔、劃”·由此可見,該系統(tǒng)能夠依照報務(wù)員個體按鍵速度靈活確定Morse碼閾值范圍,正確識別出電鍵按下與抬起狀態(tài)的具體信號類型·
圖4 仿真波形圖
采用VHDL硬件描述語言,基于有限狀態(tài)機(jī)的思想,設(shè)計并實(shí)現(xiàn)了一種碼速可預(yù)設(shè)的莫爾斯碼自動譯碼算法·該算法依據(jù)報務(wù)員個體初始發(fā)報碼速,自動計算標(biāo)準(zhǔn)點(diǎn)時間長度與各個判斷門限,從而大大提高了譯碼準(zhǔn)確率·在MAX PlusⅡ編譯環(huán)境下,經(jīng)仿真測試能正確地譯出點(diǎn)劃及各種間隔碼字,達(dá)到了預(yù)期要求·系統(tǒng)進(jìn)一步改進(jìn)的思路為:依據(jù)報務(wù)員實(shí)時碼速變化引入反饋網(wǎng)絡(luò),實(shí)現(xiàn)在一次譯碼過程中動態(tài)改變各門限閾值的功能,進(jìn)一步提高譯碼過程的準(zhǔn)確率[5]·
[1] 霍建,劉鴻雁,段秀銘.手工拍發(fā)的莫爾斯信號種類識別算法設(shè)計[J].鞍山科技大學(xué)學(xué)報,2006,29(4):351-353.
[2] 李春曉,趙旦峰,李強(qiáng).用語音識別技術(shù)實(shí)現(xiàn)莫爾斯報的自動識別[J].信息技術(shù),2006(2):51-53.
[3] 馬威,張敬修,王虎幫.Morse電碼自動譯碼系統(tǒng)[J].兵工自動化,2007,26(6):51-55.
[4] 侯伯亨.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].西安:西安電子科技大學(xué)出版社,2004.
[5] 魏海艦,徐家品.一種手工莫爾斯電報質(zhì)量評估系統(tǒng)設(shè)計[J].微計算機(jī)信息,2008,24(8):4-7.
附錄:
Discerning Algorithm of Morse Code with VHDL Based on Finite State Machine
W U Qiong1,ZHAN G Ming1,TIAN Mingcai2
(1.School of Information Engineering,Shenyang University,Shenyang 110044,China;2.Neusoft Corporation,Shenyang 110179,China)
A Morse code automatically discerning algorithm on the finite state machine is put forward based on the basic principles of Morse code.The process of pressing the key is divided into six states.The concrete method and the simulation result is given of designing and identifying Morse code in the MAX PlusⅡdevelopment environment,which take advantage of the powerful logical description ability of the Very-High-Speed Integrate Circuit Hardware Description Language.The judgment threshold of Morse code could be determined according to the code-speed of telegraphic keying,which greatly enhanced the accuracy of the codeword identification.
Morse code;finite state machine;VHDL;code-speed
TN 917.2
A
2010-11-29
吳 瓊(1979-),女,遼寧鞍山人,沈陽大學(xué)信息學(xué)院講師,碩士·
1008-9225(2011)03-0001-04
【責(zé)任編輯:劉乃義】