NCO
生成实正弦或复正弦信号。
类型: NCO
图书馆中的路径:
|
说明
NCO 单元可生成多通道实正弦或复正弦信号,每个输出通道的频率和相位均独立。生成信号的振幅始终为 "1"。所有输出均为实数,但 exp 除外。 `复杂指数`可通过在下拉列表 输出信号 中选择相应项目启用。有关设备如何计算输出信号的更多信息,请参阅 . 算法.
要获得多通道输出,请将参数 相位增量 和 相位偏移 设置为矢量。两个参数的维数必须相同,这决定了输出通道的数量。每个矢量的每个元素都应用于不同的输出通道。
端口
输出
#
罪过
—
正弦输出
标量 | 矢量 | 矩阵
Details
以标量、矢量或矩阵形式指定的正弦输出信号。您可以使用参数 数据类型 指定信号数据类型。
依赖关系
要使用该端口,请将 输出信号 参数设置为 正弦波`或 `正弦和余弦
.
数据类型 |
Float32"、"Float64"、"Fixed"。 |
复数支持 |
无 |
#
Qerr
—
相位量化误差
标量 | 向量 | 矩阵
Details
以标量、矢量或矩阵形式指定的相位量化误差。
依赖关系
要使用该端口,请选择复选框 显示相位量化误差端口 。
数据类型 |
|
复数支持 |
无 |
#
系数
—
余弦输出
标量
| 向量
| `矩阵
Details
余弦输出信号,指定为标量、矢量或矩阵。您可以使用参数 数据类型 指定信号数据类型。
依赖关系
要使用该端口,请将 输出信号 参数设置为 余弦`或 `正弦和余弦
.
数据类型 |
Float32"、"Float64"、"Fixed"。 |
复数支持 |
无 |
#
exp
—
复指数输出
标量 | 向量 | 矩阵
Details
以标量、矢量或矩阵形式指定的复指数输出。可以使用参数 数据类型 指定信号数据类型。
依赖关系
要使用该端口,请将 输出信号 设置为 复杂指数
.
数据类型 |
Float32"、"Float64"、"Fixed"。 |
复数支持 |
是 |
输入
#
胶印
—
相移
标量 | 向量 | 矩阵
Details
相移信号指定为实数标量、矢量或全矩阵。输入数据必须是分数长度为零的整数或定点数据类型。程序块将移相端口输入数据的每一列视为一个独立通道。相移信号的通道数必须与输入数据的通道数一致。对于每一帧输入数据,程序块可对每个采样和通道应用不同的相移。
依赖关系
要使用该端口,请将 相位偏移源 参数设置为 输入端口
.
数据类型 |
|
复数支持 |
无 |
#
招致
—
相位增量
标量 | 矢量
Details
相位递增信号,指定为标量或矢量的实数值。输入必须是整数数据类型或分数长度为零的定点数据类型。相位递增信号的大小取决于如何指定参数 相位偏移 :
-
在程序块对话框中指定 相位偏移 时,参数 相位增量 必须是与值 相位偏移 相同长度的标量或矢量。程序块会将矢量的每个元素应用到不同的通道,因此矢量的长度决定了输出通道的数量。
-
通过输入端口指定 相位偏移 时,offset 端口会将每一列输入视为一个独立通道。 相位增量 的长度必须等于 offset 端口输入的列数。
依赖关系
要使用该端口,请将 相位增量源 参数设置为 输入端口
.
数据类型 |
|
复数支持 |
无 |
参数
相加器参数
#
相位增量源 —
相位增量设置方法
通过对话框指定
| 输入端口
Details
选择相位增量设置方法:
-
输入端口
- 相位增量值将输入 inc 输入端口; -
通过对话框指定
- 相位增量值可在参数 相位增量 中设置。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
# 相位增量 — 相位增量值
Details
将相位增量指定为整数值的标量或矢量。只允许使用整数数据类型,包括定点和零长分数数据类型。相位增量的维数取决于相移的维数:
-
在程序块参数 相位偏移 中指定相移时,相位增量必须是与相移维数相同的标量或矢量。程序块将矢量的每个元素应用于不同的通道,因此矢量的长度决定了输出通道的数量。
-
通过 offset 输入端口指定相移时,移位端口会将输入的每一列视为一个独立通道。相位增量的长度必须等于移位端口输入的列数。
依赖关系
要使用该参数,请将 相位增量源 设置为 通过对话框指定
.
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
相位偏移源 —
相移设置方法
通过对话框指定
| 输入端口
Details
选择相移设置方法:
-
输入端口
- 相移值将输入 offset 输入端口; -
通过对话框指定
- 相移值可在参数 相位偏移 中设置。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
# 相位偏移 — 相移值
Details
以标量或整数向量的形式指定相移值。只允许使用整数数据类型,包括定点和零长分数数据类型。使用该参数指定相移时,相移必须是与相位增量维数相同的标量或矢量。标量会扩展为与相位增量维数相同的矢量。相移向量的每个元素都应用于不同的输入通道,因此向量的长度决定了输出通道的数量。
依赖关系
要使用该参数,请将 相位偏移源 参数设置为 通过对话框指定
.
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
抖动位数 —
抗锯齿位数
Real number
Details
以正整数指定平滑位数。
依赖关系
要使用此端口,请选择复选框 添加内部抖动 。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
量化相位 —
包括累积阶段的量化
Logical
Details
要启用累积相位量化,请选择该复选框。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
量化累加器位数 —
存储设备的量化位数
Real number
Details
以大于 1 小于存储字长的整数标量指定量化存储位数。该值决定了查找表的条目数。
依赖关系
要使用该参数,请选择复选框 量化相位 。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
显示相位量化误差端口 —
相位量化误差输出
Logical
Details
选择输出相位量化误差。选择此复选框时,Qerr 端口会出现在图块图标上。
依赖关系
要启用该选项,请选择复选框 量化相位 。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
输出参数
#
输出信号 —
输出信号
正弦波
| 余弦
| 复杂指数
| 正弦和余弦
Details
选择设备输出的信号: 正弦波
, 余弦
, 复杂指数`或两个信号 `正弦和余弦
.如果选择 `正弦和余弦`如果选择 ,信号将输出到不同的端口。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
采样时间 —
采样期
Real number
Details
如果区块作为源,则用正标量指定采样周期(以秒为单位)。
依赖关系
要使用该参数,必须将 相位增量源 和 相位偏移源 设置为 通过对话框指定
.当通过块输入端口输入相位增量或相位偏移时,采样周期被继承,不使用此参数。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
每帧采样 —
每帧计数
Real number
Details
以正整数指定每帧采样次数。如果该值大于 1,则相位增量和相位偏移可能会因通道和帧而异,但对于给定帧中的每个通道而言,它们都是恒定的。
使用相移输入端口 offset 时,其帧状态与任何输出端口相同。使用相位递增输入端口 inc 时,不支持帧。
依赖关系
要使用该参数,请将 相位增量源 参数和/或 相位偏移源 参数设置为 通过对话框指定
.
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
定点运行参数
#
舍入模式 —
四舍五入法
地板
Details
该参数为只读参数。
当输入是定点数据类型时, NCO 块始终使用舍入方法 地板
.
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
溢出模式 —
溢出法
绕组
Details
该参数为只读参数。
当输入是定点数据类型时, NCO 块始终使用溢出时的方法 绕组
.
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
累加器
#
数据类型 —
驱动数据类型
二进制点缩放
Details
指定驱动器的数据类型。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
签名 —
硬盘数据的符号类型
是
Details
表示驱动数据类型为符号数据类型。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
世界长度 —
存储字长
Real number
Details
将累加器字长指定为从 2
到 128
的正整数。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
分数长度 —
驱动器数据分数长度
0
Details
指定驱动器数据类型的分数长度始终等于 0
。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
输出
#
数据类型 —
输出数据类型
二进制点缩放
| Float64
| Float32
Details
指定输出数据类型:
-
选择 `Float64`或 `Float32`以实现浮点运算。
-
选择 "二进制点缩放 "时,可以指定输出数据的字长和分数长度(以比特为单位)。
*注意
该程序块的查找表是由双精度浮点数值构建的。因此,输出的最大精度为 53 位。将数据类型 输出 的字长设置为大于 53 位的值不会提高输出的精度。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
符号 —
输出数据的符号类型
是
Details
指定输出数据类型是否为符号类型。
依赖关系
要使用此参数,请将 数据类型 设置为 二进制点缩放
.
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
世界长度 —
输出字长
Real number
Details
将输出数据字的长度指定为从 2
到 128
的正整数。
依赖关系
要使用该参数,请将 数据类型 设置为 二进制点缩放
.
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
分数长度 —
输出数据的长度分数
Real number
Details
以标量整数形式指定输出数据的分数长度。
依赖关系
要使用该参数,请将 数据类型 参数设置为 二进制点缩放
.
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
算法
下图显示了实现该程序块的算法。
数控振荡器(NCO)的实现由两个独立部分组成。首先,相位累加器累加相位增量并添加相移。在这一阶段,还可以添加额外的内部平滑信号(噪声)。然后,通过量化相位累加器部分的结果,并利用这些结果从查找表中选择值,计算出输出 NCO 。由于查找表包含一组有限的条目,因此在正常运行时, NCO 块允许加法器中的数值溢出,并允许它们在可用范围内闭合。
给定所需的输出频率 ,计算 相位增量 块参数值如下:
其中 是驱动器的字长,而
NCO 的频率分辨率(赫兹)定义为
给定所需的相移(以弧度为单位),计算模块参数 相位偏移 如下:
对于 条目的查找表(其中 为驱动器的量化位数),无杂散动态范围 (SFDR) 的估算方法如下:
-
分贝,无噪声;
-
分贝,有噪声。
NCO 模块使用四分之一波查找表方法,存储从 "0 "到 "π/2 "的数值。程序块根据需要使用存储数据类型计算其他值,然后将其转换为输出数据类型。这可能会在该数据类型的范围边界产生量化效应。例如,假设正弦波的值在点 π
处预期为 -1
。由于必须计算该点的查找表值,因此根据驱动和输出数据类型的准确性,该块可能会给出`-1`以外的值。