BMC码的解码系统和解码方法与流程

文档序号:15466123发布日期:2018-09-18 19:21阅读:7707来源:国知局

本发明涉及通讯技术领域,具体涉及一种BMC码的解码系统和解码方法。



背景技术:

USB Type-C Power Delivery 协议(以下简称PD协议),是一种基于Type-C接口的功率传输协议。USB PD支持多种电压和电流的组合,最大可支持100W(20V/5A)的功率传输,同时支持供电角色转换,满足绝大部分电子设备供电需求。在USB Type-C接口中,以CC线作为专用的插拔检测和PD通信通道。其采用半双工通信机制,使用双向标记编码(Biphase Mark Coding, BMC)传输数据。此方法简单灵活,已经作为PD通信标准发布,目前正逐步得到广泛的应用。BMC编码属于一种相位调制的编码技术,是将时钟和数据混合在一起传输的编码方法。BMC编码的特点是,如果数据为1在该位中间电平取反,并且在每个数据传输比特的边界处电平取反。使用BMC编码可以让传输端与接收端只需一条数据线就可以将数据正确的传输与接收,并且在收发两端保持很好的同步性。PD协议规定BMC码传输频率为300K,即每个数据比特传输时间为3.33us。PD协议允许该编码有+/-10%的频率偏差,但在实际应用中由于传输介质良莠不齐、信道长短不一,或受噪声、电磁环境等影响,BMC编码信号受干扰现象十分普遍,在接收端频率偏差往往更大。所以要求接收端有一定的容错能力,能容忍BMC信号脉冲宽度畸变,信号毛刺等干扰。



技术实现要素:

针对以上问题,本发明提供了一种抗干扰BMC码解码系统和方法,可对被干扰编码信号进行抗干扰处理并解码,实现信号在受较强脉冲宽度畸变、信号毛刺等干扰下对BMC编码数据正确解码。本发明的具体技术方案如下:

一种BMC码的解码系统,包括依次串连的滤波模块、跳变分析模块和数据解码模块。其中:滤波模块,用于接收BMC编码的输入信号,并对所述输入信号进行滤波后,输出滤波信号。跳变分析模块,用于接收所述滤波模块输出的所述滤波信号,并根据所述滤波信号的跳变沿和跳变时间间隔,分析当前跳变是否为数据跳变。数据解码模块,用于根据所述跳变分析模块的分析结果,控制所述数据解码模块中的移位寄存器写入相应数据,然后把所述移位寄存器中的数据作为解码数据输出。

进一步地,所述滤波模块包括计数子模块和滤波标志子模块。其中:所述计数子模块用于对接收所述输入信号的过程进行时间计数,并在所述输入信号的跳变沿时刻进行时间计数值的清零,清零后又重新开始时间计数;所述计数子模块还用于在所述时间计数值大于预设的滤波窗口值时,停止时间计数,并在所述输入信号的跳变沿时刻进行时间计数值的清零,清零后又重新开始时间计数。所述滤波标志子模块用于在所述时间计数值大于预设的滤波窗口值时,输出高电平标志信号,在所述输入信号的跳变沿时,输出低电平标志信号。

进一步地,所述跳变分析模块包括跳变沿检测子模块、计时子模块和判断子模块。其中:所述跳变沿检测子模块用于检测所述滤波信号的跳变沿。所述计时子模块用于计算所述跳变沿检测子模块检测到的相邻跳变沿之间的跳变时间间隔。判断子模块用于根据所述跳变时间间隔判断当前跳变是数据跳变、边界跳变或者错误跳变。

进一步地,所述数据解码模块包括数据标志子模块和移位寄存器。其中:所述数据标志子模块用于根据所述判断子模块所确定的所述数据跳变的跳变沿的到来而输出数据标志高电平,否则,根据边界跳变的跳变沿的到来而输出数据标志低电平。所述移位寄存器用于根据所述数据标志子模块输出的数据标志高电平,且在边界跳变的跳变沿到来时而写入高电平寄存信号,根据所述数据标志子模块输出的数据标志低电平,且在边界跳变的跳变沿到来时而写入低电平寄存信号,并在数据接收结束后,输出所写入的高电平寄存信号和低电平寄存信号。

一种BMC码的解码方法,包括如下步骤:步骤1:滤波模块接收BMC编码的输入信号,并对所述输入信号进行滤波后,输出滤波信号,进入步骤2;步骤2:跳变分析模块接收所述滤波模块输出的所述滤波信号,并根据所述滤波信号的跳变沿和跳变时间间隔,分析当前跳变是否为数据跳变,然后进入步骤3;步骤3:所述数据解码模块根据所述跳变分析模块的分析结果,控制其移位寄存器写入相应数据,然后把所述移位寄存器中的数据作为解码数据输出。

进一步地,所述步骤1具体包括如下步骤:步骤11:所述滤波模块接收BMC编码的输入信号,然后进入步骤12;步骤12:所述滤波模块中的计数子模块从零开始对接收所述输入信号的过程进行时间计数,然后进入步骤13;步骤13:所述滤波模块判断是否检测到所述输入信号的跳变沿,如果是,则进入步骤14,否则继续进行时间计数,并进入步骤15;步骤14:所述计数子模块进行时间计数值的清零,清零后又重新开始时间计数,然后返回步骤13;步骤15:所述滤波模块判断所述时间计数值是否大于预设的滤波窗口值,如果是,则进入步骤16,否则继续进行时间计数,然后返回步骤13;步骤16:所述计数子模块停止计数,所述滤波模块中的滤波标志子模块输出高电平标志信号,使所述滤波模块输出与此刻的所述输入信号相同的电平信号,然后进入步骤17;步骤17:所述滤波模块判断是否检测到所述输入信号的跳变沿,如果是,则所述滤波标志子模块输出低电平标志信号,使所述滤波模块保持当前输出的电平信号不变,并返回步骤14,如果否,则返回步骤16。

进一步地,所述步骤2具体包括如下步骤:步骤21:所述跳变分析模块接收所述滤波模块输出的所述滤波信号,然后进入步骤22;步骤22:所述跳变分析模块中的跳变沿检测子模块是否检测到所述滤波信号的跳变沿,如果是,则进入步骤23,如果否,则返回步骤21;步骤23:所述跳变分析模块中的计时子模块计算所述跳变沿检测子模块检测到的相邻跳变沿之间的跳变时间间隔,然后进入步骤24;步骤S24:所述跳变分析模块中的判断子模块根据所述跳变时间间隔判断当前跳变是否为数据跳变。

进一步地,所述步骤S24具体包括如下步骤:当所述判断子模块判断所述跳变时间间隔大于5/4倍的单个数据比特传输时间,则确定当前跳变为错误跳变;当所述判断子模块判断所述跳变时间间隔大于或等于3/4倍的单个数据比特传输时间,且小于或等于5/4倍的单个数据比特传输时间,则确定当前跳变为边界跳变;当所述判断子模块判断所述跳变时间间隔大于或等于1/4倍的单个数据比特传输时间,且小于3/4倍的单个数据比特传输时间,并判断上一个跳变为边界跳变时,确定当前跳变为数据跳变;当所述判断子模块判断所述跳变时间间隔大于或等于1/4倍的单个数据比特传输时间,且小于3/4倍的单个数据比特传输时间,并判断上一个跳变为数据跳变时,确定当前跳变为边界跳变;当所述判断子模块判断所述跳变时间间隔小于1/4倍的单个数据比特传输时间,则确定当前跳变为错误跳变。

进一步地,所述步骤3具体包括如下步骤:所述数据解码模块中的数据标志子模块根据所述判断子模块所确定的所述数据跳变的跳变沿的到来而输出数据标志高电平,否则,根据边界跳变的跳变沿的到来而输出数据标志低电平;所述移位寄存器根据所述数据标志子模块输出的数据标志高电平,且在边界跳变的跳变沿到来时而写入高电平寄存信号,并根据所述数据标志子模块输出的数据标志低电平,且在边界跳变的跳变沿到来时而写入低电平寄存信号;当所述移位寄存器判断数据接收结束后,输出所写入的高电平寄存信号和低电平寄存信号。

本发明所述的BMC码的解码方法,先通过滤波模块对输入信号进行滤波,消除毛刺干扰,然后对滤波后的信号进行跳变沿检测和分析,避免信号受强脉冲宽度畸变的影响,最后,根据跳变沿检测结果进行解码,解码准确性和解码效率高。此外,采用这种解码方法的解码系统,结构简单,成本较低。

附图说明

图1为所述BMC码的解码系统的结构框图。

图2为所述BMC码的解码方法的流程示意图。

图3为跳变沿的检测流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。应当理解,下面所描述的具体实施例仅用于解释本发明,并不用于限定本发明。

如图1所示的BMC码的解码系统,包括依次串连的滤波模块、跳变分析模块和数据解码模块。其中,所示滤波模块用于接收BMC编码的输入信号,并对所述输入信号进行滤波后,输出滤波信号。所述跳变分析模块用于接收所述滤波模块输出的所述滤波信号,并根据所述滤波信号的跳变沿和跳变时间间隔,分析当前跳变是否为数据跳变。所述数据解码模块用于根据所述跳变分析模块的分析结果,控制所述数据解码模块中的移位寄存器写入相应数据,然后把所述移位寄存器中的数据作为解码数据输出。所述系统先通过滤波模块对输入信号进行滤波,消除毛刺干扰,然后通过跳变分析模块对滤波后的信号进行跳变沿检测和分析,避免信号受强脉冲宽度畸变的影响,最后,由数据解码模块根据跳变沿检测结果进行解码,解码准确性和解码效率高。此外,该解码系统结构简单,成本较低。

优选的,所述滤波模块包括计数子模块和滤波标志子模块。其中,所述计数子模块用于对接收所述输入信号的过程进行时间计数,并在所述输入信号的跳变沿时刻进行时间计数值的清零,清零后又重新开始时间计数。所述计数子模块还用于在所述时间计数值大于预设的滤波窗口值时,停止时间计数,并在所述输入信号的跳变沿时刻进行时间计数值的清零,清零后又重新开始时间计数。所述滤波标志子模块用于在所述时间计数值大于预设的滤波窗口值时,输出高电平标志信号,在所述输入信号的跳变沿时,输出低电平标志信号。其中,所述滤波窗口值可以根据具体的设计需求进行相应设置,优选的,可以设置为10微秒至30微秒中的任意一值。所述滤波模块通过计数子模块的时间计数值与系统中预设的滤波窗口值进行比较,可以准确地输出标志信号,有效滤除毛刺等杂波的干扰,提高信号的准确性。

优选的,所述跳变分析模块包括跳变沿检测子模块、计时子模块和判断子模块。其中:所述跳变沿检测子模块用于检测所述滤波信号的跳变沿。所述计时子模块用于计算所述跳变沿检测子模块检测到的相邻跳变沿之间的跳变时间间隔。判断子模块用于根据所述跳变时间间隔判断当前跳变是否为数据跳变。所述跳变分析模块通过所述跳变沿检测子模块对滤波后的输入信号进行跳变沿检测,然后通过所述计时子模块计算跳变沿之间的时间间隔,最后再通过所述判断子模块分析当前跳变是属于正常的数据跳变,还是属于边界跳变或者错误跳变,以便为后续的解码提高准确的参考依据。

优选的,所述数据解码模块包括数据标志子模块和移位寄存器。其中:所述数据标志子模块用于根据所述判断子模块所确定的所述数据跳变的跳变沿的到来而输出数据标志高电平,否则,根据边界跳变的跳变沿的到来而输出数据标志低电平。所述移位寄存器用于根据所述数据标志子模块输出的数据标志高电平,且在边界跳变的跳变沿到来时而写入高电平寄存信号;根据所述数据标志子模块输出的数据标志低电平,且在边界跳变的跳变沿到来时而写入低电平寄存信号;并在数据接收结束后,输出所写入的高电平寄存信号和低电平寄存信号,以作为解码数据输出。所述数据解码模块通过分析数据标志信号和跳变沿的时序,可以在移位寄存器中准确地输入相应的寄存信号,从而保证了解码的准确性。

如图2所示的BMC码的解码方法,包括如下步骤:步骤1:滤波模块接收BMC编码的输入信号,并对所述输入信号进行滤波后,输出滤波信号,进入步骤2。步骤2:跳变分析模块接收所述滤波模块输出的所述滤波信号,并根据所述滤波信号的跳变沿和跳变时间间隔,分析当前跳变是否为数据跳变,然后进入步骤3。步骤3:所述数据解码模块根据所述跳变分析模块的分析结果,控制其移位寄存器写入相应数据,然后把所述移位寄存器中的数据作为解码数据输出。所述解码方法,先通过滤波模块对输入信号进行滤波,消除毛刺干扰,然后对滤波后的信号进行跳变沿检测和分析,避免信号受强脉冲宽度畸变的影响,最后,根据跳变沿检测结果进行解码,解码准确性和解码效率高。

优选的,所述步骤1具体包括如下步骤:在步骤11中,所述滤波模块接收BMC编码的输入信号,然后进入步骤12。在步骤12中,所述滤波模块中的计数子模块从零开始对接收所述输入信号的过程进行时间计数,然后进入步骤13。在步骤13中,所述滤波模块判断是否检测到所述输入信号的跳变沿,如果是,则进入步骤14,否则继续进行时间计数,并进入步骤15。在步骤14中,所述计数子模块进行时间计数值的清零,清零后又重新开始时间计数,然后返回步骤13。在步骤15中,所述滤波模块判断所述时间计数值是否大于预设的滤波窗口值,如果是,则进入步骤16,否则继续进行时间计数,然后返回步骤13。在步骤16中,所述计数子模块停止计数,所述滤波模块中的滤波标志子模块输出高电平标志信号,使所述滤波模块输出与此刻的所述输入信号相同的电平信号,然后进入步骤17。在步骤17中,所述滤波模块判断是否检测到所述输入信号的跳变沿,如果是,则所述滤波标志子模块输出低电平标志信号,使所述滤波模块保持当前输出的电平信号不变,并返回步骤14,如果否,则返回步骤16。所述方法采用滤波窗口的方式对输入信号进行滤波,可以有效滤除输入信号中脉冲宽度较小的毛刺等杂波信号,从而提高输入信号的准确性,提高抗干扰性能。

优选的,所述步骤2具体包括如下步骤:在步骤21中,所述跳变分析模块接收所述滤波模块输出的所述滤波信号,然后进入步骤22。在步骤22中,所述跳变分析模块中的跳变沿检测子模块是否检测到所述滤波信号的跳变沿,如果是,则进入步骤23,如果否,则返回步骤21。在步骤23中,所述跳变分析模块中的计时子模块计算所述跳变沿检测子模块检测到的相邻跳变沿之间的跳变时间间隔,然后进入步骤24。在步骤S24中,所述跳变分析模块中的判断子模块根据所述跳变时间间隔判断当前跳变是否为数据跳变。所述方法通过对滤波后的输入信号进行跳变沿检测,并且通过分析跳变沿之间的跳变时间间隔,可以准确地判断输入信号的变化情况,避免信号受强脉冲宽度畸变的影响,提高信号检测的准确性和抗干扰能力。

优选的,所述步骤S24具体包括如下步骤:当所述判断子模块判断所述跳变时间间隔大于5/4倍的单个数据比特传输时间,则确定当前跳变为错误跳变。当所述判断子模块判断所述跳变时间间隔大于或等于3/4倍的单个数据比特传输时间,且小于或等于5/4倍的单个数据比特传输时间,则确定当前跳变为边界跳变。当所述判断子模块判断所述跳变时间间隔大于或等于1/4倍的单个数据比特传输时间,且小于3/4倍的单个数据比特传输时间,并判断上一个跳变为边界跳变时,确定当前跳变为数据跳变。当所述判断子模块判断所述跳变时间间隔大于或等于1/4倍的单个数据比特传输时间,且小于3/4倍的单个数据比特传输时间,并判断上一个跳变为数据跳变时,确定当前跳变为边界跳变。当所述判断子模块判断所述跳变时间间隔小于1/4倍的单个数据比特传输时间,则确定当前跳变为错误跳变。所述方法通过分析跳变时间间隔的时间长度,可以有效区分跳变的类型,为后续的解码提高准确的参考依据。

优选的,所述步骤3具体包括如下步骤:所述数据解码模块中的数据标志子模块根据所述判断子模块所确定的所述数据跳变的跳变沿的到来而输出数据标志高电平,否则,根据边界跳变的跳变沿的到来而输出数据标志低电平。所述移位寄存器根据所述数据标志子模块输出的数据标志高电平,且在边界跳变的跳变沿到来时而写入高电平寄存信号,并根据所述数据标志子模块输出的数据标志低电平,且在边界跳变的跳变沿到来时而写入低电平寄存信号。当所述移位寄存器判断数据接收结束后,输出所写入的高电平寄存信号和低电平寄存信号。所述方法通过分析数据标志信号和跳变沿的时序,可以在移位寄存器中准确地输入相应的寄存信号,从而保证了解码的准确性。

具体的,基于上述解码系统的解码方法,系统上电复位后,滤波模块的标志信号filter_ok置0,计数子模块从零开始计数,如果计数子模块值大于滤波窗口值(filter_val)时停止计数,标志信号filter_ok置1。在输入信号的跳变沿时,标志信号filter_ok置0,计数子模块清零,重新开始计数。因此,当标志信号filter_ok置1,输入信号滤波成功,把滤波后的输入信号输出到跳变分析模块,否则,滤波模块的输出信号保持不变。其中,滤波窗口值filter_val可以根据用户需求配置不同值,比如系统时钟20MHz,需要滤除脉冲宽度小于1us的毛刺,则filter_val配置值可设置为20。跳变分析模块检测每位输入的滤波后的BMC码信号中的电平跳变沿(上升沿:rise_edge,下降沿:fall_edge),同时记录每个跳变沿之间的间隔时间time_gap。

根据BMC码的特点,一个数据信号,如果该数据为1在该位中间会产生数据跳变沿;如果该数据为0,则电平保持不变,不产生数据跳变沿。并且在每个数据比特分界处产生边界跳变沿。因此,只要判断两个数据比特边界跳变沿之间有没有产生数据跳变,就能区分出数据0和1,从而正确解码数据。跳变分析模块根据信号跳变沿(rise_edge/fall_edge)及跳变沿时间间隔time_gap,来区分数据跳变与边界跳变。跳变沿检测流程如图3所示,该跳变沿检测方法能容忍脉冲宽度畸变范围为+/-25%,如果超过此范围就认为是错误跳变沿。BMC码传输频率为300K,即每个数据比特传输时间为3.33us(T=3.33us)。数据跳变、边界跳变与错误跳变判定条件如下:跳变沿到来时:a)定时器值time_gap大于5/4T,为错误跳变沿;b) 定时器值time_gap在时间范围[3/4T – 5/4T],为边界跳变; c) 定时器值time_gap在时间范围[1/4T – 3/4T)(不包括3/4T)时,如果上一个跳变沿为边界跳变,则为数据跳变;如果上一个跳变沿为数据跳变,则为边界跳变。d) 定时器值time_gap小于1/4T,为错误跳变。

数据解码模块设有数据标志信号data1_flag。当检测到数据跳变时,数据标志信号data1_flag置1;当检测到分界跳变时,则数据标志信号data1_flag置0。数据解码模块设有移位寄存器,当检测到分界跳变,且数据标志信号data1_flag = 1时,往移位寄存器写“1”;如果数据标志信号data1_flag = 0,往移位寄存器写“0”。当有错误跳变时,错误标志err_flag置1。接收数据结束后,把移位寄存器的值做为解码数据输出。

所述BMC码解码系统和解码方法,能够很好的解决传统基于单点或多点采样法的BMC解码装置工作不稳定、极易受干扰、可靠性不高的技术问题。系统结构简单,且BMC码的解码准确率较高。

最后应说明的是:本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可,各实施例之间的技术方案是可以相互结合的。以上各实施例仅用于说明本发明的技术方案,而非对其限制,尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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