为量化DSP滤波器生成HDL代码(需要过滤器设计HDL编码器)
generatehdl (___,名称,价值)
除了先前语法中的输入参数之外,使用可选的名称值参数。使用这些属性来覆盖默认的HDL代码生成设置。
更多细节,请参阅Filter Design HDL Coder™文档中的相应属性:
要自定义筛选器名称,目标文件夹和指定目标语言,请参阅基本的HDL代码生成属性(Filter Design HDL编码器)。
要配置系数、复杂输入端口和特定过滤器类型的可选端口,请参见HDL过滤配置属性(Filter Design HDL编码器)。
优化生成的HDL代码的速度或区域,请参阅高密度脂蛋白优化性能(Filter Design HDL编码器)。
要自定义端口,标识符和注释,请参阅HDL端口和标识符属性(Filter Design HDL编码器)。
要自定义HDL构造,请参阅HDL构造属性(Filter Design HDL编码器)。
要生成和自定义测试台,请参阅HDL测试台特性(Filter Design HDL编码器)。
要将第三方EDA工具集成到过滤器设计工作流中,请参见HDL综合和工作流程自动化属性(Filter Design HDL编码器)。
设计这些规范的直接形式对称等波纹过滤器:
归一化频带频率为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.vhd
和myfiltertb.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.
与串行架构的一个功能。指定无论是NumMultipliers
或FoldingFactor.
财产,但不是两者。例如,使用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项
Filtso.
-筛选过滤从中生成HDL代码,指定为过滤系统对象。要创建过滤系统对象,请使用设计
功能或查看对象的参考页。您可以使用来自DSP系统工具箱™以下系统对象:
单速滤波器
nt
-输入数据类型numerictype.
目的输入数据类型,指定为numerictype.
(定点设计师)目的。此处仅适用于输入过滤器是系统对象时。调用Numerictype(s,w,f)
, 在哪里年代
是1对签名和0无符号,w
是位字长,和f
是分数位的数量。
fd
-分数延迟数据类型numerictype.
目的分数延迟数据类型,指定为numerictype.
(定点设计师)目的。此参数仅在输入过滤器是a时应用dsp.variableFractiondElay.
系统对象。调用Numerictype(s,w,f)
, 在哪里年代
是1对签名和0无符号,w
是位字长,和f
是分数位的数量。
filterobj.
-筛选德菲尔特
目的从中生成HDL代码的过滤器,指定为a德菲尔特
目的。您可以通过使用创建该对象设计
函数。有关支持的过滤器功能的概述,请参阅金宝app过滤器配置选项(Filter Design HDL编码器)。
你可以使用fdhdltool
(Filter Design HDL编码器)函数生成HDL代码,而不是(需要滤波器设计HDL编码器)。指定在生成HDL对话框输入和分数延迟的数据类型作为参数,然后设置其他属性。
fdhdltool
(Filter Design HDL编码器)|generatetbstimulus.
(Filter Design HDL编码器)
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。