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

📄 signal_enc.c

📁 This model is just testing an idea of MIMO, which IEEE802.11n will have. But I havo not seen the s
💻 C
字号:
/*****************************************************************************//*   FIle Name : signal_enc.c                                                *//*   Description : WLAN FEC SIGNAL Field Encoder                             *//*   author : miffie                                                         *//*   Date   : aug/10/05                                                      *//*   Copyright (c) 2005 miffie   All rights reserved.                        *//*****************************************************************************////////////////////////////////////////////////////////////////////////////////struct complexset signal_enc( char RATE , short LENGTH , char *pilot_shifter) { // struct	binaryset bset0,bset1 ;struct  complexset cset0, cset1 ;struct  complexset ctop ;struct  complex  ctmp1, ctmp2 ;char 	*tmp1 , *tmp2 ;char	parity ;int	ii ;// Rate(Mbps)   RATE(R1-R4) Coding_Rate Modulation Nbpsc Ncbps Ndbps//     6          1101        0:1/2        BPSK     1     48    24   //Make SIGNAL bits  //SERVICE field    if ((tmp1 = (char *)malloc(3*sizeof(char)) ) == NULL) {        PRINTF( " malloc failed in SIGNAL\n") ;    } //fail    else { //allocated       //bset1 for SERVICE field       PRINTF("SIGNAL Encoder RATE=%x LENGTH=%x\n" ,RATE, LENGTH) ;       bset1.format = 1 ; //a byte octet       bset1.size = 3 ; //a byte octet       bset1.data = tmp1 ; //       tmp2 = tmp1 ;       parity = 0 ;       //first byte       *tmp2   = ((LENGTH &0x7) <<5)  //first byte               + (0x0<<4)             //Reserved               + RATE ;             //RATE       for (ii=0;ii<8;ii++) parity ^= (*tmp2>>ii) &0x1 ;        tmp2++ ;       //second byte       *tmp2   = (LENGTH &0x7f8)>>3 ; //second byte       for (ii=0;ii<8;ii++) parity ^= (*tmp2>>ii) &0x1 ;        tmp2++ ;       //third byte       parity ^= (LENGTH>>11) &0x1 ;        *tmp2 = ((LENGTH &0x800)>>11)  //third byte             + ((parity &0x1) <<1) ;    } //allocated    bset0 = byte2binary(bset1) ;    print_binaryset( bset0 ) ;   //No Scrambler in SIGNAL  //Convolution encoder    bset0 = convolution_encoder(bset0 , 0 ) ; //rate 0:1/2    //Compare with Table G.8 for convolution encoder    print_binaryset( bset0 ) ;        //interleaver    bset0 = interleaver(bset0 , 1 ) ; //Nbpsc=1    //Compare with Table G.9 for interleaved bits    print_binaryset( bset0 ) ;    //OFDM mapper    cset0 = mapper (bset0, 1, pilot_shifter) ;     //Compare with Table G.11 for Frequency Domain data    print_complexset( cset0 ) ;        //OFDM IFFT    cset0 = idft64 ( cset0 ) ;    //Compare with Table G.12 for Frequency Domain data    print_complexset( cset0 ) ;    //build a DATA symbol    cset1 = extract_complexset(cset0 , 48 , 16 ) ; //Guard Interval    cset1 = cat_complexset(cset1 , cset0 ) ;    ctop = cset1 ;    return( ctop ) ;} //signal_enc

⌨️ 快捷键说明

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