Генератор с числовым программным управлением ( NCO ) — это цифровой генератор сигналов , который создает синхронное (т. е. тактовое), дискретное по времени и дискретно-значное представление формы волны , обычно синусоидальной . [1] NCO часто используются совместно с цифро-аналоговым преобразователем (ЦАП) на выходе для создания прямого цифрового синтезатора (DDS). [3]
Генераторы с числовым программным управлением обладают рядом преимуществ по сравнению с другими типами генераторов с точки зрения гибкости, точности, стабильности и надежности. [2] Генераторы с числовым программным управлением используются во многих системах связи, включая цифровые повышающие/понижающие преобразователи, используемые в беспроводных системах 3G и программных радиосистемах, цифровых фазовых автоподстройках частоты , радиолокационных системах, драйверах для оптических или акустических передач и многоуровневых модуляторах/демодуляторах FSK / PSK . [2]
Сержантский состав обычно состоит из двух частей:
При тактировании фазовый аккумулятор (PA) создает пилообразную волну по модулю -2 N , которая затем преобразуется преобразователем фазы в амплитуду (PAC) в дискретизированную синусоиду, где N - число бит, переносимых в фазовом аккумуляторе. N устанавливает разрешение частоты NCO и обычно намного больше числа бит, определяющих пространство памяти таблицы поиска PAC . Если емкость PAC составляет 2 M , выходное слово PA должно быть усечено до M бит, как показано на рисунке 1. Однако усеченные биты можно использовать для интерполяции. Усечение выходного слова фазы не влияет на точность частоты, но создает изменяющуюся во времени периодическую фазовую ошибку, которая является основным источником паразитных продуктов. Другим механизмом генерации паразитных продуктов являются эффекты конечной длины слова выходного слова PAC (амплитуды). [4]
Точность частоты относительно тактовой частоты ограничена только точностью арифметики, используемой для вычисления фазы. [4] NCO обладают быстрой перестройкой фазы и частоты и могут быть легко модифицированы для получения фазомодулированного или частотномодулированного выходного сигнала путем суммирования в соответствующем узле или для обеспечения квадратурных выходных сигналов, как показано на рисунке.
Двоичный фазовый аккумулятор состоит из N-битного двоичного сумматора и регистра , сконфигурированного, как показано на рисунке 1. [5] Каждый тактовый цикл создает новый N-битный выход, состоящий из предыдущего выхода, полученного из регистра, суммированного со словом управления частотой (FCW), которое является постоянным для заданной выходной частоты. Результирующая выходная форма волны представляет собой лестницу с размером шага , целочисленным значением FCW. [6] В некоторых конфигурациях фазовый выход берется с выхода регистра, что вводит задержку в один тактовый цикл , но позволяет сумматору работать на более высокой тактовой частоте. [2]
Сумматор спроектирован так, чтобы переполняться, когда сумма абсолютного значения его операндов превышает его емкость (2 N −1). Бит переполнения отбрасывается, поэтому ширина выходного слова всегда равна ширине входного слова. Остаток , называемый остатком, сохраняется в регистре, и цикл повторяется, начиная с этого момента (см. рисунок 2). [5] Поскольку фазовый аккумулятор является конечным автоматом , в конечном итоге остаток в некоторой выборке K должен вернуться к исходному значению . Интервал K называется большой частотой повторения (GRR), определяемой как
где GCD — функция наибольшего общего делителя . GRR представляет собой истинную периодичность для заданного , которая для NCO высокого разрешения может быть очень длинной. [5] Обычно нас больше интересует рабочая частота , определяемая средней скоростью переполнения, заданной как [6]
Частотное разрешение , определяемое как наименьшее возможное приращение изменения частоты, определяется по формуле [6]
Уравнение (1) показывает, что фазовый аккумулятор можно рассматривать как программируемый нецелочисленный делитель частоты с коэффициентом деления . [4]
Преобразователь фазы в амплитуду создает форму волны в области выборки из усеченного выходного слова фазы, полученного от PA. PAC может быть простой памятью только для чтения , содержащей 2 млн смежных выборок желаемой выходной формы волны, которая обычно является синусоидой. Однако часто используются различные приемы для уменьшения требуемого объема памяти. К ним относятся различные тригонометрические разложения, [7] тригонометрические приближения [5] и методы, которые используют квадратурную симметрию, демонстрируемую синусоидами. [8] В качестве альтернативы PAC может состоять из памяти с произвольным доступом , которая может быть заполнена по желанию для создания генератора произвольной формы волны .
Побочные продукты являются результатом гармонических или негармонических искажений при создании выходной формы волны из-за нелинейных числовых эффектов в цепочке обработки сигнала. Здесь рассматриваются только числовые ошибки. О других механизмах искажений, создаваемых в цифро-аналоговом преобразователе, см. соответствующий раздел в статье о прямом цифровом синтезаторе .
Число битов фазового аккумулятора NCO (N) обычно составляет от 16 до 64. Если бы выходное слово PA использовалось непосредственно для индексации таблицы поиска PAC, потребовалась бы недопустимо большая емкость памяти ROM. Таким образом, выходное слово PA должно быть усечено, чтобы охватить разумное пространство памяти. Усечение фазового слова вызывает фазовую модуляцию выходной синусоиды, что вносит негармонические искажения пропорционально числу усеченных бит. Количество паразитных продуктов, созданных этим искажением, определяется по формуле:
где W — количество усеченных бит.
При расчете динамического диапазона, свободного от паразитных составляющих , нас интересует паразитный продукт с наибольшей амплитудой относительно выходного уровня несущей, определяемого по формуле:
где P — размер таблицы преобразования преобразователя фазы в амплитуду в битах, т.е. M на рисунке 1. Для W >4,
Другой связанный метод генерации ложных сигналов — это слабая модуляция из-за GRR, описанного выше. Амплитуда этих шпор мала для больших N, а их частота, как правило, слишком мала, чтобы быть обнаруженной, но они могут вызывать проблемы для некоторых приложений. [5]
Один из способов уменьшить усечение при поиске адреса — это параллельно иметь несколько меньших таблиц поиска и использовать старшие биты для индексации в таблицах, а младшие биты — для их взвешивания для линейной или квадратичной интерполяции. То есть использовать 24-битный фазовый аккумулятор для поиска в двух 16-битных LUTS. Адрес в усеченные 16 MSB, и это плюс 1. Линейно интерполировать, используя 8 LSB в качестве весов. (Вместо этого можно было бы использовать 3 LUT и квадратично интерполировать). Это может привести к уменьшению искажений для того же объема памяти за счет некоторых множителей.
Другим источником паразитных продуктов является амплитудное квантование сэмплированной формы волны, содержащейся в таблице(ах) поиска PAC. Если число битов DAC равно P, уровень паразитной составляющей AM приблизительно равен −6,02 P − 1,76 dBc . [9]
Пороги усечения фазы можно существенно уменьшить путем введения белого гауссовского шума перед усечением. Так называемый шум дизеринга суммируется в нижних W+1 битах выходного слова PA для линеаризации операции усечения. Часто улучшение может быть достигнуто без штрафа, поскольку уровень шума ЦАП имеет тенденцию доминировать над производительностью системы. Пороги усечения амплитуды нельзя смягчить таким образом. Введение шума в статические значения, хранящиеся в ПЗУ PAC, не устранит цикличность членов ошибки усечения и, таким образом, не достигнет желаемого эффекта. [4]