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

FPGA *

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

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

Импортозамещение работает: две российские FPGA платы, полностью импортозамещающие 35 американских и китайских плат

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

Вчера известный разработчик FPGA дизайнов и печатных плат Николай Ковач, основатель marsohod.org из Таганрога, добавил поддержку платы Марсоход3GW2 в репозиторий примеров для Школы Синтеза Цифровых Схем, в которую сейчас идет регистрация. Плата покрывает нужды Школы для упражнений с цифровой логикой, синтезом простого микропроцессорного ядра, распознавания и генерации звука и красивой графикой на HDMI дисплее с 24-битным цветом.

Почему это важно и как это связано с Мишустиным, США, Китаем и другими глобальными обстоятельствами? Да от решения микроархитектурных задачек на таких платах непостредственно зависит уровень проектировщиков российcких чипов через несколько лет:

Читать далее

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: проект программируемой логики

Уровень сложностиСложный
Время на прочтение20 мин
Количество просмотров9.4K

Привет, Хабр! Меня зовут Павел Панкратов, я ведущий инженер-программист в дивизионе искусственного интеллекта YADRO. Этим текстом я запускаю цикл статей — экскурс в особенности работы с SoC, комбинирующей в себе реализованные в «железе» аппаратные блоки (Hard IP’s) и программируемую логику (Soft IP’s). Основная задача, которая объединит все три статьи, — параллельный запуск встраиваемой операционной системы на двух различных по архитектуре процессорах, представленных в виде Hard и Soft IP-блоков.

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

Читать далее

Разработка цифровой аппаратуры нетрадиционным методом: Yosys, SpinalHDL, VexRiscv (ч.1)

Уровень сложностиСложный
Время на прочтение127 мин
Количество просмотров20K

Основная прелесть использования ПЛИС, на мой взгляд, состоит в том, что разработка аппаратуры превращается в программирование со всеми его свойствами: написание и отладка кода как текста на специализированных языках описания аппаратуры (HDL); код распространяется в виде параметризованных модулей (IP-блоков), что позволяет его легко переиспользовать в других проектах; распределенная разработка обширным коллективом разработчиков с системой контроля версий, такой же, как у программистов (Git); и, как и в программировании, ничтожно низкая стоимость ошибки.

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

В этой статье я хочу поделиться своим небольшим опытом «программирования» микросхем ПЛИС и тем, как я постепенно погружался в тему ПЛИСоводства. Изначально я собирался написать небольшую заметку про открытый тулчейн для синтеза Yosys. Потом — про язык SpinalHDL и синтезируемое микропроцессорное ядро VexRiscv, на нём написанное. Потом — про замену микроконтроллеров микросхемами ПЛИС на примере моей отладочной платы «Карно». Но в процессе я погрузился в историю появления Hardware Description Languages (HDL), и когда я начал писать, Остапа, как это часто бывает, понесло... В общем, получилось то, что получилось.

А еще эту статью можно рассматривать как глубокое погружение в то, что происходит вот на этом новогоднем видео.

Погрузиться сполна

Как работает FPGA?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров53K

Введение


Давайте начнём с самого начала. Что такое FPGA? FPGA расшифровывается как Field Programmable Gate Array (программируемая пользователем вентильная матрица).

FPGA относятся к классу устройств программируемой логики, иногда называемых программируемым оборудованием. По сути, сама по себе FPGA ничего не делает, но может быть сконфигурирована так, чтобы превратиться практически в любую нужную цифровую цепь. Магия заключается в том, что физически при этом ничего не меняется. Достаточно просто загрузить конфигурацию в FPGA, и она начнёт вести себя так, как нужная вам цепь. Не нужны ни пайка, ни перемычки, ни возня с другими соединениями. FPGA можно переконфигурировать так, чтобы она вела себя, как другая цепь, и делать это множество раз. Конфигурация хранится в ОЗУ, то есть, по сути, устройство можно переконфигурировать бесконечно.

На плате Alchitry Cu выделена FPGA Lattice iCE40 HX На плате Alchitry Au выделена FPGA Xilinx Artix 7
Хотя мы говорили об использовании FPGA для создания цифровых цепей, обычно для разработки их архитектуры не рисуют схемы. Если бы нам пришлось чертить схему, то размер и сложность цепей, которые могут содержать FPGA, стали бы очень громоздкими. Вместо этого мы можем описать поведение нужной нам цепи, а инструменты используют это описание для создания цепи, соответствующей этому поведению.

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

Если создание оборудования при помощи текста кажется вам магией, не волнуйтесь. Концепция его работы на самом деле довольно проста, и в этом туториале мы подробно о ней расскажем.
Читать дальше →

Сверхдлинное преобразование Фурье на FPGA

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

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

В этой статье показана невозможность реализации «классической» схемы очень длинного БПФ даже на самых современных кристаллах ПЛИС и предложен алгоритм, позволяющий это сделать. Также пошагово рассмотрена основная идея алгоритма: от математической составляющей до создания законченного решения на базе ПЛИС с использованием внешней DDR-памяти. Статья затронет тонкости проектирования многоканальных систем обработки для подобного класса задач и, в частности, опишет мой практический опыт.


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

Простое CPU ядро на ПЛИС

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров16K

Простое, нестандартное процессорное ядро с открытым кодом, которое может быть использовано для создания микроконтроллера в базисе ПЛИС, в том числе ПЛИС - ОП.

Читать далее

Как мы изобретали оптический рефлектометр

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


История про высокий порог входа, забеги по граблям и уверенность в завтрашем дне, а также про оптику, схемотехнику и немного про FPGA. На КДПВ — то, что получилось, работает и используется в production, а ниже — рассказ про процесс создания этого "чуда враждебной техники".


В одно хмурое зимнее утро декабря 2007 года маркетологи небольшой компании, занимающейся разработкой электроники, решили, что пора таки сделать свой OTDR.

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

Делаем тетрис под FPGA

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

imageНа этих долгих новогодних выходных я задался вопросом: насколько легко написать какую-то простенькую игрушку на FPGA с выводом на дисплей и управлением с клавиатуры. Так родилась еще одна реализация тетриса на ПЛИС: yafpgatetris.


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


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

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

Отладочная плата с жирной ПЛИС за 500р или что делать со старым антмайнером — как я делаю собственную платформу

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

С незапамятных времён, когда ещё существовали браузеры под ДОС, я взял себе ник Astra.

Поэтому и назвал проект превращения запчасти от майнера с мусорки в годную "отладку", с которым вожусь несколько месяцев, --Аstra_S9_SoC(+FPGA)-- или "платформа Astra9" Собственно, сама плата уже давно запроектирована и наштампована конторой Битмаин невероятно большим тиражом- порядка нескольких сотен тысяч (а то и миллиона) экземпляров. Сотни тысяч этих плат УЖЕ находятся у нас в стране, их не надо тащить с Али. Плата предназначена чисто для управления майнингом на хешплатах и не имеет никакой либо документации. Однако, "сердцем" платы является SoC+FPGA микросхема американской корпорации Xilinx -- ZYNQ 7010 xc7z010-clg400, что позволяет использовать её как FPGA девборд и как одноплатник

Я взял на себя труд разработать рабочую документацию на эту плату. https://dzen.ru/a/ZtTuMNBQ3gFhmskj

В своих статьях рассмотрю основные варианты применения этого изделия. Как минимум, будут освещены такие вопросы:

0. Никакой возни, раздобыл плату, микро-СД-флешку - и через полчаса всё заработало https://dzen.ru/a/ZtumRpI4dV3u1R7v

1. Привет, народ или Как помигать светодиодом

2. Запустить Убунту

Читать далее

Zynq 7000. Загрузка Embedded Linux на SoC через JTAG с помощью XSCT

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров7K

Учитывая, что я очень давно занимаюсь отладкой и запуском самых разнообразных проектов связанных с Zynq 7000 — со временем количество итераций перезапуска при проведении отладки увеличивалось пропорционально сложности проекта. Когда я только начинал осваивать разработку под Zynq, то каждый раз закидывал новый образ на microSD карту. Это было очень медленным процессом и требовало от меня постоянно подключать/отключать карту. После этого я освоил сетевую загрузку через Ethernet и TFTP, заменяя файлы по сети и проверяя результат после перезагрузки.

Впоследствии, изучив вопрос связанный с типами загрузки, я обнаружил, что есть альтернативный способ загрузки платы через интерфейс JTAG, который впрочем может оказаться единственным доступным, если на плате нет microSD и Ethernet.  

Вот как раз вопросы связанные с тем, как произвести загрузку по JTAG я бы хотел осветить в этой статье. Всем кому интересно — добро пожаловать под кат. 

Читать далее

Создаем I2C Master Controller на Verilog. Проверим работу на реальном железе

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров7.8K
После того, как Я реализовал битовый контроллер I2C Master — уж очень чесались руки опробовать его в реальной задаче. Теперь можно начинать строить уровни абстракции от манипуляции отдельными битами и уже формировать полноценные транзакции, которые приводят к какому-либо действию с подчиненным устройством. Я подумал, что было бы классно сделать такую проверку своего автомата во взаимодействии с простейшей I2C 2K-bit EEPROM.

Идея простая — читаем и записываем данные по нажатию клавиш на одной из отладок с Cyclone IV, которые я рассматривал в одном из своих обзоров.

Если материал вам кажется интересным — добро пожаловать, с удовольствием и в свойственной мне манере расскажу, чего мне удалось добиться, а чего не удалось. 🙂

image


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

Наконец-то приличный отечественный процессор ЦОС – 1967BH28

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

Несмотря на стремительное развитие процессоров общего назначения (ARM, x86 и более экзотических), не теряют своей актуальности специализированные процессоры цифровой обработки сигналов (ЦОС). Одним из самых популярных процессоров ЦОС с плавающей точкой в родном отечестве стал процессор ADSP-TS201S фирмы Analog Devices. В свое время (10-15 лет назад) этот процессор не знал себе равных в высокопроизводительных системах ЦОС, работающих в реальном времени. Его основные характеристики:

  • Частота процессора – 600 MГц
  • Объем внутренней памяти – 3 МБайта
  • 4 высокоскоростных порта – 600 Мбайт/сек
  • Внешняя шина – 100 МГц
  • Каналы DMA – 12 каналов

Решения на процессоре ADSP-TS201S хорошо себя зарекомендовали в широком классе аппаратуры как гражданского, так и не очень гражданского назначения. Но всему хорошему приходит сами знаете что конец.
Читать дальше →

Поднимаем SOC: ARM + FPGA

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


На днях ко мне в руки попала EBV SoCrates Evaluation Board. В двух словах — это плата с SoC от фирмы Altera, на борту которой есть двухъядерный ARM и FPGA Cyclone V.

ARM и FPGA на одном чипе — это должно быть очень интересно! Но для начала всё это добро нужно «поднять».
Об этом процессе я и поведаю в данной статье.

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

А в качестве маленького бонуса измерим пропускную способность между CPU и FPGA.
Добро пожаловать

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

Создаем I2C Master Controller на Verilog. Пишем HDL код

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров9.7K
Закончив в предыдущей статье описание того, как должны осуществляться атомарные операции и каким образом осуществляется выполнение команд я бодро перешел к написанию HDL-кода. Пришлось разобраться с тем, как организовать FSM, как организовать считывание и выставление данных на шине.  

Весь этот процесс перехода от идеи и результатов моделирования к написанию кода — я и хотел бы описать в данной статье. 

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

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

Создаем I2C Master Controller на Verilog. Логический уровень

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров9.9K
Продолжаю описание процесса изучения того, что такое I2C и с чем его едят. В этой статье я перейду от описания физических процессов, происходящих на шине к описанию того, как интерфейс функционирует на уровне логики, пакетов, какие служебные сигналы есть и для чего они используются при обмене данными.

Делаю я это для того, чтобы изучить то, как функционирует этот интерфейс на всех уровнях и чтобы заложить основу для разработки I2C Master Controller на Verilog, с помощью которого будет будет организован обмен данными с дисплеем SSD1306 и Zynq.

Всем, кому интересно — приглашаю ознакомиться с материалом под катом! =)

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

Hello World на Tang Primer 20K под Linux

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров9.6K
После обзора на Tang Primer 20K — стало очевидно, что она вызывает немалый интерес и было решено немедля сделать разбор о том, каким образом можно настроить свой ПК и IDE для того чтобы начать взаимодействовать с отладочной платой, которую я рассмотрел в прошлой статье. Изначально, до момента пока я не познакомился сам лично с ПЛИС от Gowin и не запустил демо-проект — юзабельность, скорость и простота работы с их IDE вызывала сомнение. Но как только попробовал — все опасения были развеяны и я остался доволен.

Опытом настройки я с вами хотел бы поделиться в этой статье. Всех интересующихся — я по традиции приглашаю под кат!

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

Такты для разработчиков

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


Если у вас есть опыт создания ПО и вы хотите познакомиться с проектированием цифровых логических схем (digital design), то одна из первых вещей, которые вам нужно понять, — это концепция тактов. Она раздражает многих программных инженеров, начинающих HDL-проектирование. Без использования тактов они могут превратить HDL в язык программирования с $display, if и циклами for, как в любом другом языке. Но при этом такты, которые новички игнорируют, — зачастую один из основополагающих элементов при проектировании любых цифровых логических схем.


Ярче всего эта проблема проявляется именно при рассмотрении первых схем, созданных начинающими HDL-разработчиками. Я недавно общался с некоторыми из них. Новички опубликовали свои вопросы на форумах, которые я читаю. Когда я проанализировал то, что они делают, от увиденного волосы встали дыбом.

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

SDR радиоприёмник в FPGA плате Марсоход3GW2 (Gowin)

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров9.9K

Когда-то давно, аж 2013-й год, на Хабре была статья "Простой SDR приёмник на ПЛИС" автора @iliasam. Я попытаюсь повторить этот проект на другой элементной базе: FPGA плата Марсоход3GW2, микросхема Gowin GW1NR-LV9QN88PC6/I5.

Законы Цифровой Обработки Сигналов кажется остаются всё те же, что и раньше. Посмотрим, что у меня получится.

Читать далее

Создаем I2C Master Controller на Verilog. FSM, Clock, Output Logic, etc

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров6.8K
После длительного перерыва я продолжил разработку I2C Master Controller на Verilog. В прошлых статьях я рассмотрел основной теоретический материал, необходимый для реализации изначальной задумки. В этом материале переходим к более интересному содержанию: я последовательно расскажу про процесс проектирования конечного автомата I2C, расскажу про тактирование и как организована логика выходных сигналов и многое другое.

Всем, кому интересно — добро пожаловать под кат!

image


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

Эмулятор БК-0010 на FPGA

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


Большинство любительских проектов FPGA, опубликованных на Хабре, сделаны на оборудовании фирмы Altera (теперь Intel). Давайте для разнообразия посмотрим, что можно сделать на продукции его основного конкурента – Xilinx. Мы возьмём и сделаем достаточно большой и сложный проект, в процессе реализации которого нам понадобится:

  • Выбрать Development board и необходимые PMOD к ней
  • Определиться с дизайном проекта, выбрать clock domains и правила перехода между ними
  • Освоить основные функции Xilinx Vivado – создание проекта, работу с блочными схемами, компиляцию, симуляцию, отладку
  • Сделать несколько IP с интерфейсом AXI4
  • Поработать с внешними устройствами
  • Сделать с нуля собственный процессор с контроллером шины и обработкой прерываний
  • Написать модуль для верификации
  • Наконец собрать всё вместе и получить реализацию на FPGA легендарного (как минимум для тех, кто тогда жил) компьютера середины 80-х – БК-0010

Планируется цикл статей, в которых всё это будет подробно описано, сегодня первая из них. Проект написан на System Verilog с небольшими вставками Verilog и VHDL в тех местах, где это необходимо. От читателя требуется понимание базовых принципов языков Verilog/VHDL на уровне книжки Харрис&Харрис.
Читать дальше →

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