Сгенерируйте действительный или объедините синусоидальные сигналы — оптимизированный для генерации 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.HDLNCOhdlnco = 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.