• 大小: 11.96 KB
    文件类型: .rar
    金币: 1
    下载: 1 次
    发布日期: 2024-12-16
  • 语言: C/C++
  • 标签: 通信  

资源简介

通信中为了防止信道质量不好的时候出现传输错误,在发送和接收端加上RS编译码,可以自动检错和纠错

资源截图

代码片段和文件信息

/****************ecc.h*************************/

/* Reed Solomon Coding for glyphs
 * 
 * (c) Henry Minsky (hqm@ua.com) Universal Access Inc.  (1991-1996)
 *     
 *
 */

/****************************************************************
  
  Below is NPAR the only compile-time parameter you should have to
  modify.
  
  It is the number of parity bytes which will be appended to
  your data to create a codeword.

  Note that the maximum codeword size is 255 so the
  sum of your message length plus parity should be less than
  or equal to this maximum limit.

  In practice you will get slooow error correction and decoding
  if you use more than a reasonably small number of parity bytes.
  (say 10 or 20)

  ****************************************************************/
  
 #include 
 #include  
 #include 
  
#define AL 255          /////        
#define NPAR 6
#define NL AL-NPAR 
#define ITLDPTH 1      ///不加交织
/****************************************************************/




#define TRUE 1
#define FALSE 0

typedef unsigned long BIT32;
typedef unsigned short BIT16;

/* **************************************************************** */

/* Maximum degree of various polynomials. */
#define MAXDEG (NPAR*2)

/*************************************/
/* Encoder parity bytes */
extern int pBytes[MAXDEG];

/* Decoder syndrome bytes */
extern int synBytes[MAXDEG];

/* print debugging info */
extern int DEBUG;

/* Reed Solomon encode/decode routines */
void initialize_ecc (void);
int check_syndrome (void);
void decode_data (unsigned char data[] int nbytes);
void encode_data (unsigned char msg[] int nbytes unsigned char dst[]);

/* CRC-CCITT checksum generator */
BIT16 crc_ccitt(unsigned char *msg int len);

/* galois arithmetic tables */
extern int gexp[];
extern int glog[];

void init_galois_tables (void);
int ginv(int elt); 
int gmult(int a int b);


/* Error location routines */
int correct_errors_erasures (unsigned char codeword[] int csizeint nerasures int erasures[]);

/* polynomial arithmetic */
void add_polys(int dst[] int src[]) ;
void scale_poly(int k int poly[]);
void mult_polys(int dst[] int p1[] int p2[]);

void copy_poly(int dst[] int src[]);
void zero_poly(int poly[]);
/**********************************************************************************************/




/****************************berlerkamp.c**************************************/
/***********************************************************************
 * Berlekamp-Peterson and Berlekamp-Massey Algorithms for error-location
 *
 * From Cain Clark “Error-Correction Coding For Digital Communications“ pp. 205.
 *
 * This finds the coefficients of the error locator polynomial.
 *
 * The roots are then found by looking for the values of a^n
 * where evaluating the polynomial yields zero.
 *
 * Error correction is done using 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      19917  2010-02-08 10:16  新建文件夹\rscode.c

     文件      16458  2010-02-04 10:45  新建文件夹\rsdecode.c

     目录          0  2010-03-07 21:33  新建文件夹

----------- ---------  ---------- -----  ----

                36375                    3


评论

共有 条评论