
В подкасте «Битовые Маски» ведущие Лена Лепилкина и Антон Афанасьев обсуждают с экспертами системное программирование и разработку «железа». В 25-м выпуске гостем стал Михаил Коробков — создатель сообщества FPGA-Systems и одноименного журнала, ПЛИСовод-энтузиаст и по совместительству старший инженер по разработке СнК в YADRO.
Мы выбрали несколько интересных историй нашего героя. Больше — в полном видео и аудиоверсии подкаста.
Михаил Коробков учился в Рязанском радиотехническом университете — именно там началась его история с ПЛИС. Сперва это были ПЛИС от Altera с кодом на архаичном языке AHDL (Altera HDL) и EPF 10K (Flex 10K), клоны которой до сих пор применяются в отечественном производстве. А первым коммерческим проектом на ПЛИС у гостя подкаста был коммутатор для сигналов гигагерцового диапазона — именно на ПЛИС Михаил коммутировал антенные решетки.
До прихода в YADRO Михаил успел поработать в НИИ космического приборостроения, тренинг-центре Xilinx (Inline Group), Siemens и Menta eFPGA.
Содержание
И на Марсе, и в телевизоре — что такое ПЛИС и где ее можно найти
Михаил: ПЛИС — это микросхема широкого профиля. Ее применяют в разных сферах — это может быть и цифровая обработка сигналов, и прототипирование, и портативная электроника, и даже телефоны.
Недавно я побывал на форуме Микроэлектроника-2025 и видел ПЛИС от Lattice в одном из серверов «Бештау». Она выполняет функцию board management controller — ПЛИС мониторит и делает секвенсинг питания, проверяет последовательность включения процессора и необходимой периферии.
Помимо серверов, ПЛИС часто применяют в камерах наружного наблюдения. Передавать информацию с камер куда-то на сервер — невыгодная история, так как должен быть большой канал передачи данных. В обход можно поставить в камеру маленькую ПЛИС и системный кристалл типа Zynq. Процессорная часть будет отвечать за поднятие Linux и стека TCP/IP, а на ПЛИС будут вычисляться алгоритмы обработки изображения — выделение номера и какие штрафы начислить. Все это можно сделать внутри самой камеры с ПЛИС. К тому же это довольно экономно по энергопотреблению — по ваттам выходит точно меньше, чем у графической карты.
ПЛИС очень часто применяют в космосе — причем как и на низкой орбите, так и на высокой. И, соответственно, может быть два типа ПЛИС. Если ПЛИС летает на низкой орбите, можно запустить большое количество маленьких космических спутников — примерно так делает Илон Маск, потому что такие ПЛИС стоят мало по сравнению с другим видом ПЛИС — радстойкими, которые в сотни раз дороже. И, например, ПЛИС обычного и радстойкого Virtex-5 — это тысяча долларов и сто тысяч долларов соответственно. Радстойкие ПЛИС запускали на Марс в роверах.
В потребительской электронике или технике специального назначения также встречается ПЛИС. Даже есть история о том, что первые телевизоры со стандартом HDMI выпускались с ПЛИС Spartan.
ПЛИС как изделие имеет границу окупаемости. Это значит, что если вы выпускаете сотни или тысячи изделий, вы можете поставить ПЛИС, которая легко реконфигурируется, что-то поправить в прошивке и оперативно выпустить обновление. Но если устройств уже больше сотни тысяч, то выгоднее будет сделать ASIC. Таким образом, у ASIC дорогая разработка, но дешевое массовое производство, а у ПЛИС — ровно наоборот. Поэтому, выбирая ПЛИС, в долгосрочной перспективе можно проиграть.
Где еще можно найти ПЛИС, слушайте в подкасте с 38 минуты.
Про виды ПЛИС и их экосистемы
В основе классификации ПЛИС лежит производительность. Допустим, можно классифицировать по начинке стандартных блоков и наличию готовых IP-ядер, различных фильтров, кодеков и интерфейсов с разными протоколами. Поддерживается ли сторонними САПР или не поддерживается? Есть ли экосистема и какая? Например, MATLAB у Lattice нет, но есть у Altera и Xilinx. У последней вообще есть замечательный system-generator, благодаря которому можно нарисовать все в Simulink и получить готовый прототип.
При наличии хорошей экосистемы инженер, который занимается алгоритмами цифровой обработки сигналов, может спокойно работать в MATLAB и не знать никаких Verilog. Для того, чтобы эта математика легла в ПЛИС и исполнилась на нужной частоте, надо просто открыть MATLAB и проверить написанный в Simulink алгоритм. То есть на «внутрянку» ПЛИС внимание можно не обращать, только на частоту и на количество DSP-ячеек или блочной памяти — на то, что нужно для вашего алгоритма.
Но есть обратная история, когда из ПЛИС хотят выжать максимум, — тогда за дело берутся истинные профессионалы, которые сидят и разрабатывают чуть ли не на LUT. Вместо DSP-блоков там отдельные расчетные компоненты, а в саму систему заливают масло для охлаждения — настолько это мощный аппарат.
Про особенности «низкоуровневого» программирования на ПЛИС слушайте с 48 минуты.
Порог входа в ПЛИС и как Vivado спасает время
Когда я только начинал в ПЛИС — все было гораздо дороже. Сейчас дела обстоят иначе — есть Gowin и AliExpress, поэтому отладочную ПЛИС можно найти меньше чем за тысячу рублей. А еще 10 лет назад одна такая обошлась мне в 10–12 тысяч. Это довольно большие деньги по сравнению с тем, что можно было бы потратить при освоении микроконтроллеров. Их вообще можно было осваивать бесплатно — поставить себе на компьютер Keil Studio, потыкаться в Assembler, посмотреть, как оно компилируется. В крайнем случае можно было поставить эмулятор обычного процессора. В ПЛИС же так нельзя. Порог вхождения в ПЛИС гораздо выше, чем порог вхождения в микроконтроллеры.
При этом я не могу сказать, что производство ПЛИС сложнее производства микроконтроллеров. ПЛИС — это та же микросхема, тот же ASIC, только, грубо говоря, реконфигурируемый. И все это производят на какой-то фабрике — все как-то привязаны к производству.
Делая высокопроизводительный ПЛИС, нужно перерыть ни один десяток патентов, чтобы понять, как это работает. Допустим, в современных ПЛИС lookup table — это не просто ячейка памяти. Здесь отдельный LUT может выступать и сдвиговым регистром, и вычислять логические функции, и даже быть интерконнектом. То есть это многофункциональное устройство. Архитектурно — квадратик, а внутри квадратика — три или четыре разных функции, которые определяются вашими задачами. Нужно сделать сдвиговый регистр? Для этого больше не нужно 32 триггера, потому что это все уже есть в LUT. Таким образом, можно сэкономить кучу ресурсов и роутинг-цепей.
Только вот загвоздка в том, что если даже ваш проект синтезировался, не факт, что он может быть размещен на кристалле. Особенно если этот проект большой. А если он все-таки будет размещен на кристалле, то еще не факт, что он разведется.
Меня позабавила одна команда Vivado — можно было на начальных этапах проекта ее написать, а она сразу определяла, разведется ли проект или нет. Это экономит очень много времени, поскольку наши проекты могут собираться до 20 часов. Конечно, это не как у физдизайнеров, когда проект собирается неделю. Но итераций у нас больше, поэтому времени все равно уходит достаточно.
Что делают, если проект не влезает на кристалл, что такое partitioning и сколько стоит эмулятор RTL-эмулятора, слушайте в подкасте с 1:06:00.
eFPGA и несбывшаяся мечта
Всего четыре компании в мире сейчас занимаются eFPGA (Embedded FPGA) — в целом у такого FPGA очень нишевое применение, например, в ЦЕРН. Сама по себе матрица ПЛИС достаточно маленькая — это помогает ей, например, ловить отклики от частиц.
Для eFPGA надо купить матрицу ПЛИС, которая будет выступать как IP-ядро после установки ее к себе в процессор. Когда я работал в Menta eFPGA, у меня возникла идея взять архитектуру eFPGA и сделать ее на «Микроне». Пускай она будет квадратная и выглядит как кирпич, но это будет нормальная ПЛИС на десятки тысяч LUT. Мы в свою очередь наставим на нее DSP-блоков или блочной памяти — чего хотим. Преимущество eFPGA в том, что можно самому составить архитектуру.
Такая архитектура — DSP-ячейки, блочная память, LUT — это все конфигурируется на этапе создания eFPGA. Можно сделать десять или сорок колонок памяти, добавить DSP-ячейки и даже вставить свои кастомные блоки. То есть можно написать какой-нибудь хороший ускоритель, который помещается в заданную ширину и длину, расположить его, и получится аппаратный блок внутри ПЛИС. А затем запустить ее в массовое производство на фабрике. Это была классная идея, но априори особого отклика она не нашла.
Компания Dialog, например, выпускала самую дешевую ПЛИС «ForgeFPGA» — она стоила 50 центов. Конкретно эта ПЛИС была однократно программируемой — у нее было всего 900 LUT. Можно было просто купить килограмм таких и вставить в какие-то маленькие приложения вместо CPLD. И внутри этой ПЛИС был корпусированный eFPGA. То есть по сути та же идея, которую я хотел воплотить здесь, в РФ, — взять eFPGA и закорпусировать ее.
Как сложилась судьба ForgeFPGA и другие подробности о том, где eFPGA находит свое применение, Михаил рассказывает с 1:30:00.
Высокоуровневый синтез
ПЛИС программируют с незапамятных времен — с 1984 года. VHDL, Verilog и System Verilog — это три базовых сочетаемых компонента, которые реализуют нативное программирование на ПЛИС.
Но VHDL потихоньку отмирает. И в полупроводниковой индустрии, где занимаются разработкой ASIC, VHDL практически не встречается. Или когда я работал в Menta, бывало такое, что приходил заказчик и просил переписать VHDL-«корку» на Verilog. Также уходу VHDL способствуют UVM-верификация на SystemVerilog и тулы с расширенной поддержкой Verilog. Можно сказать, что и сам Verilog тоже потихоньку уходит из-за популярности SystemVerilog, так как в нем удалось объединить и Verilog, и частичку VHDL.
Еще с 90-х годов многие компании предпринимали попытки сделать что-то более универсальное и перетянуть разработчиков embedded-систем, которые пишут на C/С++, OpenCL или даже на каком-нибудь Java в эту когорту — чтобы эти разработчики использовали ПЛИС в качестве аппаратной платформы. Это называется high-level synthesis (HLS). Этой теме был посвящен один из моих первых стримов — 45 минут я рассказывал, что такое HLS и как им пользоваться. Кажется, Юрий Владимирович Панчул тоже этим занимался.
Зачем оно нужно? Есть класс алгоритмов, которые хорошо параллелятся и которые не очень удобно считать на процессорах. Например, матричное умножение, на котором построена вся видеообработка, — это несколько подряд идущих циклов. Было бы хорошо эти циклы развернуть. Зачем нам считать восемь раз подряд, когда можно посчитать восемь элементов параллельно? И зачем нам делать второй цикл, когда можем развернуть еще восемь элементов и сразу посчитать 64 элемента? И так далее. В случае ПЛИС кодогенерация получается обалденная. Банальная операция из цепочки циклов легко разворачивается и ложится на параллельную логику ПЛИС.
Но просто так взять код, написанный на C, и переложить на архитектуру ПЛИС не получится — у нее есть ограничения. Например, для того же матричного умножения элементы матрицы надо где-то хранить и откуда-то потом брать, нужна память, а она двухпортовая, не восьми- или десятипортовая. Каждый раз есть тупик в виде аппаратных ограничений. Без учета архитектуры ПЛИС эта кодогенерация бессмысленна. Но все равно эта технология начала продвигаться уже достаточно давно.
В 2012 году Xilinx очень плотно за нее взялась, как раз когда появилась среда Vivado HLS. Xilinx выпустил примеры и даже OpenCV переложили на свою платформу. То есть можно было взять OpenCV-код и получить этот код в Verilog, уже адаптированный под ПЛИС. В таких средах и функции на C/C++ можно было ускорить, просто по нажатию кнопки передав их в ПЛИС.
Что это за среды и как запускать Python на ПЛИС, можно узнать в подкасте. Таймкод — 1:44:00.
Про будущее ПЛИС
ПЛИС всегда развиваются согласно трендам. Допустим, сейчас на пике популярности искусственный интеллект, и поэтому начали появляться специальные вычислительные IP-ядра в ПЛИС как раз для таких задач. Или когда дело касается серверов, если нужно провести большую обработку данных, то для этого хорошо подходит ПЛИС.
Поэтому будущее у ПЛИС есть, но оно зависит от индустрии. Как, например, было в 90-е, когда хорошо пошел телеком — в ПЛИС появились DSP-блоки с блочной памятью и на ПЛИС было удобно выполнять алгоритм цифровой обработки сигналов. В 2000-х начался бум скоростной передачи данных — в ПЛИС появились трансиверы и их стали применять в этой сфере. Нужно было убрать связку между процессором и ПЛИС — их сделали в одном корпусе. То есть, что скажет индустрия, то и будет в ПЛИС. Но, конечно, хочется чего-то новенького.
Что же ждет ПЛИС, слушайте с 1:52:00.
Еще в подкасте:
8:00 Как платформа для фрилансеров послужила началом российского сообщества ПЛИСоводов.
31:00 Про связь ПЛИС и трех токсичных индустрий — крипту, HFT и ИИ.
45:00 Почему у Gowin и Lattice одинаковые логотипы.
58:00 Чем на самом деле занимается инженер по прототипированию FPGA.
1:24:00 Как обстоят дела с отечественными ПЛИС.
1:56:00 Чат в телеграм, конференция и журнал — чем занимается сообщество FPGA-Systems.
Полную версию подкаста можно посмотреть и послушать на Истовом Инженере →
j_aleks
при нашей "заднице" в производстве микроэлектроники, есть неплохой шанс "ответвится" и избрать путь массового fpga, широая линейка мелких , средняя средней интеграции, и соответсвенно "жирных" -дорогих... тогда можно заменить всю мелкую логику окружений, специальную и вплоть до микроконтроллеров...
juramehanik
"Массовое fpga" это как?
j_aleks
в стародавние времена высокоразвитой цивилизации на территории РФ, выпускалось масса "рассыпной" логики, которая втыкалась во все "щели", кстати и ПЛМ (программируемые логические матрицы, одноразовые правда) выпускались... в настоящи момент отечественную логику можно найти только из "старых" запасов... Планируется наладить выпуск, поднять отрасль и прочее прочее, выпуском "мелких" fpga можно перекрыть ВСЕ типы "рассыпной" логики и при массовом производстве ценник был бы близок к 0, средними и "жирными" fpga можно было бы перекрыть всю линейку отечественных микроконтроллеров, конечно останутся высокоспециализированные схемы типа АЦП... но было бы желание
ЗЫ.. Массовое производство однотипных моделей значительно дешевле чем узкоспециализированных схем ограниченного применения.И таки да, наш разработчик , как правило из за ограниченности бюджета, запихивает в разработку максимум математики(именно высокой математики а не то что ограниченно софтом), что шибко бесит "заклятых друзей"..
gaussssss
Неа, все равно будет кратно дороже чем профильные микрухи
Но при этом еще будут плюс затраты на плисоводов. И они будут повыше чем сейчас контроллер запрогать.
GentleFly
Производитель этой условной ПЛИС может подготовить "Soft SoC", который может использовать не ограниченое количество программистов МК. И такие "Soft SoC" могут и стать "профильными микркхами". И при этом, такой подход позволит менять "профильность микрухи" почти динамически. Кто мешает сделать такие "Sof SoC" как аналоги STM32, Atmega, ... DSP... , на открытой ISA , например RISC-V? И при этом получить готовый компилятор...
Закупаешь одну ПЛИС... А в замен получаешь возможность использовать его как 100500 вариантов профильной микркхи.
Да их даже поставлять можно с прошитым туда по умолчанию МК...
А если эти ПЛИС производить тоннами ... То станут дешевле STM... Эхх...
Другими словами: производишь одну модель ПЛИС, а продаешь ее как 100500 моделей МК, DSP, specASIC...
Flux82
Для этого нужны достойные техпроцессы, рынки сбыта, нормальный менеджмент и ещё кое-что: отсутствие угрозы в виде того, что как только ты поднимешься на заметный уровень -- твой бизнес добровольно-принудительно отнимут. Главное правило ведения бизнеса в России -- не вести бизнес в России.
GentleFly
Главное правило природы - выжил тот кто, приспособился. Так не только в России. Похоже, что весь мир, все еще, живет по закону "сильный кушает слабого".
gaussssss
Никто не мешает, но по 100р как 103-ю стм-ка такое продаваться не будет.
Предположим есть плис, которая покрывает все семейства стм. Она априори будет дороже любой из них, но при этом используя ее как сотую стмку я буду платить фулл прайс. Бизнесу не понравится, писибишникам тоже. А если нужна компактность? А если ультранизкое потребление?
Пока такая плис будет производиться тоннами (на объем рынка рф) - стм будет производиться сотнями тонн. Плюс или в их цену будет включена разработка готовых прошивок, либо их надо будет покупать, либо держать плисовика, который дороже стмщика.
Короче идея классная, но несбыточная.
GentleFly
Хочется верить, что все зависит от объема. И при определенных условиях, это все окупиться :)