#include "DspCdefs.h" // -JCSU // Defines to convert from IQ math to integer math: -JCSU #define IQ15CONST 32768 // 2^15=32768 -JCSU #define IQ23CONST 8388608 // 2^23=8388608 -JCSU // // The following code has been adapted from tw_fft16x16.c -JCSU // #ifndef PI # ifdef M_PI # define PI M_PI # else # define PI 3.14159265358979323846 # endif #endif #define TPI 2*3.14159265358979323846 // -JCSU #define FFTSTRT 73 // Begin to skip gaurd band #define FFTRACHSTRT 1200 // Begin to include CW sections of the RACH #define RRC_DMH_2N 128 //Set the Padded RRC Filter length -GMR1X2 #define RRC_PNB2_2N 64 //Set the Padded RRC Filter length -PNB26X2 #define RRC_PNB2_N 32 //Set the Padded RRC Filter length #define TargetDMH 0.50*IQ15CONST // Define a _fract, 0.33 better? TBV -JCSU #define TargetDMH2 0.20*IQ15CONST // Define a _fract. -JCSU #define SAMPLEN12TS 4680 // Sample Length for 12TS @ Fs=234KHz #define aRACHLEN 3510 // RACH len in 234000 samples/sec #define aRACHLENx2 3510 // #define aBCCHLEN 2340 //BCCH len in 234000 samples/sec #define aBCCHLENx2 2340 // #define aFACCH3LEN 1170 //FACCH len in 234000 samples/sec #define aFACCH3LENx2 1170 // #define aNT3DETLEN 400 //NT3 detection length -BPSKDET -JCS032810 #define aNT3DETLENDEM 450 //NT3 Demod detection length (was 400) -BPSKDET -D6351.det -JCS032810 #define aNT9LEN 3510 //NT9 length for FACCH9 or TCH9 bursts -AddNT6n9 #define aNT6LEN 2340 //NT6 length for FACCH6 or TCH6 bursts -AddNT6n9.2 #define aPABLEN 1170 //PAB Burst Slot Length -AddGmPRS #define aPABLENB 1010 //PAB Burst Length -PABSCANSS #define aPNB16LEN 2340 //PNB16 Length -AddGmPRS #define aPNB26LENx1 2340 //PNB(2,6) length - Fs=234KHz -AddGmPRS #define aPNB26LENx2 4680 //PNB(2,6) length - Fs=468KHz -AddGmPRS #define aPKAB16LEN 2340 //PKAB16 Length -AddGmPRS #define aPKAB26LENx1 300 //PKAB(2,6) length - Fs=234KHz -AddGmPRS #define aPKAB26LENx2 600 //PKAB(2,6) length - Fs=468KHz -AddGmPRS #define aDC2LEN 780 //DC2 len in 234000 samples/sec -AddDC2 #define RACHLENGTH 3510 // RACH len in 234000 samples/sec #define BCCHLENGTH 2340 // BCCH len in 234000 samples/sec #define AGCHLENGTH 2340 // #define FACCH3LENGTH 1170 // FACCH len in 234000 samples/sec #define TCH3LENGTH 1170 // TCH3 len in 234000 samples/sec #define NT3LENGTH 1170 // NT3 len in 234000 samples/sec #define NT3DETSTART 200 // 200, 240 NT3 Demod Start within I/Q buffer -SHARPFEF #define NT3DETLENGTHDEM 300 // 200, 150 NT3 Demodulation length -SHARPFEF #ifdef TCH3X2 #define NT3DETLENGTH 2*250 // NT3 detection length. -JCS052513 -JCS060513 #else #define NT3DETLENGTH 250 // 150, 100 NT3 detection length. -JCS052513 -JCS060513 #endif #define NT9LENGTH 3510 // NT9 length for FACCH9 or TCH9 bursts #define NT6LENGTH 2340 // NT6 length for FACCH6 or TCH6 bursts #define PABLENGTH 1170 // PAB Burst Slot Length #define PABLENGTHB 1010 // PAB Burst Length #define PNB16LENGTH 2340 // PNB16 Length #define PNB26LENGTHx1 2340 // PNB(2,6) length - Fs=234KHz #define PNB26LENGTHx2 4680 // PNB(2,6) length - Fs=468KHz #define PKAB16LENGTH 2340 // PKAB16 Length #define PKAB26LENGTH 2340 // PKAB(2,6) length - Fs=234KHz #define PKAB26LENGTHx2 4680 // PKAB(2,6) length - Fs=468KHz #define aFALSE 0 // -ADDRXPAB #define aTRUE 1 // -ADDRXPAB // FFT Peak Reject Capability Defines : -PEAKREJ #define SQI_GOOD 12 // GOOD SQI Limit. -PEAKREJ #define SQI_BAD 23 // BAD SQI Limit. -PEAKREJ.053013 #define Rd 0.025 //pi/4-Rotator factor (pi/4)/10=0.0785 is dispersed -D164 //Adjust for circle=unity; ((pi/4)/10)/pi = 0.025 -D164 #ifdef RRC6_FILTER // -RRC6 #define RRC_DMH_N 64 //Set the Padded RRC Filter length -RRC6 #else // -RRC6 #define RRC_DMH_N 32 //Set the Padded RRC Filter length JCS_DMH TASKING #endif #ifdef TUNE09 // -TUNE12 #define Butter_A 0.92439049 //-A[2]=0.92439049 #define Butter_B 0.03780475 // B[1]=B[2]=0.03780475 #define Butter_A5 0.726542528005361 //-A[2] -PLLOOP5 #define Butter_B5 0.136728735997319 // B[1]=B[2] -PLLOOP5 #else #define Butter_A5 0.726542528005361 //-A[2] -PLLOOP5 #define Butter_B5 0.136728735997319 // B[1]=B[2] -PLLOOP5 #define Butter_A 0.8541 //-A[2]=0.8541 #define Butter_B 0.0730 // B[1]=B[2]=0.073 #endif #ifdef FFT2048 // -FFT2048 #define FFTSPREAD 205 // Separation Between FFT Peaks -FFT2048 #define FREQLENGTH 2048 // Length of data used for freq scan -FFT2048 #define FREQCENTER 578 // Center of Signal in freq domain. -FFT2048 #else // -FFT2048 #define FFTSPREAD 102 // Seperation Between FFT Peaks -FFT2048 #define FREQLENGTH 1024 // Length of data used for freq scan #define FREQCENTER 289*1 // Center of Signal in the frequency domain. #endif #define BLOCK_MODE 0 // #define STREAM_IQ_MODE 1 // replaced BLOCK_IQ_MODE #define BLOCK_OPT_MODE 2 // -BPSKDET #define BLOCK_TIMREC_MODE 3 // Timing Recovery -FPGAdemod #define BLOCK_IQCAR_MODE 4 // IQ Split & Carrier Recovery. -FPGAdemod #define BLOCK_SETUP_MODE -1 // Burst Demod Setup and Carrier recovery -FPGAdemod #define ZBUFLEN 4096 //Z buffers for demodulation -FFT2048 #ifdef PNB26X2 // -PNB26X2 #define ZBUFLEN2 4800 //Z buffers for 2X demodulation -PNB26X2 #else // -PNB26X2 #define ZBUFLEN2 4096 //Z buffers for 2X demodulation -PNB26X2 #endif #ifdef ADDRXRACH // -ADDRXRACH #define IQBUFLEN 4680 //size of I & Q buffers for Burst data. -ADDRXRACH #else // -ADDRXRACH #define IQBUFLEN 4000 //size of I and Q buffers for Burst data #endif //------------------------------ // Demodulator Equates : //------------------------------ #ifdef TUNE09 // -TUNE09 #define K_PLL_DMH1 0.0397887 //Kp1=0.25, Factor by 1/2PI -TUNE09 #define K_PLL_DMH2 0.0397887 //Kp2=0.25, Factor by 1/2PI -TUNE09 #define ERRLIM_DMH 0.01433 //ErrLimit = pi/8 = 0.125 -PLLCONV.052213 #define ERRLIMN_DMH -0.01433 //Negative ErrLimit. -PLLCONV.052213 #else #define K_PLL_DMH1 0.03 //Kp1=0.20, Factor by 1/2PI #define K_PLL_DMH2 0.03183 //Kp2=0.20, Factor by 1/2PI, K=0.03183098861 #define ERRLIM_DMH 0.2618 //ErrLimit = pi/12 #define ERRLIMN_DMH -0.2618 //Negative ErrLimit. #endif #define ERRLIM_PNB26 +0.125 //ErrLimit = pi/6=0.5236 1/4=0.25 -AddGmPRS -AddPNB26x1 -TUNE13 #define ERRLIMN_PNB26 -0.125 //Negative ErrLimit. -AddGmPRS -AddPNB26x1 -TUNE13 #define K_PLL_BPSK 0.75 //Kp =0.67 -TUNE.060313 #define ERRLIM_CBPSK 0.04167 //ErrLimit = pi/12 scaled by 1/2pi #define ERRLIMN_CBPSK -0.04167 //Neg ErrLimit, scaled by 1/2pi. #define BPSK_GAMMA 0.04 //Gamma was 0.20, 0.10 JCS234 -D224 #define BPSK_1GAMMA 0.80 //1-Gamma is 0.80 //------------------------------------- // Angular Equates : //------------------------------------- #define Pos_UD +0.7071 // +0.7071 = 005a,7efa = 5930746 #define Neg_UD -0.7071 // -0.7071 = FFA5,8106 #define Pos_UD1 +0.9999 // +0.9999 BPSK #define Neg_UD1 -0.9999 // -0.9999 BPSK #define QuarPI_Unit 0.125 // PI/4 #define HalfPI_Unit 0.250 // PI/2 #define PI34_Unit 0.375 // 3*PI/4 #define PI_Unit 0.500 // PI #define PI54_Unit 0.625 // 5*PI/4 #define PI32_Unit 0.750 // 3*PI/2 #define PI74_Unit 0.875 // 7*PI/4 #define TwoPI_Unit 1.000 // <<-TBV #define Neg_PI_Unit -0.500 // -PI #define Neg_PI34_Unit -0.375 // -3*PI/4 #define Neg_PI2_Unit -0.250 // -PI/2 #define Neg_PI4_Unit -0.125 // -PI/4 //-SHARPFEF #ifdef SHARPFEF #define HilbertCoefs_N 72 // Order 71 for 72 Taps -SHARPFEF #define HilbertCoefsx1_N 72 // Order 71 for 72 Taps -SHARPFEF #else #define HilbertCoefs_N 32 // Was 27, round up to 32 #define HilbertCoefsx1_N 64 // Was 53, round up to 64 #endif #define CIRCUIT_MODE 0 // #define PACKET_MODE 1 // // Defines for Parameter 'Operate_Mode': #define BLOCK_MODE 0 // #define BLOCK_OPT_MODE 2 // -BPSKDET #define BIG_BUF_DSP_PAD 128 //temp should be defined within bigbuf class // Input Parms for DSP_Rx_Init_WJ() #define INIT_BRST -1 // -PEAKREJ.2 #define INIT_POR 0 // -PEAKREJ.2 #define INIT_PORBERT 1 // -PEAKREJ.2 #define ERRLIM_PNB26 +0.125 //ErrLimit = pi/6=0.5236 1/4=0.25 -AddGmPRS -AddPNB26x1 -TUNE13 #define ERRLIMN_PNB26 -0.125 //Negative ErrLimit. -AddGmPRS -AddPNB26x1 -TUNE13 #define BERT_OFF 0 // -PEAKREJ.2 #define BERT_ON +1 // -PEAKREJ.2 #define CQPSKmodeRACH 4 // 4==DMH UNIRACH #define CQPSKmodeBCCH 5 // 5==BCCH UNIRACH #define CQPSKmodeAGCH 6 // 6==AGCH UNIRACH #define CQPSKmodeFACCH 7 // 7==FACCH FACCH3 #define CQPSKmodeTCH3 8 // 8==TCH3 AddTCH3 #define CQPSKmodeNT3 9 // 9==NT3 Discriminate AddNT3 #define CBPSKmodeDKAB 10 //10==DKAB AddDKABcarr #define CQPSKmodeNT6 13 //13==NT6 Discriminate AddNT6n9 #define CQPSKmodeNT9 16 //16==NT9 Discriminate AddNT9 #define CQPSKmodeFACCH6 25 //25==FACCH6 AddFACCH6 #define CQPSKmodeFACCH9 26 //26==FACCH9 AddFACCH9 #define CQPSKmodeTCH6 27 //27==TCH6 AddTCH6 #define CQPSKmodeTCH9 28 //28==TCH9 AddTCH9 #define CQPSKmodePNB16 41 //41==GMPRS-PNB16 -AddGmPRS #define CQPSKmodePNB26 42 //42==GMPRS-PNB26 -AddGmPRS #define CQPSKmodePKAB16 43 //43==GMPRS-PKAB16 -AddGmPRS #define CQPSKmodePKAB26 44 //44==GMPRS-PKAB26 -AddGmPRS #define CQPSKmodePAB 45 //45==GMPRS-PAB -AddGmPRS #define CQPSKmodeDC2 48 //48==DC2 -AddDC2