Опердень на FPGA
Nov. 9th, 2010 12:15 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Сижу снимаю стресс от опердени (по которой звонят раз в 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 с открытыми (частично) исходниками.
В связи с этим появилась идея затроллить админов заказчика моей опердени следующим образом: для расчета всякой хитрозамороченной бухгалтерии сделать специализированную плату с 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, где
В частотной области это соответствует смещению частоты сигнала на -F, где F - фиксированная частота сигнала с генератора, на который мы умножаем входной сигнал.
DDC - Digital-downconverter - реализация down-converter на цифровой железяке. Можно сделать на обычном сигнальном процессоре - медленно и дороговато, можно на FPGA - быстро, дешевле, мозговырывающе, т.к. не у всех FPGA есть блоки умножения, и вообще алгоритмы там адовы.
USRP - Unified Software Radio Peripheral - дешевая (относительно) железяка для реализации SDR с открытыми (частично) исходниками.
no subject
Date: 2010-11-09 12:53 pm (UTC)Не всё ль равно, исходник на чём из эфшарпа генерировать?..
no subject
Date: 2010-11-09 12:55 pm (UTC)Потом же придется эмигрировать, потому что я тут такой работы не найду :)
А там меня тоже на работу не возьмут - по моему, большая часть подобных разработок ведется в военных целях :)
no subject
Date: 2010-11-09 02:05 pm (UTC)no subject
Date: 2010-11-09 07:06 pm (UTC)no subject
Date: 2010-11-10 05:57 am (UTC)no subject
Date: 2010-11-10 06:05 am (UTC)А обычно делают так: ставят 50-100 msps АЦП, а его выход сдвигают по частоте к 0 уже цифровой обработкой на FPGA. Причем высокие частоты >F/2 обычно все равно сдвигают входным аналоговым тюнером. Например у USRP с самой простой входной платкой - 1..30 Mhz полоса.
no subject
Date: 2010-11-10 07:35 am (UTC)no subject
Date: 2010-11-10 08:53 am (UTC)Я думаю, что надо бы как-то купить такое готовое, ибо сам я удолбусь разрабатывать, но оно стоит от 2-3 штук баксов :)
no subject
Date: 2010-11-10 07:38 am (UTC)no subject
Date: 2010-11-10 07:55 am (UTC)Мне казалось, что там просто стопицот мегабайт данных, которые кривы, ненормализованы и разряжены, что бОльшая часть ресурсов тратится, условно, на "из этих стопицот строк прямым перебором найти две, попадающие под условие".
Это не совсем задача для фпга. В фпга, типично, пихают что-то тупое типа сложения с насыщением, быстрого тупого асинхронного ШИМ, хитрого замеса бит, итп.
no subject
Date: 2010-11-10 08:02 am (UTC)Про ацп на стпицот сэмплов. А нафига оно?
Для экономии аналоговой части ЧМ-декодера? Ну, для радиоприёма хорошо. Только вот радиоприём из эфира - это как-то не очень актуально. Вот из сети -- другое дело. А в сети оно уже сразу на разумных битрейтах и аццкой производительности не надо.
Вот если сети эт хоум, или перебирать пароли - то можно и на фпга.
Но текущая экономическая обстановка подсказывает, что новомодная видимокарточка с какой-нибудь КУДА и стопицот потоков будет и дешевле и быстрее.
Для ориентира. спартан3(е) стартер кит. Примерно 200 баксов. Примерно десяток умножителей, примерно 500 мгц. Итого, выйдет около 5 гигафлопс, что раз в 10-100 медленнее видимокарты.
no subject
Date: 2010-11-10 08:56 am (UTC)Я про стартер кит подумываю - для SDR его не хватит, но для изучения вполне.
no subject
Date: 2010-11-10 05:12 pm (UTC)Если стартеркит "напоиграться", то имеет смысл заполозти на опенкорес.орг, глянуть, что там есть вкусного, прицениться к паре плат (от альтеры и ксилинкса, как основных игроков на этом рынке) посмотреть, что реально, а что нереально в эти платы засунуть.
Навскидку, в спартан-200 (это ксилинксовская плата, 200 тыс. эквивалентных транзисторов.) впритык влезает 1 ядро типа MIPS (занимает процентов 70, мало места остается на переферию) или 6..12 оптимизированных 8биток, или одна кривая 8битка, или примерно половина-четверть от i80386.
При этом оптимизированная 8битка пикоблейз заведется на 200мгц (6..12 оптимизированных - тоже на 200МГц каждая), а мипс32 всего на 20-40.
no subject
Date: 2010-11-10 08:55 am (UTC)no subject
Date: 2010-11-10 05:04 pm (UTC)no subject
Date: 2010-11-10 08:05 am (UTC)а так да, я бы сначала сдвигал, а уже потом цифровал. и скорость АЦП не будет ограничивать диапазон частот. вопрос только в построении точного генератора -- может, от этого пытаются убежать?
no subject
Date: 2010-11-10 08:58 am (UTC)