Опердень на 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 с открытыми (частично) исходниками.
В связи с этим появилась идея затроллить админов заказчика моей опердени следующим образом: для расчета всякой хитрозамороченной бухгалтерии сделать специализированную плату с 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
Не всё ль равно, исходник на чём из эфшарпа генерировать?..
(no subject)
no subject
no subject
no subject
(no subject)
(no subject)
(no subject)
no subject
no subject
Мне казалось, что там просто стопицот мегабайт данных, которые кривы, ненормализованы и разряжены, что бОльшая часть ресурсов тратится, условно, на "из этих стопицот строк прямым перебором найти две, попадающие под условие".
Это не совсем задача для фпга. В фпга, типично, пихают что-то тупое типа сложения с насыщением, быстрого тупого асинхронного ШИМ, хитрого замеса бит, итп.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
а так да, я бы сначала сдвигал, а уже потом цифровал. и скорость АЦП не будет ограничивать диапазон частот. вопрос только в построении точного генератора -- может, от этого пытаются убежать?
(no subject)