Есть ли что-нибудь общее между DDC и операцией дискретного преобразования Фурье (DFT / FFT).
Можно ли DDC реализовать при помощи вычислительно эффективной процедуры FFT.Рассмотрим математическую модель дискретного преобразования Фурье некоторого дискретного вещественного сигнала x(k), которое вычисляется поблочно, с длиной блока N точек.
X(n) = {сумма k=0, N-1} [ x(k) exp (-i Wn k) ]
где
X(n) - комплексные дискретные значения спектра для текущего блока входного сигнала х(k) на кратных частотах Wn;
n - номер спектральной составляющей, n = 0, ... N-1;
k - дискретное время - номер отсчета исходного сигнала в блоке, k = 0, ... N-1;
N - количество точек в блоке сигнала, оно же равно количеству точек спектра на его периоде;
exp (-i Wn k) = cos (Wn k) - i sin (Wn k) - комплексная экспонента отрицательной частоты -Wn;
Wn = 2 пи n / N - это те дискретные нормированные частоты на интервале от 0 до двух пи радиан, для которых вычисляется спектр: W0 - нулевая частота постоянной составляющей, W1 - шаг по частоте, W(N/2) - частота Найквиста пи, WN - частота дискретизации 2 пи.
Не забываем, что спектр дискретного сигнала периодический, а период спектра N здесь равен нормированной частоте дискретизации 2 пи. Отсюда легко вычисляются все частоты Wn как в нормированном, так и в натуральном виде.
Что мы здесь видим? А видим то, что в этой модели есть много общего с DDC (т.е. это немного не доделанный DDC):
1. Умножение исходного вещественного сигнала х(k) на комплексную экспоненту некоторой отрицательной частоты -Wn. Такая операция в частотной области приводит к сдвигу двустороннего симметричного спектра исходного сигнала влево на величину Wn, после чего сигнал становится комплексным, а исходная частота Wn становится нулевой. Ровно эта же операция выполняется и в квадратурном преобразователе DDC.
2. Фильтрация сдвинутого по частоте сигнала однокаскадным CIC фильтром - однородным нерекурсивным фильтром нижних частот порядка N, с многолепестковой частотной характеристикой вида |sin x / x|. АЧХ этого фильтра см. во вложении. Этот фильтр в модели представлен операцией суммирования результатов умножения. Его импульсная характеристика задана неявно в виде прямоугольного единичного взвешивающего окна размером N точек, на которое умножается сигнал x(k) при формировании текущего блока данных. Операция фильтрации выполняется и в DDC, с тем лишь отличием, что там фильтр не является случайным, а специально проектируется для минимизации спектральных наложений при децимации, и CIC (да и то многокаскадный) применяется лишь в первых каскадах дециматора.
3. Децимация выходного сигнала в N раз. Действительно, для каждого частотного канала FFT (которые отличаются значениями Wn), на каждые N точек входного сигнала мы имеем только одно комплексное значение выходного сигнала
X(n).
Итак, FFT можно рассматривать как N-канальную систему DDC, у которой частотные каналы по их центру настроены на частоты Wn. Каждый канал имеет выход в виде комплексной огибающей (complex envelope) на нулевой промежуточной частоте и с пониженной частотой дискретизации в N раз. Полоса и АЧХ каждого канала определяется фильтром по п. 2. С единственной лишь оговоркой - этот однокаскадный CIC фильтр дает неприемлемо большие спектральные наложения (алиасы) в каналах нашего DDC. Этой же причиной объясняется и такое явление, как "растекание спектра" (spectrum leakage) при FFT.
Можно ли побороть этот недостаток? Да, можно. Для этого нужно заменить прямоугольную взвешивающую (weighting) оконную функцию на такую, спектр которой обладал бы нужными нам свойствами. Подобных окон напридумано много разных (оконные функции Чебышева, Хэмминга, Ханна, Кайзера, Блэкмана и т.д. и.т.п.), для всех их характерно плавное спадание по краям во временной области и сильное подавление боковых лепестков спектра в частотной области. Иными словами, перед выполнением FFT каждый блок входного сигнала надо бы умножать на такого рода плавное взвешивающее окно. При этом АЧХ всех частотных каналов будут абсолютно идентичными и зависеть только от формы выбранной оконной функции (точнее, от модуля ее спектра).
Конечно же, никакие известные "оконные функции" в чистом виде нам не подходят, так как нам хотелось бы иметь ровную АЧХ в канале, а не "горбатую". Да ещё и с подавлением спектральных наложений не хуже сотни децибел. Значит, для нашего устройства придется проектировать своё собственное окно. Это дело несложное, и нужное нам окно (или что то же самое - импульсная характеристика фильтра, набор его коэффициентов) ищется при помощи обратного преобразования Фурье от требуемой комплексной частотной характеристики фильтра. Фильтр, не вносящий фазовых искажений, имеет симметричную импульсную характеристику (симметричное окно), а именно это нам и нужно. Окно хорошего качества при этом может достигать размера в несколько тысяч точек (шире окно - выше качество).
Часто требуется управлять коэффициентом перекрытия АЧХ смежных частотных каналов, отношением ширины окна к количеству частотных каналов, коэффициентом децимации и другими параметрами обработки. Поэтому для повышения гибкости этого алгоритма перед вычислением FFT применяют дополнительные операции: перекрытие блоков сигнала во времени до взвешивания (overlap) и полифазное суммирование его субблоков после взвешивания (add), не меняющие принципиальной сущности метода. Этот модифицированный алгоритм называется WOLA filterbank (Weighting, OverLap and Add) или по-русски - WOLA анализ, банк полифазных фильтров.
http://en.wikipedia.org/wiki/Filterbank,
https://casper.berkeley.edu/wiki/The_Polyphase_Filter_Bank_Techniquehttp://www.dsplib.ru/content/polyphasefft/polyphase.htmlТаким образом, при помощи вычислительно эффективного ядра N-точечного дискретного преобразования Фурье (Fast Fourier Transform), реализуется как бы "многоканальный DDC" в виде банка полосовых фильтров WOLA, в котором все N частотных каналов (а их могут быть сотни и тысячи), вычисляются совместно и одновременно. При этом фильтр, формирующий АЧХ всех каналов, является общим и вычисляется только один раз при взвешивании блока входного сигнала. Всё это в отличие от традиционного DDC, в котором каждый частотный канал вычисляется отдельно и должен иметь собственный децимирующий фильтр.
Недостатком такого банка полосовых фильтров является жестко фиксированный шаг каналов по частоте, а также их абсолютная идентичность по ширине полосы. Однако, при необходимости, несколько смежных частотных каналов на выходе банка можно объединить в один, более широкополосный канал. Эта несложная операция, обратная анализу, называется "синтез" и заключается в интерполяции (повышении частоты дискретизации), формирующей фильтрации объединяемых каналов, сдвиге их спектров на "свои места" и последующем суммировании. Цель формирующей фильтрации - обеспечить ровную АЧХ на стыках объединяемых каналов. Естественно, что все спектральные преобразования комплексных сигналов выполняются при помощи комплексного умножения на комплексную экспоненту cos wt +- i sin wt, при этом никакие побочные продукты и зеркальные каналы не образуются.
Поскольку выходные сигналы как DDC, так и банка полосовых фильтров являются комплексными, то так просто взять их и "послушать" не получится. Перед тем, как подать такой сигнал на воспроизведение, его нужно преобразовать к вещественному виду, то есть сделать спектр сигнала симметричным относительно нуля. А именно: выделить фильтром нужную полосу частот, преобразовать (сдвинуть) спектр в нужную нам сторону (например, для получения телеграфного тона или SSB сигнала) и затем просто отбросить, не вычисляя, мнимую часть результата преобразования. Естественное требование, что в результате фильтрации и сдвига спектра (перед отбрасыванием мнимой части), в нашем комплексном сигнале должны остаться только частоты одного знака (только положительные или только отрицательные). Иначе - "здравствуй, родной наш зеркальный канал", про который при цифровой обработке комплексных сигналов мы уже давно забыли.