metaclass: (Default)
[personal profile] metaclass
Сижу снимаю стресс от опердени (по которой звонят раз в 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 с открытыми (частично) исходниками.


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

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

Date: 2010-11-09 12:55 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Да, вот только eDSL на F# для генерации кода для FPGA мне для полного счастья не хватало.
Потом же придется эмигрировать, потому что я тут такой работы не найду :)
А там меня тоже на работу не возьмут - по моему, большая часть подобных разработок ведется в военных целях :)

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

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

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

Date: 2010-11-10 06:05 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, сначала сдвинуть частоту куда-нибудь пониже аналоговым преобразователем, затем отфильтровать аналоговым фильтром попроще и затем оцифровать, но не в звуковом диапазоне, а что-нибудь вроде 1-2 msps.

А обычно делают так: ставят 50-100 msps АЦП, а его выход сдвигают по частоте к 0 уже цифровой обработкой на FPGA. Причем высокие частоты >F/2 обычно все равно сдвигают входным аналоговым тюнером. Например у USRP с самой простой входной платкой - 1..30 Mhz полоса.

Date: 2010-11-10 07:35 am (UTC)
From: [identity profile] blackyblack.livejournal.com
Можно попробовать вот чо сделать. Купить честный ацп на 400 мспс, поставить плисину и на ней поднять PCIe. Всю эту лабуду в комп и там уже обрабатывать этот поток данных программно. Ещё вариант, на той же плисине поднять гигабитный эзернет и дальше по той же схеме.

Date: 2010-11-10 08:53 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, именно так и делают обычно.
Я думаю, что надо бы как-то купить такое готовое, ибо сам я удолбусь разрабатывать, но оно стоит от 2-3 штук баксов :)

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

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

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

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

Date: 2010-11-10 08:02 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
ну, или, наоборот. Рисуют хитрый граф из сумматоров, умножителей, ксоров и прочих перверсивных цепей, а потом в эту цепь вливают поток данных.


Про ацп на стпицот сэмплов. А нафига оно?
Для экономии аналоговой части ЧМ-декодера? Ну, для радиоприёма хорошо. Только вот радиоприём из эфира - это как-то не очень актуально. Вот из сети -- другое дело. А в сети оно уже сразу на разумных битрейтах и аццкой производительности не надо.

Вот если сети эт хоум, или перебирать пароли - то можно и на фпга.

Но текущая экономическая обстановка подсказывает, что новомодная видимокарточка с какой-нибудь КУДА и стопицот потоков будет и дешевле и быстрее.

Для ориентира. спартан3(е) стартер кит. Примерно 200 баксов. Примерно десяток умножителей, примерно 500 мгц. Итого, выйдет около 5 гигафлопс, что раз в 10-100 медленнее видимокарты.

Date: 2010-11-10 08:56 am (UTC)
From: [identity profile] metaclass.livejournal.com
Радиоприем на ADC+FPGA это сейчас модно.

Я про стартер кит подумываю - для SDR его не хватит, но для изучения вполне.

Date: 2010-11-10 05:12 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
Ну, это уже другой вопрос.
Если стартеркит "напоиграться", то имеет смысл заполозти на опенкорес.орг, глянуть, что там есть вкусного, прицениться к паре плат (от альтеры и ксилинкса, как основных игроков на этом рынке) посмотреть, что реально, а что нереально в эти платы засунуть.

Навскидку, в спартан-200 (это ксилинксовская плата, 200 тыс. эквивалентных транзисторов.) впритык влезает 1 ядро типа MIPS (занимает процентов 70, мало места остается на переферию) или 6..12 оптимизированных 8биток, или одна кривая 8битка, или примерно половина-четверть от i80386.

При этом оптимизированная 8битка пикоблейз заведется на 200мгц (6..12 оптимизированных - тоже на 200МГц каждая), а мипс32 всего на 20-40.

Date: 2010-11-10 08:55 am (UTC)
From: [identity profile] metaclass.livejournal.com
При расчете зарплаты там массивно-параллельные алгоритмы, очень сильно похожие на умножение гигантских матриц :)

Date: 2010-11-10 05:04 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
А. Тогда есть шанс. Но я бы, наверное, на какую-нибудь CUDA посмотрел.

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

Date: 2010-11-10 08:58 am (UTC)
From: [identity profile] metaclass.livejournal.com
Так точный генератор, даже если с выходом на аналоговую часть как раз на FPGA сделать не проблема. Оно и при преобразовании в FPGA именно так делается.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 10th, 2025 05:47 am
Powered by Dreamwidth Studios