Сгенерируйте действительный или объедините синусоидальные сигналы — оптимизированный для генерации HDL-кода
Система NCO HDL object™ генерирует действительный, или объедините синусоидальные сигналы при обеспечении благоприятных для оборудования управляющих сигналов. Генератор с программным управлением (NCO) накапливает шаг фазы и использует квантованный выход аккумулятора как индекс к интерполяционной таблице, которая содержит значения синусоиды. Переносить типов данных аккумулятора и квантизатора фиксированной точки обеспечивает периодичность синусоиды, и квантование уменьшает необходимый размер таблицы для данного разрешения частоты.
Для примера того, как сгенерировать синусоиду с помощью этого Системного объекта, см. Проект Совместимый с HDL Источник NCO. Для получения дополнительной информации о настройке и реализации, обратитесь к разделу Algorithms.
Системный объект NCO HDL обеспечивает эти функции.
Дополнительный основанный на системе координат выход.
Опция сжатия интерполяционной таблицы, чтобы уменьшать размер интерполяционной таблицы. Это сжатие приводит меньше чем к одной потере LSB в точности. Смотрите Сжатие Интерполяционной таблицы для получения дополнительной информации.
Дополнительный входной параметр для внешнего dither.
Дополнительный аргумент сброса, который сбрасывает аккумулятор фазы к его начальному значению.
Дополнительный выходной аргумент в пользу текущей фазы NCO.
Сгенерировать действительный или объединить синусоидальные сигналы:
Создайте 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, установите свойство PhaseIncrementSource на 'Property'
. Можно добавить другой Name,Value
пары прежде или после PhaseIncrementSource
.
Объект возвращает значение формы волны, Y
, как значение синуса, значение косинуса, значение комплексной экпоненты, или [Sine,Cosine
] пара значений, в зависимости от свойства Waveform.
[
возвращает форму волны, Y
,ValidOut
]
= hdlnco (ValidIn
)Y
, использование параметров формы волны из свойств, а не входных параметров.
Чтобы использовать этот синтаксис, установите PhaseIncrementSource, PhaseOffsetSource и свойства DitherSource к 'Property'
. Эти свойства независимы друг от друга. Например:
hdlnco = dsp.HDLNCO('PhaseIncrementSource','Property', ... 'PhaseIncrement',phIncr,... 'PhaseOffset',phOffset,... '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
[___] = hdlnco(___,
сбрасывает значение аккумулятора, но не сбрасывает выходные выборки в трубопроводе. Если ResetAccum
,ValidIn
)ValidIn
true
, затем объект продолжает генерировать выходную форму волны, начинающую со значения аккумулятора сброса.
Чтобы использовать этот синтаксис, установите свойство ResetAction на 1
TRUE
). Этот синтаксис может включать любой из аргументов от других синтаксисов.
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
[1] Cordesses, L., "Прямой цифровой синтез: Инструмент для Периодической Генерации Волны (Часть 1)". Журнал Обработки сигналов IEEE. Объем 21, Выпуск 4, июль 2004, стр 50–54.