Communication Processor Module
16-36 MPC823e REFERENCE MANUAL MOTOROLA
DSP
COMMUNICATION
16
PROCESSOR MODULE
16.3.3.5.1 DSP Programming Example (Core Only)
void tx_filter ()
{
S16 *coefr
S16 *samplr, *sampli
S16 *coefend;
S32 filtoutr, filtouti;
U8 subcount, sampleindex;
extern S16 mult(S16 p1, S16 p2); /* in-line invocation */
coefr=txfiltcoef_str;
coefend=txfiltcoef_end;
samplr=&txfiltdly[REAL][txfiltptr];
sampli=&txfiltdly[IMAG][txfiltptr];
sampleindex=0;
while (coefr<coefend) {
filtoutr=filtouti=0;
subcount=0;
while (subcount<TXSUBFILTLEN) {
filtoutr+=mult(*coefr, *samplr--);
filtouti+=mult(*coefr++, *sampli--);
}
samplr=&txfiltdly[REAL][txfiltptr];
sampli=&txfiltdly[IMAG][txfiltptr];
modbuff[REAL][sampleindex]= filtoutr ;
modbuff[IMAG][sampleindex++]= filtouti;
}
}
void modulator ()
{
U8 i;
S32 termrnd;
extern S16 mult(S16 p1, S16 p2); /* in-line invocation */
i=0;
while (i<SAMPLE_PER_T) {
sigout[i]= mult(sn1800[REAL][cosindx], modbuf[REAL][i]) -
mult(sn1800[IMAG][cosindx], modbuf[IMAG][i]);
cosindx++;
if (cosindx==SIN1800TBL_LEN)cosindx=0;
i++;
}
void main ()
{
*
*
tx_filter();
modulator();
*
*
}