主要内容

dsp.HDLComplexToMagnitudeAngle

为生成HDL代码而优化的复信号幅度和相位角

描述

dsp.HDLComplexToMagnitudeAngle系统对象™计算一个复杂信号的幅度和相角。它提供硬件友好的控制信号。System对象使用流水线坐标旋转数字计算机(CORDIC)算法来实现hdl优化实现。

要计算复杂信号的幅值和相位角,请执行以下操作:

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

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

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

HCMA= dsp。HDLComplexToMagnitudeAngle返回一个dsp.HDLComplexToMagnitudeAngle系统对象,HCMA,它计算复输入信号的幅度和相角。

例子

HCMA= dsp。HDLComplexToMagnitudeAngle (名称,值设置的属性HCMA使用一个或多个名称-值对。将每个属性名用单引号括起来。

例子:cma = dsp.HDLComplexToMagnitudeAngle(“AngleFormat”、“弧度”)

属性

全部展开

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

如果一个属性是可调,您可以随时更改它的值。

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

要返回的输出值类型,指定为的大小和角度“级”“角”。您可以选择让对象返回输入信号的幅值或输入信号的相位角,或同时返回两者。

物体相位角输出值格式,具体为:

  • “归一化”-定点格式,在[- 1,1]范围内对角度进行归一化。

  • “弧度”—定点值范围[π,−π]。

按CORDIC增益因子的倒数缩放输出,指定为符合事实的

请注意

如果您的设计稍后在数据路径中包含增益因子,则可以设置ScaleOutput,并在后面的增益中包括CORDIC增益因子。有关此增益因子的计算,请参阅算法.对象通过将输入值映射到角度范围[0,π/4]来替换第一次CORDIC迭代。因此,初始旋转不贡献增益项。

的来源NumIterationsCORDIC算法的属性,指定为:

  • “自动”—设置迭代次数小于输入单词的长度。如果输入是仅有一个的,迭代次数为16次。

  • “属性”——使用NumIterations财产。

CORDIC算法请参见算法

对象执行的CORDIC迭代次数,指定为整数。迭代次数必须小于或等于输入字长度的1。

CORDIC算法请参见算法

依赖关系

若要启用此属性,请设置自然资源“属性”

用法

描述

例子

玛格validOut) = HCMA (XvalidIn转换复数值的标量或向量X变成它们的分量大小和相角。validInvalidOut分别表示输入信号和输出信号的有效性的逻辑标量。

玛格validOut) = HCMA (XvalidIn只返回的分量大小X

要使用此语法,请设置输出值“级”

例子:HCMA = dsp.HDLComplextoMagnitudeAngle(“OutputValue”、“级”);

validOut) = HCMA (XvalidIn只返回的分量相角X

要使用此语法,请设置输出值“角”

例子:HCMA = dsp.HDLComplextoMagnitudeAngle(“OutputValue”、“角”);

输入参数

全部展开

输入信号,指定为标量、表示时间样本的列向量或表示通道的行向量。使用向量输入增加数据吞吐量,同时使用更多的硬件资源。对象并行地为向量的每个元素实现转换逻辑。输入向量最多可以包含64个元素。

仅有一个的模拟支持数据类型,但不支持HD金宝appL代码生成。

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

validIn符合事实的,块从达坦输入参数。的validIn参数应用于向量输入参数中的所有样本。

数据类型:逻辑

输出参数

全部展开

由复输入信号计算的大小,返回为标量、表示时间样本的列向量或表示通道的行向量。属性的维度和数据类型匹配达坦论点。

依赖关系

要启用此参数,请设置输出值财产“大小和角度”“级”

从复数输入信号计算的角度,以标量、表示时间样本的列向量或表示通道的行向量的形式返回。此参数的维度和数据类型与达坦论点。该值的格式取决于角格式财产。

依赖关系

要启用此参数,请设置输出值财产“大小和角度”“角”

对象集validOut符合事实的巨大输出参数。的validOut参数应用于向量输出参数中的所有样本。

数据类型:逻辑

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

使用dsp。HDLComplextoMagnitudeAngle目的来计算复信号的幅值和相角。该对象使用CORDIC算法来实现高效的硬件实现。

选择单词长度并创建随机的复杂输入信号。然后,将输入信号转换为定点。

a=-4;b=4;inputWL=16;输入fl=12;numSamples=10;reData=((b-a)。*兰特(numSamples,1)+a;imData=((b-a)。*rand(numSamples,1)+a;数据输入=(fi(reData+imData*1i,1,inputWL,inputFL));图形绘图(数据输入)标题(“随机复杂输入数据”)xlabel(“真实”的)伊拉贝尔(“虚”

编写一个创建和调用系统对象的函数™. 您可以从该函数生成HDL。

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

作用(杂志、角、validOut) = Complex2MagAngle(阴、validIn)%复杂角度%将一个复杂数据样本转换为幅度和角度数据。% yIn是一个定点复数。% validIn是一个逻辑标量值。你可以从这个函数生成HDL代码。持续的cma;如果Isempty (cma) cma = dsp。HDLComplexToMagnitudeAngle (“角度格式”“弧度”);结束(杂志、角、validOut) = cma(阴,validIn);结束

CORDIC迭代的次数决定了对象为每个输入样本计算答案所需的延迟。延迟NumIterations + 4.在这个例子中,自然资源设置为默认值,“自动”,因此对象使用inputWL-1迭代。延迟是inputWL + 3

延迟=输入WL+3;mag=零(1,numSamples+延迟);ang=零(1,numSamples+延迟);validOut=假(1,numSamples+延迟);

调用函数以转换每个样本。应用所有输入样本后,继续使用无效输入调用函数以刷新剩余的输出样本。

ii = 1:1:numSamples [mag(ii),ang(ii),validOut] = Complex2MagAngle(dataIn(ii),true);结束ii=(numSamples+1):1:(numSamples+latency)[mag(ii),ang(ii),validOut(ii)]=Complex2MagAngle(fi(0+0*1i,1,inputWL,inputFL),false);结束%删除无效的输出值mag = mag(validOut == 1);var validOut == 1; / / validOut == 1杂志图极地(ang,“--r”%红色是由hdl优化的System对象输出的标题(从dsp的输出。HDLComplexToMagnitudeAngle”)magD=abs(数据输入);angD=角度(数据输入);图形极坐标(angD,magD,“——b”%蓝色是由abs和角度函数输出的标题(‘abs和角度功能的输出’

算法

全部展开

扩展功能

另请参阅

功能

R2014b中引入