📄 discdemod.c
字号:
/* | | 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -