next up previous
Next: Bibliography Up: Orthogonal Codes Previous: Multi-rate Orthogonal Gold Codes


Orthogonality Preservation between Multi-Rate Orthogonal Codes

In multi-rate DS-CDMA system, high order orthogonal codes are used for low rate information spreading and low order orthogonal codes for high rate information spreading resulting in low spreading factor. In any orthogonal transformation technique, there exists a dependency between multi-rate codes and the dependent codes should not be used at the same time. The purpose of ``ocrm'' is to provide a code index management scheme ensuring the orthogonality. This task is sometimes very simple as in the case of Walsh codes. Sometimes, a more complex scheme is required as in the case of modified Hadamard transform [6]. I wrote a simple program which uses a complete binary tree to manage the codes. This ``ocrm'' module is easily extendable to cope with any orthogonal transform of which code structure can be represented by a complete binary tree. You are required to include ``ocrm.h'' to use ocrm module. ``test_ocrm'' shows an example about how to use the module. Here is a brief description about the functions provided by the module.

typedef enum OH, MH OCodeGenMode
This data structure enumerate the registered transform method in the module. New transform technique can be added easily. Currently, two methods have been implemented. OH for the original Hadamard transform or Sylvester construction and MH for the modified Hadamard transform as in Adachi's paper [6].
int ocrm_init( void )
It initializes the internal data structures for ocrm module. It should be the first ocrm function call. 0 is returned on successful initialization.
void ocrm_end( void )
It returns the allocated resources for ocrm module.
int ocrm_create_code_tree(int bdeg, int mdeg, OCodeGenMode mode)
It create an Multi-Rate Orthogonal code resource binary tree and initializes the binary tree with free orthogonal indices according to the given code index generation mode. bdeg is the degree of the base code and mdeg is the maximum extended code order. mode specifies which transform to use to generate the free indices. The code tree id is returned or ``-1'' is returned on any errors.
void ocrm_destroy_code_tree( int id )
The function deallocates the memory space for tree nodes.
int ocrm_get_code( int id, int deg, int *serial )
It gives the next available orthogonal code index of the given degree. The found valid code index is returned. The position in the code tree is saved in *serial. This value cab be used for free the code index. The code index is returned if one is available, -1 is returned when no free index for the given degree is available.
void ocrm_free_code( int id, int serial )
It make the index available by marking it as free.
void ocrm_print_tree( int id )
This prints all the information for the tree. This is good for diagnostic purposes.
void ocrm_free_index ( int id, int deg, int index )
It makes the code index available by marking it as free. This is useful when you do not want to keep serial obtained while calling ocrm_get_code(). The action is same as ocrm_free_code().


next up previous
Next: Bibliography Up: Orthogonal Codes Previous: Multi-rate Orthogonal Gold Codes
Byoungjo CHOI