欢迎大家讨论FEC(前向纠错编码)
前向纠错(FEC)技术是一种为商业和军用无线通讯系统,特别是流动数据信号系统克服网络损失以及提供高质量服务的有效方式。据说当信道误码率为3x10-3时,经过前向纠错,误码率降到10-7以下; 如果是突发数据了?有没有什么好的纠错办法? 突发数据?!!!!是不是突发定段误码
采用交织方法可以的 再次请教llyybb1
交织就是打乱源码序列,是的突发块状错误分散。这里的打乱序列,是将一位(1bit)打乱还是一个字节还是一个数据包的序列打乱? 这取决你的FEC是2进制还是多进制的。
以下我说的是循环码方面
举例说明如下:
一包数据有8bit,经过(7,4,3)(最简单的循环码,纠错能力为1)编码后有2组码,共有14bit。
8bit信息(1,2,3,4,5,6,7,8)编码后 ABCDEF 为监督位
(1,2,3,4,A,B,C;5,6,7,8,D,E,F);
不加交织时,一旦任何位置上有“连续”2个bit的误码,则译码就会有错。
而将2组码元,采取以下方式进行交织时,就能避免以上的错误。
设:8bit信息(1,2,3,4,5,6,7,8)编码后 ABCDEF 为监督位
(1,2,3,4,A,B,C;5,6,7,8,D,E,F);交织后=>(1,5,2,6,3,7,4;8,A,D,B,E,C,F);
交织的优点:无需复杂的算法,并且没有附加数据,却增加了抗突发错误的能力。
这里有几点说明:
交织仅仅是增加了抗突发错误的能力,原本的纠错能力还是未变,即:如果上例中
交织后的数据有间隔的误码发生时,那还是无能为力的。当然无线数据传输时,
一般数据量总不会只有几个bit。 也可以这样理解,交织,就是尽量发挥每组码的纠错能力,把一段突发错误尽可能的分散到每组编码中去(化整为零)。 谢谢llyybb1
还有一个问题
你所说的最简单的循环码,如果再加上交织
能够得到多少数字增益?
2db?
3db? 我指你刚才举的例子
8位加6位纠错 llyybb1大虾哪里去了?呵呵
等待您的指点阿 mutoudonggua :不好意思,刚搬家,现在周末上不了网
你所说信道编码增益,要查书,我手头暂时没有。 这个纠错啊 有没有一种算法是 在32位的数据中只增加 6到8位的纠错码 来实现的 请指教 好像很深奥的样子 顶,共同研究。 以前用51汇编做的编解码程序,好不容易找出来.参考一下
;4进制RS变换编码,该码为非本元RS码.其最小距离d=2,纠错能力t=1的(3,1)码.
ORG 0000H
AJMP START
;信息码元
M0 EQU 40H
;编码码元
W0 EQU 41H
W1 EQU 42H
W2 EQU 43H
; n-1
;fi = Fj * a^-i*j
; j=0
ORG 002FH
START:MOV R5, #03H ;i,共循环n次
MOV R2, #00H ;BTAB的首地址
MOV R0, #W0 ;R0指向编好码元的首地址
MOV R1, #M0 ;R1指向信息码元的首地址
BM: MOV @R0, #00H ;(R0)<=00H
MOV A, R2
MOV DPTR, #BTAB
MOVC A, @A+DPTR ;读表BTAB
MOV B, A
MOV DPTR, #ATAB
MOV A, @R1
MOVC A, @A+DPTR ;求Mi的指数
ADD A, B
MOV DPTR, #ETAB
MOVC A, @A+DPTR ;求Fj * a^-i * j
MOV @R0, A
INC R2 ;指向表的下一个值
INC R0 ;指向下一个编好码元单元
DJNZ R5, BM
;(指数相乘表)
ETAB:DB01H,02H,03H,00H
DB02H,03H,01H,00H
DB03H,02H,01H,00H
DB00H,00H,00H,00H
;(数值找指数表)
ATAB:DB03H,00H,01H,02H
;(编码指数表)
BTAB:DB00H,04H,08H
END
; 4进制RS变换译码,该码为本元RS码.其最小距离d=3,纠错能力t=1的(3,1)码.
; 施俊毅 97年2月
ORG 0000H
AJMP START
;接收到的码元存放单元
G0 EQU 44H
G1 EQU 45H
G2 EQU 46H
;纠正子存放单元
S0 EQU 47H
S1 EQU 48H
S2 EQU 49H
;
Q1 EQU 4AH
;
E2 EQU 4BH
; n-1
;Sj= Fri*a^i*j
; i=0
ORG 002FH
START:MOV R4, #03H ;j
MOV R2, #00H ;置IJTAB表的首地址
MOV R0, #S0 ;R0指向纠正子的首地址
NEXTA:MOV R1, #G0 ;R1指向接收码元的首地址
MOV @R0, #00H ;预置(R0)<--0
MOV R3, #03H ;i
NEXT: MOV A, R2
MOV DPTR, #IJTAB
MOVC A, @A+DPTR ;读表IJTAB
MOV B, A ;B为ETAB的纵坐标
MOV A, @R1
MOV DPTR, #ATAB
MOVC A, @A+DPTR ;求Ri的指数
ADD A, B
MOV DPTR, #ETAB
MOVC A, @A+DPTR ;A<=Fi * a^i * j
XRL A, @R0
MOV @R0, A
INC R1
INC R2
DJNZ R3, NEXT
INC R0
DJNZ R4, NEXTA
;判断是否有错
;即R0=R1=00H时,该码元无错
MOV A, #00H
ADD A, S0
ADD A, S1
JNZ HAVER
AJMP OK
;求S1/S0
MOV DPTR, #ATAB
MOV A, S0
MOVC A, @A+DPTR ;求S0的指数
MOV B, A
MOV A, S1
MOVC A, @A+DPTR ;求S1的指数
CLR C
SUBB A, B ;S1-S0
MOV B, A
ANL A, #80H
JZ ZSA ;判断是否为负数
MOV A, B ;若为负数--->取反+1
XRL A, #0FFH
INC A
MOV B, A ;求该数的模
MOV A, #04H
CLR C
SUBB A, B
SJMP ZSB
ZSA: MOV A, B
ZSB: MOV R0, A ;R0为S1/S0的指数
;判断有一位错误,可根据递归方程组求出
;E2= E1* ○1
MOV A, R0 ;这时的R0为○1的指数
MOV B, #08H
MUL AB
MOV R2, A
;
MOV R1, #E2
;
MOV A, S1 ;E1
MOV DPTR, #ATAB
MOVC A, @A+DPTR ;求Ri的指数
ADD A, R2
MOV DPTR, #ETAB
MOVC A, @A+DPTR
MOV @R1, A
;纠正错误
MOV A, E2
XRL S2, A
OK: NOP
;(指数相乘表)
ETAB:DB01H,02H,03H,00H
DB02H,03H,01H,00H
DB03H,02H,01H,00H
DB00H,00H,00H,00H
;(数值找指数表)
ATAB:DB03H,00H,01H,02H
;(I,J相乘表)
IJTAB: DB00H,00H,00H,04H,08H,00H,08H,04H
DB00H
END
页:
[1]