Обновить
43.68

FPGA *

Программируемые логические интегральные схемы

Сначала показывать
Период
Уровень сложности

Как я убеждал блондинку Машу перейти с программирования RTOS в проектирование железа (а также Coq, Lisp и Haskell)

Время на прочтение5 мин
Охват и читатели23K

В викенд я зашел в кафе Red Rock и встретил там программистку встроенных систем Машу Горбунову. Вообще, у этого кафе в Маунин-Вью, Калифорния можно встретить кого угодно - например однажды на меня прямо из-за угла вылетел основатель Гугла Сергей Брин. Так вот Маша рассказала мне что программирует RTOS (семафоры, мейлбоксы, сигналы), чему выучилась в свое время в питерском институте ГУАП (аэрокосмического приборостроения).

Я решил, что такая девушка не должна оставаться в другой отрасли и показал ей плату ПЛИС, внутри которого можно засинтезировать пару ядер ARM микроконтроллерного класса. На что Маша среагировала так (видео):

Читать далее

Причина агонии студентов во время интервью, или популярно о моделях интерфейсов шины

Время на прочтение7 мин
Охват и читатели8.4K

Сейчас я интервьирую кандидатов которые приходят на позиции в RTL design / проектировщики микросхем на уровне регистровых передач. Но 5 лет назад я интервьировал студентов и других инженеров на позиции в DV / Design Verification / верификаторы блоков микросхем.

Моим стандартным вопросом было написать маркером на доске псевдокод для упрощенного драйвера модели шины (Bus Functional Model - BFM) для протокола AXI. На этом вопросе у ~80% кандидатов наступала агония - они как ужи на сковородке пытались натянуть сову на глобус - приспособить решение для последовательной шины а-ля APB, которое они прочитали в каком-нибудь тьюториале - к шине AXI, которая во-первых конвейерная, а во-вторых, допускает внеочередные ответы на запросы чтения с разными идентификаторами.

Аналогия из другой области: представьте, что кто-то пытается обходить дерево или решить "ханойские башни" - не зная концепций рекурсии и стека. Или написать GUI интерфейс, не зная концепции cобытийно-ориентированной архитектуры.

Это не потому что кандидаты глупые

IV Конференция FPGA разработчиков: Мск, СПб и Томск

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели1.6K

ПЛИС-культ привет, FPGA хаб!

В очередной раз мы собираемся нашим ламповым FPGA комьюнити для обмена опытом, всякими премудростями и просто для общения в кругу таких же ПЛИСоводов как и ты.

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

Посмотреть программу

Из FPGA-дизайнера в ASIC: четыре личных истории и анонс курса переподготовки от YADRO Microprocessors

Время на прочтение8 мин
Охват и читатели7.8K

Во всем мире и в нашей стране резко возрос интерес к разработке микроэлектроники, ключевым элементом которой являются системы на кристалле. Разработка этого класса устройств требует глубоких специальных знаний и опыта, а специалистов такого профиля в индустрии не хватает. При этом традиционные способы подготовки дают хорошую фундаментальную базу, но выпускники вузов не обладают необходимым опытом работы в реальных проектах.   

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

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

Читать далее

Реализация кэш-компрессии по алгоритму base+delta

Время на прочтение29 мин
Охват и читатели3.4K

Существенную часть кристалла современных ЦП занимает кэш-память. Дальнейшее увеличение кэш-памяти без изменения технологических норм приведет к соответствующему увеличению кристалла. Одним из способов увеличения объема хранимой информации в кэше без увеличения самого кэша является использование алгоритмов компрессии. Среди них выделяются алгоритмы Base+Delta и Base-Delta-Immediate. Данная статья посвящена реализации первого алгоритма.

Читать далее

А JTAG то у вас для красоты только, или нужен зачем?

Время на прочтение5 мин
Охват и читатели4.9K

Как можно CPLD JTAG пины использовать как активную часть работающего устройства?

Читать далее

Стратегии оптимизации HDL-кода и синтезатора нетлиста для FPGA

Время на прочтение22 мин
Охват и читатели9.4K

В статье будет рассмотрена работа синтезатора нетлиста, его возможности по оптимизации кода и трудности, с которыми он может столкнуться. Показаны две техники написания кода логических схем на Verilog в зависимости от преследуемых целей оптимизации проекта на этапе синтеза. А также разбор некоторых настроек синтезатора Xilinx Vivado, которые призваны пытаться оптимизировать логическую схему за разработчика. В конце мы возьмём модуль, который попробуем привести к рабочему состоянию исключительно за счёт возможностей синтезатора.

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

Читать далее

Simics: RISC-нём?

Время на прочтение6 мин
Охват и читатели4.6K

Ранее в сериале… Ах, да, не все технари уважают сериалы. Тем не менее, слово Simics уже было написано в заголовке и мне не отвертеться от того, что все последующее будет своеобразным практическим продолжением материала «Симуляторы компьютерных систем – похожи ли на реальность» моего коллеги @alex_dzen.

Из этих трех статей мы знаем, что есть такие симуляторы аппаратного обеспечения и ими пользуются серьезные дядьки из больших компаний. Наверное, меня тоже можно отнести к этим «дядькам», но у меня есть одна слабость — на досуге я люблю что-нибудь паять и использую для проектов «несерьезную» среду Arduino, где в качестве процессоров применятеся что-нибудь из «несерьезных» Atmel-ARM или ESP32-RISC. И интрига в том, можно ли использовать Simics для небольших и хобби-проектов?

Раскрыть интригу

Искусство отладки FPGA: как сократить срок тестирования за счет грамотной разработки

Время на прочтение15 мин
Охват и читатели7.6K

Давайте попробуем оптимизировать самый времязатратный этап разработки устройств на базе ПЛИС — отладку прошивки. В этой статье мы расскажем о принципе 20/80 при планировании времени, рассмотрим инструменты для отладки FPGA, вспомним Гордона Мура и Уинстона Черчилля (да-да), затроним отладку сложных распределенных систем и внешних интерфейсов, а в конце — разберемся с типичными ошибками и поделимся полезными практическими советами.

Для начала рассмотрим типовой цикл разработки и моделирования FPGA-прошивки:

Читать далее

Прокачиваем скрипты симуляции HDL с помощью Python и PyTest

Время на прочтение14 мин
Охват и читатели8.9K

Все делают это. Ну ладно, не все, но большинство. Пишут скрипты, чтобы симулировать свои проекты на Verilog, SystemVerilog и VHDL. Однако, написание и поддержка таких скриптов часто бывает довольно непроста для типично используемых Bash/Makefile/Tcl. Особенно, если необходимо не только открывать GUI для одного тестбенча и смотреть в диаграммы, но и запускать пачки параметризированных тестов для различных блоков, контролировать результат, параллелизировать их выполнение и т.д. Оказалось, что всё это можно закрыть довольно прозрачным и легко поддерживаемым кодом на Python, что мне даже обидно становится от того, как я страдал ранее и сколько странного bash-кода родил.

Читать далее

Начинаем опыты с интерфейсом USB 3.0 через контроллер семейства FX3 фирмы Cypress

Время на прочтение14 мин
Охват и читатели17K
В целом, основной цикл статей про работу с комплексом Redd можно считать завершённым. Мы познакомились с методиками доступа к основным компонентам комплекса, научились писать и отлаживать на нём программы для центрального процессора, при этом локально используя хоть Linux, хоть Windows. Мы научились разрабатывать «прошивки» для ПЛИС, а также начерно освоили типовой цикл их разработки (написание кода моделирование, запуск в железе). Вроде, всё.

Но тут мне пришлось освоить работу с шиной USB 3.0 через контроллер семейства FX3 фирмы Cypress. Пока свежи воспоминания, я решил задокументировать детали процесса, так как сделав всё по фирменным описаниям, можно либо не получить ничего, либо получить не совсем оптимальную систему. И снова вышел целый блок статей. В первой из них, мы рассмотрим, где взять «прошивку» для самого контроллера, как её собрать и залить в него. Также сделаем базовую «прошивку» для ПЛИС.


Читать дальше →

Использование Quartus и ModelSim

Время на прочтение10 мин
Охват и читатели52K
Меня всегда интересовала цифровая схемотехника, а в частности языки описания аппаратуры — HDL. У меня давно лежала в списке будущего чтения книга Дэвида М. Хэррис и Сары Л. Хэррис «Цифровая схемотехника и архитектура компьютера», воспользовавшись свободным временем на самоизоляции, я добрался до этой замечательной книги. В процессе чтения я столкнулся с некоторыми трудностями, а в частности, как именно писать и отлаживать код в Quartus Prime. В процессе поисков мне очень помог сайт marsohod.org, но вот процесс симуляции схемы на этом сайте описан с использованием встроенных средств Quartus и в современных версиях программы, этих встроенных средств нет и необходимо использовать ModelSim. Чтобы как-то систематизировать те знания, которые я получил, используя Quartus и ModelSim, я решил написать эту статью. В процессе этой статьи я в качестве примера разберу задачу из книги Дэвида М. Хэррис и Сары Л. Хэррис «Цифровая схемотехника и архитектура компьютера», а конкретно задачу 3.26 про автомат газированной воды. На протяжении статьи я покажу, как установить Quartus, создать проект, написать код и произвести его симуляцию. Всем кому это будет интересно, добро пожаловать под кат.

image
Читать дальше →

Домашка по арифметике

Время на прочтение11 мин
Охват и читатели8.3K
Лёшенька, Лёшенька, сделай одолжение!
Выучи, Алёшенька, таблицу умножения !

Агния Барто


Сначала задачка для первоклассника. Дано некоторое положительное число. Нужно умножить на него другое число, заранее неизвестное. Вопрос, как посоветуют это сделать благородные доны ??? Бывалый разраб наверняка скажет, мол мужик, ставь умножитель и не парь мне мОзги. И возможно будет в корне неправ! Ибо кроме монстров от Alterra и Xilinx существует ещё и такое замечательное семейство как iCE-40 от Lattice. Ультрамикропотребляющее. Очень дешевое. Да вот беда, больно мелкие они, и увы, умножителей там нет. Я столкнулся с этим года 4 назад, когда портировал некий ADPCM-кодек с ассемблера adsp-2185 на такой кристалл.
Читать дальше →

Ближайшие события

Часть 5/2 корп. 1: Перекрёсток проспекта RocketChip и скользкой дорожки инструментации

Время на прочтение17 мин
Охват и читатели1.5K

В предыдущих четырёх частях велась подготовка к экспериментам с RISC-V ядром RocketChip, а именно, портирование этого ядра на «нестандартную» для него плату с ПЛИС фирмы Altera (теперь уже Intel). Наконец, в прошлой части на этой плате получилось запустить Linux. Знаете, что меня во всём этом забавляло? То, что одновременно приходилось работать с ассемблером RISC-V, C и Scala, и из всех них Scala была самым низкоуровневым языком (потому что именно на ней написан процессор).


Давайте в этой статье сделаем так, чтобы C тоже не было обидно. Более того, если связка Scala+Chisel использовалась лишь как domain-specific language для явного описания аппаратуры, то сегодня мы научимся «затягивать» простенькие функции на C в процессор в виде инструкций.


Конечная же цель — тривиальная реализация тривиальных AFL-like инструментаций по аналогии с QInst, а реализация отдельностоящих инструкций — лишь побочный продукт.

Читать дальше →

Мой «Hello World!» на FPGA или очередная версия UART

Время на прочтение15 мин
Охват и читатели29K
Мой Hello World! на FPGA или очередная версия UART

Наконец-то у меня дошли руки до изучения ПЛИС. А то как-то неправильно получается: драйвера на железо под Linux пишу, микроконтроллеры программирую, схемы читаю (и немного проектирую), надо расти дальше.

Так как мигать светодиодами мне показалось не интересно, то решил сделать простенькую вещь. А именно написать модули приемника и передатчика для UART, объединить их внутри FPGA (заодно понять как использовать IP Core), ну и протестировать это все на реальном железе.
Читать дальше →

Открываем набор на бесплатные курсы по программированию и разработке под FPGA

Время на прочтение4 мин
Охват и читатели18K
Всем привет! Одно из видений нашей компании звучит следующим образом: Мы создаём знания и делимся ими

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

И я с радостью спешу сообщить, что с 1 ноября мы начинаем курсы по следующим направлениям:

  • Разработка под FPGA
  • Программирование микроконтроллеров
  • Системное программирование в Linux
  • Измерение качества телекоммуникационных каналов
  • Основы программной инженерии

Количество мест ограничено, поэтому естественно присутствует входное тестирование.

Прочитать подробности и записаться на курсы можно тут.

А под катом история появления курсов и более подробная информация о направлениях, учебных планах и входном тестировании. Добро пожаловать!
Читать дальше →

Полезные свойства джиттера

Время на прочтение3 мин
Охват и читатели16K
Джиттер это дрожание фронта тактового сигнала. Чем меньше джиттер тем лучше. Большой джиттер ухудшает параметры АЦП, ухудшает трассировку ПЛИС. Однако есть ситуации когда джиттер полезен. Например его можно использовать при автоматической подстройке тактовой частоты.
Читать дальше →

Шестнадцать (sic!) докладов про «железо» за один день: FPGA-Systems 2025 у порога

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.5K

Традиционный ежегодный слет hardware-инженеров пройдет в Москве уже через месяц, 29 ноября. Мы расширили целевую аудиторию: в программе найдется интересное не только для мастеров FPGA, но и для RTL-шаманов, гуру верификации и адептов физического дизайна. А еще будут DIY-стенды с «железками» от комьюнити! Больше подробностей — далее в посте.

Читать далее

Программист embedded лезет в FPGA (часть 3, чего не может ардуинка)

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели7K

Вначале мы поморгали диодом, затем посчитали семисегментником. Если с нуля, то уж лучше пройти эти этапы. Теперь приступим к задачке, которую с большой натяжкой можно применить где-нибудь на проде. С очень большой.

На плате, которую я использую для примера (QMTECH Cyclone 10 Starter Kit), есть разъём HDMI, что недвусмысленно намекает нам, что к нему можно подключить дисплей соответствующим кабелем. На самом деле, разъём – это не обязательно. А вот наличие на чипе выходов, которые можно сконфигурировать как lvds, очень сильно приветствуется. Возможно, получится и без этого (просто 2 выхода, формируемые из одного инверсией), но я не пробовал, потому промолчу.

Когда мы embedded-программисты, то с дисплеем мы взаимодействуем, отправляя на него команды, либо, если всё хорошо с железом, то пишем в специальную область памяти.

Мы будем работать на более низком уровне. Делать на коленке прозрачные электроды, и наклеивать поляризационные плёнки, конечно, не надо. Будем формировать видео-сигнал.

Если вы думаете, что в 2025-м году ЭЛТ мониторы и телевизоры остались в далёком прошлом, то у меня для вас есть новость: Формат сигналов внутри проводов всё ещё напоминает сигнал, который идёт на одну из сеток большой вакуумной лампы, которой, по сути и является кинескоп.

Читать далее

Chisel вместо Verilog, искажение тактового дерева и прототипирование ASIC: прокачиваем FPGA-скилы новыми темами

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели2K

Осенью мы в YADRO совместно с сообществом FPGA Systems собрали FPGA-энтузиастов сразу в двух городах — Москве и Санкт-Петербурге. Получилось почти 12 часов докладов — по проектированию на FPGA и ASIC, альтернативным HDL, запуску GPU AMD на ПЛИС с RISC-V, искажению времени и другим фантастическим явлениям темам. Самые полезные, по мнению зрителей, — в этом посте.

Читать далее