Сгенерируйте действительный или объедините синусоидальные сигналы — оптимизированный для генерации HDL-кода
Система NCO HDL object™ генерирует действительный, или объедините синусоидальные сигналы при обеспечении благоприятных для оборудования управляющих сигналов. Объект использует то же накопление фазы и алгоритм интерполяционной таблицы, как реализовано в Системном объекте NCO. Когда вы используете входные сигналы целочисленной или фиксированной точки или используете объект в качестве источника без входного сигнала, объектное использование квантовало целочисленное накопление, чтобы создать сигнал синусоиды.
Системный объект NCO HDL обеспечивает эти функции:
Опция сжатия интерполяционной таблицы, чтобы уменьшать размер интерполяционной таблицы. Это сжатие приводит меньше чем к одной потере LSB в точности. Смотрите Сжатие Интерполяционной таблицы для получения дополнительной информации.
Дополнительный входной параметр для внешнего dither.
Дополнительный аргумент сброса, который инициировал сброс фазы к ее начальному значению во время синусоиды выходная генерация.
Дополнительный выходной аргумент в пользу текущей фазы NCO.
Системный объект не поддерживает свойство, которое позволяет блоку NCO HDL Optimized синтезировать интерполяционную таблицу к ROM при использовании HDL Coder™ с целью FPGA.
Учитывая желаемую выходную частоту F 0, вычислите использование входного значения phase increment
где N является размером слова аккумулятора и
Можно задать шаг фазы использование свойства или входного параметра.
Разрешение частоты NCO задано
Учитывая желаемое смещение фазы (в радианах), вычислите использование входного значения phase offset
Можно задать смещение фазы с помощью свойства или входного параметра.
Когда вы используете входные сигналы с плавающей точкой, объект не квантует накопление. Поэтому необходимо выбрать шаг и сместить значения, чтобы представлять часть 2π без квантования.
Сгенерировать действительный или объединить синусоидальные сигналы:
Создайте объект dsp.HDLNCO
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
hdlnco = dsp.HDLNCO
hdlnco = dsp.HDLNCO(Name,Value)
hdlnco = dsp.HDLNCO(Inc,'PhaseIncrementSource','Property')
создает Системный объект осциллятора с программным управлением (NCO), hdlnco
= dsp.HDLNCOhdlnco
, который генерирует действительное или объединяет синусоидальный сигнал. Амплитуда сгенерированного сигнала всегда равняется 1.
свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки. Например, hdlnco
= dsp.HDLNCO(Name,Value
)
hdlnco = dsp.HDLNCO('NumQuantizerAccumulatorBits',14, ... 'AccumulatorWL',17);
создает NCO с набором свойств hdlnco
= dsp.HDLNCO(Inc
,'PhaseIncrementSource','Property') PhaseIncrement
к Inc
, целочисленному скаляру. Чтобы использовать свойство PhaseIncrement, установите свойство PhaseIncrementSource на 'Property'
. Можно добавить другие пары Name,Value
прежде или после PhaseIncrementSource
.
Для версий ранее, чем R2016b, используйте функцию step
, чтобы запустить алгоритм Системного объекта. Аргументы к step
являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.
Например, y = step(obj,x)
и y = obj(x)
выполняют эквивалентные операции.
[Y,ValidOut]
= hdlnco(Inc,ValidIn)
[Y,ValidOut]
= hdlnco
[Y,ValidOut]
= hdlnco(Inc,Offset,Dither,ValidIn)
[Y,Phase,ValidOut] = hdlnco(___)
Объект возвращает значение формы волны, Y
, как значение синуса, значение косинуса, комплексное экспоненциальное значение, или [Sine,Cosine
] пара значений, в зависимости от свойства Waveform.
[
возвращает форму волны, Y
,ValidOut
]
= hdlncoY
, с помощью параметров формы волны из свойств, а не входных параметров.
Чтобы использовать этот синтаксис, установите PhaseIncrementSource, PhaseOffsetSource, и свойства DitherSource к 'Property'
и ValidInputPort к false
. Эти свойства независимы друг от друга. Например:
hdlnco = dsp.HDLNCO('PhaseIncrementSource','Property', ... 'PhaseIncrement',phIncr,... 'PhaseOffset',phOffset,... 'ValidInputPort',false,... 'NumDitherBits',4)
[
возвращает форму волны, Y
,ValidOut
]
= hdlnco(Inc
,Offset
,Dither
,ValidIn
)Y
, с шагом фазы, Inc
, смещением фазы, Offset
, и dither, Dither
.
Этот синтаксис применяется, когда вы устанавливаете PhaseIncrementSource, PhaseOffsetSource и свойства DitherSource к 'Input port'
. Эти свойства независимы друг от друга. Вы можете смешивание и подгонка активация этих аргументов. PhaseIncrementSource
является 'Input port'
по умолчанию. Например:
hdlnco = dsp.HDLNCO('PhaseOffsetSource','Input port',... 'DitherSource','Input port') for k = 1:1/Ts y(k) = hdlnco(phIncr,phOffset,ditherBits,true); end
[
возвращает форму волны, Y
,Phase
,ValidOut
] = hdlnco(___)Y
, и текущую фазу, Phase
.
Чтобы использовать этот синтаксис, установите свойство PhasePort на true
. Этот синтаксис может включать любой из аргументов от других синтаксисов. Например:
hdlnco = dsp.HDLNCO('PhaseOffsetSource','Input port',... 'DitherSource','Input port',... 'PhasePort',true) for k = 1:1/Ts [phase(k),y(k)] = hdlnco(phIncr,phOffset,ditherBits,true); end
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
[1] Cordesses, L., "Прямой цифровой синтез: Инструмент для Периодической Генерации Волны (Часть 1)". Журнал Обработки сигналов IEEE. Объем 21, Выпуск 4, июль 2004, стр 50–54.