Недавно я прочитал статью, в которой автор пророчит нам веселое, но светлое будущее. Кроме всего прочего, он говорит дословно следующее: «Если мы ничего не можем поделать с тем, что государство следит за нами, мы должны иметь право следить за ним».
Замечательный тезис! Даешь гонку радио-вооружений!
В правовых вопросах мне предложить нечего, а вот в плане техники можно внести свою малую толику. Дело, конечно, не только в радио. Есть много других информационных и технических средств, которыми надо обладать для такой слежки. Я сосредоточусь на радио-технических, так как это мне ближе по профессии.
Вы, возможно, уже читали про демонов и про робингудов. Продолжая работу в этом направлении, хочу рассказать о новой плате SDR-приемника.
Она построена на всем известных однокристальном трансивере AD9363(4) и USB3-контроллере CYUSB3014.
Кто-нибудь обязательно захочет забросать меня камнями за изобретение велосипедов. Если дочитаете до конца, то — милости просим.
Цель разработки платы — создать приемник со следующими свойствами:
- компактный SDR-приемник;
- простая схемотехника;
- малое потребление;
- широкий диапазон частот;
- интеграция с симметричной антенной;
- большая полоса приема;
- вход внешней опорной частоты и синхронизации;
- поддержка GNURadio.
Первые три пункта стали возможными благодаря способности CYUSB принимать данные от сложных источников. Таким образом, мы можем избавиться от FPGA на выходном интерфейсе микросхемы трансивера. AD9364 с режиме Dual Port Full Duplex выдает данные, клок и сигнал FRAME, по которому синхронизируются квадратурные составляющие выходного цифрового сигнала.
Временные диаграммы:
К счастью, интерфейс GPIFII микросхемы CYUSB3014 при определенной настройке может опираться на сигнал типа FRAME для синхронизации квадратурных составляющих. Надо лишь завести его в схему GPIFII и заставить ее ждать первого фронта FRAME и потом уже не обращать на него внимания. В диаграмме состояний GPIFII это выглядит так:
Передающий тракт трансивера выключаем, нам нужен только приемник. Его и нельзя завести напрямую в CYUSB, так как в контроллере есть баг, который проявляется только при работе на передачу и который можно исправить только с помощью FPGA.
Схема вот такая, очень простая:
Четвертый пункт, широкий диапазон частот, обеспечивает сам трансивер. И мы ему не мешаем — не ставим там никакого трансформатора. Чудно, но таким образом мы получаем возможность подключить симметричную антенну прямо ко входу приемника. Всегда можно, пожертвовав характеристиками, поставить в одно плечо 50 Ом и подключить обычную антенну.
Большая полоса приема обеспечивается интерфейсом USB3. Контроллер CYUSB3014 достигает скорости передачи данных 400 МБайт/с, что соответствует 100 МГц полосы 16-ти разрядного квадратурного сигнала. Это даже больше, чем может выдать приемник.
Разъемы внешней опоры и синхронизации сделаны сбоку, на переднем крае не поместились. Разъем внешней синхронизации понадобится для местоопределения помех, за которыми надо следить.
Ну и поддержка GNURadio обеспечивается руками и головой программиста. Ну и немножко задницей, конечно. Софт смотрите здесь и здесь.
По первой ссылке C++ библиотека, работающая с платой через libusb и дающая интерфейс для управления настройками AD9364 и ввода отсчетов. Библиотека реализует загрузку firmware, передачу команд в регистры AD9364 и получение отсчетов сигнала.
По второй ссылке форк GR-OSMOSDR, который упрощает включение новых плат в GNURadio. Здесь был добавлен блок Source для новой платы.
В результате получаются некоторые картинки спектра:
Теперь можно воткнуть плату в планшет и вот так красиво мониторить эфир.
P.S.
На основе схемотехники этой платы сейчас разработан SDR-модуль для Jetson TX2. В следующий раз напишу про него.
Автор: itsar