请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
您好!
我正在使用 C5515 eZdsp 来获取 dsbsc 调制信号。 我的目标是解调信号。
信号采集是使用乒乓缓冲器(仅输入左通道)进行的、取自 C5515_Audio_Filter 演示代码。
我的算法是:FFT、频率***、IFFT。
解调成功、但在从另一个输入缓冲器转换时、我有一个差尖峰、该尖峰距离我的输出信号:
在 main.c 中:
while (1) if (CurrentRxL_DMAChannel == 2) { buff_copy (RcvL1、BufferL1、Xmit_buff_size); DSB_SC_DEMOD (缓冲器 L1); buffer_copy (BufferL1、&FilterOutL1[0]、Xmit_buff_size); } 否则、IF (CurrentRxL_DMAChannel = 1) { buff_copy (RcvL2、BufferL2、Xmit_buff_size); DSB_SC_DEMOD (缓冲器 L2); buffer_copy (BufferL2、&FilterOutL2[0]、Xmit_buff_size); } }
DSB_SC_DEMOD ():
void DSB_SC_DEMOD (int16 *输入){ uint8 i; uint8 idx; const uint8 Imax = FFT_length/2; if (freq =FREQ_32) IDX = carrier_32_IDX; 其他 IDX = carrier_42_IDX; DO _FFT (输入、全部、imagL、1); for (i = 0;i < Imax;i++){ *(reall + i)=*(reall + i + idx); *(imagL + i)=*(imagL + i + idx); } 对于(i = 1;i < FFT_length/2;i++){ *(reall + FFT_length - i)=*(reall + i); *(imagL + FFT_length - i)=-*(imagL + i); } do _ifft (reall、imagL、input、0); }
在下图中、您将看到尖峰:
您是否有任何建议来避免这种情况?
谢谢
Paolo
