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

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

Как раз читал на EEVBlog тему относительно Yosys/NextPNR - говорят оно не очень хорошо (-30% против вендорского софта) оптимизирует пока, вот, если интересно.

И кстати, там же у некоторых уже следующий этап замещения - китайские Gowin, и даже хвалят, всё как у привычных вендоров - поставщики, представители, поддержка, никакой AliExpress-партизанщины.

Спасибо! Сейчас посмотрю!

Но что касается фирменного софта, то взяли мы этот самый проект verilog-ethernet, собрали в Yosys/NextPNR. Получили FMax 62 МГц после упаковки. Поставили фирменный Diamond. Собрали там. Там, на самом деле, Place and Route до конца не дошёл, так как были какие-то проблемы с PLL. Но их я даже не стал решать. Потому что на выходе из синтезатора (то есть, чисто на логических задержках, без транспортных), по логам тот же проект давал сходное значение FMax.

Сейчас оптимизируем ручками. Отчёты у Yosys/NextPNR добротные, помогают в поиске критических мест. Вчера уже 110 МГц в логах видел. Правда, и при 62 он по факту работает. Но Заказчику подавай гарантии. Так что оптимизируем... Я предлагал заменить работу с байтами на 16 или 32 битные слова, чем снизить требования к частоте, но Заказчик хочет разогнать байтовый поток. Ему виднее.

Интересно, а простые процессорные ядра, например как вариант, на базе J1 CPU
должны немного занять места в ECP5, если их запускали и в ICE40 и ещё останется много места в ПЛИС для других задач. http://mecrisp.sourceforge.net/

P.S. Была статья на Хабр и запуска J1 в рамках FPGA MAX10
Процессор Forth J1 в FPGA плате M02mini
Простейший интерпретатор Forth в плате M02mini
Firmware IP камеры wge100 на J1 CPU

Автор J1 добавил это ядро и в проект Gameduino 3X Dazzler в используемой FPGA (Xilinx Spartan-6 LX9 FT256 with 8 Mbyte flash) совместно с FT815 GPU.
An Arduino shield with a GPU, FPGA, HDMI, and Python support for gaming and audiovisuals
image

Ну, наш Заказчик планирует в будущем RISC-V использовать. ПЛИС-то просторная, если по большому счёту. Места всем (в разумных пределах) хватит. Вот с предельными частотами - всё несколько хуже.

А как у этого открытого софта обстоят дела с отладкой? Есть что-нибудь типа альтеровского сигналтапа?

Мне почему-то кажется, что нет. По крайней мере, мне ничего такого не нашёл. В прошлой статье я приводил грустные картинки, как снимаю диаграммы настоящим анализатором. Благо на этой плате МНОГО ног, и все они - выходы. Но пробрасывать линии DBG транзитом из глубины через 3-4 модуля - то ещё занятие, разумеется. А после отладки - не забыть убрать везде.

Вот генератор PLL там уже есть неплохой. Но он консольный, поэтому и есть. Если дойдут руки до следующей статьи - опишу его. А интерактивного пока ничего не видел. Грустно всё там с этим делом.

методикой быстрого старта работ с ПЛИС фирмы Lattice. Особенность описанной методики в том, что она малозатратна как по финансам, так и по требуемому времени.

Этот бег по граблях и превозмогание это "быстро и малозатратно"?

Особенно когда

В сумме, я просидел почти рабочую неделю, чтобы всё собралось и заработало.

Быстро и малозатратно это:

  • купить бывшую в употреблении DE0-Nano или отладку на Спартане, или плату на Z7010 от китайского майнера, которые на алиэкспрессе лежат по 15$

  • Скачать бесплатный Вивадо или Квартус

  • Начать программировать пользуясь качественным софтом.

А я разве не это же самое в статье написал? И про Квартус, и про прочее в статье есть. Но в моём случае, я же написал, что Доктор сказал в морг Заказчик сказал Lattice... А для остальных - будет полезно подготовиться на случай, если правильные чипы кончатся. Другой момент, что они могут и не кончиться. Но и это я учёл во фразе "завтра может такую статью писать будет поздно". Не кончатся - и статья не нужна будет.

То есть, статья - не реклама Латтисов. Статья показывает, как быстро их освоить, в случае нужды. И это в ней особо подчёркнуто.

Что же до недели... Это я чтобы всё в Windows заработало неделю просидел. В Линуксе - в момент стартовать можно. И это отмечено. Но я сразу знал, что будут проблемы с FMax, и проект предстоит долгий. А долго сидеть под Линуксом лично мне не комфортно (и это тоже отмечено). Поэтому я предпочёл подготовить себе комфортное рабочее место для долгих опытов.

Этот бег по граблях и превозмогание это "быстро и малозатратно"?

Это дейстивтельно быстро и малозатратно. В начале 2021 года мы выполнили аналогичный проект менее чем за три месяца, включая изучение Yosys toolchain-а, языка SpinalHDL и сборку пилотной серии изделий. ПЛИСы Lattice хорошо документированы (реверсинжинирнуты), на них выполнено много OSHW проектов - есть куда подсмотреть и кого спросить.

Для начинающих рекомендую проект OrangeCrab, его фотография, кстати, приведена в статье без указания названия.

Для начинающих рекомендую проект OrangeCrab, его фотография, кстати, приведена в статье без указания названия.

Я аж испугался. Проверил. Есть название OrangeCrab над самой фотографией.

Это я слепой. Звиняйте. :)

Хорошая документация только на старые семейства.

Хороший программист должен уметь работать с тем, что есть под рукой. Однажды мне доводилось дорабатывать систему, выкинув ЦАПы AD (они всё время горели) и вставив ШИМ и RC-цепочку. Плату выходного каскада ШИМа на базе двух оптронов я спаял заранее, в ангаре, а вот МГТФами в блок добавлять её надо было в лесу... Потому что аппаратура была в лесу, в сотнях километров от ангара. Короче, в результате накладок, пришлось греть дохлый паяльник на газовой плитке... Подогрел - припаял. Подогрел - припаял... Уметь полезно и такое

Программисту могут спустить указание: "Этот проект мы делаем на такой аппаратуре" (что было у меня вот прямо сейчас). В наше нелёгкое время могут кончиться чипы (кто бы мог подумать о таком ещё несколько лет назад?). Так что навык иметь - полезно.

Но при этом, если у меня есть выбор - я всегда настаиваю на том, что мне комфортней. Лично я настаиваю на Альтере (ну, или её наследниках). В этом проекте тоже несколько месяцев настаивал. Даже кое-что сделал на десятом Циклоне во время подготовки... И сейчас я настоял на том, что я веду разработку под Windows... Но если настоять не удаётся - рука у хорошего программиста должна быть набита на владение всем...

А данная статья ему в этом поможет...

Конечно, при необходимости приходится работать на чём угодно. И статья действительно полезная, просто она явно не о "простом и дешевом" старте.

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

"Старт" работ с ПЛИС в целом - это точно не тема статьи для Хабра в 2021 году. Всё общее уже давно написано. Здесь про старт работ с этим семейством. Вряд ли Вы сможете предложить свободно добываемую макетку на этом семействе дешевле, чем приведена в тексте. И в статье собрано всё, чтобы сесть и начать опыты именно с этим семейством. Без добывания лицензий, без каких-либо ещё плясок с бубном. При условии, что у Вас имеется общеПЛИСовый опыт, разумеется.

В заключении дословно сказано:

Мы познакомились с методикой быстрого старта работ с ПЛИС фирмы Lattice.

Чётко оговорено, что речь идёт о старте работ с ПЛИС фирмы Lattice, а не о ПЛИС, как явлении.

Вы случайно не наше изделие LEDControl хотите повторить ? ;-)

В этом издели мы выполнили управление светодиодными матрицами HUB12 и HUB75 "в железе" через один "универсальный" 16 пиновый разъем. В железе реализованы MAC и RS-485 интерфейсы. Управление сделано на софтовом ядре RISC-V (VexRiscV - настоятелно рекомендую!). Весь проект выполнен на одной ПЛИС Lattice LFE5U-12F (12К LE), железо описано на языке SpinalHDL.

По результатам выполнения этого проекта у меня было желание написать статейку по поводу программирования ПЛИС с помощью open source toolchain (Yosys, NextPNR, SpanalHDL), но наш заказчик попросил не "раскрывать карты" раньше времени, так как изделие затянуто в несколько гос контрактов. Скажу только, что получившаяся максимальная частота тактирования составила 90 МГц, которую мы умышлено уменьшили до 50МГц, как и Вы - с целью увеличения надежности и простоты общения с RMII.

Если есть какие-то вопросы по самим ПЛИСам этой серии - пишите в личку, о чем знаю - расскажу.

PS: ПЛИСы Lattice хороши всем, за исключением того, что их сейчас не приобрести в каких либо значимых партиях. Полагаю, Ваш заказчик уже закупился достаточной партией ? ;)

Наш Заказчик не из нашего ВУЗа, наш товарищ из Америки. Это я стилизовал ответ под цитату из фильма. Но реально - да, он из Штатов. К счастью, он дал нам разрешение на публикацию всего, что мы нароем, так как одна из его задач, как я понял - участвовать в развитии тех OpenSource проектов.

Цель, которую он преследует - разработка систем управления станками с ЧПУ. Пока мы просто набиваем руку по спущенным ТЗ. На платах стоят гигабитные PHY, плюс с ними можно работать через Open Source систему - нам велено на них тренироваться.

В личку - обязательно обращусь, когда сформулирую конкретные вопросы. Спасибо за предложение!

Мы, кстати, собрали небольшую партию Оранжевых Крабов, для ознакомления. Вот тут небольшая заметка и фото наших сборок. Были проблемы с DDR - завелась с ошибками на всех платах. Плата была спроектирована Greg-ом под совершенно другой стэкап, который Резонит выполнить "один к одному" не смог, cоответственно нарушилось согласование импедансов. Себестоимость этих платок на Февраль 2021 получилась в районе $150, чутка дешевле чем в Чипдип-е сейчас.

За популяризацию Yosys и поддержку open source ПЛИСов Вам и вашему заказчику огромный респект!

Больше опенсорсов, хороших и разных )
https://github.com/romanetz/linuxcnc/tree/colorcnc/src/hal/drivers
та же борда + драйвер для linuxcnc
вы тестировали на 100 мбит линке, или только на гигабитном?

Тестили... А сейчас по указанию. Заказчика, даже на пробу сделали версию, которая при старте отключает поддержку гигабита в опциях Auto Negotiate. Тем самым, зажимаем скорость, не выше сотни. Через это снизили требования к тактовой, идущей на PHY. Ну, и системную частоту понизили, благо там связь через FIFO.

Тестовые пакеты бегают, не теряются.

Интересная статья. Надо перечитать внимательнее потом
Видел довольно дешевую xc7z010. На сколько я понял в чипе двухъядерный arm9. Должна быть мощная штука. На сколько это оправдано такая интеграция? Где взять среду для программирования arm9?

Я тоже много разглядывал описания безумно дешёвых макеток на этой ПЛИС. К сожалению, из отзывов следует, что это - полуфабрикаты, которые надо дорабатывать. Не нашёл отзывов "Заработало", но ругачих - видел много.

Для Альтеровских ПЛИС с ARM всё было плохо. У меня есть DE0-Nano-SoC. Там чтобы начать компилить BareMetal приложения, надо отдельно покупать ARM Design Suite, Ну, если официально всё делать. Для Linux - можно GCC использовать. Но мой опыт работы с этой ПЛИС печальный. Там ПЛИС включена через несколько мостов от процессора. Поэтому одиночные запросы обрабатываются безумно медленно и с непредсказуемой задержкой. Это всё хорошо для потоковой обработки больших объёмов данных.

Когда возился с Xilinx (пробегала мимо макетка ZCU102, которую я для себя точно не смогу купить, но была возможность немного поиграть в неё) - там всё вставало вместе с Вивадой. Но там точно помню, что был ARM не девятый, а какой-то, более крутой. Боюсь соврать. Уж не 53-й ли?

"...мой знакомый, ныне живущий в Штатах, обрадовал новостью, что у его любимого поставщика подходит к концу запас десятых Циклонов и шестых Спартанов."
К чему эта "желтуха"?) Или в мире есть только один продавец FPGA от Intel и Xilinx?)

Ну, на самом деле, такая формулировка позволит избежать юридических последствий, если вдруг кто-то скажет, что я сею панику и распространяю заведомо ложную информацию. Мне было не сподручно искать его и допытываться, где именно он пытался купить.

Но сейчас, по прошествии времени с публикации, я уже снова общался с ним и знаю, что он искал много где. Поэтому если у Вас иные сведения, то просто сообщите, где можно сейчас взять десятых Циклонов. Скажем, 10CL006YU256C8G. Не макеток, а чипов. Скажем, сотню. Если что - я ему передам. Он будет рад.

Кому не нужен Ethernet или может сам сделать платку с трансформаторами и разъёмами (видел, кто-то делал, у самого пока руки не дошли спаять), лучше брать Colorlight-i5 с Ext-Board от MuseLabs: внешний JTAG не нужен, на этой плате есть ECP-DAP — можно заливать прошивку по USB и там же, по USB, есть доступ к последовательному порту — удобно получать отладку.

Там даже можно просто прошивку класть на виртуальный диск. Кого эта фича раздражает, тот может собрать прошивку CMSIS-DAP сам.

Для тех, кто испытывает проблемы при сборке ecpdap (утилиты для заливки), могу предложить посмотреть, как я эти проблемы решал для Debian 9. (За мои методы исправить сборку прошу не ругать сильно: я совсем не Rust-разработчик.)

Заодно рядом скрипты для сборки yosys, nextpnr и prjtrellis: всё, что нужно для open-source toolchain.

В Colorlight-i5 стоит Lattice ECP5U-25F, производитель Ext-Board продаёт и модули. В районе НГ там появился модуль на базе ECP5U-45F — для тех, кому не хватает LE.

ECP5U-25F там не самый быстрый: по идее, не должен работать выше 350 MHz, а PLL не должен стабильно отдавать больше 400 MHz, но... Но: у меня работает с HDMI на 625 MHz (DDR) и монитор стабильно показывает FullHD картинку 1920×1080@58 (чуть-чуть не дотянул до стандартного режима с 650 MHz DDR), правда приходится по несколько раз прогонять PnR, чтобы выбрать лучший результат. Греется при этом: возможно, стоит снять пластинку и поставить нормальный мелкий радиатор — может и 650 MHz стабильно получится взять.

P.S. HDMI разъём в ExtBoard + Colorlight-i5 подключен напрямую к выводам FPGA — там нет никакого HDMI-передатчика и это не 5G вариант — в распаянном чипе нет высокоскоростных передатчиков, а если и заменить его, то на модуле эти выводы не выведены наружу. Описанный выше прецедент — это использование обычных дифф-выводов и реализация HDMI передатчика на стандартных LE.

Добавлю к комментарию выше, что стоит обратить внимание на статью «Getting Started with ECP5 FPGAs on the Colorlight i5 FPGA Development Board» на начальном этапе. Там есть ссылка на упомянутый ранее Ethernet Expansion Board:

Там же, в конце статьи, есть ссылки на другие модули, что могут работать сданной платой (теоретически):

  • Colorlight i9 на базе Lattice ECP5-LFE5U-45 — точно работает, отличается распиновкой только одного светодиода.

  • Colorlight i6 на базе Lattice ECP3-LFE3-35EA.

  • Colorlight i9+ на базе Xilinx XC7AA50T — если у кого-то есть информация по распиновке, буду благодарен: рассматриваю к приобретению — освободите меня от сдувания FPGA для определения.

  • Linsn mini901 на базе Xilinx XC6SLX16 — маловата, но если натолкнусь по небольшой цене, то тоже возьму (также буду благодарен распиновке).

Стоит заметить, что у самой ExtBoard есть ряд детских проблем:

  • не каждый HDMI кабель удастся подключить (мешают соседние разъёмы);

  • никто не задумался о выравнивании длин дорожек до выводов (как и компенсации выводов разъёмов, вероятно), которые могут образовывать диф. пару;

  • нет отверстий для крепления платы;

  • нет выводов, точно присутствующих на i6 и i9 (судя по документации) и, вероятно, на i5 (судя по виду платы).

Но главные преимущества ExtBoard — это большое количество PMOD-модулей от разных производителей и возможность смены FPGA модуля. Было бы совсем хорошо, если бы Muse Labs ещё выпустили модули на базе Xilinx, Altera и Gowin (свой вариант на Lattice они уже сделали).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории