基于有限狀態(tài)機的Morse碼識別算法設(shè)計與實現(xiàn)_第1頁
基于有限狀態(tài)機的Morse碼識別算法設(shè)計與實現(xiàn)_第2頁
基于有限狀態(tài)機的Morse碼識別算法設(shè)計與實現(xiàn)_第3頁
基于有限狀態(tài)機的Morse碼識別算法設(shè)計與實現(xiàn)_第4頁
基于有限狀態(tài)機的Morse碼識別算法設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于有限狀態(tài)機的Morse碼識別算法設(shè)計與實現(xiàn)摘要:針對手工拍發(fā)莫爾斯碼各信號間的比例隨機性較強,自動譯碼判斷準(zhǔn)確度不高等問題,提出了一種基于有限狀態(tài)的莫爾斯碼自動識別算法。將電鍵拍發(fā)過程劃分為六種狀態(tài),有利于C+語言編程實現(xiàn)的類化與建模。算法能根據(jù)報務(wù)員發(fā)報時碼速的變化而自動調(diào)整莫爾斯碼各個判別門限,從而大大提高了碼字識別率。最后分析了抽樣誤差等對莫爾斯判決門限的影響,給出了各種誤差消除的解決方案。在Windows平臺上的VisualC+可視化編程環(huán)境中實現(xiàn)了該算法,并給出了具體的算法設(shè)計流程圖。0引言基于莫爾斯信號的通信時人類最早的無線通信方式,具有傳統(tǒng)型、經(jīng)濟型和有效性等優(yōu)點,所以它仍廣

2、泛被應(yīng)用在海事移動通信、航空移動通信、廣播、衛(wèi)星通信當(dāng)中。目前莫爾斯碼識別算法主要有岡瑟算法、相對比較法、絕對比較法、概率分區(qū)法等。但上述算法或要求固定參考時間作為判決,獲益碼字概率來分析判別,所以判別正確率低;且莫爾斯報多用人工手敲電鍵發(fā)報,但在實際工作環(huán)境中由于報務(wù)員的個體差異,以及發(fā)報速度不斷變化,莫爾斯的判別時間門限也發(fā)生相應(yīng)地變化,所以上述算法自動識別Morse碼的準(zhǔn)確率不高,實際應(yīng)用中達不到譯碼要求。有限狀態(tài)機(FSM,FiniteStateMachine)是具有離散輸入與輸出的系統(tǒng)的一種數(shù)學(xué)模型。表現(xiàn)為有限個不同狀態(tài),在不同的輸入作用下,系統(tǒng)將從一個狀態(tài)遷徙到另一個狀態(tài)?;谟邢?/p>

3、狀態(tài)機的Morse碼算法將Morse發(fā)報過程劃分為相應(yīng)的六種狀態(tài),并在各個狀態(tài)下實時跟蹤Morse報文發(fā)報速度變化而自動修改各個判決門限范圍,簡化了識別過程并且大大提高了報文識別率。1系統(tǒng)總體設(shè)計該系統(tǒng)中終端操作平臺硬件電路不停的對手電鍵信號進行抽樣采集,采集速率為每秒100次。根據(jù)采樣得到的一串高低電平脈沖,將點劃信號解碼為低電平脈沖,間隔解碼為高電平脈沖。對莫爾斯電碼的有限狀態(tài)基譯碼就是在此基礎(chǔ)上進行的。譯碼算法流程如圖1所示。圖1基于狀態(tài)機的譯碼算法流程圖電鍵拍發(fā)開始后,首先對各個狀態(tài)基進行判別,執(zhí)行相應(yīng)的狀態(tài)機響應(yīng)。經(jīng)過狀態(tài)機的響應(yīng)函數(shù)執(zhí)行后,確定出了每種信號的類別,并進行適當(dāng)組合,當(dāng)

4、遇到碼間間隔或組間間隔時就得到一個字母的莫爾斯碼的電話組合,并查“碼表”得出相應(yīng)的碼字。同時將碼速變化反饋調(diào)整點時間長度,重新計算各間隔判決門限,提高了譯碼準(zhǔn)確率。2有限狀態(tài)機設(shè)計與碼速的計算2.1有限狀態(tài)機判別及狀態(tài)轉(zhuǎn)移莫爾斯碼一般使用電鍵來進行拍發(fā),根據(jù)電鍵按下與抬起可劃分為6個不同的拍發(fā)狀態(tài)。6個按鍵狀態(tài)定義如表1所示。表1狀態(tài)機與按鍵狀態(tài)的對應(yīng)關(guān)系狀態(tài)機按鍵狀態(tài)Invalid無用的KeyFirstDown第一次按下電鍵KeyDown電鍵按下KeyKeepDown電鍵保持按下KeyUp電鍵抬起KeyKeepUp電鍵保播抬起圖2按鍵狀態(tài)轉(zhuǎn)移圖根據(jù)狀態(tài)變化將有限狀態(tài)機各個狀態(tài)畫成狀態(tài)轉(zhuǎn)移圖(

5、見圖2)。用圓圈表示狀態(tài);狀態(tài)轉(zhuǎn)移用有向弧線表示;用標(biāo)有箭頭的節(jié)點表示初始狀態(tài);屬于終結(jié)狀態(tài)機中的狀態(tài)用雙圓表示。在任意發(fā)報狀態(tài)中,當(dāng)接收到高低電平時,都可由狀態(tài)轉(zhuǎn)移圖判斷出按鍵下一步處于什么狀態(tài)。并且當(dāng)狀態(tài)變化時便可計算出各狀態(tài)持續(xù)的時間。例如現(xiàn)在按鍵處于KeyKeepDown狀態(tài),若硬件電路下一時刻對電鍵抽樣得到的是低電平,及按鍵沒有抬起,則根據(jù)狀態(tài)轉(zhuǎn)移圖可知,按鍵還在KeyKeepDown狀態(tài),并將KeyKeepDown狀態(tài)時間累加。當(dāng)對電鍵抽樣時間得到的是高電平,即電鍵抬起了,根據(jù)狀態(tài)轉(zhuǎn)移圖,按鍵此刻處于KeyUp狀態(tài),此時便可得出KeyKeepDown狀態(tài)總共所持續(xù)的時間。以此類推,

6、可以得到各個狀態(tài)持續(xù)的時間。2.2碼速計算及信號類別域界設(shè)定由于報務(wù)員發(fā)報時不可能保持恒定的碼速,所以要計算莫爾斯碼信號的實時碼速。根據(jù)莫爾斯碼的碼速,便可劃分點、劃、三種間隔的門限范圍,從而準(zhǔn)確地譯碼。標(biāo)準(zhǔn)碼速通常采用“Paris”制或“CODEX”制兩種計速方法。文中碼速Speed的計算公式是:Speed=(m_JS+(m_JiZu-1)*4)*60.0/intTime*(1000/500);m_JS為每組中碼的位置;m_JiZu為碼組數(shù)(4個嗎一組);intTime為抽樣時間(定時器時間為500ms)。在定時器到達時刻,按上面公式實時計算得出新的碼速,并在發(fā)報界面上顯示出來。發(fā)報訓(xùn)練前,

7、報務(wù)員可以選定一個發(fā)報碼速,根據(jù)發(fā)報碼速由碼速-點時間長度經(jīng)驗曲線可計算出對應(yīng)的點時間長度,從而在此基礎(chǔ)上進行判別譯碼。根據(jù)碼速計算點時間長度的程序流程,如圖3所示,其中碼速單位為碼/分,點時間長度單位為ms,Round為四舍五入取整運算。在訓(xùn)練過程中碼速往往發(fā)生變化,則對碼速進行動態(tài)計算,得出點時間長度的變化。由點時間長度可以推算出點、劃和三個時間間隔的長度,從而實現(xiàn)自適應(yīng)碼速譯碼。(弄站)_NONO碼速林處理范圍詢)丫點時間長度(葩-=90-Rcund(-40)*10/20)=40-Round(-180)*l(V60)圖3根據(jù)碼速計算點時間長度3有限狀態(tài)基狀態(tài)響應(yīng)及Morse碼識別根據(jù)從手

8、電鍵接收的高低電平,并按照有限狀態(tài)機的按鍵狀態(tài)轉(zhuǎn)移圖,可以判決出發(fā)報處于什么狀態(tài)中。對各狀態(tài)機設(shè)計相應(yīng)的響應(yīng),從而最終判決出碼字與組字:(1)Invalid狀態(tài)機:break(退出);(2)KeyKeepDown狀態(tài)機:按鍵按下狀態(tài)時間與抽樣時間累加;(3)KeyKeepUp狀態(tài)機:按鍵抬起狀態(tài)時間與抽樣時間累加;(4)KeyFirstDown狀態(tài)機:按鍵按下狀態(tài)時間等于抽樣時間,電鍵開始發(fā)報;(5)KeyUp狀態(tài)機:可以得出KeyKeepDown狀態(tài)所持續(xù)的時間,即按鍵狀態(tài)持續(xù)的時間。根據(jù)點時間長度歸一化按鍵時間差(按鍵狀態(tài)時間長度點時間長度),對歸一化后的按鍵時間差判別碼字的點與劃,如大于

9、判決值則為劃,小于判決值則為點。標(biāo)準(zhǔn)的Morse報文中點長:劃長=1:3,但是在低速拍發(fā)時,點與劃的長度比例難以達到一比三的關(guān)系,劃一般較長。否則,聽起來就會有點粗、劃短的感覺。所以一般用經(jīng)驗值4.0/3.0來判決點與劃。判決流程如圖4所示。圖4KeyUp與KeyDown狀態(tài)機下判別流程處理(6)KeyDown狀態(tài)機:按鍵狀態(tài)變化即可得出KeyKeepUp狀態(tài)下抬鍵所持續(xù)的時間。根據(jù)點時間長度歸一化抬鍵時間差(抬鍵狀態(tài)時間長度點時間長度),對歸一化后的抬鍵時間差進行判別,得出按鍵時間差為碼內(nèi)間隔、字符間隔、字組間隔的一種。標(biāo)準(zhǔn)的Morse報文中點時間長度:碼內(nèi)間隔:字符間隔:字組間隔=1:1:

10、3:7,但是在低速拍發(fā)報文時往往達不到上面的要求,一般按經(jīng)驗值判決各個間隔。判斷流程如圖4所示。每當(dāng)判別出點與劃時,計算出當(dāng)前碼速,根據(jù)圖3中碼速與點時間關(guān)系將點時間修正反饋給各狀態(tài)機,從而實現(xiàn)了莫爾斯碼的自適應(yīng)識別。將各有限機狀態(tài)識別出的點與劃依次存儲起來,當(dāng)識別出字符間隔時,將判別出的點與劃進行組合與“碼表”對應(yīng)查得相應(yīng)的字符。若“碼表”中不存在識別出的點、劃組合,說明拍發(fā)Morse碼有誤,并自動以“/”代替。同理,當(dāng)識別出字組間隔時按“碼表”將字符與字組譯出。4抽樣誤差等判決門限影響及解決方案4.1軟件消抖設(shè)計實現(xiàn)(1)波形抖動的產(chǎn)生。終端操作平臺硬件電路每隔10ms抽樣電鍵信號,當(dāng)電鍵

11、為抬起狀態(tài)時,抽樣信號為高電平,系統(tǒng)解析為符號“0”;當(dāng)電鍵為按下狀態(tài)時,抽樣信號為低電平,系統(tǒng)解析為符號“1”。但是,在實際拍發(fā)中,抽樣電路會產(chǎn)生毛刺,或發(fā)報人員在拍發(fā)點劃時電鍵發(fā)生極短時間的彈起,而當(dāng)抽樣時間剛好發(fā)生在毛刺或電鍵非正常抬起的時刻,系統(tǒng)會解析為電鍵處于KeyUp狀態(tài),下一個抽樣時刻又解析為KeyDown狀態(tài),如果不將這個毛刺出去,會對點時間的計算有極大的影響。波形抖動的產(chǎn)生如圖5所示。(2)軟件消抖設(shè)計消抖出去在KeyDown狀態(tài)基下,判斷抬起時間(timeSpaceInterval)是否小于某個特定值,如果抬起時間小于該值時,說明為電鍵波形抖動狀態(tài),繼續(xù)保持KeyKeepD

12、own狀態(tài);如果抬起時間大于設(shè)定值,則表示電鍵上一狀態(tài)處于KeyUp狀態(tài),從而計算點時間變化。軟件消除抖動if(timeSpacelnterval50)小于5ms,去抖動算法timeKeylnterval+=timeSpaceInterval;回歸“保持按下”狀態(tài)機m_EnumKeyStatus=KeyKeepDown;Break;else按鍵加入修正:當(dāng)前一時刻值的1/2timeKeyInterval=timeSimpleInterval/2.0;表示按下一按鍵時間差:點或劃(變化)4.2抽樣誤差修正抽樣的任務(wù)是對模擬信號進行時間上的離散化處理。所以它的做法為,將時間上連續(xù)的模擬信號M(t)

13、,送到一個叫作抽樣門的開關(guān)電路,每隔一段時間對模擬信號抽取一個樣值。在電鍵拍發(fā)中,電鍵的KeyKeepDown狀態(tài)和KeyKeepUp狀態(tài)下為一個時間連續(xù)的波形,當(dāng)電鍵各狀態(tài)基轉(zhuǎn)變時,抽樣電路不可能計時發(fā)現(xiàn)并會產(chǎn)生大小不等的延遲T,T的范圍為010ms。雖然誤差值比較小,但是狀態(tài)基轉(zhuǎn)變時都會產(chǎn)生抽樣誤差,誤差時間疊加將對點時間的計算帶來較大的誤差,所以應(yīng)該將該誤差平均化到各抽樣時間點,減小其對碼判決的干擾。抽樣誤差的產(chǎn)生如圖6所示。具體編程實現(xiàn)是在KeyUp和KeyDown狀態(tài)基下,將上一時刻的持續(xù)時間timeKeyInterval加上誤差估測值timeSimplemis。代碼如下:按鍵時間加

14、入修正:當(dāng)前一時刻值的1/2timeKeyInterval+=timeSimpleInterval/2.0;間隔時間加入修正:前一時刻值的1/2timeSpaceInterval+=timeSimpleInterval/2.0;表示空、空時間差4.3二次譯碼判決設(shè)計報務(wù)人員在訓(xùn)練時不可能以一個恒定的碼速進行拍發(fā)。在拍發(fā)過程中,提速或降速時碼間間隔過小,會發(fā)生兩個碼緊連一起的情況。一般情況下一個莫爾斯碼的點和劃不會超過5個,然后在提速或減速時碼間間隔很有可能不夠長,導(dǎo)致兩個碼的點或劃連在一起變成一個碼,使碼的點與劃的個數(shù)超過5個,識別不出碼字。二次譯碼判決為在點與劃組合識別不出某個碼時,再將儲存點與劃的組合與對應(yīng)的報底的兩個碼字進行對比,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論