Как стать автором
Обновить

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

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

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

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

Насколько описанная здесь связка удобнее, мощнее или дешевле DE0-Nano-SoC?
в первую очередь удобнее благодаря сообществу малинки.
Разные весовые категории. Понятно, что в Cyclone V связка с FPGA будет гораздо более широкополосной. Но Cyclone V и дороже.

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

Зато теперь рекламируют DE10-nano.
И объявили конкурс проектов mail.terasic.com.tw/epaper/2017/innovatefpga_en2
Полуфиналисты получат уже эту DE10-nano плату для опытов.
Лучше соединить платы шлейфом с разъёмами. Тогда можно будет сложить платы бутербродом тыльной стороной, если нужна большая компактность, это не помешает охлаждению, если Raspberry Pi будет сверху, или бутерброд будет установлен вертикально. И выйдет проще, дешевле, без проблем с точным выравниванием для того чтобы установить переходник, и выламывания разъёмов, если платы не прикручены к корпусу или основанию.
Картинку по DMA нет смысла передавать. Слишком мало встроенной памяти на плате fpga. А видео процессинг с таким маленьким футпринтом (270 кбит)дешевле делать на самой распи. Лучше обратно- читать внешний hdmi например
Самый главный минус, на мой взгляд, отсутствие какой-либо памяти. Куда на 100МГц байты складывать? Ответ — никуда. Вот и превращается Cyclone IV в обычный ногодрыг уровня 51 контроллера, который может дрыгнуть ногой, выплюнуть по SPI или принять по UART. На этом все.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ой, все ©

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

НЛО прилетело и опубликовало эту надпись здесь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

и 8бит О_о

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Насколько мощная эта Raspberry Pi? На ней можно сделать станцию для веб разработки? Как она графическое окружение тянет? Опыт был с кубибордом 1м, там чисто графическое окружение 90-100% проц грузит, для софта уже нет ресурсов… Работает сейчас как аудио плеер, чисто консолька
Процессор слабее среднего пс от 6 до 20 раз, в зависимости от задачи. Графика слабее дискретной карты от 100 до 200 раз. ( порядка гигапикселя в секунду отрисовки ). Дривер графики не поддерживает большого количества треугольников(до 32000) в opengl который довольно древний
главное чтоб граф окружение тянул и софт типа netbeans…
Пробовал запускать тяжёлый софт, комфортной работы закономерно не получается.
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. Для чего-нибудь более-менее серьёзного слишком мала ёмкость FPGA
2. Чтобы не грузить каждый раз FPGA логично было бы установить на плату микросхему EPCS.
3. Имхо, сопряжение малинки и DE0-Nano прибавит возможностей гораздо больше, чем просто голая ПЛИСина.
1. Емкость — понятие относительное. Кому-то и маленькой емкости хватает, у кого-то и на большой ничего не получается.
2. А если статью еще раз внимательно перечитать?
3 Не просто «голая ПЛИС », а с максимальным количеством GPIO.
НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

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

Заранее извиняюсь за глупый вопрос, а почему «марсоход»?
Просто слово красивое, или что-то смысловое?
Просто исторически сложилось: marsohod.org/home
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории