This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] C5515 eZdsp 缓冲器开关问题

Guru**** 2540820 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/602847/c5515-ezdsp-buffer-switch-problem

您好!

我正在使用 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Paolo、

    我已通知软件团队。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好吗?
    有什么想法吗? 我需要有关此问题的帮助...

    非常感谢
    Paolo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我找到了我的问题的解释:这是由频谱泄漏引起的毛刺脉冲。 是否有任何有效的实施方案可避免这种情况? 我找到了 VC5505 FFT Filtet Demo,但示例中 OLA 方法的实现不起作用....

    有人解决了这个问题吗?