Принцип работы SDR приемника с DDC дециматоромРассмотрим типовую структуру КВ цифрового приемника с DDC дециматором, выполненного по принципу "АЦП к антенне", с шириной полосы одновременно принимаемого сигнала 30 МГц. Входной фильтр, ограничивающий спектр сигнала для соблюдения условия Котельникова, не показан.
Для конкретности пусть частота дискретизации АЦП будет 100 МГц, а ширина целевой полосы выходного сигнала 2 МГц. Берем "с потолка" запас 0,5 МГц на неидеальность децимирующего фильтра, итого получаем частоту дискретизации комплексного выходного сигнала 2,5 МГц. Таким образом, в процессе обработки требуется понизить (децимировать) частоту дискретизации в 40 раз. Вся обработка принятого сигнала (после АЦП) выполняется вычислительными алгоритмами цифровой обработки сигналов (ЦОС), то есть, достаточно точно.
На выходе АЦП мы имеем вещественный дискретный широкополосный сигнал, принятый антенной, с симметричным относительно нуля периодическим спектром (период спектра равен частоте дискретизации 100 МГц). Квадратурный преобразователь (DDS и два умножителя) формирует из этого вещественного сигнала комплексный дискретный сигнал и линейно сдвигает его спектр по оси частот так, чтобы центральная частота целевой полосы стала нулевой промежуточной частотой. При этом периодичность спектра сохраняется, но он перестает быть симметричным (это и понятно, сигнал стал комплексным), см. рисунок.
Цель дальнейшей фильтрации - из широкой 100-мегагерцовой полосы комплексного сигнала вырезать нужные нам 2 МГц в окрестности нулевой частоты с одновременным выполнением децимации. Эта операция выполняется параллельно в обоих I-Q каналах независимо друг от друга обычными дискретными (цифровыми) вещественными фильтрами. Фильтры должны быть абсолютно идентичными. Рекомендуется применять нерекурсивные фильтры с симметричными коэффициентами.
Операция децимации заключается в отбрасывании лишних отсчетов дискретного сигнала. Грубо говоря, на выходе из сорока пар исходных отсчетов сигнала должна остаться только одна пара. Так просто их отбросить нельзя, иначе будет эффект спектральных наложений (алайзинг), т.к. по сути децимация - это дискретизация дискретного сигнала. Т.е. перед отбрасыванием мы должны спектр сигнала привести к требованиям по-Котельникову и отфильтровать те частоты, которые превышают новую частоту Найквиста. От экономичных рекурсивных фильтров отказываемся, т.к. нам не нужна кривая ФЧХ. Значит, нерекурсивный FIR фильтр должен быть немалого порядка (с кучей умножителей, сумматоров и ячеек памяти) и с хорошим скатом АЧХ - ведь на расфильтровку у нас есть всего 500 кГц запаса.
Анализируя эту ситуацию, мы видим, что у нас нет такого огромного вычислительного ресурса - ведь оба децимирующих FIR фильтра должны работать на полной скорости 100 MSPS. Да и вообще - наша дешевая ПЛИС не имеет столько встроенных умножителей для их реализации. Что делать?
И тут нам на помощь приходит самая простейшая из всех простых форма реализации нерекурсивного фильтра - однородный фильтр. Это такой фильтр, все коэффициенты которого равны единице. То есть, он не требует умножителей совсем! Импульсная характеристика (взвешивающее окно) однородного фильтра - прямоугольная, а АЧХ (модуль преобразования Фурье импульсной характеристики) имеет многолепестковую форму, в которой лепестки образованы функцией вида
|sinc x| = |sin x / x|. Затухание АЧХ в средних точках между лепестками бесконечное. Этот фильтр может быть реализован и в рекурсивном виде, так он получается еще проще. Теория однородного фильтра изложена у Гольденберга ("Цифровая обработка сигналов") на странице 77. Супостаты Гольденберга не читали, и рекурсивную реализацию однородного фильтра они по-своему обозвали CIC-фильтром (Cascaded Integral-Comb), или фильтром Хогенауэра.
К нашей радости оказывается, что его АЧХ как нельзя лучше подходит для реализации децимирующего фильтра, т.к. имеет глубокие провалы как раз на тех частотах, где требуется давить "алиасы". См. на рисунке АЧХ 1-каскадного CIC, рассчитанного для коэффициента децимации 10. Ось частот отградуирована в долях от исходной частоты дискретизации, т.е. 0,5 - это исходная частота Найквиста 50 МГц. Новая частота дискретизации после этого дециматора будет 100/10 = 10 МГц.
На картинке красным цветом показаны полосы частот, которые нас не интересуют вообще и где АЧХ может быть абсолютно любой (это и не целевая полоса и не алиасы), зеленым цветом близ нулевой частоты показана половина 2-мегагерцовой целевой полосы, также зеленым цветом вокруг провалов на частотах кратных новой частоте дискретизации 10 МГц (10, 20, 30, 40, 50 МГц) показаны 2-мегагерцовые участки "алиасов". К сожалению, эти провалы АЧХ не столь широки как нам хотелось бы, и на краях полезной полосы алиас первого порядка будет подавлен всего на 19 дБ. Это очень плохо.
Но в нашем арсенале есть испытанное средство - каскадирование. Так, шестикаскадный CIC фильтр с подавлением алиасов не хуже -115 дБ нас уже вполне устроит (см. рис. ниже). За это мы должны заплатить ухудшившейся неравномерностью 0,9 дБ в целевой полосе, но это пустяки. При необходимости этот небольшой провал АЧХ можно потом скорректировать.
Конечно, сам по себе CIC фильтр не может обеспечить требуемую крутизну АЧХ для качественного выделения полосы целевого сигнала - эта работа возлагается на FIR фильтр в следующем каскаде децимации.
Таким образом, для данного проекта наш дециматор получается двухкаскадным. В первом каскаде шестикаскадный CIC дециматор (который совсем без умножителей) берет всю грязную работу на себя и делит огромную скорость входного потока данных на 10, во втором каскаде FIR дециматор подчищает огрехи CIC, выполняет чистовую отделку и делит ещё на 4. Во втором каскаде уже требуется настоящий FIR фильтр с умножителями. Но он будет работать на пониженной в 10 раз частоте, и в ПЛИС его можно реализовать экономично, с работой умножителей в цикле - наподобие того, как это делается в программах для ЭВМ. Требования к АЧХ этого фильтра будут ниже, чем при однокаскадной децимации, и его порядок не будет высоким. Такой фильтр не отнимет у ПЛИС много ресурса. Часто для экономии умножителей применяют такую разновидность FIR фильтра, как полудиапазонный (half-band) фильтр с коэффициентом децимации 2 - у него половина коэффициентов равны нулю. Ну и, конечно, импульсная характеристика FIR фильтра должна быть обязательно симметричной - это не только дает нам линейную ФЧХ, но и в два раза экономит память в ПЛИС для их хранения.
Второй FIR каскад выгодно раздробить на подкаскады, например, из полудиапазонных фильтров. Это нам даст в целом ещё бОльшую экономию по умножителям. Если на выходе требуется ещё более узкая полоса, то децимацию можно продолжать и дальше. При этом требования к вычислительному ресурсу резко понижаются, и последующие этапы ЦОС могут быть реализованы программно на ЭВМ.
Если общий коэффициент децимации DDC должен быть небольшим (менее 8-10, т.е. на выходе нам нужна широкая полоса), то CIC уже не подойдет, и надо будет раскошеливаться на FIR с умножителями, который также выгодно дробить на каскады.
Первые этапы ЦОС реализуются в большинстве современных широкополосных ЦРПУ аппаратно в ПЛИС FPGA, т.к. требуется очень высокая производительность. Но сегодня уже есть и альтернатива - алгоритмы ЦОС с достаточно высокой производительностью можно недорого распараллеливать и вычислять на GPU - видеокарте NVidia с поддержкой CUDA, СИ-подобного языка параллельных вычислений. Хватило бы скорости интерфейса закачать туда входной поток данных. Но в любом случае такая архитектура относится к классу SDR, т. к. определяется и настраивается программно при помощи прошивок ПЛИС или программного обеспечения GPU/CPU.
DDC можно реализовать и без использования ПЛИС и избежать связанных с этим граблей, временнЫх и материальных затрат освоения программных пакетов разработки прошивок FPGA. Промышленность супостатов выпускает готовые микросхемы DDC, которые можно извне программировать в рамках выполняющейся функции (программировать фильтры, настраивать коэффициенты децимации каскадов, перестраивать синтезатор и т. д.). В этом случае структура DDC ЦРПУ будет состоять из УРЧ, входного ФНЧ, АЦП, микросхемы DDC, контроллера и интерфейса с ЭВМ.
О подводных камнях.
1. Если ошибиться с выбором параметров децимирующих фильтров, то можно нарваться на внеполосные каналы приема, которые получаются из недостаточно подавленных алиасов.
2. Не надо забывать, что каждый каскад децимации должен сопровождаться расширением разрядности данных. Чем уже полоса, тем больше требуется разрядов для понижения шума округления (здесь действует принцип обмена разрядности на ширину полосы сигнала, см. подробнее в теме о выборе разрядности АЦП).
3. Не надо скупиться на разрядности умножителей в квадратурном преобразователе по входу LO опорного сигнала. И сам опорный сигнал, формируемый методом прямого цифрового синтеза DDS (Direct Digital Synthesizer), должен быть точным, насколько это возможно. Для повышения его точности часто применяют интерполяцию по-Тейлору, если в ПЛИС есть лишние умножители. Иногда недостаточно точный опорный сигнал искусственно зашумляют (dithering, дизеризация) для уменьшения спуров, при этом мощность спуров размазывается по частоте, незначительно повышая шумовой пьедестал. Чтобы сэкономить память ПЛИС и не хранить в ней таблицу значений функции косинуса, для вычисления этих значений иногда применяют итерационный алгоритм CORDIC.
Конечно, в таком коротком очерке нельзя рассмотреть все тонкости и нюансы реализации DDC и особенности аппаратной реализации ЦОС на ПЛИС. Но основной принцип и основные грабли должны быть понятны.
=========================================================
Литература.
Гольденберг. Цифровая обработка сигналовЛикбез про нерекурсивные (FIR, КИХ) и рекурсивные (IIR, БИХ) фильтры:
http://www.dsplib.ru/content/filters/ch10/ch10.htmlПро CIC фильтры:
www.dsplib.ru/content/cic/cic.htmlПерейти к оглавлению