主要内容

dsp.HDLFIRRateConverter

Upsample、过滤和downsample-optimized HDL代码生成

描述

dsp.HDLFIRRateConverter系统对象™upsamples、过滤器和downsamples输入信号。是优化的HDL代码生成和运行在一个样本的每个通道。对象实现一个高效的多相体系结构以避免不必要的算术运算和中间采样率高。

对象upsamples整数倍l、实行冷杉过滤器和downsamples整数倍。节奏的对象接受并返回控制信号参数样本的流。流控制接口的细节,请参阅流控制

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

  1. 创建dsp.HDLFIRRateConverter对象并设置其属性。

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

HDLFIRRC= dsp.HDLFIRRateConverter返回一个系统对象,HDLFIRRC重新取样,每个通道的输入。对象upsamples整数倍l、实行冷杉过滤器和downsamples整数倍。默认的L / M是3/2。

例子

HDLFIRRC= dsp.HDLFIRRateConverter (l,,全国矿工工会)设置InterpolationFactor财产l,DecimationFactor财产,分子财产全国矿工工会

HDLFIRRC= dsp.HDLFIRRateConverter (___,名称,值)设置使用一个或多个属性名称-值对。在单引号附上每个属性的名字。例如:

Num HDLFIRRC = dsp.HDLFIRRateConverter (L, M,“ReadyPort”,真的,“RequestPort”,真正的);

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

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

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

冷杉滤波器系数,指定为一个向量在降序的权力z1

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

启用准备好了输出参数的对象。当启用时,对象返回一个逻辑标量值,准备好了,当你调用对象。当准备好了1(真正的),对象是准备一个新的输入样本下次你叫它。

启用请求对象的输入参数。当请求1(真正的)对象返回一个新的输出样本对当前调用对象。

舍入模式用于定点操作。这个属性输入时不适用类型。“简单”不支持模式。金宝app

溢出模式用于定点操作。这个属性输入时不适用类型。

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

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

使用

描述

例子

(dataOut,validOut)= HDLFIRRC (dataIn,validIn)重新取样dataIn根据InterpolationFactor(l),DecimationFactor()的属性。避免了样品使用这个语法时,应用新的有效的输入样本,validIn设置为真正的,只有每一个装天花板(L / M)调用对象。对象集validOut真正的dataOut是一种新的有效的样本。

例子

(dataOut,准备好了,validOut)= HDLFIRRC (dataIn,validIn)重新取样输入数据并返回准备好了指示对象是否可以接受一个新的样本在下一个电话。

这个语法适用于当你设置ReadyPort财产真正的。例如:

HDLFIRRC = dsp.HDLFIRRateConverter (,“ReadyPort”,真正的);[dataOut validOut,准备]= rateConverter (dataIn validIn);

例子

(dataOut,准备好了,validOut)= HDLFIRRC (dataIn,validIn,请求)重新取样输入数据,显示对象是否可以接受一个新的样本,如果请求真正的返回下一个可用的样本。

这个语法适用于当你设置RequestPort财产真正的。例如:

HDLFIRRC = dsp.HDLFIRRateConverter (,“RequestPort”,真正的);[dataOut, validOut] = rateConverter (dataIn, validIn,请求);

你可以连接准备好了输出的下游的对象请求输入一个上游的对象。

输入参数

全部展开

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

这些数据可以真实的或复杂的。

对仿真数据类型支持,但不是为H金宝appDL代码生成。

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

输入数据的有效性,指定为一个逻辑标量。

validIn1(真正的),对象捕捉价值dataIn。你可以申请一个有效数据样本的每一个装天花板(L / M)调用对象。您可以使用可选的准备好了输出信号指示当对象可以接受一个新样本。

数据类型:逻辑

请求一个新的输出样本,指定为一个逻辑标量。

请求1(真正的),和一个新的输出数据样本是可用的,对象返回的样本validOut设置为1(真正的)。如果没有可用的样本,返回的对象validOut设置为0(假)。当你设置对象接受这一观点RequestPort财产真正的

数据类型:逻辑

输出参数

全部展开

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

对仿真数据类型支持,但不是为H金宝appDL代码生成。

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

输出数据的有效性,作为一个逻辑标量返回。

validOut1(真正的),数据输出是有效的。当validOut0(假),数据输出无效。

数据类型:逻辑

指示对象是准备一个新的输入样本,作为一个逻辑标量返回。

对象返回准备好了=1(真正的)表明,对象可以接受一个新的输入数据样本在下一个电话。对象设置时返回这个额外的输出ReadyPort财产真正的

数据类型:逻辑

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

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

例子

全部折叠

把一个信号从48千赫至32 kHz使用dsp.HDLFIRRateConverter系统对象™。

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

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

PreallocatedataOutvalidOut更快的模拟信号。

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

创建系统对象。配置它来执行速度转换的2/3倍,使用一个equiripple过滤器。

分子= firpm(70年,[0 0.25 0.32 1][1 1 0 0]);firrc = dsp.HDLFIRRateConverter(2、3、分子);

调用系统对象来执行转换和获得率每个输出样本。

注意:这个对象语法只运行在R2016b或更高版本。如果您使用的是较早的版本中,每个对象的调用替换为等价的一步语法。例如,替换myObject (x)步骤(myObject x)

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 MHz到100 MHz通过使用dsp.HDLFIRRateConverter系统对象™。避免溢出对象作为信号upsampled,手动控制输入速度。

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

Fs = 40 e6;Ns = 50;t = (0: Ns-1)。/ Fs;x = fi (cos(2 *π* 1.2 e6 * t), 1, 16日14);

定义的转换参数。使用一个插值因子5和2的大量毁灭的因素。计算频率的对象可以接受一个新的输入样本。

L = 5;M = 2;stepsPerInput =装天花板(L / M);numSteps = stepsPerInput * Ns;

生成dataInvalidIn基于频率的对象可以接受一个新样本。

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

创建系统对象。配置它来执行速度转换使用指定的因素和一个equiripple冷杉过滤器。

分子= firpm(70年,[0 0.15 0.25 1][1 1 0 0]);rateConverter = dsp.HDLFIRRateConverter (L, M,分子);

创建一个逻辑分析仪来捕捉并查看输入和输出信号。

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”)

调用系统对象来执行转换和获得率每个输出样本。调用逻辑分析仪将每个样本添加到波形显示。

注意:这个对象语法只运行在R2016b或更高版本。如果您使用的是较早的版本中,每个对象的调用替换为等价的一步语法。例如,替换myObject (x)步骤(myObject x)

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

把一个信号从40 MHz到100 MHz通过使用dsp.HDLFIRRateConverter系统对象™。使用可选的准备好了输出信号,以避免超速upsampled对象的数据。的准备好了信号显示对象可以接受一个新的数据样本在下一个调用对象。

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

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

定义的转换参数。使用一个插值因子5和2的大量毁灭的因素。确定调用对象的数量需要转换Ns样本。

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

创建高密度脂蛋白冷杉率转换器系统对象。配置它来执行速度转换使用指定的因素和一个equiripple冷杉过滤器。支持可选准备好了输出端口。

分子= firpm(70年,[0 0.15 0.25 1][1 1 0 0]);rateConverter = dsp.HDLFIRRateConverter (L, M,分子,“ReadyPort”,真正的);

创建一个逻辑分析仪来捕捉并查看输入和输出信号。

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“名字”,“准备好了”)

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

准备好= true;

调用系统对象来执行转换和获得率每个输出样本。应用一个新的输入样本当对象表示它准备好了。否则,设置validIn

注意:这个对象语法只运行在R2016b或更高版本。如果您使用的是较早的版本中,每个对象的调用替换为等价的一步语法。例如,替换myObject (x)步骤(myObject x)

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

把一个信号从40 MHz到100 MHz通过使用dsp.HDLFIRRateConverter系统对象™。使用可选的请求输入信号来控制输出数据率。当接收到的对象请求信号,它返回一个新的输出数据样本。这个示例模型一个时钟频率200 MHz的请求输出样本每秒钟调用对象。

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

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

定义的转换参数。使用一个插值因子5和2的大量毁灭的因素。确定调用对象的数量需要转换Ns样本。

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

创建高密度脂蛋白冷杉率转换器系统对象。配置它来执行速度转换使用指定的因素和一个equiripple冷杉过滤器。支持可选准备好了请求港口。

分子= firpm(70年,[0 0.15 0.25 1][1 1 0 0]);rateConverter = dsp.HDLFIRRateConverter (L, M,分子,“ReadyPort”,真的,“RequestPort”,真正的);

创建一个逻辑分析仪获取并查看输入和输出信号。

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

产生一个信号,请求一个新的输出样本每秒钟调用对象。

请求= false (numSteps, 1);请求(1:2:结束)= true;

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

准备好= true;

调用系统对象来执行转换和获得率每个输出样本。应用一个新的输入样本当对象表示它准备好了。否则,设置validIn。当对象返回有效的输出样本请求被设置为真正的

注意:这个对象语法只运行在R2016b或更高版本。如果您使用的是较早的版本中,每个对象的调用替换为等价的一步语法。例如,替换myObject (x)步骤(myObject x)

k = 1: numSteps如果准备dataIn inputSource = ();结束validIn =准备;[dataOut validOut,准备]= rateConverter (dataIn validIn,请求(k));洛杉矶(dataIn validIn,请求(k), dataOut, validOut,准备好了)结束

创建一个转换函数针对HDL代码生成,和试验台的运动。函数将一个信号从40兆赫到100兆赫。为了避免溢出对象,试验台手动控制输入速度。

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

Fs = 40 e6;Ns = 50;t = (0: Ns-1)。/ Fs;x = fi (cos(2 *π* 1.2 e6 * t), 1, 16日14);

定义的转换参数。使用一个插值因子5和2的大量毁灭的因素。计算频率的对象可以接受一个新的数据样本。

L = 5;M = 2;stepsPerInput =装天花板(L / M);numSteps = stepsPerInput * Ns;

生成dataInvalidIn基于频率的对象可以接受一个新样本。

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

创建一个逻辑分析仪来捕捉并查看输入和输出信号。

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”)

编写一个函数,创建和调用系统对象。

注意:这个对象语法只运行在R2016b或更高版本。如果您使用的是较早的版本中,每个对象的调用替换为等价的一步语法。例如,替换myObject (x)步骤(myObject x)

函数[dataOut, validOut] = HDLFIRRC5_2 (dataIn validIn)% HDLFIRRC5_2使用dsp %过程一个样本的数据。HDLFIRRateConverter系统%的对象。dataIn定点标量值。validIn是一个逻辑标量值。%从这个函数可以生成HDL代码。持续的firrc5_2;如果isempty (firrc5_2)分子= firpm(70年,[0,酒精含量为1],[1 1 0,0]);firrc5_2 = dsp.HDLFIRRateConverter(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)结束

算法

全部展开

这个对象实现的算法描述冷杉HDL优化率转换块引用页面。

扩展功能

介绍了R2015b