文章 ID: 000083380 内容类型: 故障排除 上次审核日期: 2021 年 08 月 28 日

FIR 滤波器可能无法使用 DSP 块输入寄存器

环境

    英特尔® Quartus® II 订阅版
BUILT IN - ARTICLE INTRO SECOND COMPONENT

关键问题

说明

FIR 编译器 II 生成的一些 FIR 滤波器出现故障 要使用所有合适的 DSP 块输入寄存器。TimeQuest 没有正确分析这些 FIR 滤波器,它们似乎 满足时间要求。实际上,未修复路径的时序为 未进行分析,这些 FIR 过滤器可能会导致与时序相关的 在硬件中实施时出现错误。此问题影响 Stratix V, Arria V(GX 和 GZ)和 Cyclone V 设备。问题会影响 FIR 过滤器:使用 systolic 调制成一个数量不多的乘法器。 问题并不影响需要偶数数量的 FIR 过滤器 乘数。奇数,甚至指物理乘法器的数量 实施 FIR 过滤器, 而不是您最初使用的水龙头的数量 指定。具有偶数水龙头的 FIR 滤波器可能需要一个奇数 物理乘法器的数量,反之亦然。要确定是否 我的 FIR 过滤器受到影响,按照以下步骤操作:检查生成的过滤器 VHDL 代码以确定它是否包含一个虚拟乘法器。A systolic FIR 过滤器包含许多 CHAINMULTADD 注释。 如果您的 FIR 过滤器不包含任何与之类似的评论 以下评论: FIR 过滤器不是 systolic FIR 过滤器 并且不受影响: --u0_m0_wo0_cma0(CHAINMULTADD,33)@13

如果您的 FIR 包含一个或多个 CHAINMULTADD 注释,检查 遵循每个此类评论的 VHDL 代码。几行之后 CHAINMULTADD 评论,查找类似于链解答的流程 以下代码:u0_m0_wo0_cma0_chainmultadd:PROCESS(clk、areset) 开始 IF (复位 = '1'),然后u0_m0_wo0_cma0_a (其他 = > '0')); u0_m0_wo0_cma0_b (其他 =>'0')); u0_m0_wo0_cma0_c (其他 =>"0"); u0_m0_wo0_cma0_anl (其他 =>'0')); ELSIF(clk'EVENT AND clk = '1') 则是 IF(d_u0_m0_wo0_compute_q_13_q = "1"), 然后u0_m0_wo0_cma0_a (0) '0'); u0_m0_wo0_cma0_b(0) '0'); u0_m0_wo0_cma0_c(0) '0'); u0_m0_wo0_cma0_anl

解决方法

要解决此问题,请增加指定的长度 对 FIR 过滤器。如果您选择合适的长度,则实施 不需要任何虚拟乘法器。或者,手动编辑 FIR 编译器 II 生成的 VHDL,以添加 Quartus II 保留 属性到 DSP 输入寄存器。Quartus® II 合成完成 不要移除虚拟乘法器输入寄存器和 Quartus II fitter 正确包装所有 DSP 模块输入寄存器。自 手动编辑 VHDL,执行以下步骤:查找声明 输入寄存器,其看上去与以下代码类似:类型 u0_m0_wo0_cma0_a_type阵列(0 到 3)的 SIGNED(16 下达 0);信号 u0_m0_wo0_cma0_a:u0_m0_wo0_cma0_a_type;类型u0_m0_wo0_cma0_b_type 是阵列 (0- 3) 的 SIGNED(16 下达 0);信号u0_m0_wo0_cma0_b : u0_m0_wo0_cma0_b_type;u0_m0_wo0_cma0_c_type型为阵列(0 到 3) UNSIGNED(2 个下达 0);信号u0_m0_wo0_cma0_c:u0_m0_wo0_cma0_c_type;如果 FIR 过滤器不使用 DSP 模块\的预调器 ,\'b\'信号 不存在。添加以下代码:属性保留:分组收集;属性 u0_m0_wo0_cma0_a保留:信号真实;属性保留 u0_m0_wo0_cma0_b:信号真实;属性保留 u0_m0_wo0_cma0_c :信号真实;只添加保留属性应已声明 仅一次。

这个问题在 DSP Builder v13.1 中得到了修复。

相关产品

本文适用于 1 产品

英特尔® 可编程设备

1

本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。