Вычислите шаг фазы с плавающей точкой для оптимизированного HDL NCO

Этот пример показывает, как использовать блок NCO HDL Optimized с входом с плавающей точкой. Осциллятор с программным управлением (NCO) разработан, чтобы работать над квантованными типами данных. Чтобы считать из-за отсутствия квантования фазы при использовании входных параметров с плавающей точкой, необходимо настроить шаг фазы с плавающей точкой.

Когда вы используете NCO с квантованными типами данных, значение шага фазы зависит от размера аккумулятора. Для фиксированной точки, N битный аккумулятор, чтобы сгенерировать выходные выборки с желаемой выходной частотой F0 и демонстрационной частотой Fs, шаг фазы должен быть:

Phase_increment = (F0*2^N)/Fs

Если вы используете смещение фазы, оно также должно быть квантовано размером аккумулятора. Например, для смещения пи/2:

Phase_offset = (pi/2)*2^N/(2*pi)

Когда вход к блоку является плавающей точкой, блок игнорирует параметры, связанные с настройками фиксированной точки: Количество битов dither, фазы Quantize, Количества двоичных разрядов сумматора квантизатора, Включает, ищут табличный метод сжатия и вкладку Data Types.

Когда вы используете инкрементный фазой вход с плавающей точкой, необходимо настроить значение шага, чтобы считать из-за отсутствия квантования фазы. Для аккумулятора с плавающей точкой, чтобы сгенерировать выходные выборки с желаемой выходной частотой F0 и демонстрационной частотой Fs, шаг фазы должен быть:

Phase_increment = 2*pi*F0/Fs

Смещение фазы для NCO с плавающей точкой является прямым. Например, для смещения пи/2:

Phase_offset = pi/2

Модель в качестве примера показывает две версии блока NCO HDL Optimized. NCO Фиксированной точки использует квантованные типы данных для входного шага фазы и смещенной фазы. Шаг и значения смещения вычисляются для 22-битного аккумулятора. Выходной тип установлен в double, даже при том, что блок внутренне работает с типами данных с фиксированной точкой.

NCO С плавающей точкой использует тип данных double для входного шага фазы и смещения фазы. Входные сигналы double обеспечивают блок, чтобы использовать внутренние вычисления с плавающей точкой. Шаг и значения смещения вычисляются, чтобы работать с аккумулятором типа данных double.

После симуляции осциллограф показывает, что сгенерированные формы волны от блока фиксированной точки и блока с плавающей точкой и достигают целевой выходной частоты и смещения фазы.

modelname = 'HDLNCO_FloatingPointPhaseIncr';
open_system(modelname)
sim(modelname)

Тот же входной шаг фазы и вычисления смещения фазы применяются при использовании Системы dsp.HDLNCO object™.

Смотрите также

Блоки

Системные объекты