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

📄 main.c

📁 BCH编码与译码程序
💻 C
📖 第 1 页 / 共 2 页
字号:
//#include <defts201.h>
//#include <sysreg.h>
#include <math.h>
#include <stdio.h>
//#include"stdio.h"
//#include"BCH_var.h"
#include"extern_BCH_var.h"
#include"VCC_DEFINE.H";
short error_tran_bit[31];
short word_tran_bit[31],flag;
// make programm for testing BCH and BCH DECODE.2006-3-24
//unsigned short BCHTAB[16]={22160,22737,17491,32087,3935,7870,15740,31480,30193,7699, 
  //            15398,30796,1385,2770,5540,11080};
// for TEST the programma 2006-4-5
unsigned  short  BCH1_data;                                                            
unsigned short BCH1_CRC;  
unsigned long BCH2_data;
unsigned long BCH2_CRC;                                                             
//unsigned short BCHTAB[16]={22160,22737,17491,32087,3935,7870,15740,31480,30193,7699, 
//             15398,30796,1385,2770,5540,11080};
unsigned short BCH_TAB[16]={31480,15740,7870,3935,32087,17491,22737,22160,
                   11080,5540,2770,1385,30796,15398,7699,30193};
unsigned short BCH_TABLE[21]={603,886,443,646,323,762,381,741,809,975,956,478,
                    239,556,278,139,542,271,732,366,183};                   
short     DEBCH1_data[31];                                                              
short     DEBCH1_flag;                                                                 
long    falpha[32]={1,2,4,8,16,5,10,20,13,26,                                       
                    17,7,14,28,29,31,27,19,3,6,                              
                    12,24,21,15,30,25,23,11,22,9,                            
                     18,-858993460};                                          
long   findex[32]={	-1,0,1,18,2,5,19,11,3,29,                                       
                            6,27,20,8,12,23,4,10,30,17,                                
                     	  7,22,28,26,21,25,9,16,13,14,                                  
                        24,15};	
int voice_data_down_line_g729d[30][12];
int voice_data_up_line_g729d[30][12];
//for TEST the programma 2006-4-5.
void main(void)
{
//extern unsigned char  BCH1_data[2];
//  unsigned char BCH1_data[2]={192,0};
extern short word_tran_bit[31],flag;
extern short error_tran_bit[31];
unsigned short point_org,test_db;
unsigned short  point_crc;
unsigned short  Buffer_data[6];
unsigned short  Receive_Buffer_data[30][6];
short channel_out_bit[90];
short word1_tran_bit[31];
short serial_bit_channel[64];
unsigned short Receive_Buffer_Temp;
int j,t;
int i=1;
int flag1=0;
//dengbing for TEST the programm 2006-4-3
unsigned short table_number[10]={8,10,8,9,9,2,6,4,9,6};
//unsigned short TEST_temp[64];
unsigned short temp1;
//dengbing for TEST the programm 2006-4-3.
unsigned short TEST_temp[64];
unsigned short g729d_voice_important_bit;
unsigned long g729d_voice_secondary_bit;
unsigned long BCH_DeCode_Temp=0;
unsigned short table[64]={21,20,22,19,4,23,8,2,64,43,
						5,44,6,63,42,24,45,7,
						1,3,9,10,11,12,13,14,
						15,16,17,18,25,26,27,28,
						29,30,31,32,33,34,35,36,
						37,38,39,40,41,46,47,48,
						49,50,51,52,53,54,55,56,
						57,58,59,60,61,62};
unsigned short BCH_decode_data[64],decodein[64];
unsigned short count=0;						
// TEST programm from dengbing 20060403
for(j=0;j<64;j++) 
{
 if(j%2==0) TEST_temp[j]=1;
 else TEST_temp[j]=0;
}
for (j=0;j<10;j++)
	  {
	  	//count++;
	  	//unsinged short temp1=0;
	  	temp1=0;
	  	//temp=table_number[j];
	  	for(t=0;t<table_number[j];t++)
	  {	
	  	if(TEST_temp[count++]&0x01==1)
	    temp1=temp1|1;
	    temp1=temp1<<1;
	  }
	  temp1=temp1>>1;
	  voice_data_down_line_g729d[i][j+1]=temp1;
	  }
	  

/*for (j=0;j<11;j++)
  {  voice_data_down_line_g729d[i][j]=0x123;
  }
  */
//TEST programm from dengbing 20060403.
// 
g729d_voice_important_bit=(((voice_data_down_line_g729d[i][3] & BIT5) >> 5) << 15) |
			     (((voice_data_down_line_g729d[i][3] & BIT6) >> 6) << 14) |
			     (((voice_data_down_line_g729d[i][3] & BIT4) >> 4) << 13) |
			     (((voice_data_down_line_g729d[i][3] & BIT7) >> 7) << 12) |
			     (((voice_data_down_line_g729d[i][1] & BIT4) >> 4) << 11) |
			     (((voice_data_down_line_g729d[i][3] & BIT3) >> 2) << 10) |
			     (((voice_data_down_line_g729d[i][1] & BIT0) >> 0) << 9) |
			     (((voice_data_down_line_g729d[i][1] & BIT6) >> 6) << 8) |
			     (((voice_data_down_line_g729d[i][10] & BIT0) >> 0) << 7) |
			     (((voice_data_down_line_g729d[i][6] & BIT0) >> 0) << 6) |
			     (((voice_data_down_line_g729d[i][1] & BIT3) >> 3) << 5)|
			     (((voice_data_down_line_g729d[i][7] & BIT3) >> 3) << 4)|
			     (((voice_data_down_line_g729d[i][1] & BIT2) >> 2) << 3)|
			     (((voice_data_down_line_g729d[i][10] & BIT1) >> 1) << 2)|
			     (((voice_data_down_line_g729d[i][6] & BIT1) >> 1) << 1)|
			     (((voice_data_down_line_g729d[i][3] & BIT2) >> 2) << 0);
// 从64个比特中抽出16个最敏感的比特来做BCH(31,16)   
g729d_voice_secondary_bit=(((voice_data_down_line_g729d[i][7] & BIT2) >> 2) << 13) |
			     (((voice_data_down_line_g729d[i][1] & BIT1) >> 1) << 12) |
			     (((voice_data_down_line_g729d[i][5] & BIT1) >> 1) << 11) |
			     (((voice_data_down_line_g729d[i][9] & BIT0) >> 0) << 10) |
			     (((voice_data_down_line_g729d[i][5] & BIT0) >> 0) << 9) |
			     (((voice_data_down_line_g729d[i][9] & BIT1) >> 1) << 8) |
			     (((voice_data_down_line_g729d[i][1] & BIT5) >> 5) << 7) |
			     (((voice_data_down_line_g729d[i][2] & BIT8) >> 8) << 6) |
			     (((voice_data_down_line_g729d[i][3] & BIT1) >> 1) << 5) |
			     (((voice_data_down_line_g729d[i][2] & BIT5) >> 5) << 4) |
			     (((voice_data_down_line_g729d[i][2] & BIT3) >> 6) << 3)|
			     (((voice_data_down_line_g729d[i][7] & BIT1) >> 1) << 2)|
			     (((voice_data_down_line_g729d[i][8] & BIT3) >> 3) << 1)|
			     (((voice_data_down_line_g729d[i][2] & BIT9) >> 9) << 0);
//从64个比特中抽出14个次敏感的比特来做BCH(31,21)			       
/*g729d_voice_important_bit=3;
g729d_voice_secondary_bit=5;
*/			     
BCH1_data=g729d_voice_important_bit;
encode_BCH1();
//word_org=&BCH1_data
BCH2_data=(g729d_voice_secondary_bit<<7);
encode_BCH2();

/*
//把生成的90个比特,放到6个15个比特的word中主要包括BCH1(31bit)、BCH2(24bit)以及不敏感比特34个bit.
Buffer_data[0]=((g729d_voice_important_bit&BIT15>>15)<<0)|
               ((g729d_voice_important_bit&BIT14>>14)<<1)|
                ((g729d_voice_important_bit&BIT13>>13)<<2)|
                ((g729d_voice_important_bit&BIT12>>12)<<3)|
                ((g729d_voice_important_bit&BIT11>>11)<<4)|
                ((g729d_voice_important_bit&BIT10>>10)<<5)|
                ((g729d_voice_important_bit&BIT9>>9)<<6)|
                ((g729d_voice_important_bit&BIT8>>8)<<7)|
                ((g729d_voice_important_bit&BIT7>>7)<<8)|
                ((g729d_voice_important_bit&BIT6>>6)<<9)|
                ((BCH1_CRC&BIT14>>14)<<10)| 
                ((BCH1_CRC&BIT13>>13)<<11)| 
                ((BCH1_CRC&BIT12>>12)<<12)| 
                ((BCH1_CRC&BIT11>>11)<<13)| 
                ((BCH1_CRC&BIT10>>10)<<14);
                
                
               
                
Buffer_data[1]=((BCH1_CRC&BIT9>>9)<<0)|              
                 ((BCH1_CRC&BIT8>>8)<<1)|
                 ((BCH1_CRC&BIT7>>7)<<2)|
                 ((BCH1_CRC&BIT6>>6)<<3)|
                 ((BCH1_CRC&BIT5>>5)<<4)|
                 ((BCH1_CRC&BIT4>>4)<<5)|
                 ((BCH1_CRC&BIT3>>3)<<6)|
                 ((BCH1_CRC&BIT2>>2)<<7)|
                 ((BCH1_CRC&BIT1>>1)<<8)|
                 ((BCH1_CRC&BIT0>>0)<<9)|
                 ((g729d_voice_important_bit&BIT5>>5)<<10)|
                 ((g729d_voice_important_bit&BIT4>>4)<<11)|
                 ((g729d_voice_important_bit&BIT3>>3)<<12)|
                 ((g729d_voice_important_bit&BIT2>>2)<<13)|
                 ((g729d_voice_important_bit&BIT1>>1)<<14);
                
                 
                 
Buffer_data[2]=  ((g729d_voice_important_bit&BIT0>>0)<<0)|               
                 ((g729d_voice_secondary_bit&BIT13>>13)<<1)|
                 ((g729d_voice_secondary_bit&BIT12>>12)<<2)|
                 ((BCH2_CRC&BIT9>>9)<<3)|                 
                 ((BCH2_CRC&BIT8>>8)<<4)|
                 ((BCH2_CRC&BIT7>>7)<<5)|
                 ((BCH2_CRC&BIT6>>6)<<6)|
                 ((BCH2_CRC&BIT5>>5)<<7)|
                 ((BCH2_CRC&BIT4>>4)<<8)|
                 ((BCH2_CRC&BIT3>>3)<<9)|
                 ((BCH2_CRC&BIT2>>2)<<10)|
                 ((BCH2_CRC&BIT1>>1)<<11)|
                 ((BCH2_CRC&BIT0>>0)<<12)|
                 (((voice_data_down_line_g729d[i][1] & BIT7) >> 7) << 13)|//a1.7
                 (((voice_data_down_line_g729d[i][1] & BIT5) >> 5) << 14);//a1.5;
                 
Buffer_data[3]=(((voice_data_down_line_g729d[i][2] & BIT9) >> 9) << 0)|//a2.9
               (((voice_data_down_line_g729d[i][2] & BIT8) >> 8) << 1)|//a2.8
               (((voice_data_down_line_g729d[i][2] & BIT7) >> 7) << 2)|//a2.7
               (((voice_data_down_line_g729d[i][2] & BIT6) >> 6) << 3)|//a2.6
               (((voice_data_down_line_g729d[i][2] & BIT5) >> 5) << 4)|//a2.5
               (((voice_data_down_line_g729d[i][2] & BIT4) >> 4) << 5)|//a2.4
               (((voice_data_down_line_g729d[i][2] & BIT3) >> 3) << 6)|//a2.3
               (((voice_data_down_line_g729d[i][2] & BIT2) >> 2) << 7)|//a2.2
               (((voice_data_down_line_g729d[i][2] & BIT1) >> 1) << 8)| //a2.1
               (((voice_data_down_line_g729d[i][2] & BIT0) >> 0) << 9)| //a2.0
               (((voice_data_down_line_g729d[i][3] & BIT1) >> 1) << 10)| //a3.1
                (((voice_data_down_line_g729d[i][3] & BIT0) >> 0) << 11)| //a3.0; 
                (((voice_data_down_line_g729d[i][4] & BIT8) >> 8) << 12)| //a4.8
                (((voice_data_down_line_g729d[i][4] & BIT7) >> 7) << 13)|
                (((voice_data_down_line_g729d[i][4] & BIT6) >> 6) << 14);  //a4.6
               
Buffer_data[4]= (((voice_data_down_line_g729d[i][4] & BIT5) >> 5) << 0)|
                (((voice_data_down_line_g729d[i][4] & BIT4) >> 4) << 1)|    //a4.4
                (((voice_data_down_line_g729d[i][4] & BIT3) >> 3) << 2)|
                (((voice_data_down_line_g729d[i][4] & BIT2) >> 2) << 3)|
                (((voice_data_down_line_g729d[i][4] & BIT1) >> 1) << 4)|
                (((voice_data_down_line_g729d[i][4] & BIT0) >> 0) << 5)|
                (((voice_data_down_line_g729d[i][5] & BIT1) >> 1) << 6)|   //a5.1
                (((voice_data_down_line_g729d[i][5] & BIT0) >> 0) << 7)|   //a5.0
                (((voice_data_down_line_g729d[i][6] & BIT5) >> 5) << 8)|  //a6.5

⌨️ 快捷键说明

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