主要内容

FIR滤波器的分布式算术

分布式算法概述

分布式算术(DA)是一种广泛使用的技术,用于在不使用乘数的情况下实现产品总和计算。下载188bet金宝搏设计人员经常使用DA为过滤器和其他DSP应用程序构建高效的乘法累积电路(MAC)。

数据分析的主要优点是计算效率高。DA在移位器、查找表(lut)和加法器之间分配乘法和累加操作,这样就不需要传统的乘法器了。

该编码器支持为多个单金宝app速率和多速率FIR滤波器结构生成的HDL代码中的DA,用于固定点滤波器设计。(看生成分布式算术代码的要求和注意事项.)

本节简要概述了DA的运作。DA的理论基础的详细讨论出现在以下出版物中:

  • Meyer-Baese,U.,具有现场可编程门阵列的数字信号处理,第二版,Springer,PP 88-94,128-143。

  • 白色,s.a.,分布式算术在数字信号处理中的应用:教程评论.IEEE ASSP杂志,VOL。6,3。

在DA实现FIR滤波器结构中,宽度的一系列输入数据字W.通过一个并行到串行移位寄存器。这个馈通产生一个串行的比特流。然后将序列化的数据送入位宽移位寄存器。移位寄存器用作延迟线,存储位串行数据样本。

延迟线被删除(基于输入字大小W.),形成一个W.-bit地址索引到查找表(LUT)中。LUT在滤波器系数空间上存储部分产品的可能总和。下载188bet金宝搏换档和加法器(缩放累加器)跟随LUT。此逻辑顺序地添加了从LUT获得的值。

对每个位依次执行表查找(按照从LSB开始的重要性顺序)。在每个时钟周期中,将LUT结果添加到前一个周期的累积和移位结果中。对于最后一位(MSB),将减去表查找结果,并考虑操作数的符号。

这种基本形式的DA是完全串行的,一次在一位上运行。如果输入数据序列是W.位宽,然后是FIR结构W.计算输出的时钟周期。对称和不对称的FIR结构是例外,需要W + 1循环,因为需要一个额外的时钟周期来处理预备器的携带位。

通过并行性提高性能

DA固有的位串行特性会限制吞吐量。为了提高吞吐量,基本的DA算法可以修改为一次计算一个以上的位和。同时计算的位和的个数表示为2的幂,称为DA基数.例如,2的DA基数(2 ^ 1)表示一次计算一个位和。A DA基数4 (2 ^ 2)表示一次计算两个比特和,等等。

要一次计算多个比特和,编码器复制LUT。例如,在一次的两个比特(基数4)上执行DA,奇数位被馈送到一个LUT,偶数位同时馈送到相同的LUT。对应于奇数位的LUT结果在添加到与偶数位相对应的LUT结果之前左移。然后将该结果馈入到缩放累加器中,将其反馈值移动到两个位置。

一次处理多一位,将一定程度的并行度引入操作中,这可以提高面积的费用。这达达属性允许您在DA中指定同时处理的位数。

减少附近地区大小

LUT的大小以滤波器的顺序指数呈指数级增长。用于过滤器N系数,LUT必须具有2 ^ N价值观。对于高阶滤波器,LUT尺寸必须减少到合理的级别。为了减小尺寸,您可以将LUT细分为几个LUT,调用LUT分区.每个LUT分区操作一组不同的点击。对分区得到的结果进行了总结。

例如,对于160抽滤,LUT大小是(2 ^ 160) * W位,W.是LUT数据的字大小。通过将LUT划分为16个LUT分区,您可以实现LUT大小的显着降低,每个分区都需要10个输入(抽头)。该司减少了总LUT尺寸16 * (2 ^ 10) * W比特。

虽然LUT分区减少了LUT大小,但该架构使用更多的加法器来总和数据。

DalutPartition.属性允许您指定LUT如何在DA中划分。

生成分布式算术代码的要求和注意事项

该编码器允许您控制如何使用DA代码使用DalutPartition.达达属性(或等效生成HDL对话框选项)。在使用这些属性之前,请查看以下一般要求,限制以及DA代码生成的其他注意事项。

金宝app支持的过滤器类型

该编码器支持为以下单金宝app速率和多速率FIR筛选器结构生成的HDL代码中的DA:

  • 直接表格(dfilt.dffirdsp.firfilter.

  • 直接表格对称(dfilt.dfsymfirdsp.firfilter.

  • 直接形式不对称(dfilt.dfasymfirdsp.firfilter.

  • dsp.firdecimator.

  • dsp。FIRInterpolator

需要定点量化

DA代码的生成仅支持定点滤波器设计。金宝app

指定过滤精度

针对DA架构生成的HDL代码中的数据路径针对全精密计算进行了优化。过滤器在最终阶段将结果投递到输出数据大小。如果筛选对​​象设置为使用完全精度数据类型,则模拟所生成的HDL代码的数字结果与原始过滤器对象的输出有限。

如果过滤器对象具有自定义字或分数长度,则生成的DA代码可以产生与原始滤波器对象的输出不同的数字结果。

带零值的系数

DA忽略具有零值系数的抽头,并相应地减小DA LUT的大小。

对称和非对称滤波器的考虑因素

对于对称和不对称的FIR筛选器:

  • 需要比特级别的普法力或预订器来添加具有相等值和/或相反标志系数的TAP数据值。需要一个额外的时钟周期来计算结果,因为额外的携带位。

  • 编码器利用过滤对称性。该对称性基本上降低了DA LUT尺寸,因为这些滤波器类型的有效滤波器长度减半。

以有效状态保持输入数据

分区分布式算法体系结构实现内部时钟速率高于输入速率。在这样的过滤器实现中,有N循环(n> = 2)每个输入样本的基本时钟。您可以指定测试台中的时钟周期数在有效状态下保持输入数据值。

  • 当您选择保存样本之间的输入数据(默认值),测试台将以有效状态保存输入数据值N时钟周期。

  • 当你清楚的时候保存样本之间的输入数据,测试台在有效状态下仅为一个时钟周期保持输入数据值。下一个N-1循环,测试台将数据驱动到未知状态(表示为'X')直到下一个输入样本被送入时。将输入数据迫使输入数据验证生成的过滤器代码仅在第一周期上注册输入数据。

分布式算术通算法generatehdl特性

两个属性指定分布式算术选项generatehdl功能:

您可以使用帮助函数hdlfilterdainfo.为筛选器探索可能的分区和基数设置。

有关示例,请参见

“生成HDL”对话框中的分布式算术选项

“生成HDL”对话框提供多个与DA代码生成相关的选项。

  • 建筑学弹出菜单,可让您启用DA代码生成并显示相关选项。

  • 指定折叠下拉菜单,可允许您直接指定折叠因子,或为此设置值达达财产。

  • 指定LUT.下拉菜单,它允许您直接为DalutPartition.财产。您还可以选择LUT的地址宽度。如果指定地址宽度,则编码器根据需要使用输入LUT。

生成HDL对话框最初显示与当前滤波器设计对应的默认DA相关选项值。有关设置这些选项的要求,请参阅DalutPartition.达达

要使用“生成HDL”对话框指定DA代码生成,请按照下列步骤操作:

  1. 设计FIR滤波器(使用过滤器设计器,过滤器构建器或MATLAB®命令),以满足生成分布式算术代码的要求和注意事项

  2. 打开“生成HDL”对话框。

  3. 选择分布式算术(DA)来自建筑学弹出菜单。

    选择此选项时,该选项指定折叠指定LUT.选项显示在建筑学菜单。下图显示了直接表单FIR筛选器的默认DA选项。

  4. 从中选择以下选项之一指定折叠下拉菜单:

    • 折叠因子(默认):从下拉菜单中选择折叠系数指定折叠.菜单包含过滤器的折叠因子选项的详尽列表。

    • DA基数:选择同时处理的位数,表示为2.默认值DA基数值是2,指定一次或完全串行DA的一位的处理。如果需要,请设置DA基数字段设置为非默认值。

  5. 从中选择以下选项之一指定LUT.下拉菜单:

    • 地址宽度(默认):从下拉菜单中选择右侧指定LUT..菜单包含过滤器的LUT地址宽度的详尽列表。

    • 划分:选择或输入,指定LUT分区的数量和大小的向量。

  6. 根据需要设置其他HDL选项,并生成代码。无效或非法价值附近地区分区达拉多克在代码生成时间报告。

查看详细的DA选项

当你与之互动时指定折叠指定LUT.选项您可以在三个显示字段中查看您选择的结果:折叠因子地址宽度,总卢特尺寸(比特)

另外,当你点击时查看详情超链接,编码器显示一个报告,显示当前过滤器的完整DA架构细节,包括:

  • 滤波器的长度

  • 适用的折叠因子的完整列表,以及它们如何应用于lut集合

  • 列表的全LUT大小和LUT细节的配置

下图显示了典型的报告。

与其他HDL选项的互动

分布式算术(DA)选择在建筑学菜单中,一些其他HDL选项会自动更改为对应于DA代码生成的设置:

  • 系数乘数被设置为乘数和残疾人士。

  • 冷杉加法器的风格被设置为和残疾人士。

  • 添加输入寄存器(在里面港口选中并禁用窗格。(作为移位寄存器的一部分使用的输入寄存器,用于DA代码。)

  • 添加输出寄存器(在里面港口选中并禁用窗格。