主要内容

FPGA可编程FIR滤波器

这个例子展示了如何在硬件上实现一个可编程FIR滤波器。通过使用主机接口将系数加载到内部寄存器中,可以对过滤器进行编程以获得所需的响应。

在这个例子中,我们将在一个芯片上实现一组过滤器,每个过滤器都有不同的响应。如果所有过滤器都具有直接形式的FIR结构,并且长度相同,那么我们可以使用主机接口在需要时将每个响应的系数加载到寄存器文件中。

这种设计增加了几个周期的延迟,才能用加载系数处理输入样本。然而,它的优点是,相同的滤波器硬件可以编程为新的系数,以获得不同的滤波器响应。这节省了芯片面积,否则每个滤波器将分别在芯片上实现。

可编程FIR滤波器

考虑两个FIR滤波器,一个具有低通响应,另一个具有高通响应。系数是通过使用模型属性>回调>InitFcn函数指定的。

可编程FIR寄存器块加载低通系数从宿主行为模型,并先对输入的啁啾样本进行处理。然后该块加载高通系数并再次处理相同的啁啾样本。

coeffs_registers块将系数加载到内部寄存器中write_enable信号很高。时,从系数寄存器更新阴影寄存器write_done信号很高。影子寄存器允许过滤器实体同时加载和处理数据。这些块在处理最后几个输入样本的同时加载第二组系数。

该模型被配置为使用一个完全并行的体系结构的离散FIR滤波器块。也可以从HDL块属性菜单。

万博1manbetxSimulink仿真结果

为了比较Design Under Test (DUT)和参考过滤器,打开Scope并运行示例模型。

使用逻辑分析器

您还可以在逻辑分析仪中查看信号。逻辑分析仪使您可以在一个窗口中查看多个信号。这也使我们很容易发现信号中的转换。

从模型的工具条中启动Logic Analyzer。

我们感兴趣的信号——输入系数、写地址、写启用、写完成、输入过滤、输出过滤、引用输出和错误已经添加到逻辑分析器中进行观察。

逻辑分析仪显示也可以控制在每个波或每个分压器的基础上。要修改单个波浪或分割线,请选择波浪或分割线,然后单击“波浪”选项卡。在逻辑分析器中一个有用的可视化模式是模拟格式。

有关逻辑分析仪的更多信息,请参阅逻辑分析仪文档。

生成HDL代码和测试台

您必须拥有HDL Coder™许可证才能为这个示例模型生成HDL代码。使用此命令生成HDL代码。

Systemname = [modelname .'/可编程FIR通过寄存器'];makehdl (systemname);

使用此命令生成一个测试平台,将HDL模拟的结果与Simulink模拟行为进行比较。万博1manbetxmakehdltb (systemname);

ModelSim仿真结果

下图显示了为测试台架运行生成的.do文件脚本之后的ModelSim®HDL模拟器。将ModelSim结果与之前绘制的Simulink结果进行比较。万博1manbetx