复杂Magnitude-Angle
计算大小和相位角使用CORDIC算法的复杂信号
![](http://www.tianjin-qmedu.com/help/dsphdl/ref/complex_magangle_icon.png)
库:
DSP HDL工具箱/数学函数
描述
的复杂Magnitude-Angle块计算复杂信号的大小和相位角和提供hardware-friendly控制信号。实现一个高效的HDL实现块使用管线式坐标旋转数字计算机(CORDIC)算法。
您可以使用此块来实现等操作量化
在硬件。
港口
输入
数据- - - - - -复杂的输入信号
标量|向量
复杂的输入信号,指定为一个标量,一个列向量代表样本,或一个行向量代表通道。使用向量输入数据吞吐量,同时增加使用更多的硬件资源。块实现了并行转换逻辑为每个元素的向量。最多可以包含64个元素的输入向量。
该软件支持万博1manbetx双
和单
仿真的数据类型,但不是HDL代码生成。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
复数的支持:万博1manbetx是的
有效的- - - - - -显示有效的输入数据
标量
控制信号表明如果输入数据是有效的。当有效的是1
(真正的
),阻止捕获值输入数据端口。当有效的是0
(假
),忽略了从输入的值数据端口。
数据类型:布尔
输出
级- - - - - -输入信号的大小
标量|向量
输入信号的大小,作为一个标量,返回一个列向量代表样本,或一个行向量代表通道。这个端口的尺寸匹配输入的尺寸数据端口。
依赖关系
要启用这个端口,设置输出格式参数大小和角度
或级
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|fixdt ([], N, 0)
角- - - - - -角的输入信号
标量|向量
角的输入信号,作为一个标量,返回一个列向量代表样本,或一个行向量代表通道。这个端口的尺寸匹配输入的尺寸数据端口。
依赖关系
要启用这个端口,设置输出格式参数大小和角度
或角
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|fixdt ([], N, 0)
有效的- - - - - -显示有效的输出数据
标量
控制信号,表明如果的数据输出数据港口是有效的。当有效的是1
(真正的
),块返回有效的数据级和/或角港口。当有效的是0
(假
)的值级和/或角端口是无效的。
数据类型:布尔
参数
源的迭代次数- - - - - -的迭代次数
汽车
(默认)|财产
设置输入的迭代次数王−1,选择
汽车
。如果输入的数据类型双
或单
迭代次数设置为16日,默认情况下。指定使用的迭代次数的迭代次数参数,选择
财产
。
的迭代次数- - - - - -CORDIC的迭代次数
正整数
输出格式- - - - - -输出信号格式
大小和角度
(默认)|级
|角
使用这个参数来指定哪些输出端口启用。
要启用级和角输出端口,选择
大小和角度
(默认)。要启用级输出端口和禁用角输出端口,选择
级
。要启用角输出端口和禁用级输出端口,选择
角
。
角格式- - - - - -输出角格式
归一化
(默认)|弧度
返回角输出作为定点值规范化的角度范围[1],选择
归一化
。更多信息见归一化角格式。返回角输出作为定点值范围(-π,π),选择
弧度
。当使用这个块来实现的量化
函数,设置这个参数弧度
。
规模的输出- - - - - -天平输出
在
(默认)|从
选择用这个参数角输出的逆CORDIC增益系数。块实现这个增益系数与CSD逻辑或一个乘数,根据扩展方法参数。
请注意
如果你清楚这个参数和应用CORDIC获得在您的设计,必须排除π/ 4项。因为象限映射算法取代第一CORDIC迭代通过输入映射到角范围[0,π/ 4],最初的旋转不贡献获得连任。增益系数的乘积cos (: 2- n))
,因为n从1到的迭代次数- 1。
扩展方法- - - - - -实现CORDIC得到扩展
CSD
(默认)|乘数
当你设定这个参数CSD
块实现CORDIC获得扩展使用shift-and-add架构乘法操作。这个实现不使用乘法器资源和关键路径的长度可能会增加在你的设计。当您选择乘数
块实现CORDIC获得比例乘法器和增加块由四个周期的延迟。
依赖关系
要启用该参数,选择规模的输出参数。
算法
CORDIC算法
CORDIC算法是一个hardware-friendly方法进行三角函数。这是一个近似解的迭代算法收敛到理想点。块使用CORDIC矢量迭代模式输入在实轴上旋转。
吉文斯旋转一个复数的方法x+iy由一个角θ如下。旋转的方向,d,+ 1为顺时针逆时针−1。
硬件实现,提出cosθ离开一个tanθ术语。
旋转矢量在实轴上,选择一系列的旋转θn这 。删除cosθ学期每个迭代旋转只使用转变和添加操作。
结合失踪的cosθ从每个迭代为一个常数,并应用一个乘数最后旋转的结果。输出的大小是按比例缩小的最终价值x。输出角,z旋转角度的总和。
修改CORDIC算法
的收敛域标准CORDIC旋转≈±99.7°。为了解决这个限制,之前做任何旋转,块地图的输入范围(0,π/ 4)使用这个算法。
如果abs (x) > abs (y) input_mapped = [abs (x)、abs (y)];其他input_mapped = [abs (y)、abs (x));结束
象限映射可以节省硬件资源,降低延迟,减少的数量CORDIC管道阶段。CORDIC增益因子,Kn,因此不包括n = 0,或因为(π/ 4)术语。
CORDIC迭代完成后,块调整角回到原来的位置。首先,它调整到正确的角度π/ 4。
如果abs (x) > abs (y) angle_unmapped = CORDIC_out;其他angle_unmapped =(π/ 2)——CORDIC_out;结束
如果(x < 0) (y < 0) output_angle = - pi + angle_unmapped;其他output_angle =π- angle_unmapped;else if (y < 0) output_angle = -angle_unmapped;
体系结构
块生成一个管线式HDL架构最大化吞吐量。每个CORDIC迭代是一个管道阶段完成的。增益系数,如果启用,实现规范签署数字(CSD)默认逻辑。设置扩展方法参数乘数
实现增益系数乘法器。
如果你使用向量输入,这个块复制此体系结构并行向量的每个元素。
下面的表显示了级和角为特定的输入输出字长(WL),字长(WL)。FL代表部分长度用于定点表示法。
输入单词长度 | 输出级单词长度 |
---|---|
fixdt(0,西城,FL) | fixdt(0,王+ 2,FL) |
fixdt (1、WL FL) | fixdt(1,王+ 1,FL) |
输入单词长度 | 输出角字长 | |
---|---|---|
fixdt([],西城,FL) | 弧度 | fixdt(1、王+ 3、西城) |
归一化 | fixdt(1、王+ 3、西城+ 2) |
CORDIC逻辑在每一个管道阶段实现一个迭代。对于每一个管道阶段,转变和旋转角是常数。
当您设置输出格式来级
,不生成HDL代码块的积累和象限角修正逻辑。
归一化角格式
这种格式规范定点的弧度角值在单位圆。这个用比特可以比使用更高效的范围(0,2π)弧度。这个格式规范化的角度使概括的角度0或2π没有额外的检测和正确的逻辑。
例如,代表这些规范化的角度与3位结果值。
块可实现角度在[0,π/ 4)并将它们映射到正确的八分圆的计算。
延迟
应用有效的输入时,阻止后返回有效的输出的迭代次数+ 4周期。延迟显示在块面具。
当你设置源的迭代次数参数财产
立即,块显示的延迟。当您设置源的迭代次数来汽车
块计算延迟根据输入端口的数据类型和显示时的延迟更新模型。
当你设置源的迭代次数参数汽车
输入的迭代次数王−1,延迟输入王+ 3。如果输入的数据类型双
或单
迭代的数量是16,延迟是20。
请注意
当你设置扩展方法参数乘数
块延迟增加四个周期。
性能
默认配置的性能测量,输出比例和禁用fixdt(12) 1, 16日
输入。当HDL代码生成合成Xilinx®ZC706 (XC7Z045FFG900-2) FPGA设计达到350 MHz时钟频率。它使用下列资源。
资源 | 使用数量 |
---|---|
附近地区 | 891年 |
FFS | 899年 |
Xilinx LogiCORE®DSP48 |
0 |
块RAM (16 k) | 0 |
关键路径 | 2.792 ns |
当你使用一个乘数CORDIC获得扩展,设计使用一个DSP块和缩短关键路径。关键路径差异是不显著的比特数,但随着数据的大小增加,CSD的关键路径实现上升速度比乘数的关键路径。
资源 | 使用数量 |
---|---|
附近地区 | 808年 |
FFS | 956年 |
Xilinx LogiCORE DSP48 |
1 |
块RAM (16 k) | 0 |
关键路径 | 2.574 ns |
合成HDL代码的性能取决于你的目标和合成选项。当你使用向量输入、资源使用情况VectorSize倍的标量资源使用情况。
扩展功能
C / c++代码生成
使用仿真软件生成C和c++代码®编码器™。万博1manbetx
此块支持C / c++万博1manbetx代码生成模型万博1manbetx®加速器加速器和快速模式和DPI组件生成。
HDL代码生成
生成FPGA和ASIC设计的Verilog和VHDL代码使用HDL编码器™。
影响高密度脂蛋白HDL编码器™提供了额外的配置选项和合成逻辑实现。
这一块有一个默认的HDL的架构。
ConstrainedOutputPipeline | 寄存器的数量在输出中通过移动现有的延迟你的设计。分布式流水线不重新分配这些寄存器。默认值是 |
InputPipeline | 数量的输入管道阶段生成的代码插入。分布式流水线和限制输出管道可以移动这些寄存器。默认值是 |
OutputPipeline | 数量的输出管道阶段生成的代码插入。分布式流水线和限制输出管道可以移动这些寄存器。默认值是 |
此块支持代码生成复杂的万博1manbetx信号。
版本历史
介绍了R2014bR2022a:搬到DSP HDL工具箱从DSP系统工具箱
R2022a之前,这一块名叫复杂Magnitude-Angle HDL优化并包含在DSP系统工具箱™DSP系统工具箱HDL的支持万博1manbetx图书馆。
R2022a:选择使用乘数为比例因子
在以前的版本中,块实现CORDIC获得通过使用shift-and-add硬件逻辑。使用一个乘数,设置扩展方法参数乘数
。使用shift-and-add逻辑,设置这个参数CSD
。
R2021b:高通量的接口
块接受并返回一个列向量的元素代表样本。最多可以包含64个样本的输入向量。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。