将幅值和/或相位角信号转换为复信号

您所在的位置:网站首页 复数化为角度 将幅值和/或相位角信号转换为复信号

将幅值和/或相位角信号转换为复信号

2023-07-14 16:54| 来源: 网络整理| 查看: 265

Magnitude-Angle to Complex

将幅值和/或相位角信号转换为复信号

全页展开

库: Simulink / Math Operations HDL Coder / HDL Floating Point Operations

描述支持的运算

Magnitude-Angle to Complex 模块可将幅值和相位角输入转换为复数输出。角度输入必须以弧度为单位。

当有两个模块输入时,模块支持输入维度的以下组合:

两个输入具有相同的维度

一个输入为标量,另一个为 n 维数组

如果模块输入为数组,则输出是复信号数组。幅值输入向量的元素映射到对应的复数输出元素的幅值。同样,角度输入向量的元素映射到对应的复数输出元素的角度。如果一个输入是标量,它将映射到所有复数输出信号的对应分量(幅值或角度)。

超出范围的输入对 CORDIC 逼近方法的影响

如果使用 CORDIC 逼近方法 [1],相位角的模块输入有以下限制:

对于有符号定点类型,角度输入必须在 [–2π, 2π) 弧度范围内。

对于无符号定点类型,角度输入必须在 [0, 2π) 弧度范围内。

下表总结了超出范围的输入的影响:

模块用法输入超出范围时的影响仿真模式出现错误。生成的代码发生未定义的行为。

当您使用 CORDIC 逼近方法时,请确保 Magnitude-Angle to Complex 模块的输入在规定的范围内。对于生成的代码或加速模式,避免依赖未定义的行为。

示例Construct Complex Signal from Magnitude and Phase Angle

Use the Magnitude-Angle to Complex block to construct a complex-valued signal.

打开模型端口输入

全部展开

|u| — 幅值 标量 | 向量 | 矩阵

幅值,指定为实数值标量、向量或矩阵。

依存关系

要启用此端口,请将输入设置为“幅值和角度”。

限制

如果一个输入具有浮点数据类型,则另一个输入也必须使用相同的数据类型。例如,两个信号都必须为 double 或 single。

仅当逼近方法设置为 “CORDIC” 时才支持定点数据类型。当一个输入具有定点数据类型时,另一个输入也必须具有定点数据类型。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

∠u — 相位角弧度 标量 | 向量 | 矩阵

相位角弧度,指定为实数值标量、向量或矩阵。要计算 CORDIC 逼近,角度输入必须满足以下条件:

对于有符号定点类型,弧度必须介于 [–2π, 2π) 之间

对于无符号定点类型,弧度必须介于 [0, 2π) 之间

有关详细信息,请参阅超出范围的输入对 CORDIC 逼近方法的影响。

依存关系

要启用此端口,请将输入设置为“幅值和角度”。

限制

如果一个输入具有浮点数据类型,则另一个输入也必须使用相同的数据类型。例如,两个信号都必须为 double 或 single。

仅当逼近方法设置为 “CORDIC” 时才支持定点数据类型。如果一个输入具有定点数据类型,另一个输入也必须具有定点数据类型。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Port_1 — 幅值或相位角弧度 标量 | 向量 | 矩阵

幅值或相位角弧度,指定为实数值标量、向量或矩阵。

将输入设置为“幅值”时,请在输入端口上指定幅值,在对话框中指定角度。

将输入设置为“角度”时,请在输入端口上指定角度,在对话框中指定幅值。

依存关系

要启用此端口,请将输入设置为“幅值”或“角度”。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

输出

全部展开

Port_1 — 复信号 标量 | 向量 | 矩阵

复信号,由您指定的幅值和相位角构成。

如果模块输入为数组,则输出是复信号数组。幅值输入向量的元素映射到对应的复数输出元素的幅值。同样,角度输入向量的元素映射到对应的复数输出元素的角度。如果一个输入是标量,它将映射到所有复数输出信号的对应分量(幅值或角度)。

数据类型: single | double | fixed point

参数

全部展开

输入 — 输入类型 “幅值” (默认) | “角度” | “幅值和角度”

指定输入的类型:幅值输入、角度输入或者同时输入幅值和角度。

编程用法 模块参数:Input类型:字符向量值:'Magnitude' | 'Angle' | 'Magnitude and angle'默认值:'Magnitude and angle' 角度 — 输出的相位角 0 (默认) | 实数值标量、向量或矩阵

输出信号的常量相位角,以弧度为单位。要计算 CORDIC 逼近,角度输入必须满足以下条件:

对于有符号定点类型,弧度必须介于 [–2π, 2π) 之间

对于无符号定点类型,弧度必须介于 [0, 2π) 之间

有关详细信息,请参阅超出范围的输入对 CORDIC 逼近方法的影响。

依存关系

要启用此参数,请将输入设置为“幅值”。

编程用法 模块参数:ConstantPart类型:字符向量值:常量标量默认值:'0' 幅值 — 输出的幅值 0 (默认) | 实数值标量、向量或矩阵

输出信号的常量幅值,指定为实数值标量、向量或矩阵。

依存关系

要启用此参数,请将输入设置为“角度”。

编程用法 模块参数:ConstantPart类型:字符向量值:实数值标量、向量或矩阵默认值:'0' 逼近方法 — CORDIC 或无 “无” (默认) | “CORDIC”

指定计算输出的逼近方法类型。

逼近方法支持的数据类型何时使用此方法 “无”(默认值)

浮点

您想使用默认的泰勒级数算法。

“CORDIC”

浮点和定点

您需要快速的近似计算时。

使用 CORDIC 逼近时,角度输入需满足以下原则:

对于有符号定点类型,角度输入必须在 [–2π, 2π) 弧度范围内。

对于无符号定点类型,角度输入必须在 [0, 2π) 弧度范围内。

此模块使用以下数据类型传播规则:

幅值输入的数据类型逼近方法复数输出的数据类型

浮点

“无”或 “CORDIC”

与输入相同

有符号、定点

“CORDIC”

fixdt(1, WL +2, FL)

其中 WL 和 FL 是幅值的字长和小数长度

无符号、定点

“CORDIC”

fixdt(1, WL +3, FL)

其中 WL 和 FL 是幅值的字长和小数长度

编程用法 模块参数:ApproximationMethod类型:字符向量值:'None' | 'CORDIC'默认值:'None' 迭代次数 — CORDIC 算法的迭代次数 11 (默认) | 正整数,小于或等于定点输入的字长

要执行 CORDIC 算法的迭代次数。可能值的范围取决于输入的数据类型:

模块输入的数据类型您可以指定的值浮点正整数定点不超过幅值输入字长或相位角输入字长(二者中取较小值)的正整数 依存关系

要启用此参数,请将逼近方法设置为 “CORDIC”。

编程用法 模块参数:NumberOfIterations类型:字符向量值:正整数,小于等于定点输入的字长默认值:'11' 按增益因子的倒数缩放输出 — 缩放复数输出的实部和虚部 on (默认) | off

选中此复选框,以便按缩放因子 (1/CORDIC gain) 缩放复数输出的实部和虚部。此值取决于您指定的迭代次数。随着迭代次数的增加,值将接近于 1.647。

此复选框默认处于选中状态,从而使得复数输出 X + iY 得到数值意义上更为精确的结果。但是,缩放输出增加了两个额外的乘法运算,一个针对 X,另一个针对 Y。

依存关系

要启用此参数,请将逼近方法设置为 “CORDIC”。

编程用法 模块参数:ScaleReciprocalGainFactor类型:字符向量值:'on' | 'off'默认值:'on' 采样时间 — -1 以外的采样时间值 -1 (默认) | 标量 | 向量

将采样时间指定为 -1 以外的值。有关详细信息,请参阅指定采样时间。

依存关系

此参数不可见,除非将其显式设置为 -1 以外的值。要了解详细信息,请参阅不建议设置采样时间的模块。

编程用法 模块参数:SampleTime类型:字符串标量或字符向量默认值:"-1" 模块特性

数据类型

double | single

直接馈通

多维信号

可变大小信号

过零检测

详细信息

全部展开

CORDIC

CORDIC 是 COordinate Rotation DIgital Computer(坐标旋转数字计算方法)的缩写。基于 Givens 旋转的 CORDIC 算法是最节省硬件资源的可用算法之一,因为它只需进行迭代移位相加运算(请参阅“参考资料”)。CORDIC 算法不需要显式乘数。使用 CORDIC,您可以计算各种函数,如正弦、余弦、反正弦、反余弦、反正切和向量幅值。您可以将此算法用于除法、平方根、双曲线和对数函数。

增加 CORDIC 迭代次数可以得出更准确的结果,但这样会增加计算开销和延迟。

参考

[1] Volder, Jack E., “The CORDIC Trigonometric Computing Technique.” IRE Transactions on Electronic Computers EC-8 (1959); 330–334.

[2] Andraka, Ray “A Survey of CORDIC Algorithm for FPGA Based Computers.” Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays. Feb. 22–24 (1998): 191–200.

[3] Walther, J.S., “A Unified Algorithm for Elementary Functions,” Proceedings of the Spring Joint Computer Conference, May 18-20, 1971: 379–386.

[4] Schelin, Charles W., “Calculator Function Approximation,” The American Mathematical Monthly 90, no. 5 (1983): 317–325.

扩展功能C/C++ 代码生成 使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。HDL 代码生成 使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 Verilog 代码和 VHDL 代码。

HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。

HDL 架构

此模块具有多周期实现,这会在生成的代码中引入额外的延迟。要查看增加的延迟,请查看生成的模型或验证模型。请参阅Generated Model and Validation Model (HDL Coder)。

对于具有额外延迟的模块,逼近方法是 “CORDIC”。额外循环迭代次数为 +1。

HDL 模块属性ConstrainedOutputPipeline

通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线处理不会重新分发这些寄存器。默认值为 0。有关详细信息,请参阅ConstrainedOutputPipeline (HDL Coder)。

InputPipeline

要在生成的代码中插入的输入流水线阶段数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 0。有关详细信息,请参阅InputPipeline (HDL Coder)。

OutputPipeline

要在生成的代码中插入的输出流水线阶段数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 0。有关详细信息,请参阅OutputPipeline (HDL Coder)。

限制

Magnitude-Angle to Complex 模块仅支持浮点数据类型的 HDL 代码生成。

定点转换 使用 Fixed-Point Designer™ 设计和仿真定点系统。

将逼近方法设置为 “CORDIC” 时,Magnitude-Angle to Complex 模块支持定点和基整数数据类型。

版本历史记录

在 R2006a 之前推出

另请参阅

Complex to Magnitude-Angle | Complex to Real-Imag | Real-Imag to Complex

主题复信号


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3