Main Content

HDL过滤器块属性

Addertropeline

此属性适用于基于框架的过滤器。它指定了架构在加法树的层次之间包含多少管道寄存器。这些管道阶段在添加延迟时增加了滤波器吞吐量。默认值是0。为了提高该体系结构的速度,推荐的设置是2

管道阶段沿着包含受影响过滤器的模型中的路径引入延迟。当您启用此管道选项时,编码器会自动添加并行数据路径上的平衡延迟。

有关基于框架的过滤器体系结构的更多信息,请参见基于框架的体系结构

AddPipelineRegisters

此属性适用于标量输入过滤器。当您启用此属性时,过滤器的默认线性加法器将作为管道树加法器实现。该体系结构在添加延迟时增加了滤波器吞吐量。默认值是off

这following limitations apply toAddPipelineRegisters

  • 如果您使用AddPipelineRegisters,代码生成器在HDL和生成的滤波器模型中完全迫使精度。此选项在HDL代码中实现了管道上的加法树结构,仅支持其全精度。金宝app如果生成验证模型,则必须在原始模型中使用完全的精度来避免验证不匹配。

  • 管道阶段沿着包含受影响过滤器的模型中的路径引入延迟。当您启用此管道选项时,编码器会自动添加并行数据路径上的平衡延迟。

    笔记

    when you use this property with theCIC Interpolation(DSP System Toolbox)block, delays in parallel paths are not automatically balanced. Manually add delays where required by your design.

有关指示添加管道阶段位置的滤波器架构图,请参见HDL过滤器体系结构

频道共享

您可以使用频道共享具有多通道过滤器的实现参数,以使频道之间共享单个过滤器实现,以进行更效率的设计。此参数是'上'or'off'。默认值为'off',并且将为每个通道实现一个单独的过滤器。

FPGA的多通道FIR过滤器(DSP System Toolbox)

系数

系数一世mplementation parameter lets you specify use of canonical signed digit (CSD) or factored CSD optimizations for processing coefficient multiplier operations in code generated for certain filter blocks. Specify the系数使用以下选项之一的参数:

  • 'CSD':使用CSD技术来替换乘数操作,以移动和添加操作。CSD技术通过表示最小非零数字计数的二进制数字来最大程度地减少恒定乘法所需的添加操作数量。该表示在保持或增加时钟速度的同时,降低了过滤器所使用的面积。

  • “计算CSD”:Use factored CSD techniques, which replace multiplier operations with shift-and-add operations on prime factors of the coefficients. This option lets you achieve a greater filter area reduction than CSD, at the cost of decreasing clock speed.

  • “乘数”(default): Retain multiplier operations.

HDL Coder™ supports系数for fully-parallel filter implementations. It is not supported for fully-serial and partly-serial architectures.

达鲁特分区

LUT的大小随滤波器的顺序呈指数增长。对于带有过滤器n系数,LUT必须具有2^N值。对于高阶过滤器,必须将LUT尺寸降低到合理的水平。为了减小尺寸,您可以将LUT细分为许多称为的LUTLUT分区。Each LUT partition operates on a different set of taps. The results obtained from the partitions are summed.

例如,对于160-TAP过滤器,LUT尺寸为(2^160)*Wbits, wherew是LUT数据的单词大小。将其分为16个LUT分区,每个分区都有10个输入(水龙头),总LUT尺寸降低到16*(2^10)*W位。

Although LUT partitioning reduces LUT size, more adders are required to sum the LUT data.

You can use达鲁特分区to enables DA code generation and specify the number and size of LUT partitions.

Specify LUT partitions as a vector of integers[P1 P2 ... PN]在哪里:

  • n是the number of partitions.

  • 每个向量元素指定分区的大小。单个分区的最大尺寸为12。

  • 所有向量元件的总和等于滤波器长度佛罗里达州佛罗里达州根据过滤器类型的不同,以不同的方式计算。您可以在下一部分中找到如何针对不同过滤器类型计算的FL。

HDL过滤器的分布式算术

Specifying DALUTPartition for Single-Rate Filters

要确定一个受支持的单率滤波器类型之一的LUT分区,请计算金宝app佛罗里达州如下表所示。然后,将分区指定为向量,其元素总和为佛罗里达州

过滤器类型 过滤长度(FL)计算
直接格式 fl =长度(find(hd.numerator〜= 0))
直接形式不对称FIR,直接形式对称FIR fl = ceil(长度(find(hd.numerator〜= 0))/2)/2)

You can also specify generation of DA code for your filter design without LUT partitioning. To do so, specify a vector of one element, whose value is equal to the filter length.

指定多室过滤器的Dalutpartition

用于支撑金宝app的多级过滤器(FIR拆除andFIR插值), you can specify the LUT partition as

  • 为所有多相子滤光片定义LUTS分区的矢量。

  • LUT分区的矩阵,其中每个行矢量为相应的多相子滤光管指定LUT分区。在这种情况下,佛罗里达州对于所有子滤光片都是均匀的。这种方法为分区每个子滤光管提供了精细的控制。

下表显示了佛罗里达州calculations for each type of LUT partition.

LUT Partition 过滤长度(FL)计算
向量:Determine佛罗里达州as shown in the过滤长度(FL)计算column to the right. Specify the LUT partition as a vector of integers whose elements sum to佛罗里达州
fl =尺寸(多相(HM),2)
矩阵:Determine the subfilter length佛罗里达州一世基于滤波器的多相分解,如图所示过滤长度(FL)计算column to the right. Specify the LUT partition for each subfilter as a row vector whose elements sum to佛罗里达州一世

p =多相(HM);佛罗里达州一世= length(find(p(一世,:)));
在哪里一世是the index to the一世多等级滤波器的多相基质的第一行。这一世矩阵prepresents the一世该子滤光器。

DARadix

DA的固有性质性质可以限制吞吐量。为了改善吞吐量,可以修改基本DA算法以一次计算多个位总和。同时计算的位总和的数量表示为两个称为两个的幂DA radix。例如,2个radix 2(2^1)表示一次计算一个位总和。一个4的radix(42^2)表示一次计算两个总和依此类推。

要一次计算多个位总和,将复制LUT。例如,要一次在2位执行DA(radix 4),将奇数位馈送到一个LUT中,并同时将其送入相同的LUT。与奇数位相对应的LUT结果在将其添加到对应于位的LUT结果中之前,将其左移。然后将此结果馈入缩放蓄积器,将其反馈值升至2个位置。

Processing more than one bit at a time introduces a degree of parallelism into the operation, improving speed at the expense of area.

You can useDARadix在DA中指定同时处理的位数。位的数量表示为n, which must be:

  • 一个非零的正整数是2的幂

  • Such thatmod(w,log2(n))= 0, 在哪里w是过滤器的输入单词大小

这default value forn是2, specifying processing of one bit at a time, or fully serial DA, which is slow but low in area. The maximum value forn2^W, 在哪里w是过滤器的输入单词大小。该最大值指定完全平行的DA,该DA速度快,但面积很高。值n在这些极端之间指定部分串行DA。

笔记

when setting aDARadix对称和不对称过滤器的价值,请参阅对称和不对称过滤器的考虑

HDL过滤器的分布式算术

FoldingFactor

FoldingFactor指定使用串行架构的IIR SOS滤波器中计算过滤器输出的时钟周期总数。这是互补的Nummultipliers。您必须选择一个或另一个财产;您不能两者都使用。如果您也不指定FoldingFactororNummultipliers, HDL code for the filter is generated with fully parallel architecture.

MultiplierInputPipeline

您可以使用此参数在乘数输入中生成指定数量的管道阶段,以用于FIR滤波器结构。默认值为0。

以下限制适用于MultiplierInputPipeline

  • 管道阶段沿着包含受影响过滤器的模型中的路径引入延迟。当您启用此管道选项时,编码器会自动添加并行数据路径上的平衡延迟。

有关这些管道阶段在滤波器体系结构中发生的位置的图表,请参见HDL过滤器体系结构

MultiplierOutputPipeline

You can use this parameter to generate a specified number of pipeline stages at multiplier outputs for FIR filter structures. The default value is 0.

以下限制适用于MultiplierOutputPipeline

  • 管道阶段沿着包含受影响过滤器的模型中的路径引入延迟。当您启用此管道选项时,编码器会自动添加并行数据路径上的平衡延迟。

有关这些管道阶段在滤波器体系结构中发生的位置的图表,请参见HDL过滤器体系结构

Nummultipliers

Nummultipliers指定具有串行架构的IIR SOS滤波器中用于过滤器实现的乘数总数。这是互补的FoldingFactorproperty. You must select one property or the other; you cannot use both. If you do not specify eitherFoldingFactororNummultipliers, HDL code for the filter is generated with fully parallel architecture.

reuseaccum

您可以使用此参数在串行HDL体系结构中启用或禁用累加器重复使用。默认值是完全并行体系结构。

生成这个
建筑学...
将reuseaccum设置为...
完全平行 Omit this property
完全连续 not specified, or'off'
部分序列 'off'
带有明确指定分区的级联序列 '上'
带有自动优化分区的级联序列 '上'

For more information on parallel and serial filter architectures, seeHDL过滤器体系结构

SerialPartition

Use this parameter to specify partitions for a serial filter architecture. The default is a fully parallel architecture.

生成这个
建筑学...
将连续分区设置为...
完全平行 Omit this property
完全连续 n, 在哪里n是过滤器的长度
部分序列

[p1 p2 p3...pN]:一个向量一世ntegers havingn元素,哪里n是串行分区的数量。向量的每个元素指定相应分区的长度。向量元素的总和必须等于滤波器的长度。当您定义部分串行体系结构的分区时,请考虑以下内容:

  • 滤波器长度应尽可能统一地分为与预期的乘数数量相等的矢量。例如,如果您的设计需要带有2个乘数的长度9的过滤器,则建议的分区是[5 4]。如果您的设计需要3个乘数,则建议的分区是[3 3 3]而不是一些不太统一的划分,例如[1 4 4]or[3 4 2]

  • 如果您的设计受到需要计算每个输出值(与每个输入值相对应的)的限制n时钟周期,使用n作为最大的分区大小和分区,其他元素尽可能统一。例如,如果滤波器长度为9,并且您的设计需要完全4个周期来计算输出,则将分区定义为[4 3 2]。该分区在4个时钟周期中执行,费用为3个乘数。

带有明确指定分区的级联序列 [p1 p2 p3...pN]:一个向量n整数,哪里n是串行分区的数量。向量的每个元素指定相应分区的长度。向量元素的总和必须等于滤波器的长度。向量元素的值必须按降序降序,除了最后两个元素,这可能是相等的。例如,对于8个滤波器长度,分区[5 3]or[4 2 2]有效,但是分区[2 2 2 2]and[3 2 3]raise an error at code generation time.
带有自动优化分区的级联序列 省略此属性。

For more information on parallel and serial filter architectures, seeHDL过滤器体系结构

This property is also used for Min/Max blocks with cascade-serial architectures. For how to configure Min/Max cascades, seeSerialPartition

Related Topics