Сгенерируйте действительный или объедините синусоидальные сигналы — оптимизированный для генерации 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.
создает Системный объект генератора с программным управлением (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
.
Объект возвращает значение формы волны, 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.