snow_xsj 发表于 2006-10-20 10:01:18

欢迎大家讨论FEC(前向纠错编码)

前向纠错(FEC)技术是一种为商业和军用无线通讯系统,特别是流动数据信号系统克服网络损失以及提供高质量服务的有效方式。

    据说当信道误码率为3x10-3时,经过前向纠错,误码率降到10-7以下;

mutoudonggua 发表于 2006-10-20 11:35:05

如果是突发数据了?有没有什么好的纠错办法?

llyybb1 发表于 2006-10-20 13:24:32

突发数据?!!!!是不是突发定段误码

采用交织方法可以的

mutoudonggua 发表于 2006-10-20 14:10:28

再次请教llyybb1

交织就是打乱源码序列,是的突发块状错误分散。这里的打乱序列,是将一位(1bit)打乱还是一个字节还是一个数据包的序列打乱?

llyybb1 发表于 2006-10-20 15:05:58

这取决你的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 发表于 2006-10-20 15:14:25

也可以这样理解,交织,就是尽量发挥每组码的纠错能力,把一段突发错误尽可能的分散到每组编码中去(化整为零)。

mutoudonggua 发表于 2006-10-20 15:48:59

谢谢llyybb1

还有一个问题

你所说的最简单的循环码,如果再加上交织

能够得到多少数字增益?

2db?

3db?

mutoudonggua 发表于 2006-10-20 15:51:56

我指你刚才举的例子

8位加6位纠错

mutoudonggua 发表于 2006-10-21 15:14:10

llyybb1大虾哪里去了?呵呵

等待您的指点阿

llyybb1 发表于 2006-10-23 09:56:49

mutoudonggua :不好意思,刚搬家,现在周末上不了网

你所说信道编码增益,要查书,我手头暂时没有。

lang1437 发表于 2012-8-29 09:19:56

这个纠错啊 有没有一种算法是 在32位的数据中只增加 6到8位的纠错码 来实现的 请指教

luvemcu 发表于 2012-8-29 11:11:43

好像很深奥的样子

沉默胜过白金 发表于 2015-10-24 12:18:35

顶,共同研究。

shijy1977 发表于 2015-11-10 09:22:24

以前用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]
查看完整版本: 欢迎大家讨论FEC(前向纠错编码)