Все потоки
Поиск
Написать публикацию
Обновить
22.7

FPGA *

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

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

Как разработать микросхему, от идеи до результата. Часть 3. Схемотехническое представление и Layout

Время на прочтение14 мин
Количество просмотров9.6K
В прошлой статье мы установили все программы, а в этой части, мы наконец приступим к практической части. Готовьтесь, эта часть будет очень большой. Для тех кто пропустил прошлые части — ссылки ниже.



Как разработать микросхему, от идеи до результата. Ссылки на все статьи։

В этой части мы:

  1. Будем рисовать схему, используя XSCHEM
  2. Произведём симуляцию нашей схемы, используя NGSPICE
  3. Поймём цикл производства микросхемы
  4. Нарисуем Layout, используя KLayout

Предполагается, что вы уже прочитали предыдущие материалы. Если мне удалось вас заинтересовать, прошу под кат!
Читать дальше →

Что делать, когда мигать лампочками уже скучно, а проектировать процессор еще сложно

Время на прочтение5 мин
Количество просмотров12K

ПЛИС и Verilog - естественная платформа для обучения будущего проектировщика процессоров, так же как Си и микроконтроллеры - естественная платформа для обучения будущего программиста встроенных систем.

И один, и другой путь начинается с мигания огоньками на недорогой плате, но дальше пути расходятся. Встроенный программист смотрит в сторону самоуправляющихся авто, с задачами на RTOS и распознаванием ситуации с помощью AI в GPU. Проектировщик микросхем на уровне регистровых передач смотрит в сторону групп, разрабатывающих CPU, GPU, NPU и сетевые чипы, но какие упражнения он может делать между миганием огоньками и трудоустройством в Интел?

И что делать?

Как разработать микросхему, от идеи до результата. Часть 2. Установка программного обеспечения

Время на прочтение9 мин
Количество просмотров11K
В этой статье мы поставим все необходимые инструменты для того, чтобы начать разработку микросхемы. Также мы установим Process Design Kit, про который мы говорили в предыдущей статье.

Напоминаю, что я продолжаю идти к цели — сделать свой собственный Отечественный Процессор (TM). Продолжение процесса разработки можно посмотреть под катом.

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

Zynq 7000. Тестирование счётчика импульсов

Время на прочтение15 мин
Количество просмотров4.6K

После небольшого (нет) перерыва в изучении Zynq и очередного прочтения своей предыдущей статьи, я отметил для себя очень важный момент - практически не отражено никаких результатов тестирования полученного поделия, кроме базовой проверки работоспособности. Во время подготовки материала для предыдущей статьи - я конечно же все проверял перед публикацией, что всё работает как надо (на первый взгляд), но из-за получившегося объема статьи вся информация о процессе проверки осталась за кадром. Именно поэтому я решил сделать отдельную статью, в которой я расскажу о том, как я проверил, то, что результат, достигнутый в предыдущей статье, соответствует (полностью или частично) заявленным требованиям. Много интересного выяснилось по хоу тестирования, я вам скажу...

Всем интересующимся - добро пожаловать под кат! 

Читать далее

Синтезируем SystemVerilog код в OpenSource среде Yosys/NextPNR

Время на прочтение5 мин
Количество просмотров5.9K

В предыдущей статье я поделился опытом работы с ПЛИС фирмы Lattice через инструменты с открытым исходным кодом Yosys и NextPNR. Как я отмечал, освоить их меня заставило не столько любопытство, сколько требования Заказчика. В том проекте у меня просто не было выбора. И та статья, скорее, была написана в помощь для быстрого старта тем, кого тоже заставят. А можно ли использовать эту сцепку для дома, для семьи? Для этого она должна быть удобной.

Как мы обсудили в комментариях к прошлой статье, в минусы этой сцепке можно записать отсутствие такого полезного инструмента, как SignalTap (Altera) или ChipScope (Xilinx). Замену этой парочке пока что удалось найти только в виде физического анализатора. Так себе замена, но хоть что-то.

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

На странице Yosys  YosysHQ/yosys: Yosys Open SYnthesis Suite (github.com) описано, что данный язык ограниченно поддерживается синтезатором, и даже указана опция для его использования. А именно сказано, что команде read_verilog надо добавить ключ –sv. Но попытки найти в сети готовую инструкцию для новичков, как её активировать, я не нашёл, потому что если кто-то и пользуется этой командой, то для одного файла, а не для списка.

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

Читать далее

Как разработать микросхему, от идеи до результата. Часть 1. Теория

Время на прочтение19 мин
Количество просмотров30K
Пока наши соседи по цеху спорят о конкурентоспособности Эльбруса, я продолжаю идти к своей заветной цели — склепать свой собственный Отечественный Процессор (TM). Ранее я рассказывал про программу, финансируемую Google, которая позволяет энтузиастам бесплатно получить прототип их разработок в кремнии. Если вы хотите увидеть всю подноготную процесса производства современных чипов, то этот туториал точно для вас!

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

Как отличить начинающего профессионала от умудренного хоббиста в цифровой схемотехнике?

Время на прочтение7 мин
Количество просмотров13K

В чем главное отличие между FPGA-хоббистом, ностальгирующим по КР580ИК80 на пенсии - и начинающим микроархитектором, ориентированным на будущее трудоустройство в передовую процессорную компанию или сфинансированный венчурными капиталистами стартап?

Три слова: понимание концепции конвейера. Молодым профессионалом, не старым хоббистом.

Это наглядно видно, если вы погуглите тексты про FPGA для начинающих. Если текст пишет программист, которому захотелось потрогать FPGA чисто для разнообразия, он как правило до конвейера не доходит. Помигает лампочками, поговорит про конечные автоматы и может начнет встраивать какую-нибудь FPGA-реализацию старого 8-битного процессора.

(Некоторые из таких людей даже пишут книги - вот некий Роберт Дунне реализовал процессор конечным автоматом с состояниями fetch/decode/execute, но до конвейера не дожал)

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

Но это надо преодолеть, поскольку если вы прийдете интервьироваться в какой-нибудь AMD на позицию юного проектировщика, вас будут спрашивать не как помигать лампочками и засунуть Радио РК-86 в Xilinx, а как стоя перед интервьирующим написать на доске на языке описания аппаратуры Verilog - конвейерную реализацию какого-нибудь умножения со сложением. Или сделать это на компьютере отрезанном от интернета, так что вы даже не cможете нагуглить решение - вот садисты, а?

Именно этому вопросу будет посвящено следующее занятие Сколковской Школы Синтеза Цифровых Схем.

Объяснение концепции конвеера военкоматом

Как я проходил интервью на проектировщика FPGA для космических кораблей Blue Origin

Время на прочтение6 мин
Количество просмотров15K

Однажды я решил ответить на сообщения в LinkedIn от рекрутерши безосовской компании Blue Origin, которая занимается разработкой и запуском космических аппаратов. Затем я прошел два раунда интервью: скрининг и 6-часовой марафон с дюжиной инженеров и менеджеров. Я не могу рассказать вопросы или описать диалоги с интервьирующими, потому что я подписал бумагу что не буду этого делать, но покажу пару вещей, о которых зашла речь еще до подписания бумаги, а также дам совет тем, кто хочет это повторить (совет кстати может быть применим не только при устройстве к Безосу, но и к Маску или Рогозину).

Одновременно с Blue Origin я интервьировался в другую компанию, интервью в которую по времени было такое же - час скрининга с инжиниринг-менеджером и шесть часов детальное интервью - но содержание было соовсем другое. Вообще обычно в электронных компаниях такое интервью - это просто марафон задачек на микроархитектуру (всякие извращенные FIFO, арбитры, кэши, кредитные счетчики), каверзные вопросы про тайминг (доходит до time stealing/time borrowing), пересечение тактовых доменов, дюжина способов оптимизации динамического энергопотребления при проектирования на уровне регистровых передач итд.

Но в компании Безоса все было по другому. Сначала нужно было написать эссе на тему "Что я думаю о космических кораблях бороздящих просторы Вселенной". Я написал следующее:

Читать далее

III Конференция FPGA разработчиков: теперь в Мск и СПб

Время на прочтение2 мин
Количество просмотров1K

Всем-FPGA!

Вот и осень, а это значит, что настала пора для нашей очередной (уже третьей) встречи FPGA / ПЛИС разработчиков, которая пройдёт в формате конференции FPGA-Systems 2021.2.

Читать далее

Экспериментируем с ПЛИС семейства ECP5 фирмы Lattice

Время на прочтение10 мин
Количество просмотров11K

Когда я видел на Хабре упоминание о ПЛИС Lattice, у меня всегда возникал простой вопрос: «А зачем ещё одна ПЛИС?». Вроде всю жизнь хватало пары базовых. Но полгода назад случилось то, что сняло этот вопрос для меня. Пришёл Заказчик и сказал: «Мы делаем проект на ECP5». Против требований Заказчика не попрёшь!

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

Итого, вчера делать ознакомительную статью про Lattice было рано, завтра – может быть поздно.

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

Читать далее

Почему книга Эндрю Таненбаума «Архитектура компьютера» вредна для образования

Время на прочтение4 мин
Количество просмотров111K

Сегодня взял в руки книжку Эндрю Таненбаума "Архитектура компьютера" (последнее издание на русском языке вышло в 2018 году). Я ее пролистывал лет 10 назад, но сегодня решил пролистать снова, чтобы быть абсолютно уверенным в том что я напишу ниже. А именно: это книжка была вредна для образования. Она плодила не инженеров-проектировщиков, а потенциальных игроков для телевикторины "Что-Где-Когда?" и спорщиков-всезнаек на форумах интернета, которые могли рассуждать часами о микрокоде и джава-процессорах, нагибая собеседников своей эрудицией про очереди микроопераций (стр 291 4-го издания 2003-го года) и защелках в трактах данных (стр. 286), но при этом ничего не могли сделать своими руками.

Потому что (сначала мелкие придирки):

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

Время на прочтение22 мин
Количество просмотров7.7K

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

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

Читать далее

Разработчик российского RISC-V ядра будет учить школьников и студентов ассемблеру RISC-V в субботу

Время на прочтение5 мин
Количество просмотров8.5K

В субботу 13 ноября с 12.00 по Москве пройдет следующая сессия Сколковской школы синтеза цифровых схем, в режиме онлайн. По плану на ней должны были быть упражнения на FPGA плате с последовательностной логикой. Однако мы решили изменить план и переставить на эту дату занятие по архитектуре RISC-V. Это занятие было изначально запланировано 11 декабря. Занятие по последовательностной логике будет передвинуто на 20 ноября. Почему мы решили так сделать - см. обьяснение через три абзаца.

Занятие по RISC-V проведет проектировщик российского микропроцессорного ядра Никита Поляков из компании Syntacore. В Syntacore Никита перешел из компании МЦСТ где он проектировал процессор Эльбрус. 

Занятие будет состоять из лекции с одновременными упражнениями на симуляторе RARS. RARS моделирует процессор на уровне архитектуры (системы команд, видимых программисту), в отличие от симулятора Icarus Verilog, который мы обсуждали в предыдущей заметке и который моделирует на уровне регистровых передач / микроархитектуры (внутреннего устройства схемы процессора). Разработчику процессора нужно уметь пользоваться симуляторами обеих типов.

У RARS есть три кнопки - запустить, ассемблировать и выполнить шаг. В конце занятия вы будете уметь программировать на ассемблере, даже если раньше этого никогда не делали. В этой заметке мы расскажем, как установить симулятор и запустить простую программу на ассемблере. Потом в следующей заметке я напишу, что такого особенного есть в архитектуре RISC-V и почему мы выбрали для семинара именно ее, а не ARM, x86/64, MIPS, AVR, SPARC,  Эльбрус, Z80, 6502, PDP-11 или еще что-нибудь другое.

Читать далее

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

Ни дня без строчки верилога — учим язык решением большого количества простых задач

Время на прочтение7 мин
Количество просмотров17K

30 октября прошло первое занятие Сколковской Школы Синтеза Цифровых Схем. Из-за Ковида его пришлось провести в онлайн-формате. Трансляция первого занятия.

Возможно онлайн-формат - это и к лучшему, так как в офлайне в Технопарке Сколково есть только 25 посадочных мест, и мы приготовили только 25 FPGA плат, а количество заявок привысило 300. Теперь мы на спонсорские деньги от компании Ядро Микропроцессоры и Максима Маслова @Armmaster заказали еще 100 плат и собираемся их раздать бесплатно для занятий дома, преподавателям вузов и руководителям кружков в других городах.

Чтобы быть уверенным, что получатели плат смогут их использовать, мы поставили в качестве пререквизита их получения прохождение короткого онлайн-курса от Роснано (см. детали в хабрапосте Готовимся к Сколковской Школе Синтеза Цифровых Схем: литература, FPGA платы и сенсоры). 40 с чем-то участников школы прошли этот курс и им будут высланы платы, как только заказанные платы прибудут из Китая.

При этом, так как школа уже началась, а до следующего занятия 13 ноября еще есть время, мы решили попробовать другой пререквизит - решение последовательности коротких задач на верилоге (мы выложили их на гитхаб здесь), используя не плату, а бесплатный симулятор Icarus Verilog. Всем участникам, которые собираются дойти в курсе до проектирования процессоров, все равно нужно будет освоить механику кодирования на верилоге, а для этого симулятор просто быстрее, чем учить это на FPGA платах.

Как установить Icarus и пройти задачи

Прототипирование процессоров Baikal на платформе Synopsys HAPS

Время на прочтение5 мин
Количество просмотров4.1K

Если предыдущая статья про гибридное прототипирование https://habr.com/ru/company/baikalelectron/blog/582782/ описывала новаторское использование платформы HAPS, то сегодня мы расскажем в общем - что такое прототип, и какие традиционные подходы к  прототипированию используют инженеры Baikal Electronics.

В маршруте проектирование сложных System-on-the-Crystal (SoC) прототипирование на FPGA занимает промежуточное место между моделирование на симуляторах (VCS, ModelSim и др.) и эмуляцией.

 FPGA-прототипирование позволяет реализовать такие сложные сценарии системной валидации микросхемы как загрузка операционной системы (ОС). На прототипе операционная система может загрузиться за несколько часов, на симуляторе ОС грузилась бы в течении месяцев. При этом на FPGA с помощью встроенного логического анализатора мы можем увидеть поведение любого сигнала нашего дизайна в любой момент времени. А также, в отличие от кремния, можем переконфигурировать наш прототип произвольное количество раз.

Читать далее

Simics: кто не RISC-ует, тот не выигрывает

Время на прочтение10 мин
Количество просмотров3.6K

Добро пожаловать на очередной шабаш любителей испортить себе жизнь странным хобби! Репортаж с предыдущей вечеринки вы можете найти по ссылке. На ней мы практически «с нуля» создали модель начального уровня встраиваемого контроллера на базе RISC-процессора. Сегодня мы с вами будем добавлять ром ROM и попробуем обзавестись сравнительно несложной защитой памяти. И правда, что за встраиваемая система без ПЗУ? Прежде чем мы это сделаем, неплохо бы набросать некоторые детали конечной архитектуры нашей системы. Почему сейчас? Потому что ROM нужно будет разместить по каким-то адресам, как-то нужно будет управлять логикой защиты памяти, оставить что-нибудь «на вырост» и при этом где-то должно быть ОЗУ. Впрочем, описание будет небольшим ;-)

Поучаствовать в шабаше

Работаем с сетевыми адаптерами через Pcap-драйверы

Время на прочтение16 мин
Количество просмотров14K
Работой с сетью в наше время никого не удивишь. Насколько я знаю, работать с сокетами нынче обучают уже на втором курсе соответствующих специальностей. Так что в целом, сетевые навыки должны быть у многих программистов. Но иногда требуется не просто работать с сетью, а делать это с предопределёнными параметрами, будь то расстояние между пакетами либо какое-то нестандартное их содержимое. Понятно, что речь идёт не о повседневной жизни, а об отладке либо тестировании проектов. В этом нам поможет работа через Pcap-драйверы. Например, через драйвер Npcap, устанавливающийся вместе с программой Wireshark.



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

В общем, думаю, имеет смысл свести все сведения воедино. Кому интересно – приступаем!
Читать дальше →

Танцы без бубнов или как я реализовал автомат на ПЛИС

Время на прочтение6 мин
Количество просмотров4.9K

Всем привет, дорогие хабровчане! Сегодня я хочу поделиться своей «больной» идеей реализовать калькулятор на ПЛИС на основе конечного автомата. Почему больной? Потому что уж очень мудрёно получается: всё-таки реализация автоматов на ПЛИС – дорогая практика в смысле ресурсов. Почему хочу поделиться? Потому что вишенкой на торте в этом проекте является автоматическая генерация кода с помощью такого мощного средства, как HDL Coder в MATLAB, что в купе со Stateflow очень интересно смотрится: создание железного кода на основе графического составления графа системы – ни это ли верх мечтаний разработчика, которому необходимо реализовать сложнейший граф с кучей разных переходов и условий ?!

Итак, задачу перед собой я поставил следующую: у меня есть «китайский» кит с FPGA Spartan 6 на борту и старенький клавиатурный интерфейс PS/2. Я собираюсь залить проект калькулятора-автомата на ПЛИС вместе с выбранным интерфейсом и с клавиатуры осуществлять ввод данных. Вывод результата и текущего ввода будем наблюдать на 8-ми cемисегментных дисплеях, которые также имеются на отладочной плате.

В первой части мы познакомимся с пакетом Stateflow, как собиралась модель в SIMULINK и сгенерируем HDL-описание. Во второй части мы немного скорректируем проект для получения синтезируемого HDL кода.

Читать далее

Готовимся к Сколковской Школе Синтеза Цифровых Схем: литература, FPGA платы и сенсоры

Время на прочтение17 мин
Количество просмотров17K

Мы с коллегами из МИЭТ, Ядро Микропроцессоры / Syntacore, МИРЭА, ВШЭ МИЭМ, МГУ, Иннополиса, ЧНТУ, Самарского университета, Siemens EDA и с поддержкой от Cadence Design Systems - проводим, начиная с 30 октября, курс на 13 суббот под названием "Сколковская Школа Синтеза Цифровых Схем". Это сильно расширенная версия трехдневной школы на ChipEXPO, которая прошла на ура в сентябре.

Суть школы - знакомство с маршрутом проектирования RTL2GDSII, который применяют проектировщики чипов в Apple, Intel итд, используя в качестве тренажера лабы на микросхемах реконфигурируемой логики FPGA, как это делают например в MIT в курсе 6.111. Помимо лаб на FPGA в курсе будет туториал по ASIC flow используя софтвер от Cadence, после которого, если мы договоримся, будет экскурсия на фабрику микросхем в Зеленограде.

Число регистраций снова в несколько раз превысило число посадочных мест в Сколково, поэтому большая часть участников вероятно будет проходить школу удаленно, как и зарегистрировавшиеся вне Москвы, в том числе в Белоруссии, Украине, Азербайджане, Казахстане итд - среди зарегистрировашихся есть даже русские живущие в Германии.

Этот текст - в помощь для подготовки

Xilinx дорого-богато? Или ищем бюджетные варианты

Время на прочтение3 мин
Количество просмотров15K

Свое изучение ПЛИС я начал с FPGA Altera Cyclone IV, с которой в комплекте шел копеечный USB ByteBlaster. В сторону Xilinx посматривал с опаской, если борода была не сильно дороже, то программатор начинался уже от 2 т.р. за копию на Алике, что от 10 раз дороже Альтеровского Бластера. Я прошел свой путь от относительно дорогих (не фирменные) до дешевых моделей и хочу с Вами поделиться изысканиями. Возможно, если бы я обладал этой информацией, то начал изучать Xilinx пораньше.


Про плату управления майнером EBAZ4205 не писал только ленивый, ее я и заказал первой на опыты с SOC XC7Z010. Поморгав диодами, заказал со второго раза специфичные разъемы для самодельной платы расширения (пришли только несколько дней назад), начал искать на просторах Али вариант поинтересней и главное, подешевле («а восемь шапок сможешь ?»). И вот, довольно быстро, ко мне пришла китайская слива, то бишь, встречаем Lichee Tang Hex.



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

Вклад авторов