用MATLAB HDL编码器在FPGA中计时问题

时间:2016-08-28 10:11:15

标签: matlab vhdl simulink

所以我使用simulink生成一系列上采样过滤器。我将输入作为正弦波,输入为44.1 kHz,输出正弦波为11.2 MHz。为此,我使用了一套来自Simulink的4个FIR内插滤波器。第一个上采样为32,其余的上采样为2.

问题在于Fmax(电路可以计时的最高值)。我得到的Fmax非常低。像低于50 MHz。我做了一些优化并在这里得到了它。我想更多地提高它。如果有人可以帮助我,我可以附上我有的simulink文件

我正在使用MATLAB HDL编码器和Altera Quatras 2进行合成

2 个答案:

答案 0 :(得分:0)

首先,我不明白你为什么要上传32次,然后4次上2次。你应该分析最慢的路径。

如果添加是瓶颈,那将是32x上采样,8,8,8会更好。但是,一切都取决于实现,我无法从这里猜测。

我建议看一下FIR滤波器。减少FIR级数会增加您的速度,但会增加SNR,这可能是也可能是不可容忍的。你可以采取一个非常短的脉冲响应。

您还可以减少用于表示样本的位数。这将再次降低SNR但消耗更少的逻辑并且可能更快。

如果您正在使用的技术可用,您还可以考虑使用或不使用硬乘法器块。

否则,请查看并行FIR滤波器实现。虽然我打赌你必须自己实施那个。

当然,正如你自己指出的那样,需要现实的约束。

祝你好运。请考虑喜欢我的帖子。

答案 1 :(得分:0)

感谢答案。是的,由于我的项目要求,我需要4阶段的上采样。我的输入采样频率是变化的,我的输出应该总是11.2 MHz,这就是为什么我需要这4个不同的阶段才能产生4个不同阶段的输出。

我使用流水线寄存器优化了FIR滤波器,使用部分串行架构减少了32个上采样器的乘法器数量。

我想问题是我没有使用SDC文件作为altera进行timinig分析的需要,现在当我配置一个简单的SDC文件时,我得到正的松弛值和24.5 MHz的受限Fmax,因为我的输出需要是11.2 MHz我觉得这还不错。

如果您对此有更多建议请告诉我,我不太了解SNR的事实