1.本发明涉及通信技术领域,具体为一种曼彻斯特解码方法。
背景技术:2.曼彻斯特编码是一种双向编码。它也是通过电平的高低转换来表示“0”或“1”,每位中间的电平转换既表示了数据代码,也作为定时信号使用。曼初斯特编码常常用在以太网中。
3.在曼彻斯特编码方式中,每一位的中间有一跳变,位中间的跳变既作为时钟信号,又作为数据信号;从高到低的跳变表示“1”,从低到高的跳变表示“0”;所以曼彻斯特编码是将时钟和数据包含在信号流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方。
4.因此解码时就需要从接收信号中分离出曼彻斯特码中的时钟和数据信号,在现有的解码算法中,都是根据 mclk1 检测到的跳变沿然后启动锁相环来跟踪数据,根据曼彻斯特编码规律,从连“0”或连“1”计的数据序列中,根据内部锁相环的频率计数,然后精确判断出收到的第一个曼码中
ꢀ“
0-》1”或者“1-》0”的跳变沿,从而收到准确的第一个 bit 位;这种方法的不利之处在于占用 cpld 的资源多,算法麻烦。
技术实现要素:5.本发明的目的在于提供一种曼彻斯特解码方法,以解决上述背景技术中提出的问题。
6.为实现上述目的,本发明提供如下技术方案:一种曼彻斯特解码方法,所述解码步骤包括:a、bit时钟提取及数据恢复,所述时钟提取逻辑为:(1)检测每个跳变沿,得到解码时钟mclk1;(2)mclk1&q触发一个触发器,输出q=0,0的宽度为24倍clk_a;(3)mclk1与q,得到mclk2;(4)用mclk2输入到m_code,即得到原始数据data2;b、字节同步及帧同步;c、数据输出。优选的,所述时钟提取逻辑中的,步骤(2)的具体操作方法如下:在收到第一个跳变沿后,启动 d触发器使输出为低电平,此低电平的持续时间为 24个clk_a 的周期,即可准确定位收到的第一个“0-》1”或者“1-》0”的跳变沿,继而保证正确收到第一个 bit 位;同时,也可以根据不同的通讯速率要求,改变这个输出q 的持续低电平的 clk_a 的计数值,来适配不同的速率要求,总的一个原则即是,要保证clk_a 的频率在通讯速率的 32 倍以上。
7.优选的,所述步骤b的具体操作方法是:将每个 mclk2 的采样脉冲作为一个 bit 位,顺序移入移位寄存器并计数,同时将整个移位寄存器的值与曼码序列的帧头或帧尾数据进行比对,从而完成帧头或帧尾的定位,同时将定位成功的数据移入 data 序列以备输出;然后,再对于曼码通讯序列,主要是通过每个帧的帧头或帧尾有几个字节的特定字符,由于帧头与帧尾的特定字符是不同的,因此可以根据每次收到的帧头部分的比较,来确定帧头首个字符,最终通过顺序计数来得到完整的帧头。
8.优选的,所述步骤c的具体操作方法是:匹配到帧头后,以第1个“0x40”为起始,收完8个字节后整体写入起始地址为0xaa的数据存储区,并将计数寄存器0xbb加1(从0开始计数,0~3,没有写数据时计数器为0xff)供cpu读取。需要注意的是,第4片数据只有6个字节,收完6个字节后即整体写入数据存储区,并将计数寄存器0xbb加1。
9.与现有技术相比,本发明的有益效果是:本发明的解码方式更加的简单可靠,可留出更多的资源供其他使用。
附图说明
10.图1为本发明的解码图。
具体实施方式
11.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
12.请参阅图1,本发明提供一种技术方案:一种曼彻斯特解码方法,所述解码步骤包括:a、bit时钟提取及数据恢复,所述时钟提取逻辑为:(1)检测每个跳变沿,得到解码时钟mclk1,其中采样到的上升沿、下降沿得到的 mclk1 正脉冲宽度,与采样频率相关;(2)mclk1&q触发一个触发器,输出q=0,0的宽度为24倍clk_a;(3)mclk1与q,得到mclk2,具体的是将mclk1 与 q 输出相与,从而得到与最终解码输出数据一致的采样时钟 mclk2,该时钟 mclk2 的产生是解码的关键;(4)用mclk2输入到m_code,即得到原始数据data2。
13.所述时钟提取逻辑中的,步骤(2)的具体操作方法如下;在收到第一个跳变沿后,启动 d触发器使输出为低,这个低电平的持续时间为 24个clk_a 的周期,如此设置,即是为了准确定位收到的第一个“0-》1”或者“1-》0”的跳变沿,也就是保证正确收到第一个 bit 位;同时,也可以根据不同的通讯速率要求,改变这个输出q 的持续低电平的 clk_a 的计数值,来适配不同的速率要求,总的一个原则是:clk_a 的频率应该在通讯速率的 32 倍以上即可;
如此处理,是最简单的得到与曼彻斯特编码调试信号bit 位一直的采样时钟,通过对q 的输出持续时间的设置,可以完全避免采样时因为采样是连“0”或连“1”的编码下降沿而可能导致的误判,从而精确定位到准确的采样 bit 位。
14.b、字节同步及帧同步,具体操作方法是:将每个 mclk2 的采样脉冲作为一个 bit 位,顺序移入移位寄存器并计数,同时将整个移位寄存器的值与曼码序列的帧头或帧尾数据进行比对,从而完成帧头或帧尾的定位,同时将定位成功的数据移入 data 序列以备输出;然后,再对于曼码通讯序列,主要是通过每个帧的帧头或帧尾有几个字节的特定字符,由于帧头与帧尾的特定字符是不同的,因此可以根据每次收到的帧头部分的比较,来确定帧头首个字符,最终通过顺序计数来得到完整的帧头;以中国移动 5g 前传定义曼码帧为例,帧头为4个“0x7e”(帧头),帧尾为1个“0x7e”,即可得到字节边界(字节同步时钟)及帧边界;具体的定长帧结构格式(如表c.2所示),当帧长为30字节,前5个字节为前导符0x40,最后一个字节为结束符0x7f,crc-8用于校验剩余字节;光模块使用a2h设备地址的page 30h byte 129 byte 135分别存储oam帧的帧类型、本地状态、对端状态、命令id、命令参数、双线地址和起始地址。接收端使用page 30h的byte 224"byte 253存储接收到的每一帧的信息,光模块管理接口协议遵从spf-8472。
15.表c.2为帧结构格式:
名称前导符帧类型状态波长命令命令参数双线地址起始地址数据(16字节)crc-8结束符长度(字节)511111111611
c、数据输出,具体操作方法是:匹配到帧头后,以第1个“0x40”为起始,收完8个字节后整体写入起始地址为0xaa的数据存储区,并将计数寄存器0xbb加1(从0开始计数,0~3,没有写数据时计数器为0xff)供cpu读取。需要注意的是,第4片数据只有6个字节,收完6个字节后即整体写入数据存储区,并将计数寄存器0xbb加1。
16.对于本领域技术人员而言,显然发明不限于上述示范性实施例的细节,而且在不背离发明的精神或基本特征的情况下,能够以其他的具体形式实现发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
17.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。