Сгенерируйте действительные или сложные синусоидальные сигналы - оптимизированные для генерации HDL-кода
HDL NCO System object™ генерирует реальные или сложные синусоидальные сигналы, обеспечивая при этом аппаратные сигналы управления. Объект использует тот же алгоритм накопления фазы и интерполяционной таблицы, что и реализованный в объекте NCO System. Объект использует квантованное целочисленное накопление, чтобы создать синусоидальный сигнал.
Объект HDL NCO System предоставляет эти функции.
Необязательный выход на основе фрейма.
Опция сжатия интерполяционной таблицы для уменьшения размера интерполяционной таблицы. Это сжатие приводит к менее чем одной потере LSB в точности. Дополнительные сведения см. в разделе Сжатие интерполяционной таблицы.
Необязательный входной параметр для внешнего dither.
Необязательный аргумент сброса, который устанавливает начальное значение аккумулятора фазы.
Необязательный выходной аргумент для текущей фазы NCO.
Учитывая шаг расчета, T с, и желаемое разрешение выходной частоты, Δf, вычислите необходимый размер аккумулятора .
Принимая, что ваша необходимая выходная частота F o намного ниже частоты Найквиста, можно использовать приближение для шума на бит в дБ, основанную на паразитной свободной динамической области значений (SFDR), и определить, сколько можно квантовать выход аккумулятора. Квантованный размер слова для достижения заданного SFDR .
Для желаемой выходной частоты F o, вычислите phase increment используя, где Nacc - квантованный размер слова аккумулятора. Можно задать шаг фазы с помощью свойства или входного параметра.
Учитывая желаемое смещение фазы (в радианах), вычислите phase offset используя. Можно задать смещение фазы с помощью свойства или входного параметра.
Чтобы сгенерировать действительные или комплексные синусоидальные сигналы:
Создайте 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., «Direct Digital Synthesis: A Tool for Periodic Wave Generation (Part 1)». Журнал обработки сигналов IEEE. Том 21, Выпуск 4, Июль 2004, стр. 50-54.