Search
Write a publication
Pull to refresh

Comments 34

Жду продолжения, т.к. все время хожу вокруг FPGA, но текущие задачи не создают "волшебного пинка", чтобы таки заняться по-серьезному.

Один раз (года три назад) пробовал играться с FPGA (GOWIN Tang Nano 9K) без особой цели, но что-то пошло не так. Толи драйвера кривые, толи руки - чип превратился в кирпич, хотя вначале шустро мигал светодиодами.

Софт от GOWIN - тогда был жуть. Не знаю как сейчас, хотя судя по Вашей статье такая беда у всех производителей FPGA.

Софт от GOWIN - тогда был жуть. Не знаю как сейчас, хотя судя по Вашей статье такая беда у всех производителей FPGA.

Не соглашусь. Из моего опыта, у Altera (потом Intel и сейчас что-то другое) самый френдли-софт и что касается всего зоопарка бластеров. Как только они перешли на JTAG там всё просто до самопальности. Следом шёл Xilinx, там с софтом посложнее, но в общем и целом, после настройки работа примерно так же как и с Altera, только что зоопарк JTAG интерфейсов сильно меньше, чем на Altera. А вот с GoWin изначально была беда, а сейчас они подтягиваются к уровню Xilinx по моему внутреннему ощущению. А компилирует софт GoWin реально быстро, секунды 4 тот же Verilog проект, который для Cyclone компилируется почти минуту. Единственный минус это их JTAG. Он тоже сильно сокращён количеством но самое раздражающее - нестандартная распиновка, учтите это!

Ни в коем случае не начинайте с схемного проектирования. Деды, проектирование жуткие вещи на 155 серии в 80х - творят подобную дичь схемным образом на плис, разбираться в которой та ещё задача. Безусловно, без знания логики, триггеров и прочего можно и не начинать, но начинать - с HDL языков. Важнейшим атрибутом, имхо, является владение внутрисхемной отладкой. Без нее, например, выводы на свободные ноги что либо - не получится ничего сложнее блинканья диодом. В квартусе это сигналтап, в говине так и называется лоджик энелайзер. Все это конечно дискутабельно, каждый, прошедший путь от блинканья до каких нибудь fft - может иметь разное мнение.

Спасибо за совет! Как раз так и будет. Здесь схема только для моргания диодом, и то монстр уже) В следующей части в начале для контраста будет тот же блинк в 4 строчки)

Между прочим в среде OWEN logic тоже подобный подход (хотя можно писать модули). И довольно востребовано, поддается трассировке. Я как раз один из таких "дедов", проектировавший жуткие вещи на 155 (и 500). Мне наверное не стоит браться за ПЛИС, да? Вопрос не троллящий, я сам и правда не знаю (но хотелось бы кое-что поделать со звуком и видеосигналами). Башка она не резиновая, и если HDL выучить я осилю, то уйти от парадигмы составлять все на логике - будет пожалуй очень сложно, если не невозможно.

HDL просто очень сильно сокращает запись, и позволяет намного более компактно делать всё то же самое. При этом сложность получающихся схем можно очень сильно нарастить.

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

Сам я схемами ПЛИС не программировал. Но считаю, что прежде чем писать на HDL, нужно чётко понимать, как это будет синтезироваться. Если это не понимать, то очень быстро случится асинхронщина, гонки, несинтезируемость, перерасход ресурсов, проблемы с распространением сигналов.

При написании тестов синтезируемость не нужна, но хотя трудоёмкость тестирования превосходит трудоёмкость описания конфигурации ПЛИС , для "попробовать ПЛИС" нужно писать синтезируемое описание.

Схемное проектирование допустимо на начальном этапе изучения для тех, кто не проектировал изначально на россыпной логике. Т.е. именно многих эмбеддеров, как того гласит заголовок статьи. Им нужно сначала выучить рассыпную логику, а уже потом учиться языку xHDL, суть которого состоит в том, что как именно надо составить "фразу", чтобы синтезатор построил нужную схему. Я схемным вводом делал вполне себе приличные вещи 15 лет назад (когда сам вступил обеими ногами в ПЛИС), при этом уже имел богатый опыт проектирования логических схем на 74й логике всего диапазона. Самый главный недостаток схемного ввода это громоздкость, что затрудняет редактирование, но даже в нём можно делать модули и соединять их промеж себя.

Старые песни о главном

Вторым этапом будет понимание концепта "синхронный дизайн". Его можно делать и синхронным вводом, это не проблема. Сам по себе он обусловлен компромиссными ограничениями ПЛИС: ты имеешь не абсолютно рандомный любой набор логики а вполне себе конкретные блоки-кирпичики, а количество связей между ними ограничено вполне конкретным числом (которое зависит от конкретного чипа, всегда читайте хэндбук на семейство) и при этом задержки в этих проводах (PIA) сопоставимы с быстродействием самих ячеек, поэтому ПЛИС не любит сложную комбинаторику. После осознания этого, вы больше не будете строить асинхронный счётчик, как в статье. Это в реальности на россыпи допустимо соединить 4 корпуса 555ИЕ5 и забить на иголки, которые всё равно потеряются среди логики. Правильнее собирать синхронный счётчик на 555ИЕ10, используя его выходы и входы каскадирования. ПЛИС это как раз про это: синхронный дизайн правильно делать даже в россыпной логике, но можно им пренебречь ради упрощения, введя аналоговые составляющие компонентов (привет сопротивления, катушки и конденсаторы!). Но внутрь ПЛИС вы не припаяете конденсатор, увы.

чуть ранее 2010го, на https://opencores.org/projects заходил частенько и там кипела жизнь, попался как то проект под спартан или алтеру, уже не помню, демка, с небольшим процессором risc, видео и контроллером клавиатуры. Все было в виде учебника, включая настройку gcc под учебный процессор.

Сейчас глянул, жизнь еще продолжается, но как то вяло, часть на гитхаб отделились: https://github.com/openrisc и https://github.com/librecores

Навеяло как я уже почти 20 лет назад также будучи эмбедером разбирался со Spartan3. Правда я как программист сразу начал с VHDL и Verilog. Потом была отладка с помощью одного светодиода процессора JOP и пошло-поехало (; Удачи в освоении!

тоже JOP пробовал, Verilog книжка лежит до сих пор... VHDL не зашел хотя более "феншуйный" вариант. JOP хороший проект для копания с java и fpga

Коллеги! Используйте опенсорсные тулы (Yosys) для разработки под ПЛИС и Makefile для сборки проекта. Не приучайте себя к тяжеловесным прориетарным графическим и непереносимым инструментам. Привыкните к одному вендору и переползти на использование ПЛИС от другого будет очень и очень тяжело. Опенсорсные тулы позволяют избегать привязки и вести всю работу в командной строке с использованием простейшего текстового редактора. В сети масса проектов и статей для входа в эту тему.

Ждём статью с картинками и объяснениями) Опенсорсные тулы позволяют избегать не только привязки к вендору, но и вообще всей темы ПЛИС

У меня есть несколько статей на эту тему:

  1. Разработка цифровой аппаратуры нетрадиционным методом: Yosys, SpinalHDL, VexRiscv (ч.1)

  2. Разработка цифровой аппаратуры нетрадиционным методом: Yosys, SpinalHDL, VexRiscv (ч. 2)

  3. Разработка цифровой аппаратуры нетрадиционным методом: CGA видеоадаптер на SpinalHDL

Сейчас в работе еще одна - про разработку USB контроллера.

Если поискать на Хабре слово Yosys, найдется еще с десяток от других авторов.

Ну и не могу не упомянуть известный проект обучающих лабораторок basics-graphics-music от Юрия Панчула, у него много заметок на Хабре. Проектом поддерживается Yosys и масса известных плат.

Если писать правильно на Verilog/SystemVerilog, то проекты будут неплохо переносимые.

На OpenCores немало таких проектов.

Но когда я попробовал свободные Icarus + GtkView для симуляции, то обнаружил, что по сравнению с Quartus + ModelSim некоторые части можно делать гораздо быстрее.

Поделитесь небольшим howto, очень интересно

Смотрите мой комментарий выше.

Не приучайте себя к тяжеловесным прориетарным графическим и непереносимым инструментам.

В чем заключается их непереносимость? И что плохого в их "графичности"?

В чем заключается их непереносимость?

Проприетарные тулы работают на весьма ограниченном числе ОС: Windows и Linux. MacOS, FreeBSD и прочие остаются за бортом.

И что плохого в их "графичности"?

Графические тулы требуют чтобы Вы разрабатывали на Вашем рабочем ПК к которому предьявляются весьма высокие требования. Вы не можете нормально разделить свой ПК с другими разработчиками. Отсутствие возможности удаленно компилить код на сервере подключаясь к нему через SSH. Автоматизация сборки невозможна.

MacOS, FreeBSD и прочие остаются за бортом.

Не знаю за мак, но на фряхе с Х-ами я запускал кактус.

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

Это что-то из мейнфреймного прошлого. Сейчас нормально терминалить через RDP, например, если не хотите держать мощный ПК дома.

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

Автоматизация сборки невозможна.

Вроде без каких либо проблем свалил синтез проекта квартусом в CI гитлаба

У Квартуса есть набор CLI утилит, но мало кто из плисоводов об этом знает и понимает как ими пользоваться. Я призывают отказываться от гуя, использовать тестовые файлы и командную строку. То, что Вы и сделали. Так же призываю отказываться от проприетарщины. А это Вам еще предстоит сделать.

Я всё равно не понимаю, в чём проблема использовать пропиетарный софт.

Или вы из этих?

Ну, возможно, цена? Раньше quartus годовая лицензия стоила приличных денег, не знаю как сейчас. А на подломанном работать так себе затея

Большинству домашников и даже некоторым вне дома хватает бесплатной версии.

Отказываться от GUI ради чего? Можно ещё отказываться от мяса, от того что, земля круглая и так далее по списку.

Синтез на Quartus я нормально запускал удалённо. Почитал справку и запускал.

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

Автору огромное спасибо! Прям новый дивный мир открылся.

Начну потихоньку копать в эту сторону. Буду благодарен совету по поводу какую отладочную плату выбрать)

А тут от бюджета и от софта. В квартусе при создании проекта есть выбор чипа. Вот надо чтобы чип платы был в списке. Ещё хорошо бы иметь на плате память, видео выход, ещё какие - нибудь интерфейсы. Это уже от бюджета. Я бы посмотрел аналоги платы из статьи.

На алике наткнулся на официальный магазин QMTECH Store. Продается такая же плата как в статье (или скорее всего очень похожий аналог) - QMTECH Altera Cyclone10 10CL080. Цена немного кусается, но думаю имеет смысл приобрести.

Как я понимаю это уже перепродованы. А у https://qmtechchina.aliexpress.com/store/4486047 которые были в оригинале - уже ничего нет. Жалко, у них были очень неплохие и недорогие платы

если считать что embedded - микроконтроллеры, то сейчас в них встраивают програмируемые логические ячейки (LUT и другие названия), вполне можно начать с них, а возможно - и достаточно

Спасибо, за статью интересно.

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

Sign up to leave a comment.

Articles