Обновить
26.67

FPGA *

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

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

Самый по-человечески написанный учебник компьютерной архитектуры наконец-то выходит на русском языке и для RISC-V

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

В 2015 году скачивания первого русского издания учебника Харрис & Харрис завалили сайт британской компании Imagination Technologies. Книгу стали использовать в МФТИ, ВШЭ МИЭМ, МГУ, МИЭТ, ИТМО и других вузах. С тех пор вышло еще два издания - для ARM и для MIPS, и вот в январе 2022 года выходит новое - для RISC-V и оно уже доступно для предзаказа.

"Цифровая схемотехника и архитектура компьютера: RISC-V" вероятно станет стандартным учебником в российских вузах, как и источником информации для тех, кто хочет попроектировать процессоры на ПЛИС. Ничего лучшего на рынке нет. Паттерсон-Хеннесси не привязан к курсам по языкам описания аппаратуры и не обсуждает тайминг цифровой логики, а Таненбаум устарел.

Кроме этого, архитектура RISC-V становится билетом в будущее для российских процессорных компаний - Ядро купило Syntacore, Байкал Электроникс инвестировал в CloudBear, Миландр выпустил микроконтроллер с архитектурой RISC-V.

Если же вы не хотите работать в российских компаниях, а хотите пройти интервью на проектировщика чипа в Apple, Intel, NVidia, то и в таком случае учебник Харрисов - это самый эффективный способ начать этот путь.

О Харрисах, содержание и почему RISC-V

Первые эксперименты со смешанным Litex+Verilog проектом для ПЛИС

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

В предыдущей статье мы начали осваивать построение шинно-ориентированных систем на базе среды Litex (которая всё делает на Питоне) с внедрением собственных модулей на Верилоге. Статья так разрослась, что практические опыты мы оставили на потом. Пришла пора провести их. Сегодня мы подключимся к VGA-монитору и поуправляем изображением, которое выдаёт модуль gpu, описанный в файле gpu.v, то есть, реализованный на языке Verilog. Управлять мы им будем через регистр команд, расположенный в блоке CSR, спроецированном на шину Wishbone. Все эти сущности, в свою очередь относятся к среде Litex. Инструменты для опытов мы тоже будем использовать штатные, Litex-овские. Приступаем!

Читать далее

FPGA Weekly News #001

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

Ребята из FPGA комунити каждый день делают небольшую подборку новостей из мира FPGA и решили поделиться ей с читателями хаба FPGA. Внимание: возможны повторы!

Читать далее

Как прошла III конференция FPGA разработчиков в Москве?

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

Прошло всё отлично, 60 человек собралось, 7 докладов выслушано, 20 человек осталось на афтерпати.

Следующее мероприятие пройдет в Москве, Минске, Томске и Санкт-Петербурге в апреле-мае, подробности тут.

Записи выступлений и презентации под катом

Читать далее

Проектировщик процессоров Zilog расскажет про Z80 в космосе и про свое новое RISC-V ядро

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

Что общего между популярным у хоббистов компьютером Синклер ZX Spectrum и космической станцией Juno, которая сейчас вращается вокруг Юпитера? И на одном, и на другом стоит процессор с архитектурой Zilog. На Синклере просто Z80, а на Juno - радиационно стойкий Y180-S. Y180-S спроектировал Монте Далримпл (Monte J. Dalrymple), выпускник Беркли, который проработал 16 лет в Zilog, после чего сделал собственный бизнес, компанию под названием Systemide.

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

Вы можете послушать Монте в эту субботу

Создаём простейший проект для ПЛИС Lattice в среде Litex

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

В предыдущей паре статей я рассуждал про ПЛИС Lattice. Давайте сегодня поговорим об эффективной разработке под них. Один наш крупный руководитель уверяет, что из разговоров с иностранными Заказчиками, он выяснил, что российских разработчиков считают пишущими классные вещи, но делающими это крайне медленно. Ну, разумеется, по сравнению с разработчиками из других стран. И разумеется, «классные» идёт на первом месте.

Один из методов обхода проблемы скорости разработки – использование готовой инфраструктуры для проектов. Я делал цикл статей про комплекс Redd, где продвигал использование готовой шинной инфраструктуры в среде разработки Quartus. Сначала это была честная процессорная система, потом – процессор мы изъяли, а шины – оставили.

Затем я делал пару циклов, где активно использовал данный подход. Мне приходилось дописывать только проблемно-ориентированные модули, остальное — среда разработки создавала за меня.

Есть ли что-то подобное для Lattice в частности и сцепки Yosys/NextPNR в целом? Вы не поверите! Решение не просто есть, но оно ещё и настолько кроссплатформенное, что подойдёт и для Yosys/NextPNR, и для Quartus, и для Vivado! И называется оно Litex. Итак, давайте попробуем поэкспериментировать с ним для подхода, который я уже давно продвигаю: «делаем штатную основу, а на неё нанизываем свои целевые блоки».

Читать далее

Как разработать микросхему, от идеи до результата. Часть 4. DRC/LVS/PEX

Время на прочтение12 мин
Количество просмотров6.8K
В прошлой статье мы сделали Layout, а в этой части мы проведём LVS/DRC/PEX и исправим ошибки из прошлой статьи. Для тех, кто пропустил прошлые части, вот ссылки на них.




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

  1. Запустим Design Rule Check, чтобы проверить возможность произвести нашу схему
  2. Запустим Device Extraction для сравнения нашего Layout с целевой схемой.
  3. Произведём сравнение наших компонентов из Layout и нашей схемы, которую мы нарисовали в XSCHEM.
  4. Сгенерируем netlist с паразитными конденсаторами и резисторами (PEX).
  5. Просимулируем netlist с паразитными конденсаторами и резисторами.
  6. Сгенерируем LEF файл.
  7. Подведём итоги этой серии статей.
Читать дальше →

Как разработать микросхему, от идеи до результата. Часть 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.7K

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

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

Читать далее

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

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

В предыдущей статье я поделился опытом работы с ПЛИС фирмы 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 мин
Количество просмотров113K

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

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

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

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

В статье будет рассмотрена работа синтезатора нетлиста, его возможности по оптимизации кода и трудности, с которыми он может столкнуться. Показаны две техники написания кода логических схем на 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 или еще что-нибудь другое.

Читать далее