O 引 言
莫尔斯电报自问世以来,已广泛应用于通信领域之中。目前基于通用计算机平台的报务终端已能够实现莫尔斯报的自动收发,但传统的人工拍发和收报方式以其便携性和顽存性仍然无法被完全替代。针对以往报,务人员的莫尔斯报训练装置存在着依赖电脑使用不便,用键盘模拟手电键缺乏真实感,算法适应性差,识别率低等问题,采用以TI公司的MSP430低功耗16位单片机为核心,设计了一种莫尔斯报训练装置,具有单独使用和连接电脑两种方式,使用标准报务手电键和耳机,能够完成发报和收报两种训练,提高了模拟训练的真实性和训练水平。
1 整体设计方案
莫尔斯码的原理是以长短信号及间隔的不同组合代表数字、字母等字符。训练器以MSP430单片机为核心处理携带此信息的电键信号,如图1所示。
训练器设计了两种训练方式:发报训练和收报训练。
l.1 发报训练
发报训练是指报务人员根据指示的一组报文拍发,手电键敲击的信号由训练器采集、处理并识别出莫尔斯码,在数码管上显示或通过TUSB3410芯片提供的USB接口传至电脑上位机软件。
在发报训练时,分别使用高、低电平表示间隔和点划。这样拍发出的电键信号实际上就是一组时长不等的高、低电平组合,如图2所示。
图2中td,th,tm,tz分别表示点码、划码、码间隔、字间隔信号的时长。
用单片机的I/O口对整形后的电键信号进行不间断采样,根据高、低电平持续时间,通过识别算法解析出码符号。同时,在电键信号的控制下给出频率为500 Hz的方波作为发报监听音送往耳机。
1.2 收报训练
收报训练是指训练器在电脑的控制下发出莫尔斯码对应的电键音,报务人员通过耳机或喇叭监听并同时记录报文。
在收报训练时,将TUSB3410传来的报码实时翻译为点、划和间隔码,并在此信号的控制下发出500 Hz单音。
2 电键信号预处理电路
电键信号的预处理电路如图3所示。
设计中,用一个上拉电阻将电键开关跳线J4的一脚拉至高电平,另一脚接地。这样,在发报训练中,当电键抬起时,输出高电平,表示间隔信号;当电键被按下时,输出低电平,表示点划信号。为了消除高低电平交替过程中可能出现的毛刺,消除抖动,用CD4011芯片中的两级与非门(U6A和U6B)对此信号进行整形处理,此时来自MSP430 P3.1脚的KEY_CTL控制信号为应高电平。在4脚输出的信号连接到MSP430的P3.0脚,利用定时器A进行周期为1 ms的查询,以获取各信号的时长,再通过译码算法译出字符。电键信号的拍发过程中还需要提供电键音反馈给操作者。同样利用定时器在每次查询的同时对P3.2脚取反,能够得到500 Hz的方波,提供给CD4011的8脚。利用经过U6A一次取反后的电键信号(3脚)作为输出使能,控制与非门U6C的开启和关闭,保证只有在按下电键开关时才输出电键音。电键音通过LM386芯片放大后,由耳机或喇叭输出。
收报训练时,电键是一直抬起的,而KEY_CTL信号受MSP430的控制。当MSP430解析出点划或间隔信号时,使KEY_CTL相应的拉低或拉高,从而使KEY_SND电键音同步输出或断开。
3 码识别算法的设计
3.1 算法难点分析
莫尔斯码中,点码时长td、划码时长th之比一般为1:3,码间隔tm、字间隔tz、词间隔tc之比通常为1:3:5。人工拍发的摩尔斯码信号,由于报务人员熟练程度和使用习惯的不同,码速和各信号实际时长都相差很大,比例也不可能非常标准,在拍发过程中还会不断变化,因此,算法对信号时长阈值的选取要因人而异,在运行中自动调整适应。以往的算法要么采取固定时长阈值的方法,牺牲了适应性,如绝对比较法;要么采取固定修正因子的方法牺牲了初期的识别率,如冈瑟算法,难以取得识别速度、识别准确度和适应性之间的平衡。
3.2 判定阈值基准值的选取
电键刚开始拍发时程序不知晓报务人员的情况,因此必须选取合适的判定阈值基准值,以保证此时识别的准确性。按照一般的拍发速度和规定,选择点码时长基准值td=50 ms,划码时长基准值th=3td=150 ms,点划码的判定阈值Tdh=(td+th)/2=2td=100 ms,码间隔时长基准值tm=50 ms,字间隔时长基准值tz=3tm=150 ms,码、字间隔的判定阈值Tmz=(tm+tz)/2=2tm=100 ms。
3.3 码识别方法
莫尔斯码中的字符由一系列点、划信号的组合惟一表示。算法中采用改进的查表法来进行莫尔斯码的译码。设计一个定长表,将莫尔斯码放入表项值中。由于莫尔斯码中长码、短码的长度不一,为了方便比较为每项预留16 b,用10表示点码,用11表示划码,剩余用OO补齐,如图4所示。
算法采取等距离判定法区分点码与划码、码间隔与字间隔,即取点、划码时长的平均值作为它们之间的判定阈值,取码、字间隔时长的平均值作为其判定阈值。识别的完整流程如图5所示。
采样电平翻转时,记录上一个状态的持续时间t。对于码信号,当t>Tdh时,表示解出划码,在码值中存入11,反之则存入10;对于间隔信号,当t>Tmz时,代表解出字间隔,将码值用00补足16 b后进行顺序法查表,查出的位置值经过换算就能得到对应的莫尔斯码符号。
3.4 判定阈值的修正方法
为了实时跟踪报务人员的击键状态,算法需要根据最新的输入码时长不断对判定阈值做出修正,采用加权平均的方法可以实现判定阈值的平滑变化。最近一次判定为点码的修正流程如图6所示。其他时长的修正方法与此类似。
(1)判断最近一次点码时长是否符合筛选要求。因为码文中总有一些出错的或时长相差较大的,如果将这些时长也用来修正阈值会对其准确性产生较大的影响。t′d表示最近一次的点码时长,t′d表示上一次的点码时长,a为筛选因子。a取的越大则阈值起伏越大,此处取为O.5。满足筛选要求的数据进入步骤(2),否则放弃本次修正。
(2)对点码时长求加权平均。t′d表示修正后的点码时长,β为修正因子。β越接近于1,对阈值的平滑作用越强,但跟踪能力越差。开始阶段为了迅速适应报务人员的习惯,取β为0.5,随着拍发的进行,为了保证阈值的平稳变化,将β卢逐步减小到0.2。
(3)根据最近一次点码时长更新点划码判定阈值。其中t′d表示上次的划码时长。
(4)对点划判定阈值做平滑修正。T"db表示点划码判定阈值的最新值,t′dh表示上一次的点划码判定阈值。
4 结 语
采用上述设计的莫尔斯报装置可在不接驳电脑的情况下使用,识别结果直接在LED上滚动显示,也可连接电脑,在上位机软件中进行成绩评定,使用方便灵活。经过改进的算法识别速度快,错码率低,在算法跟踪速度和识别准确度间取得了良好的平衡。该装置经报务人员大规模使用,60~140码/分条件下误识别率小于10-5,效果良好。