discdemod.c

来自「wcdma模型」· C语言 代码 · 共 118 行

C
118
字号
/* | | Copyright disclaimer: |   This software was developed at the National Institute of Standards |   and Technology by employees of the Federal Government in the course |   of their official duties. Pursuant to title 17 Section 105 of the |   United States Code this software is not subject to copyright |   protection and is in the public domain. | |   We would appreciate acknowledgement if the software is used. |*//* | Project:     WCDMA simulation environment | Module:      Discrete CDMA downlink demodulation containing QPSK data  |		and spreading modulation. |		No multipath, i.e. ideal channel and synchronisation. | Author:      Tommi Makelainen, Nokia/NIST | Date:        February 23, 1999 | | History: |              February 23, 1999 Tommi Makelainen |                      Initial version. | |              April 6, 1999 Tommi Makelainen |                      Modified despreader name. | */#include <stdio.h>#include <math.h>#include "conversions.h"#include "bitroutines.h"#include "config_wcdma.h"#include "mealy.h"#include "spreading.h"#include "qpsk_ints.h"#include "discdemod.h"/* ------------------------------------------------------------------- *//* * Function:    wcdma_demod_init * Desc.:       Discrete data and spreading demodulation initialization. * * Note: */int wcdma_demod_init(void){    /*     * Allocated memory for temporary outputs.     */    return(0);}/* -------------------------------------------------------------------- *//* * Function:    wcdma_dl_demod * Desc.:       Data and spreading modulation * * Note: *		Input data length can be maximum of 4000 symbols. *		Output vector length is: *			nInputs / sf * 2 */int wcdma_dl_demod(int I_inputs[],	/* I input symbol vector */		       int Q_inputs[],	/* Q input symbol vector */                       int nInputs,	/* input vector size */                       int code[],      /* spreading code */                       int code_len,	/* length of spreading code */                       int sf,		/* spreadign factor */                       int coded_out[])	/* channel coded output */{    int mod_data_len, coded_data_len;    int data_out[2000];    int I_out[2000], Q_out[2000];    /*     * Despread I and Q channels separately.     */    wcdma_hard_despread(I_inputs, nInputs, code, code_len, sf, data_out);    antipodal2bin(data_out, nInputs/sf, I_out);    wcdma_hard_despread(Q_inputs, nInputs, code, code_len, sf, data_out);    antipodal2bin(data_out, nInputs/sf, Q_out);    /*     * Demodulate data, i.e. de-multiplex I and Q.     */    mod_data_len = nInputs / sf;    wcdma_dl_qpsk_demod(I_out, Q_out, mod_data_len,                        coded_out, &coded_data_len);    return(0);}/* -------------------------------------------------------------------- *//* * Function:    wcdma_dl_demod_free * Desc.:       Discrete modulation clean up function. * * Note: */int wcdma_dl_demod_free(void){    return(0);}/* -------------------------------------------------------------------- */

⌨️ 快捷键说明

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