Простой цифровой радиоприёмник. Часть 3.

Продолжаю развивать тему. Сегодня немного отвлечемся от внутренней структуры приемника и поговорим о околожелезячной тематике. А именно о главном элементе цифрового приемника, от которого зависит очень многое – АЦП. Ну и еще про кое-какие фишки. Постараюсь, как могу объяснить все наиболее просто.: о)

АЦП

Для наших целей применимы, пожалуй, только высокоскоростные конвейерные АЦП, поэтому речь пойдет о них.
На характеристиках по постоянному току и интерфейсах заострять внимание не буду, думаю с этим с легкостью разберется каждый сам.
Для начала определим основные характеристики АЦП по переменному току, которые очень важны как при расчетах, так и при выборе конкретной модели АЦП. Поехали…


SNR – отношение сигнал шум
SINAD – отношение сигнала к шуму и искажениям
ENOB – эффективное число разрядов
SFDR –динамический диапазон свободный от гармоник.

SNR – отношение сигнал шум.

Это отношение СКЗ амплитуды сигнала к среднему значению суммы квадратов всех остальных составляющих спектра за исключением первых 6 (или 5) гармоник сигнала и постоянной составляющей.
У любого АЦП в зависимости от разрядности есть некоторая ошибка квантования (ошибка определения входного значения), которая создает так называемый шум квантования. Т.е. чем меньше разрядность АЦП, тем сильнее он шумит и соответственно меньше SNR. Для любого АЦП справедливо следующее соотношение:

SNR = 6.02*N + 1.76 [дБ] (1)

Где N – число разрядов.
По этой формуле мы можем оценить теоретический SNR, который может быть у АЦП определенной разрядности. Например, для 12 разрядного АЦП, это число будет:

SNR = 6.02 * 12 + 1.76 = 74 дБ.

Шум квантования можно сказать, что распределен равномерно по все зоне Найквиста. Многие задаются вопросом, как может быть SNR радиоприемника или другой системы с цифровым фильтром выше, чем SNR АЦП?
Давайте посмотрим на график:



На рисунке изображено распределение плотности шума квантования АЦП в первой зоне Найквиста. Как я уже сказал выше, плотность шума распределена равномерно по всей зоне, однако полоса пропускания приемника Fпр, значительно меньше всей зоны. Следовательно, в эту зону попадает только часть этого шума. Если вся остальная часть зоны Найквиста будет отфильтрована цифровым фильтром, тогда в формулу расчета SNR системы добавиться так называемый коэффициент обработки или системное усиление.

Кобр = 10 lg (Fсемпл/2*Fпр)

Откуда общий SNR системы будет равен

SNR = 6.02N + 1.76 + Kобр

Давайте теперь прикинем теоретический SNR нашего приемника имеющего 12 разрядный АЦП, 80 мега выборок в секунду, и полосу пропускания 3 кГц.

SNR = 6.02 * 12 + 1.76 + 10 lg (80000000/2*3000) = 115.249 дБ.

Как бы это не казалось странным, но SNR системы при таких условиях соответствует, аж 18 битному АЦП. Понимаю, это вызывает некоторый разрыв шаблона,… но что поделать, такова суровая реальность. Однако, это теоретически максимальное значение, в реальности все получается несколько не так радужно.

SINAD – отношение сигнала к шуму и искажениям

В принципе те же яйца что и SNR, только уже учитываются те самые 6 гармоник, которые мы откинули в определении SNR.

ENOB – эффективное число разрядов

Если в уравнение (1) вместо SNR подставить SINAD и выразить N, то мы получим эффективное число разрядов ENOB.

ENOB = (SINAD – 1.76)/6.02

Дело в том, что младшие биты АЦП из-за его не идеальности представляют собой шум и не несут полезной информации. И как раз значение ENOB говорит нам о том, сколько бит могут нести информацию. По сути, это реальная разрядность АЦП.

Это очень важный параметр, всегда обращайте на него внимание. Зачастую в рекламном листке на АЦП стоит 14 бит, а в реальности эффективная разрядность АЦП может оказаться 12 бит, а то и менее. Старайтесь выбирать АЦП с максимальным ENOB, при прочих равных условиях.
Откуда более правильным, на мой взгляд, при расчете SNR, в формуле (1) использовать не N, а ENOB. Для AD9236 на частоте 40 Мгц ENOB = 11.4, откуда SNR приемника:

SNR = 6.02 * 11.4 + 1.76 + 10 lg (80000000/2*3000) = 111.637 дБ.

Со снижением входной частоты ENOB, конечно же, несколько увеличивается но, как правило, незначительно и этот расчет я считаю более верным. Лучше слегка занизить параметры чем завысить, кто считает иначе?: о).

Еще раз повторюсь это, по сути, идеальный расчет. В реальности есть хренова туча нюансов, например к шуму квантования добавится шум источника питания, шум предварительного усилителя, фазовый шум, да даже высокомные резисторы шумят больше чем низкоомные (не знали? А ведь резисторы обратной связи в ОУ на ВЧ не спроста такие низкие…), кривость разводки платы и т.п…. Нюансов много, а это всего лишь азбука начального уровня.

SFDR – динамический диапазон свободный от гармоник (спур).

Это отношение СКЗ сигнала к СКЗ наихудшей (самой большой по амплитуде) гармоники (спуры) не зависимо от того, где она наложилась или что является ее источником.
SFDR очень важный параметр, позволяющий оценить наименьшее значение сигнала, которое можно отличить от мощной помехи блокирующей прием. Значение SFDR может указываться как относительно полной шкалы (dBSF), так и относительно амплитуды сигнала (dBc). Чем больше это число, тем соответственно лучше.
Выглядеть все эти чудеса могут как – то так



В зависимости от входной частоты сигнала, SFDR, конечно же, меняется. И как правило при повышении частоты SFDR снижается из-за нелинейностей и прочих искажений которые вносит сама АЦП. Все это обычно указано в даташите в виде графиков и при проектировании системы смотрите, где вы собираетесь работать и какие характеристики АЦП в этой зоне.

Я рассмотрел только часть характеристик по переменному току (которые я считаю минимальным джентльменским набором), есть еще интермодуляционные искажения IMD, дифференциальные нелинейные искажения DNL, общие нелинейные искажения THD, интермодуляционные искажения второго и третьего порядка IMD2, IMD3. И изучение этих характеристик я вам оставлю на домашнее задание: о).

Это страшное слово Джиттер

У любого тактового сигнала, есть такое нехорошее свойство как фазовая не стабильность фронтов — JITTER. Из-за чего, от выборки к выборке в коде АЦП появляется некоторая погрешность, обусловленная изменением фронта синхронизации.



Эта ошибка накапливается и создает так называемый фазовый шум, который добавляется к общему шуму системы, снижая её SNR. Уровень фазового шума тем больше, чем выше скорость нарастания входного сигнала АЦП, т.е. чем выше частота. Следовательно, при высоких входных частотах требования к тактовому генератору становятся все выше.

Например, вот так выглядит график снижения SNR зависящий от величины джиттера для АЦП AD9236.



Для оценки SNR обусловленного только величиной джиттера (для идеального АЦП), существует следующее соотношение:

SNRj = 20lg(1/ (2 * пи * f * tj))

Где, f – частота входного сигнала, tj – величина джиттера

Исходя из этого соотношения, можно прикинуть какой генератор нам нужен для конкретных задач.
Чтобы сохранить SNR АЦП на должном уровне, расчетный SNRj по джиттеру должен быть больше SNR АЦП. В этом случае обеспечивается условие, когда уровень фазового шума меньше шума квантования АЦП.

В принципе, для нашего КВ приемника с некоторым снижением характеристик на ВЧ, можно применить генератор с величиной джиттера не более 1 пикосекунды. Такие генераторы относительно дешевы и стоят, как правило, не более 300р. Чего не скажешь о более крутых генераторах, цена которых может превышать стоимость самой АЦП. Поэтому к выбору генератора стоит подходить со всей серьезностью и не брать абы какой…

Если в системе планируется применить драйвера тактирования, то соответственно к величине джиттера генератора добавляется джиттер драйверов. Про это не нужно забывать.

Однако, это не относится к драйверам тактирования (ADF4001) с системой ФАПЧ, которые позволяют из шумящего генератора сделать менее шумящий. Т.е. понизить величину джиттера.

Дизеринг

Фишка довольно известная, но все же расскажу пару слов о ней. Те более в моем макете дизеринг предусмотрен, кто изучал схему думаю обратили внимание на ФНЧ идущие от ПЛИС к входу предварительного усилителя.
Дизеринг – это подмешивание псевдослучайного шума на вход АЦП, данный метод позволяет повысить точность системы, снизить влияние нелинейностей АЦП.

Как это работает:

Представим, что наш 12 разрядный АЦП является идеальным и не шумящим. Полная шкала у него пусть будет 4096 мВ. Если мы на вход этого АЦП подадим постоянное напряжение, то измерять мы его сможем с точностью 1 мВ или +-0.5мВ.

Давайте добавим на вход нашего АЦП совместно с постоянным напряжением 1000 мВ немного шума, амплитудой около 0.5 – 1.5 младшего разряда. В результате на выходе АЦП мы сможем наблюдать код 1000, а так же 1001, 999, чуть реже 998, 1002 и т.д. Теперь давайте вычислим среднее значение, допустим 100 отсчетов, результат нам даст напряжение с точностью примерно в 10 раз выше или около 0.1мВ. Т.е. корень из 100.

Далее если АЦП идеален и шум правильный, как по распределению, так и по амплитуде увеличивая количество суммируемых отсчетов и вычисляя среднее значение можно увеличивать точность измерения, теоретически практически предела нет…

Но как обычно бывает, “хрустальные мечты разбиваются о чугунную Ж реальности”(с). Шум который мы подмешиваем на самом деле мешает, он снижает SNR нашего АЦП, и появляется на выходе системы, что разумеется очень не приятно. Для того чтобы снизить пролезание шума на выход применяют шум по возможности небольшой амплитуды и со спектром за пределами интересующей области частот.

Нелинейности АЦП можно снизить таким же образом, но уже с гораздо большой амплитудой внеполосного шума. Т.е. мы можем в какой-то мере увеличить SFDR АЦП.

В современных АЦП дизеринг уже встроен в сам чип, и достаточно дрыгунть ногой и вот оно, наше счастье…: о)

Завербуем на службу алиасинг.

Бытует мнение, что алиасинг (наложение спектра) зло. Но это верно только от части, в радиосвязи эта штука весьма полезна и позволяет обойтись без всяких там дополнительных смесителей, перенося более высокочастотные сигналы в первую зону Найквиста. Откуда дает возможность применять менее скоростные, более дешевые АЦП, но при этом работать с УКВ.

Давайте посмотрим, как нашим КВ приемником с частотой дискретизации 80МГц мы смогли бы принимать УКВ, например в обычном вещательном диапазоне, на частоте 100 МГц. Сигнал с частотой 100 МГц находится в 3 зоне Найквиста и он субдискретизирован. Поэтому он переносится в первую зону, однако так как ширина полосы сигнала на частоте 100 Мгц значительно меньше (допустим для FM полоса 30 КГц), чем Fs/2 то сигнал остается передескритизирован и появится на частоте 20 Мгц (100МГц – 80МГц) без потери информации.



Для нормальной работы этого метода, потребуется с помощью полосового фильтра обрезать все зоны Найквиста кроме третьей. Вот таким не хитрым образом мы можем слушать УКВ. К сожалению характеристики АЦП на более высоких частотах снижаются, а требования к тактовому генератору увеличиваются. Но я думаю теперь вы уже сами можете прикинуть на сколько снизятся SNR и SFDR нашего АЦП при работе с УКВ…

Для определения в каких высших зонах Найквиста с конкретной моделью АЦП мы можем работать, в даташите обычно указывается максимальная полоса пропускания АЦП.

Ну и хватит думаю на этот раз…
Спасибо за внимание!

Для общего развития:

Sampled Data Systems
  • +9
  • 09 февраля 2013, 14:22
  • RezonanS

Комментарии (33)

RSS свернуть / развернуть
подскажте как сделать цифровую фильрацию на основе БПФ — секционная свертка по методу перекрытие с накоплением. Делаю как в учебнике — беру блок дополняю нулями в 2 раза больше, режу то что не нужно — ОБПФ — пол результата с сумой прошлой половины на выход, а вторую половину — для сумирования с следующим. НО — всплески на краях выходных блоков присутствуют…

Как быть?
0
Нужно пропустить отсчеты через оконную функцию.
0
Большое спасибо за статьи, пишите ещё про «крутых дядек» и их разработки.
Вы не пробовали разрабатывать узлы ЦОС в System Generator под Simulink? — наглядно, быстро, просто.
Да и переписать грамотно составленную модель под HDL проще, чем с нуля всё разрабатывать в тексте.
0
System Generator видывал конечно, но не пробовал там что-либо делать, как-то все по старинке в ISE… Действительно стоящая вещь?
Да и в ISE особо текста никакого нет.
0
Только начинаю заниматься ЦОС на ПЛИС, поэтому адекватно сравнивать не могу, думаю для начального прототипирования вполне разумно использовать данный продукт.
Как вариант, можно собрать полностью эквивалент Вашего проекта из 1-го поста в System Generator'e, подать тестовый сигнал с музыкой и вывести результат на динамики средствами Simulink, думаю в ISE реализовать такую возможность затруднительно)
0
С симуляцией да, в ISE проблемы…
0
Значится, все-таки можно обойтись относительно низкоскоростными АЦП ))
Было бы неплохо сделать этот приемник для авиационного диапазона (100-150 МГц, АМ).
Погода, там, текущая вещается в автоматическом режиме. Да и вообще, будучи на борту, интересно послушать переговоры своего экипажа.
0
  • avatar
  • Garus
  • 12 февраля 2013, 13:22
Можно, только с низкоскоростными АЦП не охватить весь диапазон шириной 50Мгц работая в одной зоне.
0
Если just4fun, то конечно, а если просто ради слушать, то можно погуглить приемник Р-45 — проще и дешевле не придумаешь…
0
напиши еще про децимацию
не совсем понимаю зачем она нужна
если децимация ето удаление выборок то тогда зачем ети выборки
обрабатываються тем же кордиком
0
Есть такая теорема Найквиста — Котельникова. Согласно ей, чтобы работать без потери информации с сигналом, выборки должны быть не менее чем в 2 раза с большей частотой чем сигнал. Для нашего случая 30Мгц с небольшим запасом выборки 80Мгц.
Чтобы сместить спектр в 0, нам нужны все 80М выборок или весь спектр до 30Мгц.
А вот после смещения, нас интересует спектр всего от 0 до 3Кгц, но чтобы сходу фильтровать сигнал с таким количеством информации сразу от 0 до 3Кгц, требуется просто нереальная вычислительная мощность. Поэтому мы избавляемся от лишних выборок, т.к. интересующий нас спектр от 0 до 3Кгц уже находится там где надо, т.е. в полосе пропускания фильтра.
0
значит CIC фильтр по сути есть сглаживатель
несколько соседних выборок складываються между собой и на выход
выдаеться среднее число
0
Нет, это не сглаживатель, а дециматор :) Почитайте лучше более подробно о них:
Вики

И это
0
а почему б не использовать сглаживатель, он вроде как должен уменьшать сигнал шум, в отличии от дециматора
0
ну конечно увеличивать сигнал/шум а не уменьшать…
0
а зачем? дециматор тоже увеличивает с/ш
CIC более быстродействующий
0
тогда второй вопрос, а почему б тогда в дизеринге для увеличения с/ш подмешивать не шум а синусоиду которая потом попадет на CIC фильтре отфильтруется в ноль и не даст шума на выходе?
кстати по поводу что CIC увеличивает с/ш, в ваших ссылках упоминания об этом не нашел.
0
а почему б тогда в дизеринге для увеличения с/ш подмешивать не шум а синусоиду
И что это даст? Как вы увеличите точность с помощью гармонического сигнала?

кстати по поводу что CIC увеличивает с/ш, в ваших ссылках упоминания об этом не нашел.

Перечитайте про коэффициент обработки.
0
я так понимаю, что с/ш повышается потому что напряжение прыгает вокруг реального значения больше чем на младший разряд ацп, а затем фильтруя с помощью ФНЧ мы приближаемся именно к реальному значению напряжения с разрядностью большей чем позволяет ацп. Если это так то можно подмешивать не шум, а просто такую гармонику которая потом эффективно отфильтруется.
0
Гармонический сигнал НЕ случаен!
Если бы это работало с обычным сигналом, все бы так и делали.
0
Дитеринг может давать на выходе не гармонику, а вообще говоря широкополосное неизвестно что, потому что гармоника суммируется с сигналом и потом проходит через нелинейный элемент (квантователь). То есть фильтрование эта идея не облегчает.

Но вообще-то так делают — например, так можно делать с пилой и получать в результате нечто похожее на ШИМ между соседними уровнями квантованного сигнала, когда оригинальный сигнал плавно переходит с одного уровня на другой. Кстати, это же и называется «многоуровненвый ШИМ».
0
Я правильно понял суть цикла статей — из ПЛИСки и быстрого АЦП можно собрать универсальный радиоприёмник? Другими словами, это решение практически не требует высокочастотного тракта. Я просто как раз хотел с чего-то начать поиграться с ПЛИСиной, а в аналоговых цепях не соображаю.
0
  • avatar
  • Trjam
  • 18 февраля 2013, 17:10
Да, если например применить 16 битные АЦП то можно обойтись вообще одним широкополосным трансформатором на входе, вот вам и весь ВЧ тракт. Чувствительность получается порядка 1.5 — 2 мкВ.
Радиоприемник можно сделать любой конфигурации, железо то же самое но приемники разные, множество приемников в 1 плате, характеристики выше аналоговых и т.д… Причем все это не требует настройки, собрал, прошил работает…
0
меня больше всего интересует тема демодуляции
частотной модуляции
вот что удаось нагуглить

http://www.tusur.ru/filearchive/reports-magazine/2011-24-1/074.pdf
http://www.unn.ru/pages/issues/vestnik/99999999_West_2010_5%282%29/66.pdf
http://www.sm.bmstu.ru/sm5/n4/oba/dspa.html

понравился первый метод скорей всего он займет минмальное количество логики
+ не требует сложных фильтров
по сути ето модель обчыного аналогового приемника с фапч в цифровом виде
проблема в том что к етим примерам не нашел исходников
а с нуля я такое ниасилю
особенно загадочный это блок вычисления фазовой ошибки
в статье лиш вскользь сказано что он тоже сделан на основе кордик алгоритма
0
1,2 ссылки это по большому счету одно и то же. Реализация синхронного приемника.
3 — что-то вроде счетного детектора.

фазу для квадратурного сигнала вычисляют с помощью арктангенса, но там есть ряд проблем…
советую почитать
www.dsplib.ru/content/fmdemod/fmdemod.html

готового вы врятли что-то найдете, единственный пожалуй вариант зарегаться на openhpsdr.org, и повыпрашивать там исходники проги ЦОС… но это надо будет переносить потом в плис.
0
попробую сделать на счетном детекторе ведь по сути
для демодуляции нам нужно выделять момент быстрой смены фазы
это и будет смена символа модуляции а направление изменения показывает
собственно бит
0
Я правильно понял суть цикла статей — из ПЛИСки и быстрого АЦП можно собрать универсальный радиоприёмник?

Это все задумали и реализовали в 70-х годах прошлого века американские военные и ЦРУ. Сначала для систем РЭБ (Радиоэлектронной Борьбы) и прослушки эфира, а позже (в 80-90-х, когда технологии пр-ва скоростных чипов подешевели) перенесли постепенно на все виды своей военной радиосвязи. В первых системах скоростные АЦП делали по технологии As-Ga (Арсенид Галлия) с отбраковкой — 1 годный кристалл чипа из 100/1000 на пластинах, со стоимостью 5/50 тыс. долларов за штуку, что для военных и ЦРУ сущие копейки. Вычислитель был размером с телевизор или холодильник на скоростных чипах ЭСЛ или по технологии As-Ga.
0
В ЦОС мало что понимаю и поэтому может быть глупый вопрос. А как подобный приёмник себя ведёт при наличии в полосе приёма помехи, которая просто переполнит АЦП?
Приёмник ведь обрабатывает сразу всю полосу. Сможет ли он нормально отделить к примеру сигналы находящиеся к примеру в 100 КГц друг от друга, но при этом один из них по амплитуде выше верхних уровней АЦП а второй на уровне 10 процентов от тех же уровней АЦП? Не понадобится ли при этом всё та же аналоговая селекция в виде каких нибудь фильтров?
0
В ЦОС мало что понимаю и поэтому может быть глупый вопрос. А как подобный приёмник себя ведёт при наличии в полосе приёма помехи, которая просто переполнит АЦП?

При коротких перегружающих импульсах (на пиках), ничего негативного не происходит (конечно в обрабатываемом сигнале появляются искажения но они никак даже не прослушивается). При длительной перегрузке когда сигнал на столько силен что перегружает АЦП уже не на пиках появляются искажения в принимаемом сигнале, но прием как правило все равно продолжается.

Сможет ли он нормально отделить к примеру сигналы находящиеся к примеру в 100 КГц друг от друга, но при этом один из них по амплитуде выше верхних уровней АЦП а второй на уровне 10 процентов от тех же уровней АЦП?

Вы ждете каких то чудес? Если 1 сигнал уже перегрузил АЦП что вы от него ждете? аналоговые смесители ведут себя как то иначе? если перегрузка на пиках то сигнал будет приниматься с искажениями, аналогично выше описанному.

Не понадобится ли при этом всё та же аналоговая селекция в виде каких нибудь фильтров?
Полосовые фильтры в любом случае полезны, будь то это аналоговый приемник или цифровой.
0
Спасибо за подробный и исчерпывающий ответ ).
0
еще есть не совсем понятный момент как собираеться fir фильтр
если его порядок 150 это ведь очень много
для него нужно соответственно 150 умножителей какая ж плис столько имеет
0
Последовательную структуру никто не отменял. Умножитель работает с частотой клока 80 Мгц, а семплы на FIR фильтр идут с частотой 78.1 Кгц

150 — это вообще мало, фильтр хреновый… реально качественные фильтры получаются примерно 300 — 500 порядка, а вообще на плис хорошо получаются фильтры 1000, и более порядков..., чего в аналоговом виде достичь нереально…

Ну и про умножители, в плис в зависимости от серии и модели, умножителей может быть весьма много. Например в самом толстом 6 спартанце 180 умножителей.
0
кроме того, не забываем что FIR фильтр это операция умножение с накоплением, умножителя там достаточно 1.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.