算法介绍
GPON中HEC用以对GEM帧纠错,由两部分组成:第一部分是删减的BCH(63, 12, 2)码(12bit),第二部分是1bit的奇偶校验。
GPON协议中采用删减的BCH(63, 12, 2),其生成多项式为
,由于GEM帧头为40bit(27bit有效数据+12bit BCH校验位+1bit奇偶校验位),因此HEC的BCH的算法应用在GEM帧头前39位上,记为BCH(39, 12, 2)。
1、单bit错误有39种,如下图;
2、双bit错误有741种(C392,39是下标,2是上标);
3、多bit错误当前无法纠错,协议中GEM帧头预留12bit做BCH运算,总共4095种纠错组合,剩余3315(4095减去39和741)种未使用。
4、接收端解码GEM帧时,通过HEC计算BCH和奇偶校验,采用如下逻辑处理GEM帧
样例
协议中提供如下有效GEM头的示例,用于测试编码和解码过程的实现
参考matlab实现
%BCH(63, 12)编码器构造
enc = comm.BCHEncoder(63, 51, 'x12+x10+x8+x5+x4+x3+1', 27);
%构造27bit输入序列,下例为528A739F79的前27bit
x = [0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 0]';
%得到编码结果
y = step(enc, x);
%构造27bit输入序列,下例为BEDB7532FA的前27bit
m = [1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 0 1]';
%得到编码结果
n = step(enc, m);
样例1:
BEDB7532FA
1、Step1:校验数据
101 1111 0110 1101 1011 1010 1001
2、Step2:BCH(39, 12, 2)校验
101 1111 0110 1101 1011 1010 1001 1001 0111 1101
3、Step3:奇偶校验
1011 1110 1101 1011 0111 0101 0011 0010 1111 1010
样例2:
528A739F79
1、Step1:校验数据(27bit)
010 1001 0100 0101 0011 1001 1100
2、Step2:BCH校验(12bit)
010 1001 0100 0101 0011 1001 1100 1111 1011 1100
3、Step3:奇偶校验(1bit)
0101 0010 1000 1010 0111 0011 1001 1111 0111 1001