主要内容

dsphdl。FIRRateConverter

上采样,滤波,下采样输入信号

描述

dsphdl。FIRRateConverter系统对象™对输入信号进行上采样、滤波和下采样。它针对HDL代码生成进行了优化,并且每次对每个通道的一个样本进行操作。该对象实现了高效的多相结构,以避免不必要的算术运算和高中间采样率。

对象以的整数因子向上采样l,应用FIR滤波器,并按整数因子的下采样

重新采样和过滤输入数据:

  1. 创建dsphdl。FIRRateConverter对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

HDLFIRRC= dsphdl。FIRRateConverter返回一个System对象,HDLFIRRC,它对输入的每个通道重新采样。对象以的整数因子向上采样l,应用FIR滤波器,并按整数因子的下采样.默认的L / M是3/2。

例子

HDLFIRRC= dsphdl。FIRRateConverter (l全国矿工工会设置InterpolationFactor财产l,DecimationFactor财产,以及分子财产全国矿工工会

HDLFIRRC= dsphdl。FIRRateConverter (___名称,值使用一个或多个名称-值对设置属性。将每个属性名用单引号括起来。例如:

HDLFIRRC = dsphdl。FIRRateConverter (l,米,Num,“ReadyPort”,真正的);

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

Upsampling因素,l,指定为正整数。

将采样因子,,指定为正整数标量。

FIR滤波器系数,指定为的降幂矢量z-1

您可以使用信号处理工具箱™滤波器设计函数来生成滤波器系数,例如fir1.设计一个归一化截止频率不大于的低通滤波器分钟(1 / L, 1 /米).对象将内部筛选器状态初始化为零。

启用准备好了对象的输出参数。当启用时,对象返回一个逻辑标量值,准备好了,当你调用对象时。当准备好了1(true),则该对象在下次调用时已准备好接受新的输入样例。

舍入模式用于定点操作。当输入为时,此属性不应用类型。“简单”不支持Mode。金宝app

溢出模式用于定点操作。当输入为时,此属性不应用类型。

FIR滤波器系数的数据类型,指定为anumerictype(年代,西城,fl)对象与signedness字长,部分长度属性。

输出数据样本的数据类型,指定为'与输入相同的字长”、“完整的精度’或anumerictype(年代,西城,fl)对象与signedness字长,部分长度属性。

使用

描述

例子

(dataOutvalidOut= hdlfirrc (dataInvalidIn重新取样dataIn根据InterpolationFactorl),DecimationFactor)的属性。要避免在使用此语法时丢弃样本,请应用新的有效输入样本,使用validIn设置为真正的,只是每一个装天花板(L / M)调用对象。对象集validOut真正的dataOut是新的有效样品。

例子

(dataOutvalidOut准备好了= hdlfirrc (dataInvalidIn重新采样输入数据并返回准备好了指示对象是否可以在下一次调用时接受一个新的样本。

属性时应用此语法ReadyPort财产真正的.例如:

HDLFIRRC = dsphdl。FIRRateConverter (...,“ReadyPort”,真正的);...[dataOut,validOut,ready] = rateConverter(dataIn,validIn);

输入参数

全部展开

数据输入,指定为标量,或指定为行向量,其中每个元素表示一个独立通道。

而且数据类型支持模拟,但不支持HD金宝appL代码生成。

数据类型:fi|int8|int16|int32|int64|uint8|uint16|uint32||
复数支持:金宝app是的

指示输入数据是否有效的控制信号。当validIn1真正的),该对象从dataIn论点。当validIn0的值,该对象将忽略dataIn论点。

您可以每次应用一个有效的数据示例装天花板(L / M)调用对象。你可以使用可选选项准备好了输出信号,表示该对象何时可以接受新的样品。

数据类型:逻辑

输出参数

全部展开

重新采样和过滤的数据样本,作为标量返回,或作为每个元素代表一个独立通道的向量返回。

而且数据类型支持模拟,但不支持HD金宝appL代码生成。

数据类型:fi|int8|int16|int32|int64|uint8|uint16|uint32||
复数支持:金宝app是的

指示输出数据是否有效的控制信号。当validOut1真正的对象返回有效的数据dataOut论点。当validOut0的值dataOut论点无效。

数据类型:逻辑

指示对象已准备好在下一个周期进行新的输入数据采样的控制信号。当准备好了1真正的),则可指定数据而且有效的下一个时间步骤的输入。当准备好了0),对象将忽略下一个时间步骤中的任何输入数据。

依赖关系

要启用此参数,请设置ReadyPort财产真正的

数据类型:逻辑

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

将信号从48千赫转换为32千赫dsphdl。FIRRateConverter系统对象™。

定义输入信号的采样率和长度,以及2 kHz余弦波形。集validIn真正的对于每个样本。

Fs = 48e3;Ns = 100;t = (0:Ns-1).'/Fs;dataIn = cos(2*pi*2e3*t);validIn = true(Ns,1);

PreallocatedataOut而且validOut信号更快的模拟。

dataOut = 0 (Ns,1);validOut = false(Ns,1);

创建System对象。将其配置为使用等纹波滤波器执行2/3倍的速率转换。

分子= firpm(70,[0 0.25 0.32 1],[1 1 0 0]);firrc = dsphdl.FIRRateConverter(2,3,分子);

调用System对象来执行速率转换并获取每个输出示例。

k = 1:Ns [dataOut(k),validOut(k)] = firrc(dataIn(k),validIn(k));结束

因为输入抽样率高于输出抽样率,不是每个成员的dataOut是有效的。使用validOut从中提取有效样品dataOut

y = dataOut(validOut);

使用逻辑分析器查看输入和输出信号。

La = dsp。logicAnalyzer(“NumInputPorts”4“SampleTime”1 / Fs,“时间间隔”Ns / Fs);modifyDisplayChannel(洛杉矶,1,“名字”“dataIn”“格式”“模拟”“高度”, 8) modifyDisplayChannel (2“名字”“validIn”) modifyDisplayChannel (la 3“名字”“dataOut”“格式”“模拟”“高度”, 8) modifyDisplayChannel (4“名字”“validOut”)拉(dataIn validIn、dataOut validOut)

转换信号从40兆赫到100兆赫使用dsphdl。FIRRateConverter系统对象™。为了避免在信号上采样时超出对象,手动控制输入速率。

定义输入信号的采样率和长度,以及一个定点余弦波形。

Fs = 40e6;Ns = 50;t = (0:Ns-1).'/Fs;X = fi(cos(2* *1.2e6*t),1,16,14);

定义速率转换参数。使用5的插值因子和2的抽取因子。计算对象多久可以接受一个新的输入样本。

L = 5;M = 2;stepsPerInput = ceil(L/M);numSteps = stepsPerInput*Ns;

生成dataIn而且validIn基于对象接受新样本的频率。

dataIn = 0 (numSteps,1,“喜欢”, x);dataIn(1:stepsPerInput:end) = x;validIn = false(numSteps,1);validIn(1:stepsPerInput:end) = true;

创建System对象。配置它使用指定的因子和等纹波FIR滤波器执行速率转换。

分子= firpm(70,[0 0.15 0.25 1],[1 1 0 0]);rateConverter = dsphdl.FIRRateConverter(L,M,分子);

创建一个Logic Analyzer来捕获和查看输入和输出信号。

La = dsp。logicAnalyzer(“NumInputPorts”4“SampleTime”1 / Fs,“时间间隔”numSteps / Fs);modifyDisplayChannel(洛杉矶,1,“名字”“dataIn”“格式”“模拟”“高度”, 8) modifyDisplayChannel (2“名字”“validIn”) modifyDisplayChannel (la 3“名字”“dataOut”“格式”“模拟”“高度”, 8) modifyDisplayChannel (4“名字”“validOut”

调用System对象来执行速率转换并获取每个输出示例。调用逻辑分析器将每个样本添加到波形显示中。

k = 1:numSteps [dataOut,validOut] = rateConverter(dataIn(k),validIn(k));洛杉矶(dataIn (k), validIn (k), dataOut, validOut)结束

转换信号从40兆赫到100兆赫使用dsphdl。FIRRateConverter系统对象™。使用可选的准备好了输出信号以避免在数据上采样时溢出对象。的准备好了信号表示对象可以在下次调用该对象时接受新的数据样本。

定义输入信号的采样率和长度,以及一个定点余弦波形。创建一个SignalSource对象按需提供数据示例。

Fs = 40e6;Ns = 50;t = (0:Ns-1).'/Fs;X = fi(cos(2* *1.2e6*t),1,16,14);inputSource = dsp.SignalSource(x);

定义速率转换参数。使用5的插值因子和2的抽取因子。确定需要转换的对象的调用次数Ns样本。

L = 5;M = 2;numSteps = floor(Ns*L/M);

创建FIR速率转换器System对象。配置它使用指定的因子和等纹波FIR滤波器执行速率转换。启用可选的准备好了输出端口。

分子= firpm(70,[0 0.15 0.25 1],[1 1 0 0]);rateConverter = dsphdl。FIRRateConverter (l,米,分子,“ReadyPort”,真正的);

创建一个Logic Analyzer来捕获和查看输入和输出信号。

La = dsp。logicAnalyzer(“NumInputPorts”,5,“SampleTime”1 / Fs,“时间间隔”numSteps / Fs);modifyDisplayChannel(洛杉矶,1,“名字”“dataIn”“格式”“模拟”“高度”, 8) modifyDisplayChannel (2“名字”“validIn”) modifyDisplayChannel (la 3“名字”“dataOut”“格式”“模拟”“高度”, 8) modifyDisplayChannel (4“名字”“validOut”) modifyDisplayChannel (la 5“名字”“准备好了”

初始化准备好了信号。对象总是在第一次调用时为输入数据做好准备。

Ready = true;

调用System对象来执行速率转换并获取每个输出示例。当对象指示它准备就绪时,应用一个新的输入样例。否则,设置validIn

k = 1:numSteps如果ready dataIn = inputSource();结束validIn =就绪;[dataOut,validOut,ready] = rateConverter(dataIn,validIn);洛杉矶(dataIn validIn、dataOut validOut,准备)结束

创建一个针对HDL代码生成的速率转换函数,以及一个测试平台来执行它。该功能将信号从40 MHz转换为100 MHz。为了避免超出对象,试验台手动控制输入速率。

定义输入信号的采样率和长度,以及一个定点余弦波形。

Fs = 40e6;Ns = 50;t = (0:Ns-1).'/Fs;X = fi(cos(2* *1.2e6*t), 1,16,14);

定义速率转换参数。使用5的插值因子和2的抽取因子。计算对象接受新数据样本的频率。

L = 5;M = 2;stepsPerInput = ceil(L/M);numSteps = stepsPerInput*Ns;

生成dataIn而且validIn基于对象接受新样本的频率。

dataIn = 0 (numSteps,1,“喜欢”, x);dataIn(1:stepsPerInput:end) = x;validIn = false(numSteps,1);validIn(1:stepsPerInput:end) = true;

创建一个Logic Analyzer来捕获和查看输入和输出信号。

La = dsp。logicAnalyzer(“NumInputPorts”4“SampleTime”1 / Fs,“时间间隔”numSteps / Fs);modifyDisplayChannel(洛杉矶,1,“名字”“dataIn”“格式”“模拟”“高度”, 8) modifyDisplayChannel (2“名字”“validIn”) modifyDisplayChannel (la 3“名字”“dataOut”“格式”“模拟”“高度”, 8) modifyDisplayChannel (4“名字”“validOut”

编写一个创建并调用System对象的函数。

函数[dataOut,validOut] = HDLFIRRC5_2(dataIn,validIn)% HDLFIRRC5_2使用dsphdl处理一个数据样本。FIRRateConverter系统%的对象。dataIn是一个定点标量值。validIn是逻辑标量值。您可以从这个函数生成HDL代码。持续的firrc5_2;如果isempty (firrc5_2)分子= firpm(70年,[0,酒精含量为1],[1 1 0,0]);firrc5_2 = dsphdl.FIRRateConverter(5,2,分子);结束[dataOut,validOut] = firrc5_2(dataIn,validIn);结束

通过为每个数据样本调用函数来重新采样信号。

k = 1:numSteps [dataOut,validOut] = HDLFIRRC5_2(dataIn(k),validIn(k));洛杉矶(dataIn (k), validIn (k), dataOut, validOut)结束

算法

全部展开

节点实现的算法FIR速率转换器块引用页。

扩展功能

版本历史

在R2015b中引入

全部展开

R2022a的行为发生了变化

R2022a的行为发生了变化

R2022a的行为发生了变化

另请参阅

对象