Статистика
Время:
Зарегистрированных: 88430
Последним зарегистрирован: hranitel70
Рекорд посещаемости: 12585
Групп пользователей: 4
 Группы:
[Admin] [Cоучастник] [Автор] [Модератор]
 Сейчас на сайте
 Всего: 360
 Гостей: 349
 Анонимных: 0
 Пользователей: 11
 Зарегистрированные:
Ruslan Александр61213 vladart9956 idef palf Ghost1 viktoras 117 NikSR kinsem Aries IYS

> Радиомикрофоны с применениеи ИС -> Цифровые эксперименты. Кодек и радио.
Freeman404
image

Цифровые эксперименты. Кодек и радио.

В предыдущей статье мы рассмотрели основы аналого-цифрового и цифро-аналогового преобразования применительно к распространённым МК. В данной статье рассмотрим некоторые алгоритмы сжатия аудио потока получаемые с АЦП, а так же методы передачи информации по радио, и некоторые микросхемы заслуживающие внимания. Сразу отметим, что данный материал является обзорным, так сказать тезисным сборником моментов, к которым по моему личному мнению стоит проявить интерес, переписывать тысяча первый раз то, что свободно лежит в Интернете считаю занятием совершенно не интересным, Гугль Вам в руки. Естественно это обзор далеко не полный, но опять же по моему мнению, это те вещи, с которых стоит начать, к тому же благодаря своей простоте они дают возможность реализовать их на 8 битных МК экономя при этом драгоценные миллиамперы.
И так, как было отмечено в предыдущей статье, для оцифровки речи с хорошим качеством АЦП работает с разрешение 10 бит и выборкой 10КГц. Тем самым, создавая поток 10 бит * 10КГц = 100Кбит/с. На первый взгляд вроде цифра не большая, однако, если вы откроете любую книжку по теории, то увидите, какой ширины получается лепестки в спектре от прямоугольника с частотой 100КГц. Что это значит? А то, что чтоб принять сигнал с таким спектром потребуется приёмник с соответствующей широкой полосой, а чем шире полоса, тем ниже чувствительность приёмника и больше окружающих помех он принимает, то есть в итоге дальность связи будет меньше. Поэтому очень желательно этот поток сжать, тем самым, увеличить дальность связи. Как показали эксперименты простые кодеки типа CVSD и ADPCM обеспечивают приемлемое качество речи при потоке порядка 30Кбит/с. Да, есть множество других кодеков обеспечивающих качество выше и степень сжатия больше, но не забываем о сложности реализации, требуемых вычислительным ресурсах и энергопотреблении. К тому же большинство таких кодеков используют хитрый фокус, который очень многие не замечают, а именно, например телефонные кодеки подстраиваются на ходу под голос единственного человека говорящего непосредственно в телефонную трубку.

ADPCM
image
Весьма популярный кодек, многие его используют в своих проектах, на первый взгляд он кажется сложным, в действительности это не так, сложные гораздо сложнее...
Опишем кратко принцип работы:
Предсказанный отсчёт (Sp) и указатель на шаг квантования (q) сохраняются от предыдущей итерации и используются в последующей. Первоначально указатель на шаг квантования и предсказанный отсчёт равны нулю. Предсказанный отсчёт (Sp) вычитается
из входного отсчёта (Si), получается разность(d), которая квантуется в ADPCM код.
Декодер является составной частью кодера, он выделен пунктиром. Декодер использует ADPCM код (t) и выполняет обратное преобразование, деквантование, разности (d), получается (dq), на базе которой адаптивный предиктор вычисляет новое значение предсказанного отсчёта (Sp).
Полную информацию об этом кодеке ищите в Интернете, например на сайте микрочипа, Application Notes: AN643.

CVSD
image
Менее популярный в радиолюбительстве кодек. Кстати у вендоров в настоящее время он применяется в беспроводных Bluetooth гарнитурах. Обратим внимание, что тут на рисунке представлена аппаратная реализация с помощью компаратора. Кодек также можно реализовать полностью в программе МК, исключительно с использованием входного АЦП. Основой сложностью в программной/аппаратной реализации является задание верных параметров интегратора и «Syllabic» фильтра, от которых напрямую зависит качество работы кодека. Зато в отличие от ADPCM выход кодека является однобитным, нет старших и младших битов соответственно, т.е. не требуется организация пакетов внутри канала передачи данных.
Опишем кратко принцип работы:
Аналоговый сигнал подаётся на вход ФНЧ, его назначение было рассмотрено в предыдущей статье, далее отфильтрованный сигнал подаётся на положительный вход аналогового компаратора. Компаратор сравнивает входной сигнал с сигналом обратной связи создаваемый интегратором. Цифровой выход компаратора подключен к 3х (или 4х в зависимости от варианта кодека) битному сдвиговому регистру. Сигнал тактовой частоты, подаваемой на сдвиговый регистр, приводит к захвату текущего состояния компаратора в бит «Х», и сдвигу уже захваченных состояний в право, бит «Z» при этом теряется. Происходит выборка состояния компаратора с заданной частотой, эта частота и есть скорость выходного потока кодера. В нормальном режиме работы в регистре постоянно находятся не более 2х единиц или нулей. В режиме перегрузки, когда все 3 бита регистра равны либо 0, либо 1, схема сравнения выдаёт логическую 1, которая изменяет величину напряжения на выходе «Syllabic» фильтра, это напряжение и есть шаг квантования, который в зависимости от значение бита «Х» складывается или вычитается с напряжением в интеграторе. Выходом кодера является бит «Х».
Декодер работает аналогично, с тактовым сигналом данные загоняются в регистр, если нет перегрузок (не более 2х единиц или нулей) то нет воздействия на «Syllabic» фильтр, его выходное напряжение не изменяется, тесть шаг квантования на текущий момент времени постоянен. В зависимости от значение бита «Х» напряжение с «Syllabic» фильтр складывается или вычитается с напряжением в интеграторе. Далее снова идёт ФНЧ для сглаживания процесса изменения напряжения на интеграторе...
image
Полную информацию об этом кодеке ищите на просторах Интернета с помощью Гугля.

Рассмотрев способы сжатия аудио потока, поидее уже можно переходить к передаче и приёму, т.к. сигнал с микрофона оцифровали, сжали, почему б его не завести на какой-нибудь передатчик, и не снять на другом конце с приёмника, а затем проделать обратную операцию, и вот он звук… Однако спешу вас разочаровать, если не использовать умные модули с модемом внутри (правда они берут плату за этот модем, в виде потребляемого тока) то звука не будет, даже если и будет, то хриплый и на небольшом расстоянии.
Почему?
Потому что, во-первых, если посмотреть цепочку данных выходящих с кодера, то увидим что-то вроде: 1101010001010000000000000000000001100. Если с 110101000101 ещё как то всё понятно, можно предположить, где закончились единицы и начались нули. То с 0000000000000000000001100 всё гораздо сложнее, приемник из за переходных процессов внутри себя после 21 нуля врятли быстро сообразит, что пришла единица, в лучшем случае он протрезвеет ко второй/третьей единице, а там снова пошли нули….
Во вторых, даже в относительно благоприятном случае 110101000101, нужна синхронизация, чтоб точно знать, где закончились единицы и начались нули, т.к. передача по эфиру искажает и смазывает сигнал.
Вообще синхронизация это вопрос большой и сложный, а от качества работы этого момента зависит практически всё. Но мы постараемся этот вопрос упростить, рассмотрев его с разных сторон, включая и плату за это упрощение.

Способ 1. Поручите это кому ни будь другому.
Как уже выше говорилось использование готовых модулей с модемом, например на базе микросхем Chipcon, СС1101. Готовый модем, загрузил данные в него с одной стороны, принял с другой, и спи спокойно. Однако платой за это будет большой потребляемый модулем ток, это можно скомпенсировать увеличением скорости и уменьшением времени работы (спячка, sleep), однако при этом сократится дальность связи, но это уже совсем другая история…
Модуль на базе TRC102, не такой умный, как предыдущий, но зато и кушает уже ощутимо меньше…

Способ 2. Манчестерский код.
Это способ представления данных для передачи по радио каналу. Чтоб не лишать вас удовольствия от использования Гугла отметим только основные вещи. Единица информации в этом коде представлена как переход 1->0, а ноль информации 0->1.
image
Благодаря чему подряд идущие нули или единицы невозможны в принципе, максимум 2 штуки. Теперь на приёмник будет приходить примерно равное количество единиц и нулей, которые он благополучно примет, и схеме выделения тактовой частоты так же не будет сносить крышу от длинных серий нулей и единиц.
Платой за такую сказку будет в двое увеличившийся поток данных, т.к. теперь каждый бит информации передаётся двумя битами манчестерского кода.

Способ 3. Скремблирование.
Да да, именно скремблирование, но в данном случае это не имеет никакого отношения к шифрованию, хотя даёт некоторую иллюзию зашифрованности, но на самом деле цели тут совершенно другие, а именно разбавить череду нулей и единиц на выходе кодера.
image
Рассмотрим блок схему.
Верх это скремблер в передатчике, низ - скремблер в приёмнике.
DATA, CLK - входные данные и соответственно тактовый сигнал.
DATA”,CLK” - декодированные данные и соответственно восстановленный тактовый сигнал.
TX, RX - символизируют приёмник и передатчик.
SYNC – это блок выделения тактовой частоты, чтоб нижний скремблер защёлкивал (декодировал) данные синхронно с верхним.

Работают они совершенно одинаково, на свойстве: «данные XOR ключ = шифр» и обратное: «шифр XOR ключ = данные».
Этим XOR является элемент на блок схеме XOR 1 и XOR 1”.
Элементы XOR 2 и RG 2, а так же соответствующие им XOR 2” и RG2” образуют генератор ПСП, что это такое и как он работает? Ответы на эти вопросы ищите в весьма интересной статье уважаемого участника нашего форума Neekeetos”а, она называется: «M-последовательности и с чем их едят, Как сгенерировать случайные числа на AVR».
Благодаря применению скремблера поток так же окажется разбавленным примерно одинаковым количеством нулей и единиц, конечно качество разбавления будет хуже чем в предыдущем варианте, однако выигрыша в конечном итоге это принесёт больше, к тому же платой за этот выигрыш будет небольшая дополнительная предварительная программная обработка передаваемой информации.

Обзор интересных микросхем.
В заключение хочу привести названия некоторых микросхем, которые обязательно стоит попробовать и по какой причине. Список естественно не полный, просто на данный момент я считаю эти микросхемы относительно распространенными, недорогими и интересными:

МАХ1472 – Эта микросхема в представлении не нуждается, хорошо известна на нашем портале, у ней есть более мощный брат MAX7044, аж +13dBm против +10dBm МАХ1472. По параметрам потребляемого тока и отдаваемой мощности практически вне конкуренции. Слабой стороной, по моему мнению, является наличие только ASK модуляции, а также фиксированный коэффициент синтезатора частоты, из-за чего в случае необходимости смены несущей частоты нужно брать пальник в руки, да желательно иметь целый ряд кварцевых резонаторов, что может быть весьма проблематично. В прочем первый недостаток можно исправить с помощью MAX1479.
rfPIC 12F 675(K)(F)(H) – Чем то напоминает МАХ1472, но это прежде всего микроконтроллер с интегрированным ВЧ передатчиком в одном корпусе. Из достоинств собственно этот микс 2 в 1, наличие ASK и FSK модуляции, так же он распространеннее МАХ1472. Из недостатков, чуть большее энергопотребление и аналогичная ситуация с фиксированным коэффициентом синтезатора.
rfRXD0420/ rfRXD0920 – Приёмник, на диапазоны 400 и 900 МГц соответственно. По моему мнению, незаслуженно обделенный вниманием наших авторов. Из достоинств отмечу широкий частотный диапазон встроенного ГУНа (300 – 450), (850 – 930) МГц, Ширина ПЧ определяется фильтром ПЧ. Кроме того, приёмник может работать в режиме приёма цифрового сигнала с модуляцией ASK, FSK а так же аналогового сигнала, этакий плавный переход на цифру… Из недостатков отметим среднюю чувствительность самого приёмника, впрочем практически во всех конструкциях добавляют внешний УВЧ, и всё так же фиксированный коэффициент синтезатора частоты.
TRC101/102 – Микросхема трансивера, имеет и приёмник и передатчик на борту. Из достоинств: Малые размеры, простота освоения, коэффициент синтезатора частоты не фиксированный, от одного кварца можно получить целую сетку частот, возможно организовать двунаправленный канал связи. Из недостатков, отметим уже весьма сильно возросшее энергопотребление и мощности хотелось бы чуть больше.
CC1101 – Более продвинутый вариант относительно предыдущего TRC, полноценный модем, с полноценным FIFO, полный сервис, загрузил в него данные и забыл, он сам всё сделает, но за это приходится платить, в первую очередь потреблением, во вторую сложностью программирования…..в разы сложнее TRC.

Надеюсь, статья послужила интересным продолжением в области «цифры» и станет ещё одной ступенькой для различного рода творческих идей.
Обсуждение статьи проводится в ветке форума «микроконтроллеры» по адресу: http://vrtp.ru/index.php?showtopic=7497&hl=
Freeman404







Топ 50 вывоз мусора и отходов в воронеже.

  banner DIPTRACE - САМЫЙ ЛУЧШИЙ ТАКСИРОВЩИК ПЕЧАТНЫХ ПЛАТ
Portal-X