一种单工异步曼彻斯特码接收解码方法与流程

文档序号:17658322发布日期:2019-05-15 22:12阅读:402来源:国知局

本发明涉及通讯领域,具体是一种单工异步曼彻斯特码接收解码方法。



背景技术:

异步曼彻斯特码是一种采用相位编码的通信编码方式,通过在一个码元周期内的高低电平持续时间和前后关系来决定传输的码元为0或者是为1。同步传输时,发送端要同时发送出数据信号和码元时钟信号,接收端用接收到的时钟信号对接收数据进行采样并恢复出码元数据。异步传输时,发送端只发送码元信号,不发送时钟信号,一般在码元数据之前发送同步头,接收端根据接收到的同步头,重新产生本地时钟,本地时钟对数据码元采样并恢复出与发送端相同的数据。单工传输是指数据传输方向为单向传输,双工传输是指数据传输方向为两个方向。

慢速率变化物理量的采集过程中,采集器输出数字量更新速率远大于被采集模拟量的变化速率。根据奈奎斯特采样理论,只要采集数字速率大于模拟信号变化速率的2倍,用采样后的数字信号就可以恢复出模拟信号。对于具有上述特性的模拟信号,采集完成后,就可以采用单工异步曼彻斯特码的方式将数据传输给后处理单元。相对于同步双工传输模式,单工异步模式只需要一根信号线就可以将传感器生成的数据传送给后处理单元。

异步曼彻斯特码信号中,每一位码元是由中间发生跳变的前后两个电平组成。异步曼彻斯特码数据帧包含5种类型的码元,分别是:空闲位、起始位、数据0位、数据1位和停止位。

其中空闲位代表无数据,由连续的高电平组成。起始位代表数据帧的开始,起始位前一半为低电平,后一半为高电平,高低电平持续时间各占50%。停止位代表数据帧的结束,与起始位相反,前一半为高电平,后一半为低电平,高低电平持续时间各占50%。数据1位,前1/4位为低电平,后3/4位为高电平。数据0位,前3/4位为低电平,后1/4位为高电平。

一个完整的曼彻斯特传输码字节由一个起始位、8个数据位、一个校验位和一个停止位构成,停止位后可以连接下一个字节的起始位,连续依次传输多个数据字节。多个数据字节构成一组数据帧,一个数据帧完成传感器一次测量数据的传输。校验位采用奇偶检验的方式,只对数据位进行校验,不包含起始位和停止位。

以往单工异步曼彻斯特码数据帧的接收处理由c语言完成代码实现,运行于cpu(中央处理器)或mcu(微控制器)类处理器中。受限于处理器的工作特性,这种由c语言代码实现的接收处理,一个处理器同时只能接收一路异步曼彻斯特码流,不能并行接收多路异步曼彻斯特码流数据。

现有的曼彻斯特码接收模块,要么没有检错纠错机制,要么检测纠错机制过于复杂。没有检测机制的接收模块,一旦传输过程中出现错误,就会将错误数据传递下去。而检测机制过于复杂的模块,系统复杂度超出了所能获取的检错收益,这都使得实现代价与性能不匹配。以往同步多工曼彻斯特码传输时,要采用多路信号线路。要传输双向数据信号,也要传输时钟信号,这就要求数据发送端包含时钟信号发生器。而且耗费较多的线路资源和硬件资源。



技术实现要素:

本发明的目的在于提供一种单工异步曼彻斯特码接收解码方法,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:

一种单工异步曼彻斯特码接收解码方法,具体步骤如下:

步骤一,获取接收码序列并且滤除接收码序列中持续时间小于一个时钟周期的毛刺干扰;

步骤二,识别接收码序列的起始位,启动解码状态机;

步骤三,解码状态机按照预定的状态流程,跟随接收码序列电平的变化而依次变化;

步骤四,识别接收码序列中大于一个时钟周期的异常电平变化,舍弃掉带有大于一个时钟周期异常电平变化的接收码序列;

步骤五,根据曼彻斯特码编码规则,判读数据帧的数据位,舍弃掉不符合编码规则的数据帧;

步骤六,将8个判读的数据位合并为一个接收数据字节,由8个数据位产生校验和,校验和与接收校验位进行异或判断,舍弃掉校验错误的数据帧;

步骤七,根据接收码序列的停止位产生字节输出时钟;

步骤八,将前后多个字节的数据拼接,恢复出一个完整的数据采集值;

步骤九,存储多个数据采集值,求出平均值,将偏离均值较大的数据采集值舍弃,取出其中偏离均值较小的数据采集值,再次取平均值,即可得到优化采样值。

作为本发明进一步的方案:步骤一中滤除接收码序列中的毛刺干扰的步骤如下:将接收码序列通过前置d触发器,前置d触发器的工作时钟速率为接收码序列速率的8倍,如果接收码序列中出现持续时间长度小于一个时钟周期的毛刺干扰,通过前置d触发器对接收码序列的二次采样,绝大多数的毛刺将被滤除,设计人员在实际测试中发现,正常的通讯情况下,出现毛刺是小概率事件,毛刺脉冲持续时间大于一个时钟周期是极小概率事件,用单一的前置d触发器对接收码序列滤波的方法,可以有效应对绝大多数的工程应用情况。

作为本发明进一步的方案:步骤三中解码状态机预定的状态流程如下:空闲状态、起始位状态、第0位状态、第1位状态、第2位状态、第3位状态、第4位状态、第5位状态、第6位状态、第7位状态、校验位状态、停止位状态。当检测到接收码序列电平第一次从高电平跳变到低电平,解码状态机将从空闲状态跳转到起始位状态,在起始位状态中完成对数据位条件进程复位操作。随后,电平从低电平跳变到高电平,再从高电平跳变到低电平,如果电平跳变顺序和电平保持时间与预设的保持一致,解码状态机将从起始位状态跳变到第0位状态。如果电平跳变顺序与预设的顺序不同,或者电平保持时间与预设的时间不同,解码状态机都将跳回到空闲状态。

解码状态机的每一个状态对应一个状态条件进程,一个解码逻辑包含多个状态条件进程,解码状态机进入这个状态后,相应的状态条件进程被触发启动,记录本状态的关键参数,这个状态停止后,状态条件进程停止运行,所记录的关键参数不再更新,这些关键参数可以被其他状态条件进程或模块调用。解码状态机的第0位状态到第7位状态,一共8个状态,这8个状态对应8个状态条件进程,每个进程记录对应数据状态位的高电平和低电平持续时间长度。如果低电平持续时间大于高电平持续时间长度,对应数据位就为0,否则就是1。如果高低电平持续时间长度相同,解码状态机会认为接收码序列电平出错,并将这一帧数据丢弃,单工通讯一般应用于过采样系统,数据更新速率远大于信号自身变化速率,而且采样数据还会被二次筛选,偶发的数据帧丢弃不会对系统造成影响。

经过前置d触发器滤波的接收码序列,理论上还存在持续时间长度大于一个时钟周期的错误电平的可能性,如果不做任何处理,就会产生错误的解码结果。而错误电平必然会破坏接收码序列原有的持续长度,根据错误电平会破坏接收码序列编码规则的特点,解码状态机持续监测当前的条件进程记录的参数,一旦出现越界参数,解码状态机立即返回到空闲状态,将当前的接收码序列丢弃。对于单工异步通讯模式中重复发送的曼彻斯特码数据帧,这种检错丢弃的处理方法是恰当的。

作为本发明进一步的方案:状态条件进程用来记录状态持续时间,可以用时钟周期数标识其持续时间长度。

作为本发明进一步的方案:步骤六中校验和由8个数据位并行异或得到,校验和与接收校验位比较得到校验结果,根据校验结果决定解码状态机的下一状态,如果校验结果正确,解码状态机就跳变到停止位状态,否则就跳变到空闲状态,并将这一个接收数据字节的数据帧丢弃。

作为本发明进一步的方案:步骤八中采用字节合并模块将多个字节数据合并为一个数据采样值。

与现有技术相比,本发明的有益效果是:本发明将多工多线传输模式更改为单工单线的传输模式,简化了线路资源和硬件资源。

与现有技术相比,本发明的有益还包括:本发明扩展了原有异步曼彻斯特码适应的硬件平台,将原有的c语言代码更改为硬件语言代码,从适用于mcu(微控制器)类芯片扩展到了fpga(现场可编程逻辑阵列)类芯片。

与现有技术相比,本发明的有益效果还包括:本发明解决了mcu(微控制器)类芯片不能同时接收多路异步曼彻斯特码流的问题,特别是多路不同数据率的码流,可以在一片fpga(现场可编程逻辑阵列)芯片上接收多路异步曼彻斯特码数据流,相对于以往的基于mcu的异步曼彻斯特码接收实现,本发明具有并发、实时、单线和高速传输的特点。

与现有技术相比,本发明的有益效果还包括:本发明提供了一种最契合于异步曼彻斯特码接收的三层结构的检错容错机制,按照信号流顺序依次为:第一层d触发器毛刺滤除;第二层编码规则检查删除;第三层小偏离平均处理。采用这样三层次的检错容错机制后,占用很小的软硬件规模达到了较好的检错容错效果,达到了复杂度和性能的较好平衡,可滤除接收信号中的干扰和毛刺,提高解码的准确率;具有可裁剪能力,可以适用于异步曼彻斯特码解码,应用前景广阔。

附图说明

图1为单工异步曼彻斯特码编码电平规则示意图。

图2为单工异步曼彻斯特码接收解码方法的实施例1单线单工温度采集系统的结构示意图。

图3为单工异步曼彻斯特码接收解码方法的实施例1接收逻辑原理组成框图。

图4为单工异步曼彻斯特码接收解码方法的实施例1接收状态流程图。

具体实施方式

下面结合具体实施方式对本专利的技术方案作进一步详细地说明。

实施例1

数字温度采集探头的输出采用单工异步曼彻斯特码形式,输出数据采用单线单向的形式向fpga芯片发送采集的温度数据。在fpga芯片内部使用本发明进行接收处理,本实施例的单线单工温度采集系统组成见图2。经过fpga芯片接收处理的温度采集值送给mcu,mcu再对多个采集值进行小偏离平均处理。

本实施例的数字温度采集探头的型号为tsic306,fpga采用intel(英特尔)公司的ep4ce10e22i7n芯片,mcu采用st(意法半导体)公司的stm32f407zgt6芯片。本实施例的数字温度采集输出数据率为8kbps,一个温度采集值包含两个字节,前高后低。模块处理的时钟速率为128khz,一个数据周期内包含16个时钟周期。

本实施例的模块组成包括:状态迁移进程模块、状态同步进程模块、状态条件进程模块、输出逻辑产生模块、字节时钟产生逻辑和小偏离平均处理模块,接收逻辑原理组成示意图如图3所示。

其中状态迁移进程以异步方式运行,根据状态条件进程的输出和输入的曼彻斯特码,给出下一状态;状态同步进程将状态迁移进程同步化;状态条件进程用以产生状态驻留条件,每个状态对应一个状态条件进程,状态机进入到某一个状态后,对应的状态条件进程开启,记录状态驻留时钟节拍数,状态迁移进程根据这个时钟节拍数和输入信号来决定下一状态。输出逻辑根据状态条件进程记录的状态条件给出各个位的二进制值。输出逻辑给出的是一个8位并行的字节数组。

异步曼彻斯特码的接收处理是周期性的,接收完一帧数据后,系统恢复到空闲状态,等待下一帧数据的到来,如此周而复始。这就要求对接收逻辑内的各个状态进程和条件进程进行周期性复位。复位管理模块负责完成对所有状态进程的复位操作。复位进程模块对所有的条件进程进行复位操作,在本状态的前一个状态对当前状态进程进行复位操作。复位时刻是本次条件进程的开始,也是上次条件进程的结束。一个条件状态运行过程中,计算产生条件结果,条件结果产生之后到下次复位脉冲到达之前这段时间为条件进程结果的存续期,此时的条件结果是可用的,其他进程可以使用这些条件结果。

检错容错处理,对接收到的数据信号进行毛刺滤除,信号码元宽度为工作时钟宽度的8倍,起始位和停止位中高低电平各占4个时钟宽度,逻辑为1的情况下,低电平持续时间为2个时钟周期,高低电平持续时间为6个时钟周期。信号单一电平最小持续时间长度是2个时钟周期,如果单一电平的持续时间小于或等于1个时钟周期,我们可以认为这个电平变化不是有效信号。按照这样的判断准则,将持续时间小于或等于1个时钟周期的电平变化舍弃,保留变化之前的电平值,就完成了数据信号的毛刺滤除。

接收数据中的毛刺时间长度小于或等于一个时钟周期,分为两种情况,一种情况是前置d触发器的时钟上升沿避开毛刺,这样可以直接将毛刺忽略。另一种情况是前置d触发器的上升沿恰好捕捉到了毛刺,此时后续逻辑可以根据电平变化的持续时间来舍弃此段电平变化,进而达到对接收数据毛刺滤除的目的。

解码状态机采取检错丢弃重接收形式的容错机制,解码状态机监测到错误状态后会认定当前接收的数据帧为错误帧,解码状态机会从当前状态跳转回空闲状态,等待下一次正确数据帧的到达。

本实施例的接收流程如图4所示,解码状态机复位后为无数据的空闲状态。解码状态机探测到电平变化后启动起始位检测进程,满足前低电平后高电平,持续时间各占50%,解码状态机从起始位跳转到数据0位状态;如果不满足上述条件,解码状态机跳回到空闲状态。解码状态机跳转到每个数据位状态后,对应数据位的状态条件进程启动,当状态条件进程跳转到下一状态位后,前一个状态位的高低计时寄存器停止运行,逐位输出逻辑比较前后电平形成输出逻辑值。当解码状态机跳转到校验状态后,依据校验值输出字节时钟。对输出的字节合并成双字数据帧,再经过mcu内部的小偏离值平均处理,本实施例的小偏离值平均处理中每次总采样值为10个,取第一次均值后,将偏离值较大的5个采样值舍弃,对剩余5个偏离值较小的采样值做平均处理,作为最终的优化采样值。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1