主要内容

FPGA可编程FIR滤波器

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

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

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

模型可编程FIR滤波器

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

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

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

该模型配置为使用一个完全并行的体系结构的离散FIR滤波器块。也可以选择串行架构高密度脂蛋白块属性菜单。

仿真软件仿真结果

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

使用逻辑分析器

您还可以在Logic Analyzer中查看信号。逻辑分析仪使您能够在一个窗口中查看多个信号。它还可以很容易地发现信号中的转换。

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

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

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

有关逻辑分析器的详细信息,请参阅逻辑分析仪文档。

生成HDL代码和测试台架

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

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

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

ModelSim仿真结果

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

Baidu
map