
FPGA *
Программируемые логические интегральные схемы
Генерация и тестирование ядра RISC-V
- Введение (Krste Asanović) видео слайды
- Тулчейн RISC-V (Andrew Waterman) видео слайды
- SoC-генератор RISC-V “Rocket Chip” в Chisel (Yunsup Lee) видео слайды
- Структура программного стека RISC-V (Sagar Karandikar) видео слайды
- Отладка на RISC-V (Albert Ou) видео слайды
- Портирование нового кода на RISC-V с OpenEmbedded (Martin Maas) видео слайды
- Окружение тестирования RISC-V (Stephen Twigg) видео слайды
Ещё одна ссылка, если вы интересуетесь Chisel, языком, основанным на Scala, который используется для описания текущей аппаратной реализации ядра RISC-V (ядро Rocket имеет in-order конвейер, BOOM — out-of-order), и любых будущих реализаций.
Краткое руководство по Chisel (Jonathan Bachrach) видео слайды
Работа с Rocket Chip, добавление расширений, инфраструктура ASIC и FPGA (Colin Schmidt) видео слайды
Если вы глубоко заинтересованы в RISC-V и развитии сообщества, я предлагаю вам принять участие в воркшопах.

ECO Flow в Vivado или работа в режиме редактирования нетлиста
Аннотация
В статье рассмотрен режим работы Vivado, позволяющий вносить изменения в проект на уровне редактирования списка соединений (в дальнейшем – нетлиста). Описаны как сам режим ECO, так и некоторые нюансы, которые появляются во время работы в нём. Приведён демонстрационный пример и описана полная последовательность действий для получения результата, в работоспособности которой может убедиться каждый желающий. Статья будет полезна для «общего развития» FPGA-разработчикам, а особенно — тем, кто часто отлаживает проекты в Logic Analyzer. Надеюсь, работа в этом режиме вызовет интерес у разработчиков, работающих с большими кристаллами, время компиляции в которых может достигать часов (а то и десятков часов), поскольку в этом режиме время, затрачиваемое на имплементацию, при внесении изменений в нетлист может сократиться до буквально пары минут.

Оглавление
- Аннотация
- Введение
- 1. ECO: краткий обзор
- 2. Design Сheckpoint
- 3. Разработка тестового проекта
- 3.1. Создание проекта
- 3.2. Создание и добавление HDL файлов в проект
- 3.3.Создание проекта MicroBlaze и работа в IP Integrator
- 3.4.Синтез и имплементация
- 3.5.Написание программы для MicroBlaze
- 3.6.Запуск программы и отладка
- 4. Переход в режим ECO
- 5. ECO: описание интерфейса
- 6. Внесение изменений в проект
- 6.1. Создание новых элементов в нетлисте
- 6.2. Изменение свойств/параметров компонентов
- 6.3. Подключение других цепей к пробникам и ILA
- 6.4. Замена портов ввода/вывода
- 7. Сравнительный анализ
- 8. Заключение
- 9. Домашнее задание
- Библиографический список
В статье очень много картинок не в спойлерах (140 штук). Пожалуйста, будьте внимательны, если заходите с телефона
Использование произвольных DataFlash 25-й серии вместо дорогих конфигураторов FPGA Altera без дополнительной аппаратуры
Подробности в длиннющем тексте ниже. Если же очень интересно, но лень читать так много букв, то можно упростить задачу, посмотрев подробное 20-минутное видео.
Преобразователи Time-To-Digital (TDC): что это такое и как они реализованы в FPGA

На рисунке — первый в мире спутник квантовой связи «Мо-Цзы», который запустили из Китая в 2016 году, в нем летает TDC, реализованная в FPGA.
Объяснить своей девушке (или парню), что такое ADC и DAC, и в каких домашних приборах они используются, может каждый человек, называющий себя инженером. А вот что такое TDC, и почему у нас дома их нет, зачастую можно узнать только после свадьбы.
TDC — это time-to-digital converter. По-русски говоря: времяизмерительная система.
Основные потребители быстродействующих TDC — научные группы. Как правило, под определенный исследовательский проект требуется что-то очень специфическое. То каналов надо много, то разрешение очень высокое, то исполнение компактное. А уровень развития современных FPGA и их доступность как раз дают исследователям возможность экспериментировать с реализациями и подстраивать их под собственные нужды.
В этой хабрастатье приводится детальное описание простенькой времяизмерительной системы на FPGA Cyclone IV. Статья будет полезна не только для расширения кругозора, но и с методической точки зрения, поскольку реализация системы нетривиальная.
FPGA-ускорители уходят в облака

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

Перенос программного обеспечения с одной компьютерной архитектуры на другую в принципе, с некоторыми оговорками, дело относительно простое. Здесь на помощь приходят такие общеизвестные инструменты, как autoconf / automake/ libtool / gnulib. Собрать программу из исходников на каком нибудь Raspberry/ARM бывает так же просто, как и на ПК с Ubuntu/x86-64.
А вот как заставить проект ПЛИС разработанный для одной платы работать на другой плате? Там и сама ПЛИС может быть другой и на плате совершенно другие компоненты могут стоять. Простой перекомпиляцией проекта не обойтись.
Расскажу о своем опыте портирования проекта MIPSfpga для платы Марсоход3 с ПЛИС MAX10 Intel. Статьи о проекте MIPSfpga неоднократно появлялись на хабре. Они были так интересны, что мне захотелось и самому попробовать этот проект в имеющейся у меня плате. В своей работе я опирался на хабровские статьи
И многие другие…
Итак, что нужно сделать, чтобы портировать проект ПЛИС на другую плату?
Как я blakecoin майнер делал

Не знаю кому как, а меня прошедший 2017 год шокировал стремительным взлетом биткоина. Сейчас, конечно, ажиотаж уже ушел, а в 17-м году про криптовалюты говорили и писали все кому не лень.
Я видел, что люди пытаются зарабатывать на криптовалютах. Кто как умеет. Кто-то на все сбережения скупал видеокарты и начинал самостоятельно майнить в гараже. Кто-то вкладывался в облачный майнинг. Кто-то пытается организовать свой пул. Кто-то запустил в производство шоколадные биткоины, а кто-то выпускает минеральную воду:

Я тоже стал изучать, что же такое эти самые биткоины. Когда-то я даже начал свое собственное иследование алгоритма SHA256 и написал статью здесь на хабре "Можно ли вычислять биткоины быстрее, проще или легче?". Мои исследования алгоритмов хеширования до сих пор продолжаются и еще и близко не завершены… Может быть когда нибудь напишу про это отдельную статью. А сейчас пока вот это…
Обсудили в Стенфорде, что делать с математическим и инженерным образованием школьников Украины
«Чему Америка может поучиться у Украины в области образования?» — этот вопрос возник во время совещания в Стенфорде. Оказывается, есть чему, например традициям преподавания математики, которые у Украины общие с другими странами СНГ. «Как украинское правительство поддерживает ориентацию школьников на инженерные профессии?» — был другой вопрос аудитории, в которой были сотрудники SAP, Facebook, MIPS и других известных технологических компаний.
Асинхронные (самосинхронные) схемы. Вычисление логических функций непосредственно по графу событий. Часть 2

Задача состояла в том, чтобы импликанта покрыла точку 2 (то есть была равна 1 на этом состоянии) и не выходила за пределы обозначенные точками 1 и 3… При этом положение левой границы импликанты (левее точки 2) безразлично. Правая граница (правее точки 2) должна быть максимально сдвинута вправо. Невозможность вычисления импликанты означает наличие CSC конфликта. То есть существует непрерывная последовательность событий (но не все поведение целиком), в которой каждый сигнал переключается четное число раз.
Приступим теперь к вычислению минимальной логической функции (ДНФ) для сигнала x.

Асинхронные схемы. Вычисление логических функций непосредственно по графу событий. Часть 1
Первый шаг к аппаратным ускорителям нейронных сетей для программистов лежит через изучение основ HDL, RTL и лаб на FPGA
Зачем это нужно программистам? Ведь электронике учат на (гораздо менее массовых) факультетах электроники, где студент сначала изучает физику электричества, аналоговые схемы, делает пару лаб с мультиплексорами, после чего все это забывает и идет работать программистом.
Одна из причин, зачем цифровая схемотехника программисту — в последнее время происходит бум нейросетей. Если вы хотите чтобы обучение сложной сети занимало не недели / дни / часы, а часы / минуты / секунды, без аппаратных ускорителей не обойтись. Только специализированный хардвер выполнит параллельно большое количество умножений малой точности с одновременными транзакциями к океану памяти. В будущем нас ждут специализированные ASIC (application-specific integrated circuits) для AI, причем повсюду. В них будет как традиционный процессор, так и большие AI блоки на борту, с возможностью частичной реконфигурации.
От Гугла и Микрософта до Сколково и Иннополиса растет понимание, что нужны специалисты, которые могут строить такие сопроцессоры. Они должны владеть хардверной микроархитектурой, одновременно с пониманием софтверной экосистемы и алгоритмов. А владение микроархитектурой стоит на понимании уровня регистровых передач. Как это реализуется сейчас в Иннополисе:
Ответ Л.П. Плеханова на замечания по книге «Основы самосинхронных электронных схем»
Для справки: У коллектива, в котором работает Плеханов Л.П. довольно много наработок по части самосинхронной схемотехники. Более 20 патентов по самосинхронике, включая международные патенты (США).
Также решения являются не только теоретическими, но и практическими. Например, буквально недавно вышла книга «Библиотека функциональных ячеек для проектирования самосинхронных полузаказных микросхем серий 5503 и 5507». САПР «Ковчег» позволяет проектировать самосинхронные схемы в базисе БМК серий 5503 и 5507.
Кроме того, уже выполнен по технологии 65 нм самосинхронный делитель и блок FMA для процессора КОМДИВ-64. В силу разных обстоятельств данные труды пока не имеют заслуженной на мой взгляд огласки, и посему лично я надеюсь, что этот первый пост нашего отдела ИПИ РАН не будет последним и в ближайшее время мы расскажем публике о самосинхронной схемотехнике подробнее. Ну а пока, передаю слово Леониду Петровичу.
Пошумим!
Вообще-то, если появляется компетентная рецензия, то это благо для автора. Но здесь другой случай.
1. Общее впечатление
Автор замечаний (далее — Рецензент), находясь в плену своих событийных представлений, непоколебимо считает, что и все другие исходят (или должны исходить) из того же.
А с какой стати?
Поэтому Рецензент ничего не понял в книге — ни идеи, ни подхода, ни результатов.
Зато замечания написаны с большой самоуверенностью.
Ближайшие события
Мои замечания о книге Л.П. Плеханова «Основы самосинхронных электронных схем»

В книге самосинхронные схемы представляются как отдельный класс схем, обладающих уникальными свойствами. А вот определение самосинхронной схемы:
Самосинхронной схемой (СС-схемой) называется схема, обладающая
двумя свойствами безошибочной работы:
- отсутствием гонок при любых конечных задержках элементов;
- отказобезопасностью.
Данное определение подразумевает гипотезу о задержках Маллера. Второй пункт есть следствие первого. А первый пункт не что иное, как определение давно устоявшегося термина speed-independent (SI). То есть получается, что самосинхронные схемы это не отдельный класс схем, а схемы, синтезированные определенным методом, который гарантирует свойство SI. Таким образом «самосинхронный» это не характеристика класса схем, а характеристика метода синтеза.
FPGA для программиста, конечные автоматы (verilog)
Стиль описания конечного автомата как образ мышления
Когда нужно преодолеть врожденную параллельность FPGA, и появляется желание заставить схему работать последовательно, по алгоритму, на помощь приходят конечные автоматы, про которые написано не мало академических и практических трудов.
Например, очень популярной является работа: Clifford E. Cummings, The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC-Verilog and BuildGates. Всякий раз, когда специалисты решают обсудить, как правильно писать конечные автоматы, кто-то обязательно достает эту публикацию.
Статья стала настолько авторитетной, что многие даже не стараются анализировать аргументы автора. В частности, бытует мнение, что профессионалы всегда используют двухчастный способ описания конечных автоматов, имеется ввиду, описание конечных автоматов в 2 always блока. Это утверждение продолжает вызывать жаркие споры, и я хочу пояснить различия в описаниях конечного автомата с разным количество always блоков.
В беседах с коллегами я понял, что споры о том, как надо писать конечные автоматы в 1 или 2, 3 always блока, связаны с разным представлением (осознанием) реализуемого алгоритма, разным типом мышления. Попробую показать это на примере.
Я полагаю, что эта статья не первая статья о FSM и Verilog в вашей жизни, поэтому я не буду объяснять ни что такое конечный автомат, ни как он описывается на Verilog, а перейду сразу к делу.
Исследование внутренних дефектов ПЛИС: ищем черную кошку в темной комнате
Сезон 2: Плата содержит 4 кристалла XC7K160T, которые не работают больше 2-3 недель. В чем причина отказа? Разбираемся
1.Программное обеспечение.
Была проведена проверка количества элементов LUT между триггерами. Она показала, что это
количество достигает 12, однако это не приводит к большим временным задержкам и легко
укладывается в 4 нс, и даже почти всегда в 3 нс. В процессе получения результата комбинаторных операций (сложение и сравнение многоразрядных чисел) есть опасность повышенного потребления тока и локальных разогревов из-за значительного разброса времен распространения импульсов, и как следствие появление предельных частот переключения до 1ГГц. На рисунке 1 ниже видно, что на каждый такт происходит не одно переключение, а несколько.
Рис.1
Поэтому была предпринята попытка применения конвейера
Проверка синтезируемости красивых возможностей SystemVerilog на практике
Итак. Имеем проект, максимально напичканный всяческими SytemVerilog-овскими штучками. Даже если кажется, что применение той или иной вещи не даёт особого выигрыша — это ошибочное впечатление, ведь главная задача «проекта» — именно изучить возможности SystemVerilog. И вот, у нас есть набор из нескольких модулей (конкретно у меня — это UART-приёмники), данные из которых следует «сливать» в единую шину, перебирая их по алгоритму RoundRobin (конкретно в случае с UART — сливаем накопленные данные в единую очередь, которая с другой стороны будет уходить в шину USB).

Суровая сибирская и казахстанская микроэлектроника 2017 года: Verilog, ASIC и FPGA в Томске, Новосибирске и Астане
Для перехода от единичных успехов к развитой экосистеме необходимо подкрутить образование. В сентябре в Томске прошло совещание, на котором преподаватели и инженеры из Москвы, Сибири, Поволжья, Калифорнии и других мест обменялись опытом в преподавании микроэлектроники. Одновременно там же прошел учебный семинар по SystemVerilog, VHDL, FPGA, CPU IP, на который пришли не только россияне, но и студенты из Китая и Вьетнама, среди которых быстро распостранилась информация, что рядом учат чему-то полезному для их карьеры. Под катом — отчет об этом и сопутствующих событиях. Действующие лица: томские и новосибирские университеты, московские МГУ, МФТИ и МИЭТ, новосибирские лицеи, российская компания МЦСТ, американские MIPS, AMD и National Instruments, британская Imagination и казахский Назарбаевский Университет.
HyperRAM: использование микросхемы с интерфейсом памяти HyperBus

Продолжаем знакомить читателей Хабра с «нестандартными» типами памяти для разработки электроники. В прошлый раз мы рассказывали о гибридном кубе памяти (HMC) и его подключении к FPGA, а в этой статье сфокусируемся на микросхемах памяти с интерфейсом HyperBus от Cypress, которые появились на рынке относительно недавно, в 2014 году.
Сейчас доступно две разновидности устройств: HyperRAM и HyperFLASH. HyperRAM — это псевдо-статическая память (DRAM + схема перезаряда в одном чипе), а HyperFLASH — это NOR-флэш-память с интерфейсом HyperBUS. Также доступны комбинированные чипы 2 в 1: HyperFLASH 512Mb + HyperRAM 64Mb. Ценность современных решений заключается в малом числе сигналов, мелком футпринте, достаточно большой скорости работы и адекватной цене.
Исследование внутренних дефектов ПЛИС: ищем черную кошку в темной комнате
Однажды случилось так, что плата с кристаллом XC5VSX95T не заработала. Было известно, что это новая партия кристаллов. Для проверки проблемы был написан тест, тестирующий подряд все слайсы FPGA. Тестирование кристаллов показало наличие неисправных модулей LUT, входящих по 4 элемента в состав одного слайса. Оказалось, что триггеры в этих слайсах в порядке, и тогда был создан блок памяти на триггерах, которые в свою очередь созданы на LUT. См. рис. 1. Здесь показан пример триггера на LUT4. Каждая ячейка(бит) в тесте отвечает за один слайс. Триггерная ячейка задействует все четыре LUT слайса. Кристалл был разбит на 5 областей (и в другом тесте 9 областей), которые тестировались отдельно, каждый своей прошивкой. Правильное размещение используемых слайсов регламентировалось атрибутами LOC. Неисправность характеризуется невозможностью изменить состояние тестируемого триггера. Выход такого триггера может читаться 0 или 1, но всегда одинаково. Поэтому сначала память заполнялась 1, и проверялась, потом 0, и проверялась. Полный диапазон слайсов такой: X0Y0 – X91Y159. (14720 слайсов)

Рис.1
Вклад авторов
YuriPanchul 3058.2andreyzaostrovnykh 923.0KeisN13 743.5nckma 626.0hukenovs 429.0Armleo 421.3ishevchuk 419.0yadro_team 365.0iliasam 283.0BarsMonster 281.0