Генерирование реальных или сложных синусоидальных сигналов - оптимизировано для генерации кода HDL
Система object™ NCO HDL генерирует реальные или сложные синусоидальные сигналы, обеспечивая при этом аппаратные управляющие сигналы. Объект использует тот же алгоритм накопления фаз и таблицы поиска, что и реализованный в объекте NCO System. Объект использует квантованное целочисленное накопление для создания синусоидального сигнала.

Объект системы NCO HDL предоставляет эти функции.
Дополнительный вывод на основе кадров.
Параметр сжатия таблицы подстановки для уменьшения размера таблицы подстановки. Это сжатие приводит к менее чем одной потере LSB в точности. Дополнительные сведения см. в разделе Сжатие таблицы подстановки.
Необязательный входной аргумент для внешнего сглаживания.
Необязательный аргумент сброса, восстанавливающий начальное значение фазового накопителя.
Необязательный выходной аргумент для текущей фазы NCO.
Учитывая время выборки, Ts и желаемое разрешение выходной частоты, Δf, вычисляют необходимый размер накопителя по 1Ts⋅Δf )).
Предполагая, что требуемая выходная частота Fo намного ниже частоты Найквиста, можно использовать приближение для шума на бит в дБ, основываясь на ложном свободном динамическом диапазоне (SFDR), и определить, насколько можно квантовать выходной сигнал накопителя. Квантованная длина слова для достижения заданного SFDR равна 126).
Для требуемой выходной частоты Fo вычислите приращение фазы, используя F0Ts2Nacc), где Nacc - длина слова квантованного накопителя. Можно задать приращение фазы с помощью свойства или входного аргумента.
При заданном фазовом смещении (в радианах) вычислите фазовое смещение, смещение
Для генерации действительных или сложных синусоидальных сигналов:
Создать dsp.HDLNCO и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает объект системы осциллятора с числовым управлением (NCO), hdlnco = dsp.HDLNCOhdlnco, который генерирует действительный или сложный синусоидальный сигнал. Амплитуда генерируемого сигнала всегда равна 1.
задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в отдельные кавычки. Например, hdlnco = dsp.HDLNCO(Name,Value)
hdlnco = dsp.HDLNCO('NumQuantizerAccumulatorBits',12, ...
'AccumulatorWL',16); создает NCO с помощью hdlnco = dsp.HDLNCO(Inc,'PhaseIncrementSource','Property')PhaseIncrement свойство имеет значение Inc, целочисленный скаляр. Чтобы использовать свойство PhaseIncrement, задайте для свойства PhaseIncreñSource значение 'Property'. Можно добавить и другие Name,Value пары до или после PhaseIncrementSource.
Объект возвращает значение формы сигнала, Yв качестве синусоидального значения, косинусного значения, комплексного экспоненциального значения или [Sine,Cosine] пара значений, в зависимости от свойства Waveform.
[ возвращает форму сигнала, Y,ValidOut] = hdlnco (ValidIn)Y, используя параметры формы сигнала из свойств, а не входных аргументов.
Чтобы использовать этот синтаксис, задайте для свойств PhaseIncreureSource, PhaseOffsetSource и DelingSource значение 'Property'. Эти свойства не зависят друг от друга. Например:
hdlnco = dsp.HDLNCO('PhaseIncrementSource','Property', ... 'PhaseIncrement',phIncr,... 'PhaseOffset',phOffset,... 'NumDitherBits',4)
[ возвращает форму сигнала, Y,ValidOut] = hdlnco(Inc,Offset,Dither,ValidIn)Y, с приращением фазы, Inc, фазовое смещение, Offset, и смешение, Dither.
Этот синтаксис применяется при задании для свойств PhaseIncreureSource, PhaseOffsetSource и DaiveSource значения '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
[___] = hdlnco(___, сбрасывает значение аккумулятора, но не сбрасывает выходные выборки в трубопроводе. Если ResetAccum,ValidIn)ValidIn является trueзатем объект продолжает генерировать выходной сигнал, начиная со значения накопителя сброса.
Чтобы использовать этот синтаксис, задайте для свойства ResetAction значение 1 (true). Этот синтаксис может включать любой из аргументов из других синтаксисов.
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
[1] Cordesses, L., «Direct Digital Synthesis: A Tool for Periodic Wave Generation (Part 1)». Журнал обработки сигналов IEEE. Том 21, выпуск 4, июль 2004 года, стр. 50-54.