📄 wcdma_2ndinterleaver.c
字号:
/****************************************************************
File Name: t3g_2ndinterleaver_9909.c
created by pengzw on Fri Jul 16 10:31:49 1999
generated by COINS, COSSAP Release 1999.05, Synopsys Inc. 1999
****************************************************************/
#include "c2f77defs.h"
#define IVER 1999
#define IREV 5
typedef float SIGNAL;
#include "stdlib.h"
#ifdef USE_PROTOS
void M5008_1008_2_t3g_2ndinterleaver_9909(long *iparam, float *rparam)
#else
void M5008_1008_2_t3g_2ndinterleaver_9909(iparam, rparam)
long *iparam;
float *rparam;
#endif
{
long ccg_npast, ccg_nfut, ccg_istat, ccg_savearea = 0;
long ccg_pos = 0, ccg_len = 0;
long BlockFactor;
/* port declarations */
/* 1. inputport */
long *DataBefInterl;
/* 1. outport */
long *DataAftInterl;
long *ccg_DataAftInterl;
long ccg_outrate_DataAftInterl = 1;
/* parameter declarations */
/* 1. parameter */
long InterlLength;
/* state declarations */
long *data, *ccg_data;
#include "lclpar.h"
#include "scrtch.h"
#include "modsrc.h"
/* get parameters */
InterlLength = GetParameter_I(1);
switch (init)
{
case 1:
SetVersion;
SetRevision;
/* map state data to scratch area */
ChkScratchPadSize( ccg_pos + (InterlLength) );
ccg_len = InterlLength;
data = ccg_data = &ih[ccg_pos];
{ int ccg_i = 0; for (;ccg_i < (InterlLength) ; ccg_i++) data[ccg_i] = 0;}
ccg_pos += ccg_len;
/* set scheduling rates */
SetInputSchedule(1) = InterlLength;
/* save all states */
ccg_savearea++;
ccg_len = InterlLength;
vsav(&mseqn, ccg_data, &ccg_len, &ccg_savearea, &ccg_istat);
ExitOnError(-ccg_istat);
return;
case 2:
/* get all states */
ccg_savearea++;
ChkScratchPadSize( ccg_pos + (InterlLength) );
data = ccg_data = &ih[ccg_pos];
vget(&mseqn, data, &ccg_len, &ccg_savearea, &ccg_istat);
ExitOnError(-ccg_istat);
ccg_pos += ccg_len;
/* ringbuffer check */
rbchk( InPort(1), &ccg_npast, &ccg_nfut, &ccg_istat);
ExitOnError(-ccg_istat);
BlockFactor = ccg_nfut/( InterlLength);
if ( BlockFactor < 1 ) return;
/* get rates of output ports */
ccg_outrate_DataAftInterl = GetOutputRate(1);
if ( ( InterlLength)*BlockFactor > ccg_outrate_DataAftInterl )
BlockFactor = ccg_outrate_DataAftInterl/( InterlLength);
if ( BlockFactor < 1 ) BlockFactor = 1;
/* read input signals */
ccg_len = ( InterlLength)*BlockFactor;
ChkScratchPadSize(ccg_pos+ccg_len);
DataBefInterl = &ih[ccg_pos];
rbrd( InPort(1), DataBefInterl, &ccg_len, &ccg_istat);
ExitOnError(-ccg_istat);
ccg_pos += ccg_len;
/* prepare scratch area for output signals */
ccg_len = ( InterlLength)*BlockFactor;
ChkScratchPadSize(ccg_pos+ccg_len);
DataAftInterl = ccg_DataAftInterl = &ih[ccg_pos];
ccg_pos += ccg_len;
/* signal processing code */
{
register long ccg_lp0;
for(ccg_lp0=BlockFactor; ccg_lp0-- > 0;) {
register long i;
for (i = 0; i < InterlLength; i++) { data[i] = *DataBefInterl++; }
for (i = 0; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 20; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 10; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 5; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 15; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 25; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 3; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 13; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 23; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 8; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 18; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 28; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 1; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 11; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 21; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 6; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 16; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 26; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 4; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 14; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 24; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 19; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 9; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 29; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 12; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 2; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 7; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 22; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 27; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
for (i = 17; i < InterlLength; i+=30) { *DataAftInterl++ = data[i]; }
}
}
/* write output signals */
ccg_len = ( InterlLength) * BlockFactor;
rbwr(OutPort(1),ccg_DataAftInterl, &ccg_len, &ccg_istat);
ExitOnError(-ccg_istat);
/* initialize save area index */
ccg_savearea = 0;
/* save all states */
ccg_savearea++;
ccg_len = InterlLength;
vsav(&mseqn, ccg_data, &ccg_len, &ccg_savearea, &ccg_istat);
ExitOnError(-ccg_istat);
return;
case 3:
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -