2
是否可以在以采样频率为时钟源的FPGA中创建IIR滤波器?
这个问题是关于使用非常具体的标准在带有DSP Slice的FPGA中实现IIR滤波器的。 假设您要制作的滤波器没有正向抽头,只有1个反向抽头,其公式如下: ÿ[ n ] = y[ Ñ - 1 ] ⋅ b 1 + X [ Ñ ]y[n]=y[n−1]⋅b1+x[n]y[n] = y[n-1] \cdot b1 + x[n] (见图片) 以Xilinx的DSP48A1芯片为例-大多数硬IP DSP芯片都是相似的。 假设您有每个时钟以1个样本输入的模拟数据。我想设计一个在采样时钟上同步运行的IIR滤波器。 问题在于,为了以最大速率运行DSP Slice,您不能在同一周期上进行乘加运算。这些组件之间必须有一个管道寄存器。 因此,如果每个时钟有1个新样本,则每个时钟将需要产生1个输出。但是,在此设计中产生新的时钟之前,需要先前的输出2个时钟。 显而易见的解决方案是要么以双时钟速率处理数据,要么禁用流水线寄存器,以便您可以在同一周期内进行乘法和加法。 不幸的是,如果说您以全流水线DSP Slice的最大时钟速率进行采样,那么这两种解决方案都不可行。还有其他方法可以构建吗? (如果您可以使用任意数量的DSP Slice设计可以以一半采样率运行的IIR滤波器,则可加分) 目标是在Xilinx Artix FPGA中为1 GSPS ADC运行补偿滤波器。当完全流水线化时,他们的DSP Slice可以运行在500 MHz以上。如果每个时钟有1个样本的解决方案,我想尝试扩展每个时钟2个样本的解决方案。使用FIR滤波器,这一切都非常容易。