主要内容

generatehdl.

为量化DSP滤波器生成HDL代码(需要过滤器设计HDL编码器

描述

例子

generatehdl (Filtso.,'inputdatatype',nt为指定的过滤器系统对象™和输入数据类型生成HDL代码,nt

生成的文件是一个单一的源文件,其中包括实体声明和体系结构代码。的当前工作文件夹中可以找到此文件HDLSRC.子文件夹。

generatehdl (Filtso.,'inputdatatype',nt,'fractionaldelaydatatype',fd生成的HDL代码dsp.variableFractiondElay.过滤系统对象。指定输入数据类型,nt,和分数延迟数据类型,fd

generatehdl (filterobj.为指定生成HDL代码德菲尔特使用默认设置过滤对象。

例子

generatehdl (___,名称,价值)除了先前语法中的输入参数之外,使用可选的名称值参数。使用这些属性来覆盖默认的HDL代码生成设置。

更多细节,请参阅Filter Design HDL Coder™文档中的相应属性:

例子

全部收缩

设计这些规范的直接形式对称等波纹过滤器:

  • 归一化频带频率为0.2

  • 归一化的阻带频率为0.22

  • 通带纹波为1db

  • 阻带衰减为60 dB

设计函数返回一个dsp。FIRFilter实现规范的系统对象™。

filtspecs = fdesign.lowpass('FP,FST,AP,AST',0.2,0.22,1,60);火灾=设计(Filtspecs,“equiripple”“FilterStructure”'dfsymfir''systemobject',真正的)
火= dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x202 double] InitialConditions: 0 Show all properties

要生成HDL代码,请调用generatehdl.函数。当筛选器是System对象时,必须使用InputDatType.(Filter Design HDL编码器)财产。编码器生成文件MyFilter.vhd在默认目标文件夹中,HDLSRC.

generatehdl(火,'inputdatatype',numerictype(1,16,15),'姓名''myfilter');
###启动vhdl代码过滤器的生成过程:myfilter ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex48361677/hdlsrc/myfilter.vhd ###开始生成myfilter vhdl实体###开始生成myfilter vhdl架构###成功完成筛选器的VHDL代码生成过程:MyFilter ### HDL延迟是2个样本

设计这些规范的直接形式对称等波纹过滤器:

  • 归一化频带频率为0.2

  • 归一化的阻带频率为0.22

  • 通带纹波为1db

  • 阻带衰减为60 dB

设计函数返回一个dsp。FIRFilter实现规范的系统对象™。

filtspecs = fdesign.lowpass('FP,FST,AP,AST',0.2,0.22,1,60);火灾=设计(Filtspecs,“equiripple”“FilterStructure”'dfsymfir''systemobject',真正的)
火= dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x202 double] InitialConditions: 0 Show all properties

生成VHDL代码和VHDL测试平台为FIR等波纹滤波器。当过滤器是系统对象,必须指定该输入数据类型的定点数据类型。编码器生成的文件MyFilter.vhdmyfiltertb.vhd.在默认目标文件夹中,HDLSRC.

generatehdl(火,'inputdatatype',numerictype(1,16,15),'姓名''myfilter'......“GenerateHDLTestbench”“上”“TestBenchName”“MyFilterTB”
###启动vhdl代码过滤器的生成过程:myfilter ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex63281302/hdlsrc/myfilter.vhd ###开始生成myfilter vhdl实体###开始生成MyFilter VHDL的生成架构###成功完成筛选器的VHDL代码生成过程:MyFilter ### HDL延迟是2个样本###开始生成VHDL测试台。###生成输入刺激长度4486个样本。###生成测试台:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex63281302/hdlsrc/myfiltertb.vhd ###创建刺激向量... ###完成VHDL测试台。

使用完全并行(默认)架构和可编程系数设计直接表格对称平等滤波器。的设计函数返回一个dsp。FIRFilter带有默认低通滤波器规范的系统对象™。

firfilt = design(fdesign.lowpass,“equiripple”“FilterStructure”'dfsymfir''systemobject',真正的)
firfilt = dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x43 double] InitialConditions: 0 Show all properties

要生成HDL代码,请调用generatehdl.函数。当筛选器是System对象时,必须为输入数据指定定点数据类型。要为系数生成处理器接口,必须指定一个附加的名称-值对参数。

generatehdl (firfilt'inputdatatype',numerictype(1,16,15),'cofficientsource''processOrinterface'
###启动vhdl代码过滤器的生成过程:firfilt ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex74213987/hdlsrc/firfilt.vhd ###开始生成firfilt vhdl实体###开始生成firefilt vhdl架构###成功完成筛选器的VHDL代码生成过程:Fiffilt ### HDL Latency是2个样本

编码器为过滤器对象生成此VHDL实体。

使用系数创建直接表单反对二手滤波器:

coeffs = fir1(22,0.45);firfilt = dsp.firfilter('分子'多项式系数,'结构''直接形成反对手'
Firfilt = DSP.Firfilter具有属性:结构:'直接表格反对二手'NumeratorSource:'属性'分子:[1x23双]初始条件:0显示所有属性

要生成HDL代码,请调用generatehdl.函数。当筛选器是System对象时,必须为输入数据指定定点数据类型。要生成一个部分串行架构,指定串行分区。启用系数memory.财产,你必须设置CofficientSource.ProcessorInterface

generatehdl (firfilt'inputdatatype',numerictype(1,16,15),......'SerialPartition',[7 4],'系数memory''dualportrams'......'cofficientsource''processOrinterface'
###开始VHDL代码生成过程为过滤器:firfilt ###生成:/tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex21465785/hdlsrc/firfilt.vhd ###开始生成firfilt VHDL实体###开始生成firfilt VHDL的架构###的时钟速率是此体系结构中的输入采样率的7倍。###成功完成筛选器的VHDL代码生成过程:Fiffilt ### HDL Latency是3个样本

生成的代码包括用于可编程系数的双端口RAM接口。

探索同一过滤器的不同串行实现的时钟速率和延迟。使用对称结构也允许过滤器逻辑共享对称系数的乘数。

创建一个直接形式对称FIR滤波器与以下规范:

  • 过滤器13.

  • 6-DB点的归一化切断频率为0.4

设计函数返回一个dsp。FIRFilter实现规范的系统对象™。

冷杉=设计(fdesign.lowpass ('n,fc',13,.4),“FilterStructure”'dfsymfir''systemobject',真正的)
FIR = DSP.Firfilter具有属性:结构:'直接表格对称'NumeratorSource:'属性'分子:[1x14双]初始条件:0显示所有属性

要生成HDL代码,请调用generatehdl.函数。当筛选器是System对象时,必须为输入数据指定定点数据类型。

为了进行基线比较,首先生成一个默认的完全并行架构。

generatehdl(FIR,'姓名'“FullyParallel”......'inputdatatype',numerictype(1,16,15)))
### /tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex94948885/hdlsrc/ full - parallel . /hdlsrc/ full - parallel . /hdlfilter-ex94948885/hdlsrc/ full - parallel . /hdlfilter-ex94948885开始生成全并行的VHDL实体###开始生成全并行的VHDL架构### #成功完成VHDL代码生成过程的过滤器:全并行### # HDL延迟是2个样本

由分区大小设定为有效滤波器长度产生一个完全的串行结构。系统时钟速率是六倍输入抽样率。报告的HDL的潜伏期比默认的并行执行一个样本更大。

generatehdl(FIR,'SerialPartition',6,'姓名'“FullySerial”......'inputdatatype',numerictype(1,16,15)))
###启动vhdl代码生成过程for filter:完全单体###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex94948885/tp61e914b8885/tp61e914b8/hdlfilter-ex94948885/hdlsrc/fullserial.vhd ###开始生成完全vhdl实体###开始生成普通vhdl架构###时钟速率是此架构的输入采样率的6倍。###成功完成筛选器的VHDL代码生成过程:完全单体### HDL延迟是3个样本

生成具有三个相等分区的部分串行架构。这个架构使用三个乘数。时钟速率是输入速率的两倍,延迟与默认并行实现相同。

generatehdl(FIR,'SerialPartition',[2 2 2],'姓名''PartlySerial'......'inputdatatype',numerictype(1,16,15)))
###启动VHDL代码过滤器的生成进程:PartySerial ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex94948885/tp61e914b8885/tp61e912b8/hdlfilter-ex94948885/hdlsrc/partlyserial.vhd ###开始生成秘密vhdl实体###开始生成零份的vhdl架构###时钟速率是此架构的输入采样率的2倍。###成功完成筛选器的VHDL代码生成过程:PartySerial ### HDL延迟是3个样本

通过启用累加器重用来生成级联串行架构。以下降顺序指定三个分区。请注意,时钟速率高于部分串行(无累加器重用)示例的速率。

generatehdl(FIR,'SerialPartition',[3 2 1],'reuseaccum'“上”'姓名''cascadeserial'......'inputdatatype',numerictype(1,16,15)))
###启动vhdl代码的过滤器:cascadeserial ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex94948885/hdlsrc/cascadeserial.vhd ###开始生成Cascadeerial VHDL实体###开始生成Cascadeserial VHDL的生成架构###时钟速率是此架构的输入采样率的4倍。###成功完成筛选器的VHDL代码生成过程:Cascadeserial ### HDL延迟是3个样本

您还可以生成一个级联-串行架构,而不需要显式指定分区。编码器自动选择分区大小。

generatehdl(FIR,'reuseaccum'“上”'姓名''cascadeserial'......'inputdatatype',numerictype(1,16,15)))
###启动vhdl代码的过滤器:cascadeserial ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex94948885/hdlsrc/cascadeserial.vhd ###开始生成Cascadeerial VHDL实体###开始生成Cascadeserial VHDL的生成架构###时钟速率是此架构的输入采样率的4倍。###串行分区#1有3个输入。###串行分区#2有3个输入。###成功完成筛选器的VHDL代码生成过程:Cascadeserial ### HDL延迟是3个样本

为每个过滤级的这些规格创建两级级联过滤器:

  • 直接表格对称FIR滤波器

  • 过滤器订单8.

  • 6-DB点的归一化切断频率为0.4

的每次调用设计函数返回一个dsp。FIRFilter实现规范的系统对象™。的级联函数返回一个两阶段级联过滤器。

LP = Design(fdesign.lowpass('n,fc',8,0.4),“FilterStructure”'dfsymfir''systemobject',真正的)
lp = dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x9 double] InitialConditions: 0 Show all properties
HP = Design(fdesign.highpass('n,fc',8,0.4),“FilterStructure”'dfsymfir''systemobject',真正的)
HP = dsp.FIRFilter具有属性:结构: '直接形式对称' NumeratorSource: '属性' 分子:[1X9双] InitialConditions:0显示所有属性
CASC =级联(LP,HP)
李宁公司= dsp。筛选Cascade with properties: Stage1: [1x1 dsp.FIRFilter] Stage2: [1x1 dsp.FIRFilter]

要生成HDL代码,请调用generatehdl.级联滤波器功能。当筛选器是System对象时,必须为输入数据指定定点数据类型。

为每个级联阶段指定不同的分区作为单元数组。

GenerateHDL(Casc,'inputdatatype',numerictype(1,16,15),'SerialPartition',{[3 2],[4 1]})
###启动过滤器的VHDL代码生成过程:Casfilt ###级联阶段#1 ###启动vhdl代码的过滤器:casfilt_stage1 ###生成:/ tmp / bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex16715237 / hdlsrc / casfilt_stage1.vhd ###开始生成Casfilt_stage1 VHDL实体###开始生成Casfilt_stage1 VHDL架构###时钟速率是此架构的输入采样率的3倍。###成功完成过滤器的VHDL代码生成过程/casfilt_stage2.vhd ###开始生成Casfilt_stage2 VHDL实体###开始生成Casfilt_stage2 VHDL架构###时钟速率是此架构的输入采样率的4倍。###成功完成筛选器的VHDL代码生成过程:Casfilt_stage2 ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex16715237/hdlsrc/casfilt.vhd ###开始生成缩档VHDL实体###开始生成Casfilt VHDL架构###成功完成筛选器的VHDL代码生成过程:Casfilt ### HDL Latency是2个样本

要探索级联的每个筛选阶段的有效筛选长度和分区选项,请调用hdlfilterserialinfo函数。该函数返回相应于乘数的期望数目的分区矢量。请求串行分区的可能性的第一阶段,选择一些乘法器。

hdlfilterserialinfo(casc.stage1,'inputdatatype',numerictype(1,16,15)))
| 0 | |总系数A / Symm |有效  | --------------------------------------------------- | 9 | 0 | 4 | 5 |有效的滤波器长度SerialPartition值是5。Table of 'SerialPartition' values with corresponding values of folding factor and number of multipliers for the given filter. | Folding Factor | Multipliers | SerialPartition | -------------------------------------------------- | 1 | 5 |[1 1 1 1 1] | | 2 | 3 |[2 2 1] | | 3 | 2 |[3 2] | | 4 | 2 |[4 1] | | 5 | 1 |[5] |

为两个乘法器的目标选择串行分区向量,并将向量传递给generatehdl.函数。通过这种方式调用该功能返回第一可能的分区向量,但是有多个分区向量实现了两倍乘法器架构。每个阶段基于乘法器的数量使用不同的时钟速率。编码器生成一个定时控制器以导出这些时钟。

sp1 = hdlfilterserialinfo(casc.stage1,'inputdatatype',numerictype(1,16,15),'乘数',2)
sp1 =1×23 2
sp2 = hdlfilterserialinfo(casc.stage2,'inputdatatype',numerictype(1,16,15),'乘数',3)
sp2 =1×3.2 2 1
GenerateHDL(Casc,'inputdatatype',numerictype(1,16,15),'SerialPartition', {sp1, sp2})
###启动过滤器的VHDL代码生成过程:Casfilt ###级联阶段#1 ###启动vhdl代码的过滤器:casfilt_stage1 ###生成:/ tmp / bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex16715237 / hdlsrc / casfilt_stage1.vhd ###开始生成Casfilt_stage1 VHDL实体###开始生成Casfilt_stage1 VHDL架构###时钟速率是此架构的输入采样率的3倍。###成功完成过滤器的VHDL代码生成过程/casfilt_stage2.vhd ###开始生成Casfilt_stage2 VHDL实体###开始生成Casfilt_stage2 VHDL架构###时钟速率是此架构的输入采样率的2倍。###成功完成筛选器的VHDL代码生成过程:Casfilt_stage2 ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex16715237/hdlsrc/casfilt.vhd ###开始生成缩档VHDL实体###开始生成Casfilt VHDL架构###成功完成筛选器的VHDL代码生成过程:Casfilt ### HDL Latency是2个样本

使用这些规范创建直接表单I SOS过滤器:

  • 采样频率为48 kHz

  • 过滤器5.

  • 3 dB点的截止频率为10.8 kHz

设计函数返回一个dsp.biquadfilter实现规范的系统对象™。自定义累加器数据类型避免量化错误。

FS = 48E3;fc = 10.8e3;n = 5;LP = Design(fdesign.lowpass(“n, f3db”,n,fc,fs),'牛油'......“FilterStructure”“df1sos”'systemobject',真正的)
lp = dsp。SOSMatrixSource: 'Property' SOSMatrix: [3x6 double] ScaleValues: [4x1 double] NumeratorInitialConditions: 0 DenominatorInitialConditions: 0 OptimizeUnityScaleValues: true显示所有属性
nt_accum = numerictype('签名'“汽车”'wordlength', 20岁,......'FractionLength',15);nt_input = numerictype(1,16,15);lp.NumeratorAccumulatorDataType ='风俗';lp。CustomNumeratorAccumulatorDataType = nt_accum;lp。DenominatorAccumulatorDataType ='风俗';lp.CustomDenominatorAccumulatorDataType = nt_accum;

要列出此过滤器的所有可能的串行架构规范,请调用hdlfilterserialinfo函数。当筛选器是System对象时,必须为输入数据指定定点数据类型。

hdlfilterserialinfo(LP,'inputdatatype',nt_input)
用于给定滤波器的相应乘数数量的折叠因子表。|折叠因子|乘客|---------------------------- |6 |3 ||9 |2 | | 18 | 1 |

要生成HDL代码,请调用generatehdl.与串行架构的一个功能。指定无论是NumMultipliersFoldingFactor.财产,但不是两者。例如,使用NumMultipliers属性:

generatehdl(lp,“NumMultipliers”2,'inputdatatype',nt_input)
### /tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex90334139/hdlsrc/lp###开始生成lp VHDL实体###开始生成lp VHDL架构### #成功完成VHDL代码生成过程的filter: lp ### # HDL延迟是2个样本

或者,使用FoldingFactor.财产。

generatehdl(lp,'foldingfactor',9,'inputdatatype',nt_input)
### /tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex90334139/hdlsrc/lp###开始生成lp VHDL实体###开始生成lp VHDL架构### #成功完成VHDL代码生成过程的filter: lp ### # HDL延迟是2个样本

这两个命令都生成一个过滤器,该过滤器使用总共两个乘法器,延迟九个时钟周期。此架构以延迟的代价使用并行实现使用的较少区域。

使用分布式算术选项来减少过滤器实现中的乘法数量。

创建直接表格FIR滤波器并计算过滤器长度,fl

filtdes = fdesign.lowpass('n,fc,ap,ast',30,0.4,0.05,0.03,'线性');firfilt = design(filtdes,“FilterStructure”'dffir''systemobject',真正的);FL =长度(FIND(firfilt.Numerator〜= 0))
fl = 31.

指定一组分区,以使分区大小加入滤波器长度。这只是一个分区选项,您可以指定其他大小的其他组合。

generatehdl (firfilt'inputdatatype',numerictype(1,16,15),......'达尔特巴特州',[8 8 8 7])
警告:结构冷杉有对称系数,考虑转换为结构冷杉减少面积。
警告:结构冷杉有对称系数,考虑转换为结构冷杉减少面积。
###启动vhdl代码生成过程for filter:firfilt ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex00198568/hdlsrc/firfilt.vhd ###开始生成firefilt vhdl实体###开始生成firefilt vhdl的生成架构###时钟速率是此架构的输入采样率的16倍。###成功完成筛选器的VHDL代码生成过程:Fiffilt ### HDL Latency是3个样本

例如,创建直接表格对称FIR滤波器。对称情况下滤波器长度较小。

filtdes = fdesign.lowpass('n,fc,ap,ast',30,0.4,0.05,0.03,'线性');firfilt = design(filtdes,“FilterStructure”'dfsymfir''systemobject',真正的);FL = CEIL(长度(finffilt.numerator〜= 0))/ 2)
fl = 16.

指定一组分区,以使分区大小加入滤波器长度。这只是一个分区选项,您可以指定其他大小的其他组合。提示:使用hdlfilterdainfo.功能显示有效的过滤器长度,LUT分区选项,以及可能的达达过滤器的值。

generatehdl (firfilt'inputdatatype',numerictype(1,16,15),......'达尔特巴特州', 8 [8])
###启动vhdl代码生成过程for filter:firfilt ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex00198568/hdlsrc/firfilt.vhd ###开始生成firefilt vhdl实体###开始生成firefilt vhdl的生成架构###时钟速率是此架构的输入采样率的17倍。###成功完成筛选器的VHDL代码生成过程:Fiffilt ### HDL Latency是3个样本

使用分布式算术选项来减少过滤器实现中的乘法数量。

创建直接FIR多相排列器,并计算过滤器长度。

d = fdesign.decigator(4);filt = design(d,'systemobject',真正的);FL =大小(多相(filt), 2)
fl = 27.

指定添加到过滤器大小的分布式算术LUT分区。将分区指定为多相过滤器的向量时,每个子滤波器使用相同的分区。

generatehdl (filt'inputdatatype',numerictype(1,16,15),......'达尔特巴特州',[8 8 8 3])
### /tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex51670151/hdlsrc/开始生成firdecim VHDL实体###开始生成firdecim VHDL架构######成功完成VHDL的代码生成过程:firdecim

您还可以为每个子滤波器指定唯一分区。对于相同的过滤器,将子滤器分区指定为矩阵。第一子滤光器的长度为1,另一个子滤光器具有长度26。提示:使用hdlfilterdainfo.功能显示有效的过滤器长度,LUT分区选项,以及可能的达达过滤器的值。

d = fdesign.decigator(4);filt = design(d,'systemobject',真正的);generatehdl (filt'inputdatatype',numerictype(1,16,15),......'达尔特巴特州',[1 0 0 0;8 8 8 2;8 8 6 4;8 8 8 2])
### /tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex51670151/hdlsrc/开始生成firdecim VHDL实体###开始生成firdecim VHDL架构######成功完成VHDL的代码生成过程:firdecim

使用分布式算术选项来减少过滤器实现中的乘法数量。

创建级联过滤器

创建一个两级级联滤波器。定义不同的LUT分区的每个阶段,以及在单元阵列指定分区的向量。

LP = Design(fdesign.lowpass('n,fc',8,0.4),'filterstructure''dfsymfir'......'systemobject',真正的);HP = Design(fdesign.highpass('n,fc',8,0.4),'filterstructure''dfsymfir'......'systemobject',真正的);CASC =级联(LP,HP);nt1 = numerictype(1,12,10);GenerateHDL(Casc,'inputdatatype'nt1,'达尔特巴特州',{[3 2],[2 2 1]})
###开始VHDL代码生成过程为过滤器:casfilt ###级联级#1 ###用于过滤器开始VHDL代码生成过程:casfilt_stage1 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex17169310 / hdlsrc / casfilt_stage1的.vhd ###开始生成casfilt_stage1 VHDL实体###开始生成casfilt_stage1 VHDL架构###时钟速率的是13倍于这个架构的输入采样率的。VHDL码生成过程的过滤器###成功完成:casfilt_stage1 ###级联级#2 ###为过滤器开始VHDL代码生成过程:casfilt_stage2 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex17169310 / hdlsrc/casfilt_stage2.vhd ###开始生成casfilt_stage2 VHDL实体###开始生成casfilt_stage2 VHDL架构###时钟速率的是29倍于这个架构的输入采样率的。VHDL代码生成过程中的过滤器###成功完成:casfilt_stage2 ###正在生成:/tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex17169310/hdlsrc/casfilt.vhd ###开始产生casfilt VHDL实体###开始产生的casfilt VHDL架构###为滤波器VHDL代码生成过程的成功完成:casfilt ### HDL延迟是4个样品

分布式算法选项

使用hdlfilterdainfo.功能显示有效的过滤器长度,LUT分区选项,以及可能的达达级联的每个滤波器级的值。该功能返回对应于所需的地址比特数量的LUT分区向量。

请求第一阶段的LUT分区可能性。

hdlfilterdainfo(casc.stage1,'inputdatatype',nt1);
| 0 | |总系数A / Symm |有效  | --------------------------------------------------- | 9 | 0 | 4 | 5 |有效的滤波器长度SerialPartition值是5。给定过滤器的“DARadix”值表,其中包含相应的折叠因子值和LUT集合的倍数。多个| | |折叠因素LUT-Sets DARadix  | ------------------------------------------------ | 1 | 12 | 2 ^ 12 | | 3 | 6 | 2 ^ 6 | | 4 | 4 | 2 ^ 4 | | 5 | 3 | 2 ^ 3 | | 7 | 2 | 2 ^ 2 | | 13 | 1 | 2 ^ 1 |附近地区的细节与相应的“DALUTPartition”值。| |马克斯地址宽度大小(位)| |附近地区细节DALUTPartition  | --------------------------------------------------------------------------- | 5 | 416 | 1 x32x13 | [5] | | 4 | 216 | 1 x16x12 1 x2x12 | [4 1] | | 3 | 124 | 1 x4x13, 1 x8x9 | 2 [3] | | 2 | 104 | 1 x2x12, 1 x4x12 1 x4x8 | |(2 2 1)注:1。LUT Details表示LUT的数量及其大小。例如1x1024x18表示1024个18位宽位置的1个LUT。

到请求LUT分区可能性为第二阶段,首先必须确定第二级的输入数据类型。

y = casc.stage1(fi(0,nt1));nt2 = y.numerictype;hdlfilterdainfo(casc.stage2,'inputdatatype'nt2);
| 0 | |总系数A / Symm |有效  | --------------------------------------------------- | 9 | 0 | 4 | 5 |有效的滤波器长度SerialPartition值是5。给定过滤器的“DARadix”值表,其中包含相应的折叠因子值和LUT集合的倍数。|折叠倍数|LUT  - 设置多|DARadix |------------------------------------------------ |1 |28 |2 ^ 28 | | 3 | 14 | 2^14 | | 5 | 7 | 2^7 | | 8 | 4 | 2^4 | | 15 | 2 | 2^2 | | 29 | 1 | 2^1 | Details of LUTs with corresponding 'DALUTPartition' values. | Max Address Width | Size(bits) | LUT Details | DALUTPartition | ---------------------------------------------------------------------------- | 5 | 896 |1x32x28 |[5] | | 4 | 488 |1x16x27, 1x2x28 |[4 1] | | 3 | 304 |1x4x28, 1x8x24 |[3 2] | | 2 | 256 |1x2x28, 1x4x23, 1x4x27 |[2 2 1] | Notes: 1. LUT Details indicates number of LUTs with their sizes. e.g. 1x1024x18 implies 1 LUT of 1024 18-bit wide locations.

每个阶段的不同LUT分区

选择地址宽度和折叠因素以获得每个阶段LUT分区。第一阶段使用的LUT与五个比特的最大地址大小。第二阶段使用的LUT与三个比特的最大地址大小。它们运行在相同的时钟速率,并具有不同的LUT分区。

dp1 = hdlfilterdainfo(casc.stage1,'inputdatatype'nt1,......“LUTInputs”,5,'foldingfactor',3);dp2 = hdlfilterdainfo(casc.stage2,'inputdatatype'nt1,......“LUTInputs”,3,'foldingfactor',5);GenerateHDL(Casc,'inputdatatype'nt1,'达尔特巴特州',{dp1,dp2});
###开始VHDL代码生成过程为过滤器:casfilt ###级联级#1 ###用于过滤器开始VHDL代码生成过程:casfilt_stage1 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex17169310 / hdlsrc / casfilt_stage1的.vhd ###开始生成casfilt_stage1 VHDL实体###开始生成casfilt_stage1 VHDL架构###时钟速率的是13倍于这个架构的输入采样率的。VHDL码生成过程的过滤器###成功完成:casfilt_stage1 ###级联级#2 ###为过滤器开始VHDL代码生成过程:casfilt_stage2 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex17169310 / hdlsrc/casfilt_stage2.vhd ###开始生成casfilt_stage2 VHDL实体###开始生成casfilt_stage2 VHDL架构###时钟速率的是29倍于这个架构的输入采样率的。VHDL代码生成过程中的过滤器###成功完成:casfilt_stage2 ###正在生成:/tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex17169310/hdlsrc/casfilt.vhd ###开始产生casfilt VHDL实体###开始产生的casfilt VHDL架构###为滤波器VHDL代码生成过程的成功完成:casfilt ### HDL延迟是4个样品

不同的达达每个阶段的值

您还可以指定不同的达达级联中每个过滤器的值。您只能在命令行上指定不同的级联分区。当您指定分区时产生高密度脂蛋白对话框,所有级联阶段都使用相同的分区。检查结果hdlfilterdainfo.设置达达每个阶段的值。

GenerateHDL(Casc,'inputdatatype'nt1,......'达尔特巴特州',{[3 2],[2 2 1]},'daradix',{2 ^ 3、2 ^ 7})
###开始VHDL代码生成过程为过滤器:casfilt ###级联级#1 ###用于过滤器开始VHDL代码生成过程:casfilt_stage1 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex17169310 / hdlsrc / casfilt_stage1.vhd ###开始生成Casfilt_stage1 VHDL实体###开始生成Casfilt_stage1 VHDL架构###时钟速率是此架构的输入采样率的5倍。VHDL码生成过程的过滤器###成功完成:casfilt_stage1 ###级联级#2 ###为过滤器开始VHDL代码生成过程:casfilt_stage2 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex17169310 / hdlsrc/casfilt_stage2.vhd ###开始生成Casfilt_stage2 VHDL实体###开始生成Casfilt_stage2 VHDL架构###时钟速率是此架构的输入采样率的5倍。VHDL代码生成过程中的过滤器###成功完成:casfilt_stage2 ###正在生成:/tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex17169310/hdlsrc/casfilt.vhd ###开始产生casfilt VHDL实体###开始产生的casfilt VHDL架构###为滤波器VHDL代码生成过程的成功完成:casfilt ### HDL延迟是4个样品

为级联过滤器的不同阶段指定不同的过滤器架构。您可以根据您的硬件约束指定串行,分布式算术(DA)和并行架构的混合。

创建级联过滤器

创建三阶段过滤器。每个阶段都是一种不同的类型。

h1 = dsp.firfilter('分子',[0.05 -.25 .88 0.9 .88 -.25 0.05]);h2 = dsp.firfilter('分子',[ -  0.008 0.06 -0.44 0.44 -0.06 0.008],......'结构''直接形成反对手');h3 = dsp。FIRFilter('分子',[ -  0.008 0.06 0.44 0.44 0.06 -0.008],......'结构''直接表格对称');CASC =级联(H1,H2,H3);

为每个阶段指定架构

指定一个DA架构用于第一阶段,第二阶段的串行结构,以及用于第三级完全并行(默认)架构。

获得达达价值为第一个架构,使用hdlfilterdainfo.,然后选择从一个值博士

元= numerictype(1、12、10);[dp,博士,lutsize ff) = hdlfilterdainfo (casc)。Stage1,......'inputdatatype',numerictype(1,12,10));博士
博士=6x1的细胞{'2 ^ 12'} {'2 ^ 6'} {'2 ^ 4'} {'2 ^ 3'} {'2 ^ 2'} {'2 ^ 2'} {'2 ^ 1'}

将属性值设置为单元格数组,其中每个单元格适用于阶段。要为特定阶段禁用属性,请使用默认值(用于分区和2的-1达达)。

GenerateHDL(Casc,'inputdatatype',NT,......'SerialPartition',{ -  1,3,-1},......'达尔特巴特州',{[4 3], -  1,-1},......'daradix',{2 ^ 6,2,2});
警告:结构冷杉有对称系数,考虑转换为结构冷杉减少面积。
警告:结构冷杉有对称系数,考虑转换为结构冷杉减少面积。
警告:结构冷杉有对称系数,考虑转换为结构冷杉减少面积。
###开始VHDL代码生成过程为过滤器:casfilt ###级联级#1 ###用于过滤器开始VHDL代码生成过程:casfilt_stage1 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex13094988 / hdlsrc / casfilt_stage1的.vhd ###开始生成casfilt_stage1 VHDL实体###开始生成casfilt_stage1 VHDL架构###时钟速率的是2次,此体系结构中的输入采样率的。VHDL码生成过程的过滤器###成功完成:casfilt_stage1 ###级联级#2 ###为过滤器开始VHDL代码生成过程:casfilt_stage2 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex13094988 / hdlsrc/casfilt_stage2.vhd ###开始生成casfilt_stage2 VHDL实体###开始生成casfilt_stage2 VHDL架构###时钟速率的是3次,此体系结构中的输入采样率的。VHDL码生成过程的过滤器###成功完成:casfilt_stage2 ###级联级#3 ###为过滤器开始VHDL代码生成过程:casfilt_stage3 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex13094988 / hdlsrc/casfilt_stage3.vhd ###开始生成casfilt_stage3 VHDL实体###开始生成casfilt_stage3 VHDL架构### VHDL代码生成过程的成功完成对过滤器的:casfilt_stage3 ###生成:/ TMP / Bdoc21a_1606923_129538 / tp61e914b8 / hdlfilter-ex13094988 / hdlsrc / casfilt.vhd ###开始生成casfilt VHDL实体###开始生成casfilt VHDL架构###为滤波器VHDL代码生成过程的成功完成的:casfilt ### HDL等待时间为3个样品

您可以指定输入系数测试具有可编程系数的滤波器。

创建了一个完全并行(默认)架构的直接形式对称FIR滤波器。定义的系数向量中的过滤器对象b。该编码器生成测试台代码,以使用第二组系数测试系数接口,c。编码器修剪c到过滤器的有效长度。

B = [-0.01 0.1 0.8 0.1 -0.01];C = [-0.03 0.5 0.7 0.5-0.03];C = C(1:CEIL(长度(c)/ 2));filt = dsp.firfilter('分子'B,B,'结构''直接表格对称');generatehdl (filt'inputdatatype',numerictype(1,16,15),......“GenerateHDLTestbench”“上”......'cofficientsource''processOrinterface''testbenchcoeffstimulus',C)
### /tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex66247050/hdlsrc/firfilt. exe /hdlfilter . exe /hdlsrc/firfilt. exe /hdlfilter . exe开始生成firfilt VHDL实体###开始生成firfilt VHDL架构### #成功完成VHDL代码生成过滤器的过程:firfilt ### # HDL延迟是2个样本### #开始生成VHDL测试台。###生成输入刺激3107个样本长度。###生成测试台:/tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex66247050/hdlsrc/firfilt_tb。vhd ###创建刺激向量…###完成VHDL测试平台的生成

创建过滤器规范。生成HDL代码时,为系数指定可编程接口。

FS = 48E3;fc = 10.8e3;n = 5;f_lp = fdesign.lowpass(“n, f3db”,n,fc,fs);filtiir = design(f_lp,'牛油'“FilterStructure”'df2sos''systemobject',真正的);filtiir。OptimizeUnityScaleValues = 0;generatehdl (filtiir'inputdatatype',numerictype(1,16,15),......'cofficientsource''processOrinterface'
###启动vhdl代码生成过程filter:filtirir ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex92389569/tp61e914b8/hdlfilter-ex92389569/hdlsrc/filtiir.vhd ###开始生成filtiir vhdl实体###开始生成filtir vhdl的生成架构###二阶部分,#1 ###二阶部分,#2 ###一阶部分,#3 ###成功完成筛选器的VHDL代码生成过程:filtir ### HDL延迟是2个样本

编码器为过滤器对象生成此VHDL实体。

探索各种方式来指定多速率过滤器的时钟端口。

默认设置

创建多相采样率转换器。默认情况下,编码器生成单个输入时钟(CLK.),输入时钟使能(clk_enable)和时钟使能输出信号命名ce_out。的ce_out信号表示输出样本准备好了。的ce_in输出信号指示接受输入样本何时。您可以使用此信号来控制上游数据流。

firrc = dsp.FIRRateConverter(“InterpolationFactor”,5,“DecimationFactor”,3);generatehdl(firrc,'inputdatatype',numerictype(1,16,15)))
###启动VHDL代码生成过程for filter:firrc ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex09049114/hdlsrc/firrc.vhd ###开始生成FiRRC VHDL实体###开始生成FiRRC VHDL的生成架构###成功完成筛选器的VHDL代码生成过程:FIRRC ### HDL延迟是2个样本

生成的实体具有以下信号:

自定义时钟的名字

您可以为输入时钟启用提供自定义名称和输出时钟使能信号。你不能重命名ce_in信号。

firrc = dsp.FIRRateConverter(“InterpolationFactor”,5,“DecimationFactor”,3)
FIRRC = DSP.FirrateConverter具有属性:插值表法:5 decimationFactor:3分子:[1x71双]显示所有属性
generatehdl(firrc,'inputdatatype',numerictype(1,16,15),......'clockenableInputport''clk_en1'......'ClockEnableOutputPort''clk_en2'
###启动VHDL代码生成过程for filter:firrc ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex09049114/hdlsrc/firrc.vhd ###开始生成FiRRC VHDL实体###开始生成FiRRC VHDL的生成架构###成功完成筛选器的VHDL代码生成过程:FIRRC ### HDL延迟是2个样本

生成的实体具有以下信号:

多个时钟输入

为支持的多速率滤波器生成多个时钟输入信号,设置金宝appClockInputs.财产'多种的'。在这种情况下,编码器不会生成任何输出时钟使能端口。

decim = dsp.cicdecimator(7,1,4);generatehdl(Decim,'inputdatatype',numerictype(1,16,15),......'ClockInputs''多种的'
###启动vhdl代码生成过程for filter:cicdecorintfilt ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex09049114/hdlsrc/cicdecorintfilt.vhd ###开始生成cicdecorintfilt vhdl实体###开始生成cicdecorintfilt vhdl架构###部分#1:Integrator ###部分#2:Integrator ###第#3:Integrator ###第#4:Integrator ###第#5:Comb ###第#6:梳子###部分#7:梳理###部分#8:梳理###成功完成筛选器的VHDL代码生成过程:CICDecorIntfilt ### HDL延迟是7个样本

生成的实体具有以下信号:

创建一个过滤器对象。然后打电话generatehdl.,并指定合成工具。

lpf = fdesign.lowpass('FP,FST,AP,AST',0.45,0.55,1,60);fifilt = design(lpf,“equiripple”“FilterStructure”'dfsymfir'......'systemobject',真正的);generatehdl (firfilt'inputdatatype',numerictype(1,14,13),......'hdlsynthtool''Quartus');
###开始VHDL代码生成过程为过滤器:firfilt ###生成:/tmp/Bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex92219095/hdlsrc/firfilt.vhd ###开始生成firfilt VHDL实体###开始生成firfilt VHDL的架构###成功完成筛选器的VHDL代码生成过程:Fiffilt ### HDL Latency是2个样本

编码器生成名为的脚本文件firfilt_quartus.tcl.,使用Altera®Quartus II综合工具的默认脚本属性。

类型hdlsrc / firfilt_quartus.tcl
load_package流量设定TOP_LEVEL firfilt集src_dir “./hdlsrc” 集prj_dir “q2dir” 文件的mkdir ../$prj_dir CD ../$prj_dir project_new $ TOP_LEVEL -revision $ TOP_LEVEL -overwrite set_global_assignment -name FAMILY “的Stratix II” set_global_assignment -nameDEVICE EP2S60F484C3 set_global_assignment -name TOP_LEVEL_ENTITY $ TOP_LEVEL set_global_assignment -name vhdl_FILE “../$src_dir/firfilt.vhd” execute_flow -compile project_close

您可以将脚本自动化属性设置为伪值,以说明编码器如何从属性构造合成脚本。

设计过滤器并生成HDL。指定合成工具和自定义文本以包含在综合脚本中。

lpf = fdesign.lowpass('FP,FST,AP,AST',0.45,0.55,1,60);fifilt = design(lpf,“equiripple”“FilterStructure”'dfsymfir'......“Systemobject”,真正的);generatehdl (firfilt'inputdatatype',numerictype(1,14,13),......'hdlsynthtool''ise'......“HDLSynthInit”为 'init线1:模块名称为%s \ ninit线2 \ N'......“HDLSynthCmd”'命令:HDL文件名是%s \ n'......'hdlsynthterm''一词线1个\ NTERM线2 \ N');
###启动过滤器的VHDL代码生成过程:Firfilt ###生成:/tmp/bdoc21a_1606923_129538/tp61e914b8/hdlfilter-ex64737676/hdlsrc/firfilt.vhd ###开始生成Firefilt VHDL实体###开始生成Firefilt VHDL的生成架构###成功完成筛选器的VHDL代码生成过程:Fiffilt ### HDL Latency是2个样本

编码器生成名为的脚本文件firfilt_ise.tcl.。注意您指定的自定义文本的位置。您可以使用此功能将合成指令添加到生成的脚本。

类型hdlsrc / firfilt_ise.tcl
init line 1: module name is firfilt init line 2 command: HDL filename is firfilt。VHD项第1项第2项

输入参数

全部收缩

过滤从中生成HDL代码,指定为过滤系统对象。要创建过滤系统对象,请使用设计功能或查看对象的参考页。您可以使用来自DSP系统工具箱™以下系统对象:

输入数据类型,指定为numerictype.(定点设计师)目的。此处仅适用于输入过滤器是系统对象时。调用Numerictype(s,w,f), 在哪里年代是1对签名和0无符号,w是位字长,和f是分数位的数量。

分数延迟数据类型,指定为numerictype.(定点设计师)目的。此参数仅在输入过滤器是a时应用dsp.variableFractiondElay.系统对象。调用Numerictype(s,w,f), 在哪里年代是1对签名和0无符号,w是位字长,和f是分数位的数量。

从中生成HDL代码的过滤器,指定为a德菲尔特目的。您可以通过使用创建该对象设计函数。有关支持的过滤器功能的概述,请参阅金宝app过滤器配置选项(Filter Design HDL编码器)

选择

你可以使用fdhdltool(Filter Design HDL编码器)函数生成HDL代码,而不是(需要滤波器设计HDL编码器)。指定在生成HDL对话框输入和分数延迟的数据类型作为参数,然后设置其他属性。

另请参阅

(Filter Design HDL编码器)|(Filter Design HDL编码器)

在R2006A之前介绍