以区域
生成实或复正弦信号
- 库:
DSP HDL工具箱/信号操作
DSP HDL工具箱/源代码
描述
的以区域块生成真实或复杂的正弦信号,同时提供硬件友好的控制信号。
数控振荡器(NCO)累加相位增量,并使用累加器的量化输出作为包含正弦波值的查找表的索引。定点累加器和量化器数据类型的循环提供了正弦波的周期性,量化减少了给定频率分辨率所需的表的大小。
有关如何使用NCO块生成正弦波的示例,请参见产生正弦波.有关配置和实现的更多信息,请参阅算法部分。
该块还提供了以下特性:
可选的框架输出。
查找表压缩选项,以减少查找表的大小。这种压缩导致精度损失小于一个LSB。看到查找表的压缩为更多的信息。
一个可选的外部抖动输入端口。
一个可选的复位端口,它将相位累加器重置为初始值。
当前NCO阶段的可选输出端口。
港口
请注意
此块出现在来源库与相位增量来源参数设置为
财产
.唯一的输入端口是有效的.此块出现在信号操作库与相位增量来源参数设置为
输入端口
.此配置显示可选的输入端口公司.
这个图标显示NCO块的可选端口。
输入
公司
——相位增量
标量整数
相位增量,指定为标量整数。该块将此值转换为匹配累加器字长。
双
而且单
数据类型支持模拟,但不支持HDL代码生成。
依赖关系
若要启用此端口,请设置相位增量来源参数输入端口
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|fixdt ([], N, 0)
抵消
——相抵消
标量整数
相位偏移,指定为标量整数。
双
而且单
数据类型支持模拟,但不支持HDL代码生成。
依赖关系
若要启用此端口,请设置相抵消源参数输入端口
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|fixdt ([], N, 0)
高频振动
——发抖
Integer |整数的列向量
抖动,指定为整数或整数的列向量。向量的长度必须等于样品每帧参数值。
双
而且单
数据类型支持模拟,但不支持HDL代码生成。
依赖关系
若要启用此端口,请设置高频振动源参数输入端口
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|fixdt ([], N, 0)
有效的
—NCO运行的控制信号
标量
启用NCO操作的控制信号,指定为布尔标量。当这个信号是1
,块增加相位并捕获任何输入值。当这个信号是0
,该块保存相位累加器并忽略任何输入值。
当样品每帧参数大于1
,此值允许处理样品每帧样本。
数据类型:布尔
重置accum
—复位累加器
标量
重置作为布尔标量指定的累加器的控制信号。当这个信号是1
,该块将累加器重置为初始值。这个信号不会重置管道中的输出样本。
依赖关系
要启用此端口,请选择启用累加器复位输入端口参数。
数据类型:布尔
输出
罪,因为实验
——生成的波形
标量|列向量
生成的波形,作为标量或列向量返回,其长度等于样品每帧参数值。输出可以是返回的单个端口罪或因为值,一个返回的端口经验值价值观代表余弦+ j *正弦
,或者返回两个端口罪而且因为值,分别。
当所有输入值为定点类型或禁用所有输入端口时,该块使用输出数据类型参数。当任何输入值为浮点类型时,块将忽略输出数据类型参数。在本例中,块以浮点值的形式返回波形。浮点数据类型支持模拟,但不支持HDL代码生成。
依赖关系
默认情况下,输出端口为正弦波,罪.端口的标签和格式会根据端口的不同而不同输出信号类型参数。
阶段
- NCO的当前阶段
标量|列向量
NCO的当前相位,作为标量或列向量返回,其长度等于样品每帧参数值。相位是量子化累加器的输出,外加偏移和增量。如果禁用量化,该端口将返回应用偏移量和增量的累加器的输出。值的类型fixdt (1, N, 0)
,在那里N
是量化器累加器位数参数值。如果禁用量化,则N
是蓄电池字长参数值。
如果任何输入值是浮点类型,则该块返回阶段作为浮点值。浮点数据类型支持模拟,但不支持HDL代码生成。
依赖关系
要启用此端口,请选择使阶段港口参数。
数据类型:单
|双
|fixdt (1, N, 0)
有效的
—表示输出数据的有效性
标量
指示输出数据有效性的控制信号,作为布尔标量返回。当输出有效的是1
的值罪,因为,经验值,阶段港口是有效的。当输出有效的是0
,输出端口上的值无效。
当样品每帧参数大于1
,该信号表示输出向量中所有元素的有效性。
数据类型:布尔
参数
主要
请注意
此块支持双
而且单
用于模拟,而不是用于HDL代码生成。当所有输入值为定点类型或禁用所有输入端口时,该块使用输出数据类型参数。当任何输入值为浮点类型时,块将忽略输出数据类型参数。在这种情况下,块返回波形和可选的阶段作为浮点值。
若要使用定点设计器™数据类型覆盖功能,您可以获取双
应用输出值双
将数据输入到其中一个可选端口。
相位增量来源
-相位增量源
输入端口
(默认)|财产
您可以通过输入端口或为参数输入值来设置相位增量。如果您选择财产
,相位增量参数出现,供您输入值。如果您选择输入端口
,公司端口出现在块上。
相位增量
-生成波形的相位增量
One hundred.
(默认)|整数
生成的波形的相位增量,指定为整数。该块将此值转换为匹配累加器字长。
依赖关系
若要启用此参数,请设置相位增量来源参数财产
.
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|fixdt ([], N, 0)
相抵消源
-相位偏移源
输入端口
(默认)|财产
您可以通过输入端口或输入参数值来设置相位偏移。如果您选择财产
,相抵消参数出现,供您输入值。如果您选择输入端口
,抵消端口出现在块上。
相抵消
-生成波形的相位偏移
0
(默认)|整数
所生成波形的相位偏移,指定为整数。
依赖关系
若要启用此参数,请设置相抵消源参数财产
.
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|fixdt ([], N, 0)
高频振动源
-抖动位数的来源
财产
(默认)|输入端口
|没有一个
您可以从输入端口或参数设置抖动。如果您选择财产
,抖动比特数参数出现。如果您选择输入端口
,块上出现一个端口。如果您选择没有一个
,块不增加抖动。
抖动比特数
-表示犹豫的比特
4
(默认)|正整数
抖动位数,指定为正整数。
依赖关系
若要启用此参数,请设置高频振动源参数财产
.
样品每帧
-基于帧的输入和输出的向量大小
1
(默认)|正整数
当您将此值设置为1
,块有标量输入和输出。当此值大于1
,高频振动端口需要一个长度的列向量样品每帧和罪,因为,经验值,阶段端口返回长度的列向量样品每帧.
启用累加器复位输入端口
—开启复位控制信号
从
(默认)|在
选中此参数将启用重置accum端口。当重置accum是1
,该块将累加器重置为初始值。
输出信号类型
-输出波形的格式
正弦
(默认)|余弦
|复指数
|正弦和余弦
如果您选择正弦
或余弦
,块显示适用端口,罪或因为.如果您选择复指数
,输出形式为余弦+ j *正弦
端口被标记了经验值.如果您选择正弦和余弦
,块显示两个端口,罪而且因为.
当你设置输出信号类型参数复指数
或正弦和余弦
,该块为波形的每个正弦波和余弦波部分实现1/8正弦波查找表,并使用控制逻辑选择和反转值以生成正弦波和余弦波形式。这种优化意味着双输出模式与单输出模式相比使用了类似的硬件资源。
使阶段港口
-输出电流相位
从
(默认)|在
选择此参数将返回当前的NCO相位阶段端口。相位是量子化累加器的输出,加上偏移和增量。如果禁用量化,该端口将返回累加器的输出,并应用偏移量和增量。
数据类型
舍入模式
-定点运算的舍入模式
地板上
(默认)
舍入模式为定点操作。舍入模式只读参数是否有值地板上
.
溢出模式
—定点操作溢出模式
包装
(默认)
溢出模式为定点操作。溢出模式只读参数。定点数字在溢出时环绕。
蓄电池数据类型
—累加器数据类型
二进制扩展点
(默认)
累加器数据类型说明。该参数为只读,有值二进制扩展点
.方法定义定点数据类型蓄电池签署,蓄电池字长,蓄电池部分的长度参数。
蓄电池签署
-有符号或无符号累加器数据格式
签署
(默认)
该参数为只读。所有输出都是有符号格式。
蓄电池字长
-累加器字长
16
(默认)|整数
单位以位为单位。该值必须包含符号位。
如果你清除数字转换阶段参数,那么蓄电池字长决定了LUT的大小。对于HDL代码生成,LUT大小必须在2到2之间17条目。当您选择启用查找表压缩方法,取值范围为[5,21]的整数。当你清楚启用查找表压缩方法,取值范围为[3,19]的整数。有关此参数如何影响LUT大小的更多信息,请参见算法部分。
当您选择数字转换阶段参数的取值,是没有限制的蓄电池字长参数值。
蓄电池部分的长度
-累加器分数长度
0
(默认)|整数
该参数为只读。累加器分数长度为零位。
累加器对整数进行运算。如果相位增量为fixdt
键入带有小数部分的类型,则块返回错误。
数字转换阶段
-量化累积相位
从
(默认)|在
当您选择数字转换阶段,块将相位累加器的结果量化到固定位宽。块使用这个量化值从查找表中选择一个波形值。量化相位累加器的输出使您能够在不降低频率分辨率的情况下减小查找表的大小。方法选择查找表的大小量化器累加器位数参数。
当你清楚数字转换阶段,该块使用完整的累加器值作为查找表的地址。
量化器累加器位数
-量化器累加器位数
12
(默认)|整数
量化器累加器位数,指定为小于累加器字长的整数标量。对于HDL代码生成,该参数值必须导致LUT大小在2到2之间17条目。当您选择启用查找表压缩方法,取值范围为[5,21]的整数。当你清楚启用查找表压缩方法,取值范围为[3,19]的整数。有关此参数如何影响LUT大小的更多信息,请参见算法部分。
依赖关系
若要启用此参数,请选择数字转换阶段参数。
输出数据类型
-输出数据类型
二进制扩展点
(默认)|双
|单
对象的数据类型罪,因为,经验值港口。如果任何输入是浮点类型的,则该参数将被忽略。在这种情况下,输出数据类型为浮点型。
如果您选择二进制扩展点
方法定义定点数据类型输出了,输出字长,输出部分的长度参数。
输出了
—有符号或无符号输出数据格式
签署
(默认)
该参数为只读。所有输出都是有符号格式。
输出字长
-输出字长
16
(默认)|整数
单位以位为单位。该值必须包含符号位。
输出部分的长度
-输出分数长度
14
(默认)|整数
单位以位为单位。
模型的例子
算法
正弦波的频率分辨率取决于蓄能器的大小。给定一个样本时间,T年代、所需输出频率分辨率Δf,计算所需累加器字长,N.
对于所需的输出频率Fo,计算相位增量.
量化相位累加器的输出使您能够在不降低频率分辨率的情况下减小查找表的大小。计算量化字长以达到所需的伪散动态范围(SFDR).
相位偏移和抖动可在累加器阶段随意添加。对于输出波形的所需相位偏移(以弧度为单位),计算相抵消该块在累加器中添加的值。
NCO实现取决于您是否选择启用查找表压缩方法.
在没有查找表压缩的情况下,块使用与以区域块。LUT的大小为2问-2×W位,问是量化器累加器位数而且W是输出字长.
该块转换相位增量值以匹配累加器字长。
如果不启用数字转换阶段,然后问=N,在那里N是蓄电池字长.选择这些参数时,请考虑对模拟器内存和硬件资源的影响。
当你设置输出信号类型参数复指数
或正弦和余弦
,该块为波形的每个正弦波和余弦波部分实现1/8正弦波查找表,并使用控制逻辑选择和反转值以生成正弦波和余弦波形式。这种优化意味着双输出模式与单输出模式相比使用了类似的硬件资源。
有关如何使用NCO块生成正弦波的示例,请参见产生正弦波.
查找表的压缩
选择查找表(LUT)压缩时,会出现以区域块应用桑德兰压缩方法。桑德兰技术使用三角恒等式将四分之一正弦波的每个相位分为三个分量,并表示为:
如果1 / 4正弦相位有问-2
位,然后是相位分量一个而且B有一个字的长度拉=磅=装天花板((问2) / 3)
.阶段组件C包含剩余的相位位。如果相位有12位,那么四分之一正弦相位有10位,分量定义为:
一个即四个最有效位
B,接下来的四个比特
C,剩下的两个最低有效位
给定A、B和C的相对大小,方程可以近似为:
的以区域block用一个LUT实现这个方程 和一个LUT .第二项是一个很好的校正因子,可以在不损失精度的情况下截断到更少的位。因此,第二个LUT返回一个4位的结果。
当默认累加器大小为16位,默认量化相位宽度为12位时,lut使用28×16 + 26×4 bits (4.5 kb)。为了进行比较,没有压缩的1 / 4正弦查找表使用210×16 bits (16 kb)。压缩近似在一个LSB内是准确的,导致输出的信噪比至少为60 dB。看到[1].
当你设置类型的输出参数复指数
或正弦和余弦
,该块为波形的每个正弦和余弦部分实现了一个压缩查找表。硬件资源的使用仍然小于使用未压缩表的双输出模式。
控制信号
该块有两个输入控制信号,重置accum(可选),有效的,输出控制信号1个,有效的.当重置accum是1
,该块将相位累加器设置为其初始值。当输入有效的是1
,块增加相位并捕获任何输入值。当这个信号是0
,该块保存相位累加器并忽略任何输入值。当输出有效的信号是1
,则其他输出端口上的值有效。
延迟
NCO块的延迟为6个周期。
性能
的NCO块生成的HDL代码的合成后资源利用情况产生正弦波的例子。合成的目标是Xilinx®佐- 706 (XC7Z045ffg900-2) FPGA。
资源 | 使用 |
---|---|
附近地区 | 744 |
片注册 | 156 |
Xilinx LogiCORE DSP48 | 0 |
除去地点和路线,设计的最大时钟频率为477 MHz。
参考文献
[1] Cordesses, L.,“直接数字合成:周期波产生的工具(第1部分)”。IEEE信号处理杂志.第21卷,2004年7月第4期,第50-54页。
扩展功能
C / c++代码生成
使用Simulink®Coder™生成C和c++代码。
此块支持Simulink的C/ c++代码生成®加速器和快速加速器模式,用于DPI组件生成。
HDL代码生成
使用HDL Coder™为FPGA和ASIC设计生成Verilog和VHDL代码。
HDL Coder™提供了影响HDL实现和合成逻辑的额外配置选项。
这个块有一个默认的HDL架构。
ConstrainedOutputPipeline | 通过在设计中移动现有的延迟来放置在输出上的寄存器数量。分布式管道不会重新分发这些寄存器。默认值是 |
InputPipeline | 要在生成的代码中插入的输入管道阶段的数量。分布式流水和约束输出流水可以移动这些寄存器。默认值是 |
OutputPipeline | 要在生成的代码中插入的输出管道阶段的数量。分布式流水和约束输出流水可以移动这些寄存器。默认值是 |
当您设置高频振动源来
财产
,块增加随机抖动每个周期。如果使用这些设置生成验证模型,则会显示警告。内部抖动的随机产生会导致模型之间的不匹配。您可以增加验证比较的误差范围,以解释差异。你也可以禁用抖动或设置高频振动源来输入端口
为了避免这个问题。你不能使用NCO块复位同步子系统(高密度脂蛋白编码器).
版本历史
介绍了R2013aR2022a:搬到DSP HDL工具箱从DSP系统工具箱
在R2022a之前,这个区块被命名NCO HDL优化并包含在DSP系统工具箱™中DSP系统工具箱HDL支持图书馆。
R2022a:双输出模式资源优化
当你设置输出信号类型参数复指数
或正弦和余弦
,该块为波形的每个正弦波和余弦波部分实现1/8正弦波查找表,并使用控制逻辑选择和反转值以生成正弦波和余弦波形式。这种优化意味着双输出模式使用类似于单输出模式的硬件资源。在以前的版本中,该块为每个输出波形实现了一个查找表。
R2020a:需要有效的输入端口
在以前的版本中,输入validIn端口是可选的。现在需要重新命名它有效的.如果不使用其他输入端口,则块使用有效的信号作为使能信号。
R2020a:用于浮点输入的相位量化
从浮点输入值返回的输出波形已经改变。输出波形现在与定点类型中指定的相同输入值返回的波形相匹配。
在R2020a之前,当使用浮点输入类型时,块不在内部量化相位。该块期望以弧度指定的浮点相位增量和相位偏移输入。现在,块在内部量化相位,您必须根据量化的大小指定输入相位增量和偏移量,无论是浮点输入类型还是定点输入类型。
例如,在R2020a之前,用于浮点HDL NCO生成输出样本,期望输出频率为F0的采样频率F年代,你必须指定相位增量为2π(F0/F年代),相位偏移为π/2。
从R2020a开始,必须根据量化大小指定相位增量和相位偏移,N.这些输入值与定点类型使用的输入值相同。指定相位增量为(F0×2N)/F年代相位偏移为(π/2)×2N/ 2π,或2N/4.
R2020a:LUTRegisterResetType选项删除
在以前的版本中,可以从两个选项中选择LUTRegisterResetType的参数高密度脂蛋白块属性对话框。这两个选项是默认的
而且没有一个
.从R2020a开始,块忽略参数设置并使用没有一个
对于该参数值。此选项不连接复位信号到LUT寄存器。此配置使合成工具能够确定是使用lut还是BRAM实现查找表。
R2020a:高通量的接口
您可以从块生成基于帧的波形。该块返回一个向量,其中每个元素表示时间上的一个样本。设置样品每帧参数设置为所需的输出向量大小。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。