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