metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-11-09 12:15 pm

Опердень на FPGA

Сижу снимаю стресс от опердени (по которой звонят раз в 15 минут) чтением документации на FPGA и цифровую обработку сигналов на них. Вообще меня интересует применение этого дела для SDR, т.к. обычных доморощенных SDR подключаемых к звуковой карте, мне мало - я хочу как минимум пару мегагерц полосы анализировать одновременно.
В связи с этим появилась идея затроллить админов заказчика моей опердени следующим образом: для расчета всякой хитрозамороченной бухгалтерии сделать специализированную плату с FPGA, которой на вход будут подаваться первичные данные, а на выходе получать готовые расчетные величины. И придти с ней к этим любителям виртуальных машин и нелюбителям работать, чтобы они искали куда бы эту плату подключить. Но это шутко, конечно. Еще можно на видеокартах зарплату считать, да.

А вообще мне не совсем понятно, почему для SDR используются мощнейшие ADC (типа 50-100-200 Msps), сигнал с которых подается на DDC с генераторами-комплексными умножителями-фильтрами, реализованные на FPGA. По идее, можно было бы сдвинуть частоту аналоговым умножением и не сильно сложной фильтрацией в baseband до подачи на ADC, использовать ADC подешевле(но желательно c oversampling) и дофильтровать в FPGA, а затем или подавать в комп или допилить какие-нибудь FM демодуляторы в FPGA.
Конечно, цифровая обработка сильно удобнее, но нужны какие-то очень уж запредельно мощные ADC и FPGA, которые стоят неадекватных денег, особенно готовые платы - USRP с его 700 баксов это самое дешевое, что я нашел - остальные начинаются от двух штук. Ну и разработка плат для таких рабочих частот тоже не самое простое занятие.
Хотя, возможно, аналоговые down-converters с нужной рабочей частотой и полосой пропускания разработать еще сложнее.


Расшифровка аббревиатур и прочего:
FPGA - Field Programmable Gate Array, программируемая логическая матрица - микросхема типа Xilinx Spartan или Virtex или Altera Cyclone, позволяет из мелких и не очень логических блоков создавать сложные цифровые вычислительные схемы с заданными характеристиками. Программируется пользователем, используют адовы языки программирования типа Verilog и компиляторы из них в какие-то проприетарные бинарные коды для загрузки в них.

SDR - software defined radio, программно-аппаратный комплекс, который позволяет выполнять часть обработки данных в радиоприемнике/передатчике на компе или другом программируемом цифровом устройстве, минимизируя количество аналоговых частей и позволяя реализовывать всякие заумные алгоритмы вместо того чтобы их паять в железе.

ADC - аналого-цифровой преобразователь, обычно микросхема, которая из аналогового сигнала делает цифровой. Одна из основных характеристик - частота дискретизации (сколько раз в секунду можно прочитать значение сигнала), указывается в Msps (mega-sample per second, миллион отчетов в секунду. Частота дискретизации по теореме котельникова должна быть в два раза выше, чем максимальная частота аналогового сигнала подаваемого на вход, иначе будет наложение диапазонов и плющи).

oversampling - Использование частоты оцифровки больше чем 2*макс. частота сигнала. Обычно затем полученные данные подаются на цифровой фильтр - так проще реализовать корректную фильтрацию - на входе ADC достаточно простого аналогового фильтра, а кошерную характеристику проще обеспечить для цифрового фильтра.

baseband - полоса частот исходного сигнала. Или сам исходный сигнал.

Downconverter - блок для сдвига частоты из рабочей области (например, 144 mhz, где ад и жыдырадиолюбители в baseband. Обычно реализуется методом умножения входного сигнала на сигнал с фиксированной частотой и фильтрации фильтром низких частот. Сигнал часто используется комплексный(т.е. реально это два сигнала - cos и sin) и выходов у этого блока тоже два, т.е. выходной сигнал тоже комплексный.
В частотной области это соответствует смещению частоты сигнала на -F, где F - фиксированная частота сигнала с генератора, на который мы умножаем входной сигнал.

DDC - Digital-downconverter - реализация down-converter на цифровой железяке. Можно сделать на обычном сигнальном процессоре - медленно и дороговато, можно на FPGA - быстро, дешевле, мозговырывающе, т.к. не у всех FPGA есть блоки умножения, и вообще алгоритмы там адовы.

USRP - Unified Software Radio Peripheral - дешевая (относительно) железяка для реализации SDR с открытыми (частично) исходниками.


[identity profile] alex myodov (from livejournal.com) 2010-11-09 12:53 pm (UTC)(link)
> Программируется пользователем, используют адовы языки программирования типа Verilog и компиляторы из них в какие-то проприетарные бинарные коды для загрузки в них.

Не всё ль равно, исходник на чём из эфшарпа генерировать?..

[identity profile] http://users.livejournal.com/_slw/ 2010-11-09 02:05 pm (UTC)(link)
не-не-не с fpga идея годная -- это ж охрененый ключ получается, хрен сопрешь!

[identity profile] inhate.livejournal.com 2010-11-09 07:06 pm (UTC)(link)
ну сделают тебе PCI passthrough, и подъебать не получится, и глюки ловить будешь почище чем с TCP offloading :)

[identity profile] blackyblack.livejournal.com 2010-11-10 05:57 am (UTC)(link)
Немного не уловил, как можно туда поставить ацп менее мощные, если радио на частотах 50-200 МГц и там частотная модуляция, то и ацп нужны около 400 мспс. Разве что сначала чем-нибудь перемодулировать сигнал и тогда хватит ацп в обычном звуковом диапазоне.

[identity profile] blackyblack.livejournal.com 2010-11-10 07:38 am (UTC)(link)
Погуглил. USRP2 в точности то, что я написал.

[identity profile] nicka-startcev.livejournal.com 2010-11-10 07:55 am (UTC)(link)
А разве в опердени вычислительно-сложные алгоритмы?

Мне казалось, что там просто стопицот мегабайт данных, которые кривы, ненормализованы и разряжены, что бОльшая часть ресурсов тратится, условно, на "из этих стопицот строк прямым перебором найти две, попадающие под условие".

Это не совсем задача для фпга. В фпга, типично, пихают что-то тупое типа сложения с насыщением, быстрого тупого асинхронного ШИМ, хитрого замеса бит, итп.

[identity profile] dev-zzo.livejournal.com 2010-11-10 08:05 am (UTC)(link)
я думаю, всё это для того, чтобы поднять цену изделия. ведь если оно стоит 30 баксов -- никто ж его не купит. :)
а так да, я бы сначала сдвигал, а уже потом цифровал. и скорость АЦП не будет ограничивать диапазон частот. вопрос только в построении точного генератора -- может, от этого пытаются убежать?