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

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

Как раз читал на 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 ПЛИСов Вам и вашему заказчику огромный респект!

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

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

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

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

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