generatehdl
生成量化DSP滤波器的HDL代码(要求滤波器设计HDL编码器)
语法
描述
generatehdl (___、名称、值)
除了以前语法中的输入参数外,还使用可选的名称-值参数。使用这些属性可以覆盖默认的HDL代码生成设置。
更多细节,请参阅Filter Design HDL Coder™文档中的相应属性:
要自定义筛选器名称、目标文件夹和指定目标语言,请参见HDL代码生成的基本属性(过滤器设计HDL编码器).
若要配置系数、复杂输入端口和特定过滤器类型的可选端口,请参见HDL过滤器配置属性(过滤器设计HDL编码器).
要优化生成的HDL代码的速度或面积,请参见HDL优化属性(过滤器设计HDL编码器).
要自定义端口、标识符和注释,请参见HDL端口和标识符属性(过滤器设计HDL编码器).
要定制HDL结构,请参见HDL结构特性(过滤器设计HDL编码器).
要生成和自定义测试台架,请参见HDL试验台性能(过滤器设计HDL编码器).
要将第三方EDA工具集成到过滤器设计工作流中,请参见HDL合成与工作流自动化特性(过滤器设计HDL编码器).
例子
生成FIR等纹波滤波器的HDL代码
设计一个符合以下规格的直接对称等纹波滤波器:
归一化通带频率0.2
归一化阻带频率为0.22
通带纹波为1 dB
阻带衰减60分贝
的设计
函数返回一个dsp。FIRFilter
实现规范的系统对象™。
filtSpecs = fdesign.lowpass(“Fp,置,美联社,Ast”, 0.2, 0.22, 1、60);FIRe = design(filtSpecs,“equiripple”,“FilterStructure”,“dfsymfir”,“SystemObject”,真正的)
FIRe = dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [-0.0011 -0.0017 -0.0025 -0.0031 -0.0031 -0.0024 ... ] InitialConditions: 0 Show all properties
要生成HDL代码,请调用generatehdl
函数。方法为输入指定定点数据类型时,过滤器是一个System对象InputDataType(过滤器设计HDL编码器)财产。编码器生成文件MyFilter.vhd
在默认目标文件夹中,hdlsrc
.
generatehdl(火,“InputDataType”15) numerictype(16日,“名字”,“MyFilter”);
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex48836167/hdlsrc/MyFilter。开始生成MyFilter VHDL架构##成功完成过滤器的VHDL代码生成过程:MyFilter HDL延迟为2个样本
生成FIR等纹波滤波器的HDL代码和测试台架
设计一个符合以下规格的直接对称等纹波滤波器:
归一化通带频率0.2
归一化阻带频率为0.22
通带纹波为1 dB
阻带衰减60分贝
的设计
函数返回一个dsp。FIRFilter
实现规范的系统对象™。
filtSpecs = fdesign.lowpass(“Fp,置,美联社,Ast”, 0.2, 0.22, 1、60);FIRe = design(filtSpecs,“equiripple”,“FilterStructure”,“dfsymfir”,“SystemObject”,真正的)
FIRe = dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [-0.0011 -0.0017 -0.0025 -0.0031 -0.0031 -0.0024 ... ] InitialConditions: 0 Show all properties
为FIR等纹波滤波器生成VHDL代码和VHDL测试台架。当筛选器是System对象时,必须为输入数据类型指定定点数据类型。编码器生成文件MyFilter.vhd
而且MyFilterTB.vhd
在默认目标文件夹中,hdlsrc
.
generatehdl(火,“InputDataType”15) numerictype(16日,“名字”,“MyFilter”,...“GenerateHDLTestbench”,“上”,“TestBenchName”,“MyFilterTB”)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex63281302/hdlsrc/MyFilter。开始生成MyFilter VHDL架构##成功完成过滤器的VHDL代码生成过程:MyFilter HDL延迟为2个样本##开始生成VHDL测试台架。###生成输入刺激;长度4486个样本。生成测试台:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex63281302/hdlsrc/MyFilterTB。创建刺激向量…完成VHDL测试台架的生成。
生成具有可编程系数的全并行FIR滤波器的HDL代码
设计一个具有完全并行(默认)架构和可编程系数的直接对称等纹波滤波器。的设计
函数返回一个dsp。FIRFilter
系统对象™具有默认的低通滤波器规范。
Firfilt =设计(fdesign.lowpass,“equiripple”,“FilterStructure”,“dfsymfir”,“SystemObject”,真正的)
Firfilt = dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [-0.0024 -0.0021 0.0068 0.0167 0.0111 -0.0062 ... ] InitialConditions: 0 Show all properties
要生成HDL代码,请调用generatehdl
函数。当筛选器是System对象时,必须为输入数据指定定点数据类型。要为系数生成处理器接口,必须指定一个附加的名称-值对参数。
generatehdl (firfilt“InputDataType”15) numerictype(16日,“CoefficientSource”,“ProcessorInterface”)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex74213987/hdlsrc/firfilt。##开始生成firfilt VHDL架构###成功完成过滤器的VHDL代码生成过程:firfilt HDL延迟为2个样本
编码器为过滤器对象生成这个VHDL实体。
生成具有可编程系数的部分串行FIR滤波器
创建一个带有系数的直接形式的反对称过滤器:
Coeffs = fir1(22,0.45);Firfilt = dsp。FIRFilter (“分子”多项式系数,“结构”,"直接形式反对称")
Firfilt = dsp。FIRFilterwith properties: Structure: 'Direct form antisymmetric' NumeratorSource: 'Property' Numerator: [3.6133e-04 0.0031 8.4473e-04 -0.0090 -0.0072 ... ] InitialConditions: 0 Show all properties
要生成HDL代码,请调用generatehdl
函数。当筛选器是System对象时,必须为输入数据指定定点数据类型。要生成部分串行的体系结构,请指定串行分区。要启用CoefficientMemory
属性,您必须设置CoefficientSource
来ProcessorInterface
.
generatehdl (firfilt“InputDataType”15) numerictype(16日,...“SerialPartition”7 [4],“CoefficientMemory”,“DualPortRAMs”,...“CoefficientSource”,“ProcessorInterface”)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex21465785/hdlsrc/firfilt。启动生成firfilt VHDL实体### firfilt VHDL架构###时钟速率是该架构的输入采样速率的7倍。成功完成VHDL代码生成过程的过滤器:firfilt# # HDL延迟是3个样本
生成的代码包括用于可编程系数的双端口RAM接口。
为FIR滤波器生成串行分区
探究同一过滤器的不同串行实现的时钟速率和延迟。使用对称结构还允许滤波器逻辑共享对称系数的乘数。
创建一个直接形式对称的FIR滤波器与以下规格:
过滤器订单13
6分贝点归一化截止频率0.4
的设计
函数返回一个dsp。FIRFilter
实现规范的系统对象™。
FIR = design(fdesign.lowpass(“N,俱乐部”13。4)“FilterStructure”,“dfsymfir”,“SystemObject”,真正的)
FIR = dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [0.0037 0.0045 -0.0115 -0.0417 1.0911e-17 0.1776 ... ] InitialConditions: 0 Show all properties
要生成HDL代码,请调用generatehdl
函数。当筛选器是System对象时,必须为输入数据指定定点数据类型。
对于基线比较,首先生成一个默认的完全并行的体系结构。
generatehdl(杉木、“名字”,“FullyParallel”,...“InputDataType”numerictype(15) 1, 16日)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex94948885/hdlsrc/FullyParallel. ###开始VHDL代码生成进程。开始生成fulllyparallel VHDL架构##成功完成过滤器的VHDL代码生成过程:fulllyparallel ## HDL延迟为2个样本
通过将分区大小设置为有效过滤器长度,生成一个完全串行的体系结构。系统时钟速率是输入采样速率的6倍。报告的HDL延迟比默认的并行实现大一个示例。
generatehdl(杉木、“SerialPartition”6“名字”,“FullySerial”,...“InputDataType”numerictype(15) 1, 16日)
###正在生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex94948885/hdlsrc/FullySerial. ###开始生成fulllyserial VHDL架构###时钟速率是该架构的输入采样速率的6倍。成功完成VHDL代码生成过程的过滤器:FullySerial ### HDL延迟是3个样本
生成具有三个相等分区的部分串行体系结构。该体系结构使用三个乘数。时钟速率是输入速率的两倍,延迟与默认并行实现相同。
generatehdl(杉木、“SerialPartition”,[2 2 2],“名字”,“PartlySerial”,...“InputDataType”numerictype(15) 1, 16日)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex94948885/hdlsrc/PartlySerial. ###开始VHDL代码生成进程。PartlySerial VHDL架构的开始生成###时钟速率是该架构的输入采样速率的2倍。成功完成VHDL代码生成过程的过滤器:PartlySerial ### HDL延迟是3个样本
通过启用累加器重用来生成级联串行体系结构。按大小降序指定三个分区。注意,时钟速率高于部分串行(没有累加器重用)示例中的速率。
generatehdl(杉木、“SerialPartition”,[3 2 1],“ReuseAccum”,“上”,“名字”,“CascadeSerial”,...“InputDataType”numerictype(15) 1, 16日)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex94948885/hdlsrc/ cascadesial。开始生成cascadesial VHDL体系结构的时钟速率是该体系结构的输入采样速率的4倍。成功完成VHDL代码生成过程的过滤器:cascadesiel# ## HDL延迟是3个样本
您还可以生成级联-串行体系结构,而无需显式指定分区。编码器自动选择分区大小。
generatehdl(杉木、“ReuseAccum”,“上”,“名字”,“CascadeSerial”,...“InputDataType”numerictype(15) 1, 16日)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex94948885/hdlsrc/ cascadesial。开始生成cascadesial VHDL体系结构的时钟速率是该体系结构的输入采样速率的4倍。串行分区# 1有3个输入。2号串行分区有3个输入。成功完成VHDL代码生成过程的过滤器:cascadesiel# ## HDL延迟是3个样本
生成级联过滤器的串行分区
创建一个两级级联过滤器,每个过滤器的规格如下:
直接形式对称FIR滤波器
滤镜顺序8
6分贝点归一化截止频率0.4
每次呼叫设计
函数返回一个dsp。FIRFilter
实现规范的系统对象™。的级联
函数返回一个两级联过滤器。
Lp = design(fdesign.lowpass)“N,俱乐部”8。4)“FilterStructure”,“dfsymfir”,“SystemObject”,真正的)
Lp = dsp。FIRFilterwith properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [-0.0061 -0.0136 0.0512 0.2657 0.4057 0.2657 ... ] InitialConditions: 0 Show all properties
HP =设计(fdesign.highpass)“N,俱乐部”8。4)“FilterStructure”,“dfsymfir”,“SystemObject”,真正的)
HP = dsp。分子:[0.0060 0.0133 -0.0501 -0.2598 0.5951 -0.2598…显示所有属性
Casc =级联(lp,hp)
Casc = dsp。过滤器Cascade with properties: Stage1: [1x1 dsp.FIRFilter] Stage2: [1x1 dsp.FIRFilter] CloneStages: true
要生成HDL代码,请调用generatehdl
级联滤波器的函数。当筛选器是System对象时,必须为输入数据指定定点数据类型。
为每个级联阶段指定不同的分区作为单元格数组。
generatehdl (casc和“InputDataType”15) numerictype(16日,“SerialPartition”,{[3 2],[4 1]})
###启动过滤器的VHDL代码生成进程:casfilt_stage1 ###正在生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex16715237/hdlsrc/casfilt_stage1。开始生成casfilt_stage1 VHDL架构###时钟速率是该架构的输入采样速率的3倍。###开始VHDL代码生成过程的过滤器:casfilt_stage2 ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex16715237/hdlsrc/casfilt_stage2。开始生成casfilt_stage2 VHDL架构###时钟速率是该架构的输入采样速率的4倍。###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex16715237/hdlsrc/casfilt。开始生成casfilt VHDL实体##开始生成casfilt VHDL架构##成功完成过滤器的VHDL代码生成过程:casfilt HDL延迟为2个样本
要研究级联的每个筛选器阶段的有效筛选器长度和分区选项,请调用hdlfilterserialinfo
函数。该函数返回一个与所需乘数对应的划分向量。请求第一阶段的串行分区可能性,并选择一些乘数。
hdlfilterserialinfo (casc)。Stage1,“InputDataType”numerictype(15) 1, 16日)
| 0 | |总系数A / Symm |有效 | --------------------------------------------------- | 9 | 0 | 4 | 5 |有效的滤波器长度SerialPartition值是5。“SerialPartition”值的表,与给定过滤器的折叠因子和乘数的对应值。| |折叠因素乘数| SerialPartition | -------------------------------------------------- | 1 | 5 | (1 1 1 1 1) | | 2 | 3 | (2 2 1) | | 3 | 2 | 2 [3] | | 4 | 2 | 1 [4] | | 5 | 1 | [5] |
为两个乘数器的目标选择串行分区向量,并将该向量传递给generatehdl
函数。以这种方式调用函数将返回第一个可能的分区向量,但是有多个分区向量可以实现双倍率体系结构。每个阶段根据乘数的数量使用不同的时钟速率。编码器生成一个时间控制器来派生这些时钟。
Sp1 = hdfilterserialinfo (casc.;Stage1,“InputDataType”15) numerictype(16日,“乘数”, 2)
sp1 =1×23 - 2
Sp2 = hdfilterserialinfo (casc。Stage2,“InputDataType”15) numerictype(16日,“乘数”,3)
sp2 =1×32 2 1
generatehdl (casc和“InputDataType”15) numerictype(16日,“SerialPartition”, {sp1, sp2})
###启动过滤器的VHDL代码生成进程:casfilt_stage1 ###正在生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex16715237/hdlsrc/casfilt_stage1。开始生成casfilt_stage1 VHDL架构###时钟速率是该架构的输入采样速率的3倍。###开始VHDL代码生成过程的过滤器:casfilt_stage2 ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex16715237/hdlsrc/casfilt_stage2。开始生成casfilt_stage2 VHDL架构###时钟速率是该架构的2倍输入采样速率。###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex16715237/hdlsrc/casfilt。开始生成casfilt VHDL实体##开始生成casfilt VHDL架构##成功完成过滤器的VHDL代码生成过程:casfilt HDL延迟为2个样本
生成IIR滤波器的串行结构
使用以下规范创建一个直接表单I SOS过滤器:
采样频率48khz
滤镜顺序5
3分贝点的截止频率为10.8 kHz
的设计
函数返回一个dsp。BiquadFilter
实现规范的系统对象™。自定义累加器数据类型可避免量化错误。
Fs = 48e3;Fc = 10.8e3;N = 5;Lp = design(fdesign.lowpass)“n, f3db”、N、Fc Fs),“黄油”,...“FilterStructure”,“df1sos”,“SystemObject”,真的,“UseLegacyBiquadFilter”,真正的)
Lp = dsp。SOSMatrixSource: 'Property' SOSMatrix: [3x6 double] ScaleValues: [4x1 double] NumeratorInitialConditions: 0 DenominatorInitialConditions: 0 OptimizeUnityScaleValues: true显示所有属性
Nt_accum = numerictype(“Signedness”,“汽车”,“字”, 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 | | | 1 |
要生成HDL代码,请调用generatehdl
使用串行体系结构之一的功能。指定NumMultipliers
或FoldingFactor
财产,但不是两者都有。例如,使用NumMultipliers
属性:
generatehdl (lp),“NumMultipliers”,2,“InputDataType”nt_input)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex90334139/hdlsrc/lp。开始生成lp VHDL实体##开始生成lp VHDL架构##成功完成过滤器的VHDL代码生成过程:l## HDL延迟为2个样本
方法指定相同的架构FoldingFactor
财产。
generatehdl (lp),“FoldingFactor”9“InputDataType”nt_input)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex90334139/hdlsrc/lp。开始生成lp VHDL实体##开始生成lp VHDL架构##成功完成过滤器的VHDL代码生成过程:l## HDL延迟为2个样本
这两个命令都生成一个总共使用两个乘法器的过滤器,其延迟为9个时钟周期。这种体系结构比并行实现使用更少的区域,代价是延迟。
单速率滤波器的分布式算法
使用分布式算法选项来减少过滤器实现中的乘数。
创建一个直接形式的FIR滤波器并计算滤波器长度,FL
.
Filtdes = fdesign.lowpass(“N, Fc,美联社,Ast”, 30岁,0.4,0.05,0.03,“线性”);Firfilt =设计(filtdes,“FilterStructure”,“dffir”,“SystemObject”,真正的);FL =长度(find(firfilt.)分子~= 0))
Fl = 31
指定一组分区,使分区大小相加等于过滤器长度。这只是一个分区选项,您可以指定其他大小的组合。
generatehdl (firfilt“InputDataType”15) numerictype(16日,...“DALUTPartition”,[8 8 8 7])
结构fir具有对称系数,考虑转换为结构symmetricfir以减少面积。###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex00198568/hdlsrc/firfilt。开始生成firfilt VHDL架构###时钟速率是该架构的输入采样速率的16倍。成功完成VHDL代码生成过程的过滤器:firfilt# # HDL延迟是3个样本
为了进行比较,创建一个直接形式的对称FIR滤波器。对称情况下,滤波器长度较小。
Filtdes = fdesign.lowpass(“N, Fc,美联社,Ast”, 30岁,0.4,0.05,0.03,“线性”);Firfilt =设计(filtdes,“FilterStructure”,“dfsymfir”,“SystemObject”,真正的);FL = ceil(length(find(firfilt.))分子~= 0))/2)
Fl = 16
指定一组分区,使分区大小相加等于过滤器长度。这只是一个分区选项,您可以指定其他大小的组合。提示:使用hdlfilterdainfo
函数显示有效过滤器长度、LUT分区选项和可能的DARadix
过滤器的值。
generatehdl (firfilt“InputDataType”15) numerictype(16日,...“DALUTPartition”, 8 [8])
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex00198568/hdlsrc/firfilt。开始生成firfilt VHDL架构###时钟速率是该架构的输入采样速率的17倍。成功完成VHDL代码生成过程的过滤器:firfilt# # HDL延迟是3个样本
多速率滤波器的分布式算法
使用分布式算法选项来减少过滤器实现中的乘数。
创建一个直接形式的FIR多相榨取器,并计算滤波器长度。
D = fdesign.decimator(4);Filt = design(d,“SystemObject”,真正的);FL =尺寸(多相(filt),2)
Fl = 27
指定加起来等于过滤器大小的分布式算术LUT分区。当将分区指定为多相过滤器的矢量时,每个子过滤器使用相同的分区。
generatehdl (filt“InputDataType”15) numerictype(16日,...“DALUTPartition”,[8 8 8 3])
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex51670151/hdlsrc/firdecim。开始生成firdecim VHDL架构###时钟速率是该架构的4倍输入采样速率和16倍输出采样速率。成功完成VHDL代码生成过程的过滤器:firdecim# # HDL延迟是16个样本
还可以为每个子过滤器指定惟一的分区。对于相同的筛选器,将子筛选器划分指定为矩阵。第一个子过滤器的长度为1,其他子过滤器的长度为26。提示:使用hdlfilterdainfo
函数显示有效过滤器长度、LUT分区选项和可能的DARadix
过滤器的值。
D = fdesign.decimator(4);Filt = design(d,“SystemObject”,真正的);generatehdl (filt“InputDataType”15) numerictype(16日,...“DALUTPartition”,[1 0 0 0;8 8 8 2;8 8 6 4;8 8 8 2])
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex51670151/hdlsrc/firdecim。开始生成firdecim VHDL架构###时钟速率是该架构的4倍输入采样速率和16倍输出采样速率。成功完成VHDL代码生成过程的过滤器:firdecim# # HDL延迟是16个样本
级联滤波器的分布式算法
使用分布式算法选项来减少过滤器实现中的乘数。
创建级联过滤器
创建一个两级级联过滤器。为每个阶段定义不同的LUT分区,并在单元格数组中指定分区向量。
Lp = design(fdesign.lowpass)“N,俱乐部”8。4)“filterstructure”,“dfsymfir”,...“SystemObject”,真正的);HP =设计(fdesign.highpass)“N,俱乐部”8。4)“filterstructure”,“dfsymfir”,...“SystemObject”,真正的);Casc =级联(lp,hp);Nt1 = numerictype(1,12,10);generatehdl (casc和“InputDataType”nt1,“DALUTPartition”,{[3 2],[2 2 1]})
###启动过滤器的VHDL代码生成进程:casfilt_stage1 ###正在生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt_stage1。开始生成casfilt_stage1 VHDL架构###时钟速率是该架构的输入采样速率的13倍。###启动过滤器的VHDL代码生成进程:casfilt_stage2 ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt_stage2。开始生成casfilt_stage2 VHDL架构###时钟速率是该架构的输入采样速率的29倍。###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt。开始生成casfilt VHDL实体##开始生成casfilt VHDL架构##成功完成过滤器的VHDL代码生成过程:casfilt HDL延迟为4个样本
分布式算术选项
使用hdlfilterdainfo
函数显示有效过滤器长度、LUT分区选项和可能的DARadix
级联的每个筛选器阶段的值。该函数返回一个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表示1个1024个18位宽位置的LUT。
要为第二阶段请求LUT分区的可能性,必须首先确定第二阶段的输入数据类型。
y = casc.Stage1(fi(0,nt1));Nt2 = .numerictype;hdlfilterdainfo (casc)。Stage2,“InputDataType”nt2);
| 0 | |总系数A / Symm |有效 | --------------------------------------------------- | 9 | 0 | 4 | 5 |有效的滤波器长度SerialPartition值是5。表的“DARadix”值与对应的折叠因子和倍数的LUT集的给定滤波器。多个| | |折叠因素LUT-Sets 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 |附近地区的细节与相应的“DALUTPartition”值。| |马克斯地址宽度大小(位)| |附近地区细节DALUTPartition | ---------------------------------------------------------------------------- | 5 | 896 | 1 x32x28 | [5] | | 4 | 488 | 1 x16x27 1 x2x28 | [4 1] | | 3 | 304 | 1 x4x28, 1 x8x24 | 2 [3] | | 2 | 256 | 1 x2x28, 1 x4x23 1 x4x27 | |(2 2 1)注:1。“LUT Details”表示LUT的个数和大小。例如,1x1024x18表示1个1024个18位宽位置的LUT。
每个阶段有不同的LUT分区
选择地址宽度和折叠因子,获得每个阶段的LUT分区。第一阶段使用最大地址大小为5位的lut。第二阶段使用最大地址大小为三位的lut。它们以相同的时钟速率运行,并且具有不同的LUT分区。
Dp1 = hdfilterdainfo (casc。Stage1,“InputDataType”nt1,...“LUTInputs”5,“FoldingFactor”3);Dp2 = hdfilterdainfo (casc。Stage2,“InputDataType”nt1,...“LUTInputs”,3,“FoldingFactor”5);generatehdl (casc和“InputDataType”nt1,“DALUTPartition”, {dp1、dp2});
###启动过滤器的VHDL代码生成进程:casfilt_stage1 ###正在生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt_stage1。开始生成casfilt_stage1 VHDL架构###时钟速率是该架构的输入采样速率的13倍。###启动过滤器的VHDL代码生成进程:casfilt_stage2 ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt_stage2。开始生成casfilt_stage2 VHDL架构###时钟速率是该架构的输入采样速率的29倍。###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt。开始生成casfilt VHDL实体##开始生成casfilt VHDL架构##成功完成过滤器的VHDL代码生成过程:casfilt HDL延迟为4个样本
不同的DARadix
每个阶段的值
您也可以指定不同DARadix
级联中每个过滤器的值。您只能在命令行上指定不同的级联分区。中指定分区时产生高密度脂蛋白对话框中,所有级联阶段都使用相同的分区。检查hdlfilterdainfo
设置DARadix
每个阶段的值。
generatehdl (casc和“InputDataType”nt1,...“DALUTPartition”,{[3 2],[2 2 1]},“DARadix”,{2 ^ 3、2 ^ 7})
###启动过滤器的VHDL代码生成进程:casfilt_stage1 ###正在生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt_stage1。开始生成casfilt_stage1 VHDL架构###时钟速率是该架构的输入采样速率的5倍。###启动过滤器的VHDL代码生成进程:casfilt_stage2 ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt_stage2。开始生成casfilt_stage2 VHDL架构###时钟速率是该架构的输入采样速率的5倍。###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex17169310/hdlsrc/casfilt。开始生成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体系结构,为第二阶段指定串行体系结构,为第三阶段指定完全并行(默认)体系结构。
获得DARadix
第一个体系结构的值,使用hdlfilterdainfo
,然后从中选择一个值博士
.
Nt = numerictype(1,12,10);[dp,dr,lutsize,ff] = hdfilterdainfo (casc。Stage1,...“InputDataType”10) numerictype(12日);博士
博士=6 x1细胞{' 2 ^ 12}{2 ^ 6的}{2 ^ 4的}{' 2 ^ 3}{2 ^ 2的}{2 ^ 1的}
将属性值设置为单元格数组,其中每个单元格应用于一个阶段。要禁用特定阶段的属性,请使用默认值(-1用于分区,2用于DARadix
).
generatehdl (casc和“InputDataType”元,...“SerialPartition”{1, 3, 1},...“DALUTPartition”, {3 [4], 1,1},...“DARadix”, {2 ^ 6 2 2});
结构fir具有对称系数,考虑转换为结构symmetricfir以减少面积。###启动过滤器的VHDL代码生成进程:casfilt_stage1 ###正在生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex13094988/hdlsrc/casfilt_stage1。casfilt_stage1 VHDL实体开始生成casfilt_stage1 VHDL架构的开始生成###时钟速率是该架构的2倍输入采样速率。###成功完成过滤器的VHDL代码生成进程:casfilt_stage1 ### Cascade stage # 2 ###启动过滤器的VHDL代码生成进程:casfilt_stage2 ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex13094988/hdlsrc/casfilt_stage2。开始生成casfilt_stage2 VHDL架构###时钟速率是该架构的输入采样速率的3倍。###成功完成过滤器的VHDL代码生成进程:casfilt_stage2 ### Cascade stage # 3 ###启动过滤器的VHDL代码生成进程:casfilt_stage3 ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex13094988/hdlsrc/casfilt_stage3##开始生成casfilt_stage3 VHDL架构###成功完成过滤器的VHDL代码生成过程:casfilt_stage3 ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex13094988/hdlsrc/casfilt。开始生成casfilt VHDL实体##开始生成casfilt VHDL架构##成功完成过滤器的VHDL代码生成过程:casfilt HDL延迟为3个样本
可编程系数FIR滤波器试验台
您可以指定输入系数来测试具有可编程系数的过滤器。
创建一个完全并行(默认)架构的直接对称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(length(C)/2));Filt = dsp。FIRFilter (“分子”b“结构”,"直接形式对称");generatehdl (filt“InputDataType”15) numerictype(16日,...“GenerateHDLTestbench”,“上”,...“CoefficientSource”,“ProcessorInterface”,“TestbenchCoeffStimulus”c)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex66247050/hdlsrc/firfilt。开始生成firfilt VHDL实体##开始生成firfilt VHDL架构##成功完成过滤器的VHDL代码生成过程:firfilt HDL延迟为2个样本##开始生成VHDL测试台架。###生成输入刺激;长度为3107个样本。生成测试台:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex66247050/hdlsrc/firfilt_tb。创建刺激向量…完成VHDL测试台架的生成。
可编程系数IIR滤波器
创建一个过滤器规范。生成HDL代码时,为系数指定一个可编程接口。
Fs = 48e3;Fc = 10.8e3;N = 5;F_lp = fdesign.lowpass(“n, f3db”、N、Fc Fs);Filtiir = design(f_lp,“黄油”,“FilterStructure”,“df2sos”,“SystemObject”,真的,“UseLegacyBiquadFilter”,真正的);filtiir。OptimizeUnityScaleValues = 0;generatehdl (filtiir“InputDataType”15) numerictype(16日,...“CoefficientSource”,“ProcessorInterface”)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex92389569/hdlsrc/filtiir。开始生成filtiir VHDL实体###开始生成filtiir VHDL架构###二级段,# 1二级段,# 2一级段,# 3 ##成功完成filter的VHDL代码生成过程:filtiir HDL延迟为2个样本
编码器为过滤器对象生成这个VHDL实体。
多速率滤波器的时钟端口
探索为多速率过滤器指定时钟端口的各种方法。
默认设置
创建多相采样速率转换器。默认情况下,编码器生成一个输入时钟(clk
),输入时钟使能(clk_enable
)和时钟使能输出信号命名为ce_out
.的ce_out
信号指示输出样品何时准备好。的ce_in
输出信号表示输入样品何时被接受。您可以使用这个信号来控制上游数据流。
Firrc = dsp。FIRRateConverter (“InterpolationFactor”5,“DecimationFactor”3);generatehdl (firrc“InputDataType”numerictype(15) 1, 16日)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex09049114/hdlsrc/firrc。开始生成firrc VHDL架构##成功完成过滤器的VHDL代码生成过程:firrc HDL延迟为2个样本
生成的实体具有以下信号:
自定义时钟名称
您可以为输入时钟使能和输出时钟使能信号提供自定义名称。不能重命名ce_in
信号。
Firrc = dsp。FIRRateConverter (“InterpolationFactor”5,“DecimationFactor”,3)
Firrc = dsp。[0 -6.6976e-05 -1.6044e-04 -2.2552e-04…]显示所有属性
generatehdl (firrc“InputDataType”15) numerictype(16日,...“ClockEnableInputPort”,“clk_en1”,...“ClockEnableOutputPort”,“clk_en2”)
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex09049114/hdlsrc/firrc。开始生成firrc VHDL架构##成功完成过滤器的VHDL代码生成过程:firrc HDL延迟为2个样本
生成的实体具有以下信号:
多个时钟输入
若要为支持的多速率滤波器生成多个时钟输入信号,请设置万博1manbetxClockInputs
财产“多”
.在这种情况下,编码器不生成任何输出时钟使能端口。
decim = dsp.CICDecimator(7,1,4);generatehdl (decim“InputDataType”15) numerictype(16日,...“ClockInputs”,“多”)
###开始VHDL代码生成过程的过滤器:cicDecOrIntFilt ###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex09049114/hdlsrc/cicDecOrIntFilt。vhd # # # # # #开始代cicDecOrIntFilt VHDL的实体开始代cicDecOrIntFilt硬件描述语言(VHDL)架构# # # # 1:部分积分器# # # # 2:部分积分器# # # # 3:部分积分器# # # # 4:部分积分器# # # # 5节:梳子# # # # 6节:梳子# # # # 7节:梳子# # # # 8节:梳子# # #成功完成硬件描述语言(VHDL)过滤器的代码生成过程:cicDecOrIntFilt # # # HDL延迟7样品
生成的实体具有以下信号:
生成默认Altera Quartus II合成脚本
创建一个过滤器对象。然后调用generatehdl
,并指定一个合成工具。
LPF = fdesign.lowpass(“fp,置,美联社,ast”, 0.45, 0.55, 1、60);Firfilt = design(lpf,“equiripple”,“FilterStructure”,“dfsymfir”,...“SystemObject”,真正的);generatehdl (firfilt“InputDataType”13)、numerictype(1、14日,...“HDLSynthTool”,“第四的”);
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex92219095/hdlsrc/firfilt。##开始生成firfilt VHDL架构###成功完成过滤器的VHDL代码生成过程:firfilt HDL延迟为2个样本
编码器生成一个名为firfilt_quartus.tcl
,使用Altera®Quartus II合成工具的默认脚本属性。
类型hdlsrc / firfilt_quartus.tcl
Load_package flow set top_level firfilt set src_dir "。/hdlsrc" set prj_dir "q2dir" file mkdir ../$prj_dir CD ../$prj_dir project_new $top_level -revision $top_level -overwrite set_global_assignment name FAMILY "Stratix II" set_global_assignment name DEVICE EP2S60F484C3 set_global_assignment name TOP_LEVEL_ENTITY $top_level set_global_assignment name vhdl_FILE "..“execute_flow -compile project_close .
构建定制合成脚本
您可以将脚本自动化属性设置为虚拟值,以说明编码器如何根据这些属性构造合成脚本。
设计一个过滤器并生成HDL。指定要包含在合成脚本中的合成工具和自定义文本。
LPF = fdesign.lowpass(“fp,置,美联社,ast”, 0.45, 0.55, 1、60);Firfilt = design(lpf,“equiripple”,“FilterStructure”,“dfsymfir”,...“Systemobject”,真正的);generatehdl (firfilt“InputDataType”13)、numerictype(1、14日,...“HDLSynthTool”,“伊势”,...“HDLSynthInit”,'init line 1:模块名称为%s\ninit line 2\n',...“HDLSynthCmd”,'命令:HDL文件名为%s\n',...“HDLSynthTerm”,'term line 1\nterm line 2\n');
###生成:/tmp/Bdoc22b_2054784_1177043/tp53cbf18b/hdlfilter-ex64737676/hdlsrc/firfilt。##开始生成firfilt VHDL架构###成功完成过滤器的VHDL代码生成过程:firfilt HDL延迟为2个样本
编码器生成一个名为firfilt_ise.tcl
.注意指定的自定义文本的位置。您可以使用此功能向生成的脚本添加合成指令。
类型hdlsrc / firfilt_ise.tcl
init line 1: module name is firfilt init line 2: HDL filename is firfilt。VHD期线1期线2
输入参数
filtSO
- - - - - -过滤器
filter系统对象
用于生成HDL代码的过滤器,指定为过滤器系统对象。要创建筛选器系统对象,请使用设计
函数或查看对象的参考页。您可以使用DSP System Toolbox™中的以下系统对象:
单速率滤波器
nt
- - - - - -输入数据类型
numerictype
对象
输入数据类型,指定为numerictype
(定点设计师)对象。仅当输入筛选器是System对象时,此参数才适用。调用numerictype(年代,w, f)
,在那里年代
有符号是1,无符号是0,w
字的长度是以位为单位的吗f
是小数位的个数。
fd
- - - - - -分数延迟数据类型
numerictype
对象
分数延迟数据类型,指定为numerictype
(定点设计师)对象。此参数仅适用于输入筛选器为a时dsp。VariableFractionalDelay
系统对象。调用numerictype(年代,w, f)
,在那里年代
有符号是1,无符号是0,w
字的长度是以位为单位的吗f
是小数位的个数。
filterObj
- - - - - -过滤器
dfilt
对象
过滤器,从中生成HDL代码,指定为dfilt
对象。方法可以创建此对象设计
函数。有关支持的筛选器功能的概述,请参见万博1manbetx过滤器配置选项(过滤器设计HDL编码器).
选择
您可以使用fdhdltool
(过滤器设计HDL编码器)函数来生成HDL代码(需要Filter Design HDL Coder)。指定输入和部分延迟数据类型作为参数,然后在Generate HDL对话框中设置附加属性。
版本历史
R2006a之前介绍过
另请参阅
generatetbstimulus
(过滤器设计HDL编码器)|fdhdltool
(过滤器设计HDL编码器)
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。