Thread: WiMAX project

  1. #1
    Registered User
    Join Date
    Feb 2003
    Posts
    6

    WiMAX project

    I'm desgning a WiMAX transmitter coded in C language with the following blocks: FIFO buffer->PISO register-> Reed Solomon encoder->Interleaver-> Mixer ->OFDM modulation. I've completed the first 3. Does anyone have any resources where I can get information on how to design an interleaver?If there's any sample source code available I would appreciate it.

    PS. Where's Betazep?
    Last edited by mwagz; 01-30-2006 at 01:38 AM.

  2. #2
    Registered User
    Join Date
    Feb 2003
    Posts
    6
    The following is a snippet of interleaver code that I would like some expalnation:8 by 16 array
    Code:
    int *INTERLEAVE_OUT;
    int SIZE = 128;
    
    
    int array[128]={ 0,   1,  2,  3,  4,  5,  6,  7, 	// 0 
    		 8,   9, 10, 11, 12, 13, 14, 15, 	// 1
    		16,  17, 18, 19, 20, 21, 22, 23, 	// 2
    		24,  25, 26, 27, 28, 29, 30, 31,	// 3 
    		32,  33, 34, 35, 36, 37, 38, 39,	// 4 
    		40,  41, 42, 43, 44, 45, 46, 47,	// 5 
    		48,  49, 50, 51, 52, 53, 54, 55,	// 6 
    		56,  57, 58, 59, 60, 61, 62, 63,	// 7 
    		64,  65, 66, 67, 68, 69, 70, 71,	// 8 
    		72,  73, 74, 75, 76, 77, 78, 79,	// 9 
    		80,  81, 82, 83, 84, 85, 86, 87,	// 10 
    		88,  89, 90, 91, 92, 93, 94, 95,	// 11 
    		96,  97, 98, 99,100,101,102,103,	// 12
    		104,105,106,107,108,109,110,111,	// 13
    		112,113,114,115,116,117,118,119,	// 14
    		120,121,122,123,124,125,126,127 };	// 15
    
    main()
    {
    
    	INTERLEAVE_OUT            = (int*)malloc(sizeof(int)*(SIZE));
    
    
    	int i,j,k=0,h=0;
    
    	for(i=0;i<8;i++){
    		for(j=0;j<16;j++){
    			*(INTERLEAVE_OUT + k) = array[i+h];
    			h+=8;
    			k++;
    			printf("k=%d \n",k);
    		}  	
    		h = 0;
    	}
    
    	for(i=0;i<128;i++){
    		printf("ARRAY[%d]  = %d\t",i,array[i]);
    		printf("RESULT[%d] = %d\n",i,*(INTERLEAVE_OUT + i));
    	}
    
    
    	free(INTERLEAVE_OUT);
    
    
    /*
    	*pt     = array[0]; *(pt+1) = array[8];	*(pt+2) = array[16]; *(pt+3) = array[24]; 
    	*(pt+4) = array[0]; *(pt+5) = array[4]; *(pt+6) = array[4]; *(pt+7) = array[4];	
    
    */

  3. #3
    Registered User
    Join Date
    Feb 2003
    Posts
    6

    ok...

    ok so it doesn't make sense but at least someone can give some pointers on this..c'mon guys !!!

  4. #4
    Just Lurking Dave_Sinkula's Avatar
    Join Date
    Oct 2002
    Posts
    5,005
    I thought it was pretty straightforward. Did you examine the output? What are you having difficulty with?
    7. It is easier to write an incorrect program than understand a correct one.
    40. There are two ways to write error-free programs; only the third one works.*

  5. #5
    Registered User
    Join Date
    Mar 2003
    Posts
    143
    I agree with Dave_Sinkula that this is pretty simple. Basically a rectangular interleaver (which is what this is) can be though of as a matrix of, in your case, 16 rows and 8 columns.
    The interleaver writes input data into the matrix row by row (0,1,2,...) and reads out
    column by column (0,8,16,...) thus mixing up the data. The deinterleaver will do the
    opposite.

    One question from my side is: why are you interleaving a block code? You won't see any performance improvement - or have you missed the convolutional-type code out of your chain in the initial posting?

    Secondly - I think the mixer function should go after the OFDM modulation (at least in the
    conventional sense of a mixer)

    HTH
    DavT
    -----------------------------------------------

  6. #6
    Registered User
    Join Date
    Feb 2003
    Posts
    6

    uh huh...

    Now here's the thing:
    First block codes r simpler to implemetn but offer no increase i perfomance.
    Convolutional code interleaver mostly associated with wireless comm so definitely it should replace the block code interleaver.
    If u hv any idea how this can be done,pliz let me know.

    The o/p of the rs encoder is 8 bit. I want to reduce noise,etc.So convolutional encoder is in order.
    Next, DavT, what's the function of a mixer?I thought that a mixer requires 2 i/ps ?Pliz clear that up for me !!!

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Problem Displaying a Struct
    By rockstarpirate in forum C++ Programming
    Replies: 16
    Last Post: 05-05-2008, 09:05 AM
  2. added start menu crashes game
    By avgprogamerjoe in forum Game Programming
    Replies: 6
    Last Post: 08-29-2007, 01:30 PM
  3. Dynamic Binding
    By gpr1me in forum C++ Programming
    Replies: 1
    Last Post: 03-24-2006, 09:01 AM
  4. Game Independent Anti-cheat Project Needs Programmers
    By GIA Project Lea in forum Projects and Job Recruitment
    Replies: 3
    Last Post: 09-15-2005, 07:41 PM