Генерирование реальных или сложных синусоидальных сигналов - оптимизировано для генерации кода HDL
Системная панель инструментов DSP Поддержка HDL/Операции с сигналами
Системная панель инструментов DSP Поддержка HDL/Источники
Блок NCO HDL Optimized генерирует реальные или сложные синусоидальные сигналы, обеспечивая при этом аппаратные управляющие сигналы. Блок использует тот же алгоритм накопления фаз и таблицы поиска, что и реализованный в блоке NCO. Блок использует квантованное целочисленное накопление для создания синусоидального сигнала.

Блок NCO HDL Optimized обеспечивает следующие функции:
Дополнительный вывод на основе кадров.
Параметр сжатия таблицы подстановки для уменьшения размера таблицы подстановки. Это сжатие приводит к менее чем одной потере LSB в точности. Дополнительные сведения см. в разделе Сжатие таблицы подстановки.
Дополнительный входной порт для внешнего сглаживания.
Дополнительный порт сброса, который сбрасывает начальное значение фазового аккумулятора.
Дополнительный выходной порт для текущей фазы NCO.
Учитывая время выборки, Ts и желаемое разрешение Δf выходной частоты, вычисляют необходимый размер накопителя, используя 1Ts⋅Δf)).
Предполагая, что требуемая выходная частота Fo намного ниже частоты Найквиста, можно определить приемлемое квантование на выходе накопителя, используя приближение для шума на бит в дБ и желаемый ложный свободный динамический диапазон (SFDR). Квантованная длина слова для достижения заданного SFDR равна 126).
Для требуемой выходной частоты Fo вычислите приращение фазы, используя F0Ts2Nacc), где Nacc - длина слова накопителя. Инкремент фазы можно задать с помощью параметра или входного порта.
Если задано требуемое фазовое смещение (в радианах), вычислите входное значение фазового смещения, используя . Фазовое смещение можно задать с помощью параметра или входного порта.
Примечание
Этот блок появляется в библиотеках источников с параметром источника приращения фазы, равным Property. Действителен единственный входной порт.
Этот блок появляется в библиотеках операций с сигналами с параметром источника приращения фазы, равным Input port. В этой конфигурации показан дополнительный входной порт inc.
Этот значок показывает дополнительные порты блока NCO HDL Optimized.

inc - приращение фазы (необязательно)Приращение фазы, указанное как скалярное целое число.
double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.
Чтобы включить этот порт, установите для параметра Phase increment source значение Input port.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixdt([],N,0)
offset - Фазовое смещение (необязательно)Фазовое смещение, указанное как скалярное целое число.
double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.
Чтобы включить этот порт, задайте для параметра источника смещения фазы значение Input port.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixdt([],N,0)
dither - Сглаживание (необязательно)Сглаживание, указанное как целое число или вектор столбца целых чисел. Длина вектора должна равняться значению параметра Samples per frame.
double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.
Чтобы включить этот порт, установите для параметра источника сглаживания значение Input port.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixdt([],N,0)
valid - Управляющий сигнал, обеспечивающий работу NCOУправляющий сигнал, разрешающий операцию NCO, заданный как логический скаляр. Когда этот сигнал 1блок увеличивает фазу и фиксирует все входные значения. Когда этот сигнал 0блок содержит фазовый аккумулятор и игнорирует любые входные значения.
Если параметр Samples per frame больше, чем 1, это значение обеспечивает обработку выборок на кадр.
Типы данных: Boolean
reset accum - Управляющий сигнал, сбрасывающий аккумулятор (опционально)Управляющий сигнал, сбрасывающий накопитель, заданный как логический скаляр. Когда этот сигнал 1блок сбрасывает аккумулятор до его начального значения. Этот сигнал не сбрасывает выходные выборки в конвейере.
Чтобы включить этот порт, выберите параметр Enable accumator reset input port.
Типы данных: Boolean
sin, cos, exp - Генерируемая форма сигналаГенерируемая форма сигнала, возвращаемая как скаляр или как вектор столбца с длиной, равной значению параметра Samples per frame. Выходные данные могут быть одним портом, который возвращает значения sin или cos, один порт, который возвращает значения exp, представляющие cosine + j*sine, или два порта, которые возвращают значения sin и cos соответственно. Если все входные значения имеют фиксированный тип или все входные порты отключены, блок определяет тип вывода с помощью параметра Output data type. Если какое-либо входное значение имеет тип с плавающей запятой, блок игнорирует параметр Output data type. В этом случае блок возвращает форму сигнала в виде значений с плавающей запятой.
Типы данных с плавающей запятой поддерживаются для моделирования, но не для генерации кода HDL.
По умолчанию этот выходной порт является синусоидальным, sin. Метка порта и формат изменяются в зависимости от параметра Type of output signal.
phase - Текущая фаза NCO (необязательно)Текущая фаза NCO, возвращаемая как скаляр или как вектор столбца с длиной, равной значению параметра Samples per frame. Фаза является выходом квантованного накопителя с примененными смещением и приращением. Если квантование отключено, этот порт возвращает выходной сигнал накопителя с применением смещения и приращения.
Значения имеют тип fixdt(1,N,0), где N - значение параметра Число битов накопителя квантователя. Если квантование отключено, то N является значением параметра длины Accumulator Word. Если какое-либо входное значение является типом с плавающей запятой, блок возвращает фазу в виде значения с плавающей запятой.
Типы данных с плавающей запятой поддерживаются для моделирования, но не для генерации кода HDL.
Для активизации этого порта выберите параметр Enable phase port.
Типы данных: single | double | fixdt(1,N,0)
valid - Управляющий сигнал, указывающий на достоверность выходных данныхУправляющий сигнал, указывающий на достоверность выходных данных, возвращаемых как логический скаляр. При допустимом выводе: 1, действительны значения для портов sin, cos, exp и phase. При допустимом выводе: 0, значения на выходных портах недопустимы.
Если параметр Samples per frame больше, чем 1, этот сигнал указывает на достоверность всех элементов в выходном векторе.
Типы данных: Boolean
Примечание
Этот блок поддерживает double и single ввод для моделирования, но не для генерации кода HDL. Если все входные значения имеют фиксированный тип или все входные порты отключены, блок определяет тип вывода с помощью параметра Output data type. Если какое-либо входное значение имеет тип с плавающей запятой, блок игнорирует параметр Output data type. В этом случае блок возвращает форму сигнала и необязательную фазу в виде значений с плавающей запятой.
Для использования функции переопределения типа данных Fixed-Point Designer™ можно получить double выходное значение путем применения double входные данные на один из дополнительных портов.
Phase increment source - Источник приращения фазыInput port (по умолчанию) | PropertyМожно задать приращение фазы с помощью входного порта или путем ввода значения параметра. При выборе Property, появится параметр Шаг фазы (Phase increment), чтобы ввести значение. При выборе Input port, порт inc появляется в блоке.
Phase increment - приращение фазы для генерируемого сигнала100 (по умолчанию) | целое числоПриращение фазы для сгенерированного сигнала, заданного как целое число.
Чтобы включить этот параметр, задайте для параметра Источник приращения фазы значение Property.
Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixdt([],N,0)
Phase offset source - Источник фазового смещенияInput port (по умолчанию) | PropertyФазовое смещение можно задать с помощью входного порта или путем ввода значения параметра. При выборе Propertyпоявится параметр Смещение фазы (Phase offset) для ввода значения. При выборе Input port, на блоке появится смещенный порт.
Phase offset - Фазовое смещение для генерируемого сигнала0 (по умолчанию) | целое числоФазовое смещение для генерируемого сигнала, заданного как целое число.
Чтобы включить этот параметр, задайте для параметра Источник смещения фазы значение Property.
Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixdt([],N,0)
Dither source - Источник количества разрядов сглаживанияProperty (по умолчанию) | Input port | NoneМожно задать сглаживание из входного порта или из параметра. При выборе Property, появится параметр Number of dethering bits. При выборе Input portна блоке появится порт. При выборе None, блок не добавляет сглаживание.
Number of dither bits - биты, используемые для выражения сглаживания4 (по умолчанию) | положительное целое числоЧисло разрядов сглаживания, указанное как положительное целое число.
Чтобы включить этот параметр, установите для параметра Источник сглаживания значение Property.
Samples per frame - Размер вектора для ввода и вывода на основе кадра1 (по умолчанию) | положительное целое числоПри установке этого значения в значение 1, блок имеет скалярный вход и выход. Если это значение больше, чем 1, порт сглаживания ожидает вектор столбца длины Samples на кадр и sin, cos, exp и фазовые порты возвращают векторы столбцов длины Samples на кадр.
Enable look up table compression method - Сжатие таблицы подстановкиoff (по умолчанию) | onПо умолчанию блок реализует несжатую таблицу поиска, и выходные данные этого блока соответствуют выходным данным блока NCO. Если этот параметр включен, блок реализует сжатую таблицу подстановки. Метод сжатия Сандерленда уменьшает размер таблицы подстановки, теряя менее одного LSB точности. Ложный свободный динамический диапазон (SFDR) эмпирически на 1-3 дБ ниже, чем в несжатом случае. Аппаратная экономия сжатой таблицы поиска позволяет повысить производительность за счет увеличения длины слова накопителя и количества квантованных битов. Подробные сведения о методе сжатия см. в разделе Алгоритмы.
Enable accumulator reset input port - Включить сигнал управления сбросомoff (по умолчанию) | onВыберите этот параметр для активизации порта reset accum. Когда reset accum имеет значение 1блок сбрасывает аккумулятор до его начального значения.
Type of output signal - Формат выходного сигналаSine (по умолчанию) | Cosine | Complex exponential | Sine and cosineПри выборе Sine или Cosine, блок показывает применимый порт, sin или cos. При выборе Complex exponential, вывод имеет вид cosine + j*sine и порт помечен как exp. при выборе Sine and cosineблок показывает два порта, sin и cos.
Enable phase port - Фаза выходного токаoff (по умолчанию) | onВыберите этот параметр для возврата текущей фазы NCO на фазовом порте. Фаза представляет собой выходной сигнал квантованного накопителя с применением смещения и приращения. Если квантование отключено, этот порт возвращает выходной сигнал накопителя с применением смещения и приращения.
Rounding Mode - Режим округления для операций с фиксированной точкойFloor (по умолчанию)Режим округления для операций с фиксированной точкой. Режим округления - это параметр только для чтения со значением Floor.
Overflow mode - Режим переполнения для операций с фиксированной точкойWrap (по умолчанию)Режим переполнения для операций с фиксированной точкой. Режим переполнения является параметром, доступным только для чтения. Числа с фиксированной точкой переносятся при переполнении.
Accumulator Data Type - Тип данных аккумулятораBinary point scaling (по умолчанию)Описание типа данных аккумулятора. Этот параметр доступен только для чтения со значением Binary point scaling. Блок определяет тип данных с фиксированной точкой с помощью параметров «Знак аккумулятора», «Длина слова аккумулятора» и «Длина доли аккумулятора».
Accumulator Signed - Подписанный или неподписанный формат данных накопителяSigned (по умолчанию)Этот параметр доступен только для чтения. Все выходные данные имеют формат подписи.
Accumulator Word length - Длина слова аккумулятора16 (по умолчанию) | целое числоЕдиницы измерения представлены в битах. Это значение должно включать бит знака.
Если удалить параметр фазы квантования, то длина слова Accumulator определяет размер LUT. Для генерации кода HDL размер LUT должен быть от 2 до 217 записей. Если выбран параметр Включить метод сжатия таблицы поиска, этот параметр должен быть больше 4 и меньше 22. При снятии флажка Включить метод сжатия таблицы поиска этот параметр должен быть больше 2 и меньше 20. Дополнительные сведения о том, как этот параметр влияет на размер LUT, см. в разделе Алгоритмы.
Accumulator Fraction length - Длина фракции аккумулятора0 (по умолчанию) | целое числоЭтот параметр доступен только для чтения. Длина фракции накопителя равна нулю битов.
Аккумулятор работает на целых числах. Если приращение фазы равно fixdt с дробной частью, блок возвращает ошибку.
Quantize phase - Квантовать накопленную фазуoff (по умолчанию) | onПри выборе этого параметра блок квантует результат фазового накопителя до фиксированной битовой ширины. Это квантованное значение используется для выбора значения формы сигнала из таблицы поиска. Выберите разрешение таблицы поиска с помощью параметра Количество битов накопителя квантователя.
Частотное разрешение NCO определяется где N - значение параметра Число битов накопителя квантователя.
При сбросе этого параметра блок использует полный тип данных накопителя в качестве адреса таблицы подстановки. В этом случае N - значение параметра длины Accumulator Word.
Number of quantizer accumulator bits - Количество битов накопителя квантователя12 (по умолчанию) | целое числоЧисло битов накопителя квантователя, заданное как целое скалярное число, меньшее длины слова накопителя. Для генерации кода HDL это значение параметра должно привести к размеру LUT от 2 до 217 записей. Если выбран параметр Включить метод сжатия таблицы поиска, этот параметр должен быть больше 4 и меньше 22. При снятии флажка Включить метод сжатия таблицы поиска этот параметр должен быть больше 2 и меньше 20. Дополнительные сведения о том, как этот параметр влияет на размер LUT, см. в разделе Алгоритмы.
Чтобы включить этот параметр, выберите параметр фазы квантования.
Output Data Type - Тип выходных данныхBinary point scaling (по умолчанию) | double | singleУкажите тип данных для портов sin, cos и exp. Этот параметр игнорируется, если какой-либо вход имеет тип с плавающей запятой. В этом случае тип выходных данных - плавающая точка.
При выборе Binary point scaling, блок определяет тип данных с фиксированной точкой с помощью параметров «Выходной знак», «Длина выходного слова» и «Длина выходной дроби».
Output Signed - Формат выходных данных с подписью или без подписиSigned (по умолчанию)Этот параметр доступен только для чтения. Все выходные данные имеют формат подписи.
Output Word length - Длина выходного слова16 (по умолчанию) | целое числоЕдиницы измерения представлены в битах. Это значение должно включать бит знака.
Output Fraction length - Длина выходной фракции14 (по умолчанию) | целое числоЕдиницы измерения представлены в битах.
Реализация NCO зависит от выбора опции Включить метод сжатия таблицы поиска.
Без сжатия таблицы подстановки блок использует ту же четверть-синусоидальную таблицу подстановки, что и блок NCO. Размер LUT является 2Number битов-накопителей квантователя - битов длины выходного слова 2 ×.

Если фаза квантования не включена, то число битов накопителя квантователя = длина слова накопителя. При выборе этих параметров учитывайте влияние на память симулятора и аппаратные ресурсы.
При выборе сжатия таблицы поиска (LUT) блок NCO HDL Optimized применяет метод сжатия Сандерленда. Методы Сандерленда используют тригонометрические идентичности, чтобы разделить каждую фазу четвертичной синусоидальной волны на три компонента и выразить ее как:
− sin (A) sin (B) sin (C)
Если четвертьсинусная фаза имеет Q-2 биты, то фазовые компоненты А и В имеют длину слова LA = LB =ceil((Q-2)/3). Фазовый компонент С содержит оставшиеся фазовые биты. Если фаза имеет 12 битов, то фаза четверти синуса имеет 10 битов, и компоненты определяются как:
A, четыре старших бита
B, следующие четыре бита
C, остальные два младших разряда
Учитывая относительные размеры A, B и C, уравнение может быть аппроксимировано следующим образом:
+ cosAsinC
Блок NCO HDL Optimized реализует это уравнение с одним LUT для B) и одним LUT sin (C). Второй член - это коэффициент тонкой коррекции, который можно усечь до меньшего числа битов без потери точности. Поэтому второй LUT возвращает четырехбитовый результат.

При размере накопителя по умолчанию, равном 16 битам, и ширине квантованной фазы по умолчанию, равной 12 битам, LUT используют биты 28 × 16 плюс 26 × 4 (4,5 kb). Для сравнения, четверть-синусная таблица поиска без сжатия использует биты 210 × 16 (16 kb). Приближение сжатия является точным в пределах одного LSB, что приводит к SNR, по меньшей мере, 60 дБ на выходе. См. [1].
Блок имеет два входных управляющих сигнала, reset accum (необязательно) и valid, и один выходной управляющий сигнал, valid. Когда reset accum имеет значение 1блок устанавливает фазовый аккумулятор на его начальное значение. При допустимом вводе: 1блок увеличивает фазу и фиксирует все входные значения. Когда этот сигнал 0блок содержит фазовый аккумулятор и игнорирует любые входные значения. Когда выходной действительный сигнал 1, значения на других выходных портах являются допустимыми.
Задержка блока NCO HDL Optimized составляет шесть циклов.
В R2020a изменилось поведение
В предыдущих версиях входной порт validIn блока NCO HDL Optimized был необязательным. Теперь он необходим и переименован в действительный. При отсутствии других входных портов блок использует действительный сигнал в качестве разрешающего сигнала.
В R2020a изменилось поведение
Форма выходного сигнала, возвращаемого входными значениями с плавающей запятой, изменилась. Форма выходного сигнала теперь совпадает с формой, возвращаемой теми же входными значениями, которые указаны в типах с фиксированной точкой.
До R2020a при использовании входных типов с плавающей запятой блок NCO HDL Optimized не квантовал фазу внутри. Блок ожидает приращение фазы с плавающей запятой и входы смещения фазы, указанные в радианах. Теперь блок квантует фазу внутренне, и необходимо задать приращение и смещение входной фазы в терминах квантованного размера как для входных типов с плавающей запятой, так и для входных типов с фиксированной запятой.
Например, перед R2020a, чтобы ЛПВП NCO с плавающей запятой генерировал выходные выборки с требуемой выходной частотой F0 и частотой выборки Fs, необходимо было указать приращение фазы как 2δ (F0/Fs), а смещение фазы - как λ/2.
Начиная с R2020a, необходимо указать приращение фазы и фазовое смещение с точки зрения квантованного размера N. Эти входные значения совпадают с входными значениями, используемыми для типов с фиксированной точкой. Задайте приращение фазы как (F0 × 2N )/Fs, а смещение фазы как (λ/2) × 2N/2π или 2N/4.
В R2020a изменилось поведение
В предыдущих версиях можно было выбрать один из двух вариантов параметра LUTRegisterResetType в диалоговом окне Свойства блока HDL блока NCO HDL Optimized. Два варианта были default, и none. Начиная с R2020a, блок игнорирует настройку параметров и использует none для этого значения параметра. Эта опция не подключает сигнал сброса к регистрам LUT. Эта конфигурация позволяет инструменту синтеза определить, следует ли реализовать таблицы поиска с LUT или BRAM.
[1] Cordesses, L., «Direct Digital Synthesis: A Tool for Periodic Wave Generation (Part 1)». Журнал обработки сигналов IEEE. Том 21, выпуск 4, июль 2004 года, стр. 50-54.
Этот блок поддерживает генерацию кода C/C + + для режимов ускорения Simulink ® и быстрого ускорения, а также для генерации компонентов DPI.
HDL Coder™ предоставляет дополнительные опции конфигурации, которые влияют на реализацию HDL и синтезированную логику.
Этот блок имеет единую архитектуру HDL по умолчанию.
| ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках проекта. Распределенная конвейерная обработка не перераспределяет эти регистры. Значение по умолчанию: |
| InputPipeline | Количество входных ступеней трубопровода для вставки в сформированный код. Распределенная конвейерная обработка и конвейерная обработка с ограниченным выходом могут перемещать эти регистры. Значение по умолчанию: |
| OutputPipeline | Количество выходных ступеней трубопровода для вставки в сформированный код. Распределенная конвейерная обработка и конвейерная обработка с ограниченным выходом могут перемещать эти регистры. Значение по умолчанию: |
При установке для параметра Источник сглаживания значения Propertyблок добавляет случайное сглаживание в каждом цикле. При создании модели проверки с этими настройками отображается предупреждение. Случайное формирование внутреннего сглаживания может привести к несоответствиям между моделями. Можно увеличить поле ошибки для сравнения проверки, чтобы учесть разницу. Можно также отключить сглаживание или задать для параметра Источник сглаживания значение Input port во избежание этой проблемы.
Нельзя использовать оптимизированный блок HDL NCO в переустановляемой синхронной подсистеме (кодер HDL).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.


