📄 main_turbo.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 + -