【问题标题】:Clocking Issue in FPGA with MATLAB HDL Coder使用 MATLAB HDL Coder 的 FPGA 时钟问题
【发布时间】:2016-08-28 10:11:15
【问题描述】:

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

问题在于 Fmax(可以为电路提供时钟的最高值)。我得到一个非常低的 Fmax。就像低于 50 MHz。我做了一些优化并把它放在这里。我想更进一步。如果有人可以帮助我,我可以附上我拥有的 simulink 文件

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

【问题讨论】:

  • Fmax 可能是您最终采样频率的一半。我不明白这个问题。

标签: matlab vhdl simulink


【解决方案1】:

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

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

我建议看看 FIR 滤波器。减少 FIR 阶段的数量会以增加 SNR 为代价来提高您的速度,这可能会或可能不会被容忍。你可以选择一个脉冲响应非常短的。

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

您还考虑使用或不使用硬乘法器块(如果您的目标技术可用)。

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

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

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

【讨论】:

    【解决方案2】:

    感谢您的回答。是的,由于我的项目要求,我需要上采样的 4 个阶段。我的输入采样频率是变化的,我的输出应该始终是 11.2 MHz,这就是为什么我需要这 4 个不同的阶段来为 4 个不同的阶段生成输出。

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

    我猜问题是我没有使用 SDC 文件来满足 altera 的定时分析的需要,现在当我配置一个简单的 SDC 文件时,我得到正的松弛值和 24.5 MHz 的受限 Fmax,因为我的输出需要是 11.2 MHz,我想这已经足够了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      相关资源
      最近更新 更多