主要内容

dsphdl.NCO

生成真实的或复杂的正弦信号

描述

甲系统对象™生成真实的或复杂的正弦信号,同时提供hardware-friendly控制信号。数控振荡器(NCO)积累阶段增加和使用的量化输出蓄电池作为索引来查找表包含正弦波值。定点的环绕蓄电池和量化器的数据类型提供周期性的正弦波,并量化减少必要的表的大小对于一个给定的频率分辨率。

NCO的高级体系结构

例如如何使用这个系统对象,生成一个正弦波设计一个HDL-Compatible NCO来源。有关配置和实现的更多信息,请参考算法部分。

甲系统对象提供了这些功能。

  • 可选的框架输出。

  • 一个查找表压缩选项减少查找表的大小。这种压缩结果小于1 LSB损失精度。看到查找表的压缩为更多的信息。

  • 一个可选的输入参数为外部发抖。

  • 一个可选的重置认为重置相位累加器的初始值。

  • 一个可选的输出参数为当前NCO阶段。

生成真实的或复杂的正弦信号:

  1. 创建dsphdl.NCO对象并设置其属性。

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

hdlnco= dsphdl.NCO创建一个数控振荡器(NCO)系统对象,hdlnco,生成一个真实的或复杂的正弦信号。生成的信号的振幅总是1。

例子

hdlnco= dsphdl.NCO (名称,值)设置使用一个或多个属性名称-值对。在单引号附上每个属性的名字。例如,

hdlnco = dsphdl.NCO (“NumQuantizerAccumulatorBits”,12,…“AccumulatorWL”, 16);

hdlnco= dsphdl.NCO (公司、“PhaseIncrementSource”、“房地产”)创建一个区域的PhaseIncrement属性设置为公司,一个整数标量。使用PhaseIncrement属性,设置PhaseIncrementSource财产“属性”。您可以添加其他名称,值对之前或之后PhaseIncrementSource

属性

全部展开

请注意

这个对象支持浮点类型的模金宝app拟而不是HDL代码生成。当所有输入值定点类型或所有输入参数被禁用,对象决定了输出类型使用OutputDataType财产。当任何输入值是浮点类型,对象忽略了OutputDataType财产。在这种情况下,对象返回波形和可选的阶段作为浮点值。

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

波形的一代

你可以设置相位增量输入参数或通过指定一个值的属性。指定“属性”使用增量配置阶段PhaseIncrement财产。指定输入端口的设置阶段增加使用公司论点。

生成的波形相位增量,指定为一个整数。对象这个值以匹配蓄电池单词长度。

依赖关系

要启用这个特性,设置PhaseIncrementSource财产“属性”

数据类型:||int8|int16|int32|uint8|uint16|uint32|fixdt ([], N, 0)

你可以设置相抵消输入参数或通过指定一个值的属性。指定“属性”使用增量配置阶段PhaseOffset财产。指定输入端口的设置阶段增加使用抵消论点。

生成的波形相抵消,指定为一个整数。

依赖关系

要启用这个特性,设置PhaseOffsetSource财产“属性”

数据类型:||int8|int16|int32|uint8|uint16|uint32|fixdt ([], N, 0)

你可以设置抖动的数量从一个输入参数或属性,或者你可以禁用发抖。指定“属性”配置使用高频振动的比特数NumDitherBits财产。指定输入端口的设置使用高频振动的比特数高频振动论点。指定“没有”禁用发抖。

优柔寡断的比特数,指定为一个正整数。

依赖关系

要启用这个特性,设置DitherSource财产“属性”

矢量大小不定位输出,指定为一个正整数。当你将这个值设置为1,对象标量的输入和输出。当这个值大于1,高频振动输入参数必须是一个列向量的长度SamplesPerFrameY阶段输出参数返回列向量的长度SamplesPerFrame

查找表压缩,指定为一个逻辑0 ()或1 (真正的)。默认情况下,对象实现noncompressed查找表,和输出匹配的输出dsp.NCO系统对象。当启用该选项时,对象实现一个压缩的查找表。桑德兰压缩方法减少了查找表的大小,失去小于1 LSB的精度。虚假的自由动态范围(SFDR)经验1 - 3 dB低于noncompressed情况。压缩的硬件节省查找表允许房间提高性能通过增加蓄电池的字长和量化比特数。压缩方法的细节,请参阅算法

类型的输出波形。如果您选择的正弦的余弦返回一个对象因为价值。如果您选择“复指数”,输出值,经验值的形式余弦+ j *正弦。如果您选择正弦和余弦的,对象返回两个值,因为

当你设置波形财产“复指数”正弦和余弦的1/8,对象实现正弦波查找表为每个波形的正弦和余弦的部分,并使用控制逻辑选择和转化生成的值正弦和余弦波形。这种优化意味着双重输出模式使用相同的硬件资源相对于单一输出模式。

将此属性设置为1(真正的)返回当前NCO阶段阶段输出参数。阶段是量子化的蓄电池的输出偏移和增值应用。如果这个参数量化是禁用的,返回的输出蓄电池抵消和增值应用。

当这个属性1(真正的),接受的对象ResetAccum输入参数。当ResetAccum参数是1(真正的),对象重置蓄电池初始值。

数据类型

这个属性是只读的。

溢出模式为定点操作。

这个属性是只读的。

舍入模式为定点操作。

这个属性是只读的。

蓄电池数据类型描述。对象定义了定点数据类型使用AccumulatorSigned,AccumulatorWL,AccumulatorFL属性。

这个属性是只读的。

签署或无符号累加器的数据格式。签署所有输出格式。

蓄电池单词长度,在部分,指定为一个整数。这个值必须包括符号位。

PhaseQuantization属性是0,然后AccumulatorWL确定的尺寸。对HDL代码生成的大小必须在2和2之间17条目。当你设置LUTCompress财产1(真正的),AccumulatorWL必须是一个整数范围内(5,21)。当你设置LUTCompress财产0(),AccumulatorWL必须是一个整数范围内(3、19)。更多信息关于这个参数影响的大小,看到查找表的压缩部分。

当你设置PhaseQuantization财产1蓄电池是没有限制,字长属性值。

这个属性是只读的。

蓄电池部分的长度,在碎片。蓄电池作用于整数。如果相位增量定点小数部分类型,对象返回一个错误。

是否量化积累阶段,指定为1(真正的)或0()。启用这个属性时,对象使量子化的结果阶段蓄电池固定的位宽。对象使用这个量化值选择波形查找表的值。量化相位累加器的输出使您能够降低查找表的大小,而不降低的频率分辨率。选择使用的查找表的大小NumQuantizerAccumulatorBits财产。

禁用此属性时,对象使用完整的累加值作为查找表的地址。

量化器累加器的位元数,指定为一个整数大于4,小于AccumulatorWL属性值。HDL代码生成,这个参数的值必须导致附近地区大小2 - 217条目。

当你设置LUTCompress财产1(真正的),AccumulatorWL必须是一个整数范围内(5,21)。当你设置LUTCompress财产0(),AccumulatorWL必须是一个整数范围内(3、19)。更多信息关于这个参数影响的大小,看到查找表的压缩部分。

当你设置QuantizePhase财产真正的,是没有限制的NumQuantizerAccumulatorBits属性值。

依赖关系

要启用这个特性,设置PhaseQuantization财产1(真正的)。

输出数据类型。如果您指定“二点缩放”,对象定义了定点数据类型使用OutputSigned,OutputWL,OutputFL属性。

将忽略此参数如果任何输入浮点类型。在这种情况下,输出数据类型

这个属性是只读的。

签署或无符号输出数据格式。签署所有输出格式。

位,输出单词长度指定为一个整数。这个值必须包括符号位。

位,输出部分长度指定为一个标量整数。

使用

描述

对象返回的波形值,Y作为一个正弦值,一个余弦值,复指数的值,或正弦、余弦)的值,根据波形财产。

(Y,ValidOut)= hdlnco (公司,ValidIn)返回一个正弦信号,Y,HDLNCO系统生成的对象,利用相位增量,公司。当ValidIn真正的,公司添加到蓄电池。的公司参数是可选的。此外,您可以指定阶段增加属性。

例子

(Y,ValidOut)= hdlnco (ValidIn)返回一个波形,Y使用波形参数属性,而不是输入参数。

使用这个语法,设置PhaseIncrementSource,PhaseOffsetSource,DitherSource属性“属性”。这些属性是相互独立的。例如:

hdlnco = dsphdl.NCO (“PhaseIncrementSource”,“属性”,“PhaseIncrement”phIncr,“PhaseOffset”phOffset,“NumDitherBits”4)

例子

(Y,ValidOut)= hdlnco (公司,抵消,高频振动,ValidIn)返回一个波形,Y相位增量,公司相抵消,抵消优柔寡断,高频振动

这个语法适用于当你设置PhaseIncrementSource,PhaseOffsetSource,DitherSource属性输入端口的。这些属性是相互独立的。你可以混合和匹配的激活这些参数。PhaseIncrementSource输入端口的默认情况下。例如:

hdlnco = dsphdl.NCO (“PhaseOffsetSource”,输入端口的,“DitherSource”,输入端口的)k = 1:1 / Ts y (k) = hdlnco (phIncr, phOffset ditherBits,真的);结束

(Y,阶段,ValidOut)= hdlnco (___)返回一个波形,Y当前阶段,阶段。这个阶段是量子化的蓄电池的输出。

使用这个语法,设置PhasePort财产真正的。这个语法可以包括任何从其他语法的参数。

(___)= hdlnco (___,ResetAccum,ValidIn)重置累加器的值,但没有复位输出样本的管道。如果ValidIn真正的,那么对象继续生成输出波形从重置累加值。

使用这个语法,设置ResetAction财产1(真正的)。这个语法可以包括任何从其他语法的参数。

输入参数

全部展开

相位增量,指定为一个标量整数。对象这个值以匹配蓄电池单词长度。

该软件支持金宝app仿真的数据类型,但不是HDL代码生成。

依赖关系

要启用这个论点,设置PhaseIncrementSource财产输入端口的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fixdt ([], N, 0)

控制信号,使区域操作,指定为一个逻辑标量。当ValidIn真正的,对象增量阶段和捕捉任何输入值。当ValidIn,对象持有的相位累加器,无视任何输入值。

SamplesPerFrame属性值大于1,这个信号可以处理的SamplesPerFrame样本。

数据类型:逻辑

相抵消,指定为一个标量整数。

数据类型支持模拟而不是HDL代金宝app码生成。

依赖关系

要启用这个论点,设置PhaseOffsetSource财产输入端口的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fixdt ([], N, 0)

优柔寡断,指定为一个整数或一个列向量的整数。向量的长度必须相等SamplesPerFrame属性值。

该软件支持金宝app仿真的数据类型,但不是HDL代码生成。

依赖关系

要启用这个论点,设置DitherSource财产输入端口的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fixdt ([], N, 0)

控制信号,重置蓄电池,指定为一个逻辑标量。当这个信号真正的对象重置蓄电池,其初始值。这个信号不重置输出样本的管道。

依赖关系

要启用这个论点,设置ResetAction财产1(真正的)。

数据类型:逻辑

输出参数

全部展开

生成的波形,返回为一个标量或矢量的长度SamplesPerFrame。这个参数可以是一个因为值,一个经验值值代表余弦+ j *正弦,或一对参数形式(正弦,余弦)

如果任何输入浮点类型,对象返回波形和浮点值阶段参数,否则使用类型定义的对象返回值OutputDataType财产。

该软件支持金宝app仿真的数据类型,但不是HDL代码生成。

依赖关系

默认情况下,输出波形是正弦波。输出波形的格式取决于波形财产。

控制信号显示输出数据的有效性,作为一个指定逻辑标量。当validOut真正的的值,Y阶段是有效的。当validOut的值,Y阶段不是有效的。

SamplesPerFrame属性值大于1,这个信号表明输出向量中的所有元素的有效性。

数据类型:逻辑

返回当前阶段的区域,作为一个标量或矢量的长度SamplesPerFrame。阶段是量子化的蓄电池的输出偏移和增值应用。如果量化是禁用的,这个端口返回的输出蓄电池抵消和增值应用。

类型的值fixdt (1, N, 0),在那里NNumQuantizerAccumulatorBits属性值。如果量化是禁用的NAccumulatorWL属性值。

如果输入参数是浮点类型,对象返回阶段参数作为一个浮点值。浮点类型支持模拟而不是HDL代码生成。金宝app

依赖关系

要启用这个论点,设置PhasePort财产1(真正的)。

数据类型:||fixdt (1, N, 0)

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

这个例子展示了如何设计一个HDL-compatible NCO来源。

编写一个函数,创建和调用系统对象™,基于波形的要求。你可以从这个函数生成高密度脂蛋白。

函数你= HDLNCO510 (validIn)% HDLNCO510%生成一个样本区域使用dsphdl波形。以区域系统对象(TM)% validIn是一个逻辑标量值%相位增量、相位偏移和抖动是固定的。%从这个函数可以生成HDL代码。持续的nco510;如果isempty (nco510)%计算对象的参数结果以来常量值,这个%的代码不包括在生成的高密度脂蛋白。生成的HDL代码%的NCO对象初始化常数属性值。F0 = 510;%的目标输出频率在赫兹dphi =π/ 2;%的目标相抵消df = 0.05;%在赫兹的频率分辨率minSFDR = 96;%的免费的动态范围(SFDR)在dBTs = 1/4000;%样本在秒%计算所需的蓄电池的比特数的频率%的分辨率和量子化的蓄电池部分的数量满足SFDR%的要求。Nacc =装天花板(log2 (1 / (df * Ts)));%的实际频率分辨率达到= 1 / (Ts * 2 ^ Nacc)Nqacc =装天花板((minSFDR-12) / 6);%计算相位增量和偏移量达到目标频率%和偏移量。phIncr =圆(F0 * t * 2 ^ Nacc);phOffset = 2 ^ Nacc * dphi /(2 *π);nco510 = dsphdl.NCO (“PhaseIncrementSource”,“属性”,“PhaseIncrement”phIncr,“PhaseOffset”phOffset,“NumDitherBits”4“NumQuantizerAccumulatorBits”Nqacc,“AccumulatorWL”(Nacc);结束你= nco510 (validIn);结束

调用对象生成正弦波数据点。对象的输入是有效的控制信号。

Ts = 1/4000;y = 0 (1,1 / Ts);k = 1:1 / Ts y (k) = HDLNCO510(真正的);结束

情节的均方谱510 Hz NCO产生的正弦波。

sa =简介(“SampleRate”1 / Ts);sa。年代pectrumType =的功率密度;sa。PlotAsTwoSidedSpectrum = false;sa (y ')

算法

全部展开

正弦波的频率分辨率取决于蓄电池的大小。给定一个样本,T年代和所需的输出频率的分辨率Δf,计算所需的蓄电池单词长度,N

N = 装天花板 ( 日志 2 ( 1 T 年代 Δ f ) )

对于一个想要的输出频率Fo,计算相位增量

p h 一个 年代 e n c r e e n t = ( F 0 T 年代 2 N )

量化相位累加器的输出使您能够降低查找表的大小,而不降低的频率分辨率。计算量化字长来实现所需的伪自由动态范围(SFDR)。

= 装天花板 ( 年代 F D R 12 6 )

相位偏移和抖动是有选择地添加在蓄电池阶段。所需的相位偏移(弧度)的输出波形,计算相抵消值的对象在蓄电池补充道。

p h 一个 年代 e o f f 年代 e t = 2 N d e 年代 r e d p h 一个 年代 e o f f 年代 e t 2 π

NCO的实现取决于你是否启用LUTCompress财产。

没有查找表压缩,对象使用相同的quarter-sine查找表dsp.NCO对象。附近地区的大小是22×W位,NumQuantizerAccumulatorBitsWOutputWL

NCO的架构,显示每个块参数影响的计算

对象将相位增量值匹配蓄电池单词长度。

如果你不让PhaseQuantization,然后=N,在那里NAccumulatorWL。考虑到影响模拟器内存和硬件资源,当你选择这些参数。

当你设置波形财产“复指数”正弦和余弦的1/8,对象实现正弦波查找表为每个波形的正弦和余弦的部分,并使用控制逻辑选择和转化生成的值正弦和余弦波形。这种优化意味着双重输出模式使用相同的硬件资源相对于单一输出模式。

例如如何使用这个系统对象,生成一个正弦波设计一个HDL-Compatible NCO来源

引用

[1]Cordesses, L。,"Direct Digital Synthesis: A Tool for Periodic Wave Generation (Part 1)."IEEE信号处理杂志。问题4卷21日,2004年7月,页50 - 54。

扩展功能

版本历史

介绍了R2013a

全部展开

另请参阅

对象