FPGA多通道FIR滤波器
这个例子展示了如何为硬件实现一个具有多个输入数据流的离散FIR滤波器。
在许多DSP应用中,多个数据流由同一个过滤器过滤。简单的解决方案是为每个通道实现单独的过滤器。您可以通过跨多个通道共享一个过滤器实现来创建更有效的区域结构。由此产生的硬件需要比单通道滤波器使用的更快的时钟速率。
模型多通道FIR滤波器
modelname =“dspmultichannelhdl”;open_system (modelname);
该模型包含一个双通道FIR滤波器。输入数据矢量包括两个频率不同的正弦信号流。输入数据流由低通滤波器处理,其系数由模型属性指定InitFcn
回调函数。
为Discrete FIR Filter块选择一个完全并行的体系结构,并启用跨多个通道的资源共享。
systemname = [modelname/多通道滤波器的];blockname = [systemname/离散冷杉滤波器的];set_param (blockname“FilterStructure”,直接形成对称的);hdlset_param (blockname“架构”,完全平行的);hdlset_param (blockname“ChannelSharing”,“上”);
方法上指定这些设置高密度脂蛋白块属性菜单,您可以通过右键单击一个块并选择来访问该菜单HDL代码>高密度脂蛋白块属性.
仿真结果
运行示例模型并打开作用域以比较两个数据流。
sim (modelname);open_system ([modelname/范围的]);
生成HDL代码和测试台架
您必须拥有HDL Coder™许可证,才能为这个示例模型生成HDL代码。使用此命令为多通道FIR滤波器子系统生成HDL代码。启用资源使用报告。
makehdl (systemname“资源”,“上”);
使用此命令生成一个测试台架,将HDL仿真结果与Simulink模型结果进行比较。
makehdltb (systemname);
比较资源利用率
要比较有共享和没有共享的资源使用情况,可以禁用跨通道共享资源并再次生成HDL代码,然后比较资源使用报告。
hdlset_param (blockname“ChannelSharing”,“关闭”);makehdl (systemname“资源”,“上”);