Некоторое время назад появилась в моем распоряжении плата Raspberry Pi3. Ее возможности действительно впечатляют: и быстрый четырехядерный процессор, и встроенные аппаратные кодеки/декодики аудио/видео/jpeg, сеть Ethernet/WIFI, USB2, HDMI… Прямо настоящий компьютер. Очень круто, что есть разъем GPIO, который позволяет разным умельцам подключать что-то свое нестандартное и особенное. Существует огромное число различных плат расшрения, которые устанавливаются на этот разъем: дисплеи, светодиодные экраны, адаптеры для двигателей, платы АЦП…

Я хотел бы немного рассказать об FPGA плате Марсоход2RPI, которая, как и другие платы расширения, подключается к разъему GPIO распберри, и добавляет нашему микрокомпьютеру совершенно новые свойства.

Плата довольно проста. На ней установлены:

  1. FPGA Cyclone IV EP4CE6E22C8
    • логических элементов 6272;
    • встроенная память 270Кбит;
    • Умножителей 15 (18x18);
    • PLL 2;
  2. Четыре светодиода;
  3. Три кнопки;
  4. Кварцевый генератор 100Мгц;
  5. Возможность установки чипа EPCS4 (для случая, если плата будет использоваться автономно);
  6. Разъем JTAG (для случая, если плата будет использоваться автономно);
  7. Два 40 пиновых разъема на каждом по 28 пользовательских GPIO — разъемы совместимые с Raspberry;
  8. Один 40 пиновый разьем для подключения к Raspbery, на котором можно использовать 24 или 20 GPIO (в зависимости от того, установлен чип EPCS4 или нет).

Плата Марсоход2RPI устанавливается не над платой Raspberry Pi, а сбоку, через специальный переходник. Это сделано умышленно. Raspberry Pi3 и так довольно сильно греется при загрузке 4-х ядер, накрывать плату сверху кажется не очень гуманным с точки зрения охлаждения.

Так можно подключить плату Raspberry Pi2/ Pi3:



А вот так Pi-zero:



Возможно (но это не точно), эту же плату расширения можно будет использовать с OrangePi.

Самое первое применение этой платы, которое приходит на ум — это увеличение количества GPIO сигналов в два раза: был один разъем, а стало два. Нужно только создать и загрузить в ПЛИС нужный проект, ну и управлять входами выходами придется каким-то особым образом, тут вариантов много: последовательный порт, SPI, GPIO, можно задействовать DMA…

Загружать ПЛИС платы Марсоход2RPI можно прямо из Raspberry через JTAG сигналы, которые, конечно, отображаются в GPIO

  • tck > GPIO7
  • tms > GPIO0
  • tdi > GPIO11
  • tdo < GPIO1

Есть такой open source проект OpenOCD, отладчик и дебагер, который позволяет использовать Raspberry как JTAG программатор. OpenOCD — это сервер, его можно запустить, а потом подключаться к нему хоть удаленно телнетом и выполняя команду «svf» можно загрузить образ скомпилированного проекта в ПЛИС. Подробнее об OpenOCD на raspberry pi.

Вот тут как раз видеодемонстрация:



Самый первый «тестовый» проект для платы Марсоход2RPI уже готов, хотя пока не очень впечатляет своей функциональностью. Первый проект для ПЛИС — это обычно всегда «моргание светодиодом», такой своего рода «hello World!» мира микроконтроллеров и FPGA.
Его исходники можно взять на github: github.com/marsohod4you/m2rpi_first

Но и тут, даже в этом простом случае уже есть взаимодействие ПЛИС и микрокомпьютера. Из raspberry можно посылать через последовательный порт в ПЛИС байты, которые меняют скорость моргания светодиода. Более того, первый «тестовый проект» ПЛИС принимает байт из последовательного порта, модифицирует его (добавляет единицу), и отправляет назад. Конечно, довольно примитивное, но уже взаимодействие двух систем ПЛИС и процессора.

Видеодемонстрация:



Это мой первый опыт доступа к ПЛИС из Raspberry. Я думаю, что было бы интересно попробовать делать действительно сложные проекты, как, например, захватывать в распберри кадры от видеокамеры и передавать их по DMA в ПЛИС для обработки. Думаю интересных проектов с этой платой расширения может быть много.

Комментарии (93)


  1. Andy_Big
    28.11.2017 00:08

    А зачем загружать по JTAG если можно по родному последовательному протоколу загрузки, по которому и EPCS ее грузит? Там обычный SPI, плюс контроль одного или двух статусных пинов, сейчас точно не помню :)


    1. nckma Автор
      28.11.2017 09:05

      Предполагалось далее сделать сетевой сервер для распберри, чтобы удаленно из среды Altera Quartus можно было бы отладку делать в SignalTap. Для этого нужен JTAG.


      1. Andy_Big
        28.11.2017 09:20

        А, тогда понятно :)


  1. igor_suhorukov
    28.11.2017 00:20

    Насколько описанная здесь связка удобнее, мощнее или дешевле DE0-Nano-SoC?


    1. nafikovr
      28.11.2017 08:32

      в первую очередь удобнее благодаря сообществу малинки.


    1. nckma Автор
      28.11.2017 11:24

      Разные весовые категории. Понятно, что в Cyclone V связка с FPGA будет гораздо более широкополосной. Но Cyclone V и дороже.


      1. romanetz_omsk
        28.11.2017 14:28

        DE0-Nano-SoC с производства сняли


        1. nckma Автор
          28.11.2017 14:32

          Зато теперь рекламируют DE10-nano.
          И объявили конкурс проектов mail.terasic.com.tw/epaper/2017/innovatefpga_en2
          Полуфиналисты получат уже эту DE10-nano плату для опытов.


  1. Sun-ami
    28.11.2017 00:56

    Лучше соединить платы шлейфом с разъёмами. Тогда можно будет сложить платы бутербродом тыльной стороной, если нужна большая компактность, это не помешает охлаждению, если Raspberry Pi будет сверху, или бутерброд будет установлен вертикально. И выйдет проще, дешевле, без проблем с точным выравниванием для того чтобы установить переходник, и выламывания разъёмов, если платы не прикручены к корпусу или основанию.


  1. Sdima1357
    28.11.2017 00:58

    Картинку по DMA нет смысла передавать. Слишком мало встроенной памяти на плате fpga. А видео процессинг с таким маленьким футпринтом (270 кбит)дешевле делать на самой распи. Лучше обратно- читать внешний hdmi например


  1. tronix286
    28.11.2017 09:13

    Самый главный минус, на мой взгляд, отсутствие какой-либо памяти. Куда на 100МГц байты складывать? Ответ — никуда. Вот и превращается Cyclone IV в обычный ногодрыг уровня 51 контроллера, который может дрыгнуть ногой, выплюнуть по SPI или принять по UART. На этом все.


    1. Andy_Big
      28.11.2017 09:25

      Это же не NAS. Приняли порцию данных, обработали ее, вернули (или передали дальше) результат. Как пример — прием данных от АЦП, цифровая узкополосная фильтрация в несколько ступеней с промежуточной децимацией и выдача результата


    1. Andy_Big
      28.11.2017 09:38

      Например, я занимался проектом, в котором 4-й циклон являлся прослойкой между хитрым АЦП и микроконтроллером. Он полностью управлял АЦП и по команде контроллера считывал с АЦП порцию данных, прогонял ее последовательно по четырем фильтрам (каждый последующий — с более узкой полосой, последний с полосой то ли единицы, то ли десятые доли Гц, по-моему) и накапливал указанное количество результатов для выдачи контроллеру. Всего во всех фильтрах было несколько тысяч коэффициентов и при каждом новом значении на входе каждый фильтр должен произвести перемножений по количеству коэффициентов в нем, просуммировать результаты и сдвинуть буфер входных данных, а данные с АЦП считывались на 10 МГц. И все это в два параллельных канала :)
      Вот Вам и недодрыг уровня 51 контроллера :)


      1. nafikovr
        28.11.2017 09:59

        все хорошо, но только когда микроконтроллер реального времени. например типичная беда USBee — комп не успевает забирать данные с анализатора. был бы буфер — не было бы проблем.


        1. Andy_Big
          28.11.2017 10:10

          Никто не мешает прицепить к FPGA память SRAM или SDRAM. Ее отсутствие — это проблема реализации устройства, а не Cyclone IV :)
          Так-то в недостатки FPGA можно записать еще и отсутствие дисплея, физического уровня Ethernet 1G, АЦП, выхода HDMI и т.п. И несовместимость с Ардуиновскими скетчами :)


          1. tronix286
            28.11.2017 10:12

            Мешает отсутствие на плате хотя-бы посадочного места под память, не говоря уже о ее наличии. Прицеплять к плате SRAM в TSOP II будет МГТФом?


            1. Andy_Big
              28.11.2017 10:15

              Если хочется поизвращаться, то можно и МГТФ. Если не хочется — то платка с разъемами, вставляющимися в разъемы платы из статьи.


              1. tronix286
                28.11.2017 10:19

                Ну понятно, платка на платку через платку в платку.


                1. Andy_Big
                  28.11.2017 10:25

                  Что в этом не так? Это же не специализированное под накопление больших данных устройство, это демонстрационная плата для изучения работы с FPGA. Кому что понадобится — тот то и прицепит дополнительно, к чему повышать стоимость без веских оснований?


                  1. nafikovr
                    28.11.2017 10:28

                    что то скоростное параллельное на одной то плате не всегда нормально разводится.


                    1. Andy_Big
                      28.11.2017 10:30

                      Ну значит уровень этой платки уже пройден и пора переходить к более серьезному подходу — делать свою плату со всей нужной периферией под свою задачу.


                      1. nafikovr
                        28.11.2017 10:36

                        тут скорее ограничение в количестве ног. приходится выбирать или в 2 раза больше GPIO, или память. мне кажется память была бы интереснее.


                        1. Andy_Big
                          28.11.2017 10:51

                          А зачем Вам столько ног? :)


                          1. nafikovr
                            28.11.2017 10:58

                            мне незачем, я же написал что мне память была бы интереснее


                            1. Andy_Big
                              28.11.2017 11:00

                              Ну так сделайте платку и подключите :) Или купите отладочную плату с интегрированной памятью, если делать неохота :)
                              Я бы еще понял, если бы на этой плате были только светодиоды и пара кнопок, и все, никаких коннекторов расширения.


                  1. tronix286
                    28.11.2017 10:32
                    +1

                    О каких больших данных идет речь? Простая задача — захватить кадр видео с VGA выхода и передать на Пи, который из кадра сделает jpeg скриншот. Не реализуемо на данной конфигурации. Кадр VGA — большие данные?


                    1. Andy_Big
                      28.11.2017 10:45

                      Для этой задачи в любом случае нужно еще соответствующий АЦП.
                      А вот, например, гнать в FPGA поток какого-то сигнала и получать от нее спектр этого сигнала — легко.


                    1. uterr
                      28.11.2017 11:03

                      Такие задачи делаются на FPGA, только кадр захватывается не целиком, а поточно, так что такого объема памятик, для такой задачи как вы назвали, достаточно.
                      Во вторых, как уже заметили, отсутствие памяти это не проблема, хотите — просто подключите внешнюю память, многие FPGA это умеют нативно, для других же есть библиотеки работы с памятью


                      1. tronix286
                        28.11.2017 11:26

                        Ну-ка, поподробнее про захват «поточно». Особенно если пиксельклок у VGA самое низкое 25 с хвостиком МГц. Пока вы будете «поточно» отдуплять как текущую точку просунуть через UART в Пи на 9600 бот, вы потеряете не только следующую точку, но и вообще все остальные точки из кадра, а может быть даже и несколько следующих полных кадров.


                        1. Andy_Big
                          28.11.2017 11:30

                          Во-первых можно сжимать, что сильно снизит поток, а во-вторых в статье что-то упоминается об использовании DMA, а это чуть быстрее, чем UART на 9600.


                          1. tronix286
                            28.11.2017 11:31

                            Ой, все ©


                            1. Andy_Big
                              28.11.2017 11:32

                              Отличный аргумент, обожаю его :)
                              Конкурс "Придумай задачу, с которой эта плата не справится" закончен?


                          1. ntfs1984
                            28.11.2017 18:23

                            Поподробнее о сжатии, плиз.


                            1. Andy_Big
                              28.11.2017 19:01

                              Да любой подходящий по ресурсным затратам алгоритм, работающий в потоковом режиме.


                              1. Mogwaika
                                28.11.2017 19:06

                                А многие ли поточные алгоритмы хорошо работают, когда у них памяти на пару строк, а не на несколько кадров?
                                Или вы про 4:2:0 и менее?


                                1. Andy_Big
                                  28.11.2017 19:24

                                  Ну не на пару, а штук на 15 строк 24-битной цветности :)


                        1. Bluewolf
                          28.11.2017 21:35

                          Для статичных кадров можно. Захватываем несколько строк, медленно передаем через уарт (и да, у многих уартов скорость все же не 9600, а до единиц мегабит), потом захватываем следующие и так далее. Собственно, для многих применений «дешево посмотреть, почему удаленный комп не отвечает по основному интерфейсу» этого достаточно.


                  1. tronix286
                    28.11.2017 10:36

                    На сколько повысится стоимость из-за перетаскивания в КАДе мышкой корпуса TSOP на плату и подвода к этому корпусу дорожек?


                    1. nafikovr
                      28.11.2017 10:38

                      камень надо менять ибо ног не хватит


                      1. Andy_Big
                        28.11.2017 10:54

                        Не хватит для чего? К этому камню можно прицепить два чипа памяти в TSOP44 — каждый с со своими шинами и сигналами.


                        1. nafikovr
                          28.11.2017 11:07

                          я к тому что нельзя просто добавить память. надо выбирать или гпио, или память. или же ставить более жирный камень.


                          1. Andy_Big
                            28.11.2017 11:18

                            Или память и штук 20 внешних гпио (для малинки там свои гпио еще остаются). Поэтому и спрашиваю — для чего Вам не хватит гпио?


                            1. nafikovr
                              28.11.2017 11:39

                              я уже третий раз пишу что мне хватит. и я так и написал что есть вариант ими пожертвовать. я про то что нельзя просто взять и вставить память в данную плату.


                              1. Andy_Big
                                28.11.2017 11:44

                                Можно взять и вставить, при этом останется около 20 свободных пользовательских IO. Это при условии, что плата воткнута в малину, а не подключена к ней по SPI, например. Тогда останется что-то около 50 IO :)


                    1. Andy_Big
                      28.11.2017 10:58

                      И АЦП с ЦАП. И Ethernet. И USB. И какой-нибудь радиомодуль. И датчик температуры-влажности.
                      Не нужно усложнять без необходимости. Возможность подключить любую периферию. в том числе и память, имеется. Кому она понадобится — прицепит без проблем :)


                      1. nafikovr
                        28.11.2017 11:04

                        поставим вопрос подругому. вы часто используете fpga без памяти? тем более такой емкости.


                        1. Andy_Big
                          28.11.2017 11:16

                          Я с ними вообще нечасто работаю. Но вот Вам практическая и довольно актуальная задача — контроллер движения для станков с ЧПУ. Нужно формировать управляющие сигналы для 4-5 шаговых двигателей на основе задаваемых извне параметров. Например, управляющий контроллер задает новую координату одной из осей и контролер движения должен выдать на ШД необходимые импульсы с учетом кривых разгона и торможения, максимально допустимого ускорения, а так же того, что в данный момент эта ось уже может двигаться с некими скоростью и ускорением. Или чуть сложнее — от управляющего контроллера поступают команды для движения сразу всех осей в определенные координаты и контроллер движения должен рассчитать все это синхронно для всех осей сразу с учетом всего, перечисленного выше. Можно и дальше усложнять задачу контроллера движения, облегчая тем самым жизнь управляющему контроллеру.
                          Тут памяти нужно совсем немного, и вот этот обсуждаемый чип с такой задачей справится.


                          1. Sdima1357
                            28.11.2017 11:30

                            Распи отлично с этим справляется. С 6 шаговыми двигателями CNC. В реальном времени.6 каналов ШИМ на 2 кГц 8 бит на цикл. 1 core занят на 100%


                            1. Andy_Big
                              28.11.2017 11:35

                              Не совсем понял. 2 КГц — это частота выдаваемых на двигатели импульсов?


                              1. nafikovr
                                28.11.2017 11:40

                                и 8бит О_о


                                1. Andy_Big
                                  28.11.2017 11:42

                                  Да, этот момент я тоже не понял, но может он разъяснится в ответе про 2 КГц :)


                                  1. Sdima1357
                                    28.11.2017 12:04

                                    2 кГц — частота прерывания переключения процессов настраивается при компиляции ядра(по умолчанию 1000 гц). На 8 бит (256 шагов ) делятся задержки внутри одного цикла переключения пинов «step” и «dir”
                                    То есть вымажете программировать время фронта пинка “step” с резолюцией ~2 мкс но не чаще чем 2000 импульсов в секунду на каждый двигатель


                                    1. Andy_Big
                                      28.11.2017 12:11

                                      время фронта пинка “step” с резолюцией ~2 мкс

                                      Это много для плавной и тихой работы ШД.


                                      не чаще чем 2000 импульсов в секунду на каждый двигатель

                                      Это очень-очень мало. При микрошаге 1/16 и ШВП 5 мм/оборот скорость перемещения получается всего около 190 мм/мин. Или я до сих пор что-то не понимаю.


                                      1. nafikovr
                                        28.11.2017 13:31

                                        arduino + uCNC быстрее будет наверно…


                                      1. Sdima1357
                                        28.11.2017 13:37

                                        Вопрос ценовой категории. Для дешевого станочка можно и 1/2 step использовать — получите 5мм/200/2 = 0.0125mm резолюцию и 2000*60*5/200/2 = 1500 mm/min. А для приличного можно и ардуину добавить


                                        1. Andy_Big
                                          28.11.2017 13:56

                                          Для дешевого станочка можно и ардуину с прошивкой GRBL :) И дешевле и скорость перемещений выше при большем дроблении шага :)


                                          1. Sdima1357
                                            28.11.2017 14:54

                                            У ардуины телевизора нет :(


                                            1. Andy_Big
                                              28.11.2017 15:50

                                              Не особо-то он и нужен таким станкам :)


                                              1. Sdima1357
                                                28.11.2017 16:16

                                                тогда STM32F103C8T6 за пару долларов.


                                                1. Andy_Big
                                                  28.11.2017 16:22

                                                  А для них уже адаптировали какой-нить планировщик? Я кроме небольших частных проектов не встречал такого :)


                                                  1. Sdima1357
                                                    28.11.2017 16:32

                                                    Я не знаю. По идее пинов и скорости хватает.Мне просто не нужно было, не смотрел с этой точки на STM.

                                                    Мне распи хватило на хексапод(6 axis ), с камерой и прочими наворотами, правда требования по скорости перемещения были низкие, а к точности позиционирования -высокие


                                                    1. Andy_Big
                                                      28.11.2017 18:48

                                                      Да по идее хватает, их даже гораздо больше, чем у ардуины :) Но вот не видал я такого, никто не реализовал в доступном виде.


                          1. nafikovr
                            28.11.2017 11:35

                            у меня почему то все задачи связанные с fpga требовательны к памяти.
                            по примеру — интерполяция дуг на стороне контоллера или на стороне fpga? если на стороне fpga — память может понадобиться. если на стороне контроллера — можем получить рывки, когда будет необходимость передавать/выполнять малые перемещения в большом количестве. не забываем что контроллер в данной статье не realtime. так что опять же может понадобиться память для буфера. но согласен, тут ее не так много надо


                            1. Andy_Big
                              28.11.2017 11:39

                              Интерполяция даже 3-мерных дуг не требует мегабитов памяти и прекрасно может быть реализована на этом циклоне :)
                              Я давно хочу сделать такой контроллер движения, управляемый высокоуровневыми командами (почти уровня G-кода) но все никак не выберу время заняться этим проектом...


                              1. nafikovr
                                28.11.2017 11:41

                                сталкивался с такими на УФ принтерах. но там 3 координаты + растровый датчик + печатная головка на домного сопел. в чпу не встречал.


                                1. Andy_Big
                                  28.11.2017 11:47

                                  Для ЧПУ есть контроллер для Mach на FPGA — Smooth Stepper. После перехода с LPT на него (у меня ethernet-вариант этого контроллера) скорость перемещений получилось поднять в 1.5 раза и двигатели потише стали работать :)


                                  1. nafikovr
                                    28.11.2017 13:34

                                    я думал он тупой. в смысле команды все равно в mach3 обрабатываются.


                                    1. Andy_Big
                                      28.11.2017 13:58

                                      Да, траектория все равно планируется в Mach-е. Честно говоря, не знаю какие именно функции возложены на саму ПЛИС, вроде бы Мач отдает контроллерам сервоциклы с готовыми количествами импульсов по каждой оси, так я понял из отрывочных сведений по его API. Но могу и ошибаться.


                                      1. nafikovr
                                        28.11.2017 14:12

                                        суть же не в количестве импульсов, а во времени между ними. ethernet таки не LPT (да и там далеко не realtime) и временные интервалы надо отслеживать уже на контроллере.


                                        1. Andy_Big
                                          28.11.2017 14:35

                                          Ну, у сервоциклов-то длительность строго фиксированная, так что это не проблема :)


                                          Да, LPT далек от рилтайма, к сожалению. Да и входов-выходов у него маловато. В этом плане ESS рулит :)


              1. nafikovr
                28.11.2017 10:26

                если глянуть сайт марсохода, то так и извращаются.


                1. Andy_Big
                  28.11.2017 10:28

                  В ардуинах и в большинстве недорогих отладочных плат это вообще в порядке вещей :)


          1. nafikovr
            28.11.2017 10:26

            так речь о плате.


            1. Andy_Big
              28.11.2017 10:30

              Там половина о плате, половина об USBee :) Плата же вроде нигде не заявлялась как накопитель данных :)


              1. nafikovr
                28.11.2017 10:37

                там все о проблемах работы с потоком данных без буфера.


                1. Andy_Big
                  28.11.2017 11:03

                  Они, эти потоки, бывают очень разными. И проблемы у них бывают очень разные :) Можно получать на вход поток 10 Мбит/сек и выплевывать результат его обработки 10 Кбит/сек.


      1. GPavlikh
        28.11.2017 10:17

        Наверняка это было сделано на несколько большем чем 15 умножителей и 270 кбит памяти. Здесь же — ресурсы ограничены довольно сильно. Подойдет разве что для первоначального погружения в тему FPGA.


        1. Andy_Big
          28.11.2017 10:23

          Да, это было сделано на чуть более старшем представителе семейства с 56 умножителями и 500 кбит памяти. Потому что требовалась очень узкая полоса фильтра.
          Автор вроде и заявил эту плату как для начального погружения :)


  1. DenisDangerous
    28.11.2017 10:17

    Насколько мощная эта Raspberry Pi? На ней можно сделать станцию для веб разработки? Как она графическое окружение тянет? Опыт был с кубибордом 1м, там чисто графическое окружение 90-100% проц грузит, для софта уже нет ресурсов… Работает сейчас как аудио плеер, чисто консолька


    1. Sdima1357
      28.11.2017 10:33

      Процессор слабее среднего пс от 6 до 20 раз, в зависимости от задачи. Графика слабее дискретной карты от 100 до 200 раз. ( порядка гигапикселя в секунду отрисовки ). Дривер графики не поддерживает большого количества треугольников(до 32000) в opengl который довольно древний


      1. DenisDangerous
        28.11.2017 11:19

        главное чтоб граф окружение тянул и софт типа netbeans…


    1. Alexey2005
      28.11.2017 20:11

      Пробовал запускать тяжёлый софт, комфортной работы закономерно не получается.
      WebStorm запускается и даже в режиме пониженной задержки позволяет набирать текст без подтормаживаний, но о какой-либо комфортной работе можно забыть, даже просто синтаксический анализ тормозит нещадно.
      Кроме того, работать на RPi 3B с полноценными браузерами не выйдет, очень уж тормознуты. Только что-то специальное вроде links2 (идёт отлично, без тормозов) или kweb.
      Также возможно поставить плагины к pidgin, чтобы получить Skype- или Telegram-мессенджер. Причём сборка telegram-purple ещё год назад требовала не только самостоятельной компиляции, но и правки исходников (не знаю как сейчас).
      Также RPi можно использовать в качестве простой рисовалки. Мой графический планшет (wacom) увидело после установки пакета xserver-xorg-input-wacom. Комфортно и без подтормаживаний работают простейшие рисовалки вроде MyPaint и mtPaint.
      GIMP уже притормаживает, работать некомфортно, но возможно. Krita не запускается вовсе, вываливаясь с сегфолтом.
      Из всех способов увеличения производительности максимальный прирост даёт полное отключение журналирования через tune2fs с последующей правкой fstab. На втором месте — разгон SD-ридера (при условии, что карточка нормальная, а не китайский самопал).
      Использование в качестве аудиоплеера проблемно, т.к. звук в аналоговом выходе полный отстой, нужно брать звук исключительно от HDMI-выхода, а туда без переходника наушников не воткнуть.


  1. defecator
    28.11.2017 10:18

    1. Для чего-нибудь более-менее серьёзного слишком мала ёмкость FPGA
    2. Чтобы не грузить каждый раз FPGA логично было бы установить на плату микросхему EPCS.
    3. Имхо, сопряжение малинки и DE0-Nano прибавит возможностей гораздо больше, чем просто голая ПЛИСина.


    1. umarsohod
      29.11.2017 13:46
      +1

      1. Емкость — понятие относительное. Кому-то и маленькой емкости хватает, у кого-то и на большой ничего не получается.
      2. А если статью еще раз внимательно перечитать?
      3 Не просто «голая ПЛИС », а с максимальным количеством GPIO.


  1. dernasherbrezon
    28.11.2017 12:11

    А можно на fpga декодировать радио сигналы? Там большой поток входных данных и крайне малый выходной поток. Я так понимаю это идеально для FPGA без памяти?


    1. Andy_Big
      28.11.2017 12:25

      А что Вы подразумеваете под "декодировать радиосигналы"?


      1. dernasherbrezon
        28.11.2017 12:40

        На вход поступает поток float. Далее этот поток обрабатывается последовательно несколькими операторами. Каждый из них достаточно простой:

        • Либо меняет текущее значение на основе предыдущего (или массива предыдущих)
        • Либо отбрасывает
        • Либо ищет подпоследовательность и пока не нашел, отбрасывает


        На выходе получается сравнительно небольшой поток float. В моих тестах из 300000 байт получается где то 180 байт.


        1. Andy_Big
          28.11.2017 12:41

          А скорость входного потока какая?


          1. dernasherbrezon
            28.11.2017 12:48

            Скорость может регулироваться, но максимум — 50mbit/sec. (3.2M sample/sec, 3.2M 16bit float/sec)


            1. Andy_Big
              28.11.2017 12:49

              Ну… В принципе может получиться. Но нужно, конечно, смотреть более детально :)


    1. nckma Автор
      28.11.2017 13:51

      Вот тут про радио есть: marsohod.org/projects/marsohod2/331-sdr-radio


  1. safari2012
    28.11.2017 13:38

    Заранее извиняюсь за глупый вопрос, а почему «марсоход»?
    Просто слово красивое, или что-то смысловое?


    1. nckma Автор
      28.11.2017 13:50

      Просто исторически сложилось: marsohod.org/home