⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main_turbo.c

📁 这个文件包括wimax中所有的编解码源代码
💻 C
字号:
/*****************************************************************************//*   FIle Name : main_turbo.c                                                *//*   Description : Main routine to Test FEC  Type2                           *//*   author : miffie                                                         *//*   Date   : sep/26/05                                                      *//*   Copyright (c) 2005 miffie   All rights reserved.                        *//*****************************************************************************/#include <math.h>#include <stdio.h>#include <stdlib.h>//Global variableschar   print_on = 1 ;#define  PRINTF if (print_on) printf#define  FPRINTF if (print_on) fprintf#include "../env/binaryset.c"#include "../env/utility.c"#define mm  8           /* RS code over GF(2**4) - change to suit *///#define nn  255          /* nn=2**mm -1   length of codeword *///#define tt  16         /* number of errors that can be corrected *///#define kk  223           /* kk = nn-2*tt  */int pp [mm+1] = { 1, 0, 1, 1, 1, 0, 0, 0, 1} ; /* specify irreducible polynomial coeffts */#include "turboproduct.c"#include "viterbi_turbo1.c"#include "viterbi_turbo2.c"#include "turbo_decoder.c"main(){  register int ii , jj, kk ;  char fail  ;  short  KK  , num_data ,noise   ;  struct  binaryset bset, exp , encoded, bset0, bset1;  unsigned char     data[512] ;  char btc_row_type, btc_column_type, btc_interleave  ;  char row , column ;    //multiple tests  for  (jj=0;jj<100;jj++) { //each test    /* for known data, stick a few numbers into a zero codeword. Data is in       polynomial form.    */    //make a binary set    row = int_random(42) +16 ; //16-57    column = int_random(42) +16 ; //16-57    btc_row_type = (row>26) ? 1 : 2 ;    btc_column_type = (column>26) ? 1 : 2 ;    btc_interleave = 1 + int_random(2) ; //1:non-interleave 2:interleaved    num_data =  row*column/8 ; //(KK+1) ; //0-KK    printf("\n %d th Test(row=%d column=%d num_data=%d interleave=%d\n\n", jj, row, column, num_data , btc_interleave ) ;    for  (ii=0; ii<num_data; ii++)   data[ii] = int_random(256) ;    bset.format = 1 ;    bset.data = &data[0] ;    bset.size = num_data ;      exp = copy_binaryset(bset) ;    exp = byte2binary(exp) ;    print_binaryset(bset) ;    bset =  turboproduct(bset, btc_row_type, btc_column_type, btc_interleave ,                           row, column) ;    print_binaryset(bset) ;    encoded = copy_binaryset(bset) ;    for(ii=0;ii<bset.size;ii++)  bset.data[ii] = (bset.data[ii]) ? 0xf : 0x0 ;    /* if you want to test the program, corrupt some of the elements of recd[]       here. This can also be done easily in a debugger. */    for(ii=0; ii<bset.size; ii++) { //for       noise = pow_random(9, 4) ;       bset.data[ii] = (bset.data[ii]) ? 0xf - noise  : noise ;    }//      print_binaryset(bset) ;    ///* decode recv[] */    row += (btc_row_type==1) ? 7 : 6 ;    column += (btc_column_type==1) ? 7 : 6 ;    bset = turbo_decoder( bset, encoded, btc_row_type, btc_column_type, btc_interleave,                        row, column , num_data ) ;  /* recd[] is returned in polynomial form */  print_binaryset(bset) ;  fail = compare_binaryset( exp , bset ) ;  if (fail) printf(" %d th Test was failed\n" , jj) ;  else printf(" %d th Test was passed\n" , jj) ;  } //each test}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -