主要内容

FPGA的多声道FIR滤波器

此示例显示如何实现具有多个输入数据流的离散FIR滤波器。

在许多DSP应用中,多个数据流被同一滤波器过滤。直接解决方案是为每个通道实现单独的滤波器。您可以通过在多个通道中共享一个过滤器实现来创建更近似的区域。与用于单通道滤波器的时钟速率相比,所得到的硬件需要更快的时钟速率。

型号Multichannel FIR滤波器

modelname =.'dspmultichannelhdl';Open_System(ModelName);

该模型包含双通道FIR滤波器。输入数据矢量包括具有不同频率的两个正弦信号流。输入数据流由低通滤波器处理,低通滤波器由模型属性指定的系数initfcn.回调函数。

选择离散FIR筛选器块的完全并行架构,并在多个通道中启用资源共享。

systemname = [modelname'/ MultiShannel FIR筛选器'];blockname = [systemname'/离散冷冻过滤器'];set_param(blockName,'filterstructure''直接表格对称');hdlset_param(blockName,'建筑学''完全平行');hdlset_param(blockName,'频道开始''在');

或者,您可以在这些设置上指定这些设置HDL块属性菜单,您通过右键单击块并选择HDL码>HDL块属性

仿真结果

运行示例模型并打开范围以比较两个数据流。

sim(modelname);Open_System([ModelName'/范围']);

生成HDL代码和测试台

您必须拥有HDL Coder™许可证为此示例模型生成HDL代码。使用此命令为多声道FIR滤波器子系统生成HDL代码。启用资源使用报告。

makehdl(systemname,'资源''在');

使用此命令生成测试台,将HDL仿真结果与Simulink模型结果进行比较。金宝app

makehdltb(systemname);

比较资源利用率

要将资源使用和不共享进行比较,您可以禁用跨通道共享资源并再次生成HDL代码,然后比较资源使用报告。

hdlset_param(blockName,'频道开始''离开');makehdl(systemname,'资源''在');