Обновить
32K+

FPGA *

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

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

Zynq 7000. Камера MIPI-CSI-2 и вывод видеопотока через HDMI и Ethernet UDP. Часть 1

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

Пришло время поиграться на плате TZT RK-ZYNQ7020-F v1.1 (Zynq-7000, XC7Z020-CLG484-2) с имеющейся у меня камерой на базе сенсора OV5647 (CSI-2, RAW10) и вывести одновременную картинку по HDMI и по Ethernet с использованием стриминга сжатого потока по UDP. Данная статья представляет собой практический мануал: если выполнять шаги по порядку и не переходить дальше, пока предыдущий не дал ожидаемый результат, вы получите живую картинку на мониторе и поток, который открывается в браузере, VLC или ffplay.

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

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

Читать далее

Новости

«А давайте перепишем все на питон!»

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

Почти три года назад, когда я начал митапы Verilog Mettup в Hacker Dojo, на них пришел Владимир Чурюкин и когда посмотрел на мою инфраструктуру Basic‑Graphics‑Music, где баш‑скрипты по имени платы строят проект, сразу сказал «А давайте перепишем все на питон». И переписал! С оговоркой что это PoC, то бишь Proof of Concept, то есть он это проверил только на 5-ти платах, а не на всех 45-ти, как мой исходный репозиторий.

А теперь посмотрим, что из этого получилось.

Читать далее

PCIe и DDR3 на ПЛИС Gowin: как мы заставили работать то, что не работало у производителя

Уровень сложностиСложный
Время на прочтение17 мин
Охват и читатели14K

Привет, Хабр! Меня зовут Владимир Заикин. Под руководством Семёна Григорьева @rsdpisuy, я занимаюсь разработкой на ПЛИС в лаборатории YADRO в СПбГУ. Мой рассказ — о том, как мы реализовали общение по PCIe с ПЛИС на плате Sipeed Tang Mega 138K Pro с кристаллом GW5AST-138K от Gowin.

Устройство, реализованное на ПЛИС, должно было принимать данные по PCIe, сохранять их в DDR3 и обрабатывать пользовательской логикой. Чтобы реализовать такую функциональность, мы обратились к примеру взаимодействия с PCIe-контроллером от производителя платы, но тот оказался нерабочим. Пришлось разбираться самим. В итоге мы сделали рабочий стенд: Linux-драйвер, хост-программа на C и аппаратное описание на Verilog. Все это выложили в открытый доступ, чтобы поделиться своим опытом и помочь другим безболезненно разобраться с этой проблемой.

Читать далее

Архитектура цифровых устройств: разбираемся с процедурными и конвейерными вычислениями

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

Привет! Меня зовут Кирилл Алексеев, я ведущий инженер в отделе интеграции систем на кристалле радиочастотного центра YADRO. В своей предыдущей статье я рассказывал, чем FPGA-разработка отличается от программирования: HDL-код описывает не последовательность инструкций, а цифровую схему. Вместо переменных — проводники, соединяющие выход одного аппаратно-реализуемого блока со входом другого, а все описанные модули (блоки) присутствуют на схеме независимо и работают параллельно. 

Дальше — интереснее. К реализации одной и той же цифровой схемы есть множество подходов и огромное количество вариантов последовательности обработки данных. Как это устроено, расскажу в статье. Разберем, что такое архитектура и микроархитектура блока, чем процедурная схема отличается от конвейерной. Сравним две различные микроархитектуры — процедурные реализации схемы цифрового КИХ-фильтра.

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

Читать далее

Хакерспейсы Батуми и Тбилиси + ASIC чип спроектированный в Грузии

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

Каждый год я стараюсь поехать в какую-нибудь страну бывшего СССР и провести там семинар или просто митапы на темы SystemVerilog-RTL-FPGA-ASIC-RISC-V, попросту говоря, обучение будущих проектировщиков чипов с помощью упражнений на FPGA. В этом году я поехал в Грузию и вот мой отчет:

1. Два митапа в Батуми: Friends Club / EPAM по ссылке от batumi_it_digital и хакспейс Meshtastic Batumi / радиолюбители.

2. Митап в Тбилиси в хакспейсе sandb0x.space и посещение хакспейса f0rthsp4ce / f0rth.space .

3. Встреча с инженером местного Cisco Леваном Чагелишвили и его коллегой Давидом, организованная моим старым знакомым, FPGA инженером Иваном Графским. Иван еще 10 лет назад помог мне организовать семинар в московском МИФИ и развернуть работу по народному переводу учебника Харрис & Харрис.

По Левану у меня есть продолжение: во время встречи в ресторане на фотографии выше Леван решил спроектировать ASIC и произвести его с помощью сервиса TinyTapeout. Это наврядли первый ASIC спроектированный в Грузии (хотя кто знает?), но мы решили чтобы было бы полезно, чтобы Леван описал свой опыт. Посему мы планируем три Zoom-лекции: на английском, русском и грузинском под названием:

* Чип спроектированный в Грузии:
Разбор маршрута проектирования для ASIC и прототипирования на FPGA

* Chip Designed in the Country of Georgia:
ASIC design flow and prototyping on FPGA

Подробности ниже

ChatGPT пишет Verilog, а программатор всё ещё приходится вставлять самому

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

Недавно мне понадобилось заставить FPGA работать с обычным PCI. Не PCI Express, а тем самым старым параллельным PCI, платы с которым когда-то стояли почти в каждом компьютере, а сейчас он в основном продолжает жить в промышленной аппаратуре. Задача сама по себе не новая, и несколько лет назад я уже возился с этим интерфейсом. Тогда значительная часть времени уходила даже не на отладку платы, а на то, чтобы разобраться в стандарте, правильно понять процедуру конфигурации и руками написать всю необходимую логику на Verilog.

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

На практике произошло другое. Освободившееся время я тут же потратил на следующую версию прошивки, потом на ещё одну, после чего пришлось несколько раз перепрошить FPGA, перезагрузить компьютер, посмотреть, как плата определяется BIOS, разобраться с BAR-регистрами и полезть к железу уже с измерительными приборами. За тот же промежуток времени я просто успел проверить гораздо больше вариантов. Именно тогда я поймал себя на довольно странной мысли: нейросети действительно сильно ускоряют мою работу, но её количество от этого почему-то совсем не уменьшается.

Читать далее

Подробный обзор модуля FMC с AD9371

Уровень сложностиСложный
Время на прочтение50 мин
Охват и читатели11K

Технический разбор FMC-модуля на трансивере Analog Devices AD9371 — младшего родственника платы, разобранной в обзоре FMC_ADRV9009. Платы сделаны одним разработчиком по одному шаблону: те же семь листов схемы с теми же названиями, тот же генератор тактовых частот, тот же преобразователь питания, те же балуныи почти те же позиционные обозначения. Отличается микросхема — и вместе с ней меняется больше, чем кажется на первый взгляд.

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

Читать далее

Популяризаторство средневековой музыки и книга «Код» виндусоведа Чарльза Петзольда

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

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

Читать далее

От Цифровой Логики к Процессору через ПЛИС. Программа годового курса для школьников физматшкол

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

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

Читать далее

Как удобно и безопасно тестировать платы в лаборатории

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

Когда инфраструктура готова, возникает следующий вопрос: чем должна быть оснащена лаборатория, чтобы в ней действительно было удобно работать? Рассказываю, без какого оборудования мы уже не представляем повседневную разработку и на чем, по нашему опыту, не стоит экономить.

Читать далее

SPI‑контроллер на FPGA: переносим на Zynq 7000. Часть 2

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

Продолжаем разработку SPI IP Core на Verilog. В первой части мы перенесли SPI‑контроллер с Altera Cyclone IV на Zynq-7020, сохранили исходный регистровый интерфейс и добавили AXI4-Lite. Теперь задача меняется: нужно превратить работающий RTL в полноценное устройство под Linux.

Во второй части соберем Block Design с PS, настроим карту адресов и прерывания, подготовим загрузочную цепочку и Device Tree, а затем подключим контроллер к стандартной SPI subsystem Linux. Здесь уже недостаточно рабочего bitstream: ошибка в ps7_init, адресах или Device Tree может сделать исправное ядро недоступным для ОС. После обычного PIO‑доступа добавим потоковый тракт для больших объемов данных. Для этого появятся AXI‑Stream адаптер, глубокий FIFO, backpressure и режим TX‑only. По ходу разберем ошибки, которые проявляются только под нагрузкой: потерю байтов на границе FIFO, проблемы запуска DMA и устаревший результат синтеза.

Финал этой части — плата самостоятельно загружает Linux, SPI работает через драйвер, а большие буферы передаются из DDR в PL через AXI DMA без побайтового участия Cortex‑A9.

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

Читать далее

SPI-контроллер на FPGA: переносим на Zynq 7000. Часть 1

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

Продолжаем разработку SPI IP Core на Verilog. Следующий логичный этап - перенести разработанный SPI IP Core на Verilog на Xilinx Zynq-7020, который установлен на плате TZT RK-ZYNQ7020-F rev.1.1. Рядом с программируемой логикой в Zynq живёт ARM-процессор, между ними проложена шина AXI, на процессоре крутится Linux, а на плате есть дисплей, которому можно скормить готовые кадры, с часами на дисплее ST7789, которые рисуются потоком через AXI DMA. Читать статью можно и без Altera-части, всё существенное мы повторим по дороге; но если есть лишний вечер, начните с неё — увидите, откуда взялись решения, за которые нам сейчас придётся платить.

Главная ценность статьи — не описание того, как «должно быть», а разбор того, почему с первого раза не получилось. Каждая нетривиальная ошибка рассказана целиком: что мы видели своими глазами, какая гипотеза казалась логичной, как проверяли, какая улика перевернула картину, где оказалась настоящая причина и какой вывод мы из этого сделали.

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

Читать далее

Проектируем с нуля калькулятор на FPGA. Часть 10: Всё работает

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

← Девятая часть

В предыдущих постах мы подробно разбирали каждый слой: CPU, арифметику, скриптовый интерпретатор, оборудование. Вот, что окончательный отчёт о синтезе Quartus сообщает обо всех них: в готовой архитектуре используется 1593 логические ячейки из доступных в EP2C5 4608 (35% чипа) с 594 выделенными логическими регистрами и 17 блоками памяти M4K. Сам модуль CPU занимает 1173 из этих логических ячеек и 400 регистров. Остальная логика отдана периферии: драйверу ЖК‑дисплея (154 логические ячейки), сканеру клавиатуры (97), интерфейсу термопринтера (64), таймеру CTC (49) и аппаратному PRNG (20). 12 блоков памяти M4K занимает ROM микрокода (49152 бит: это полная программа калькулятора), 2 блока — ROM скриптинга (8192 бита), 1 — ROM BCD‑констант, 1 — таблица поиска для BCD‑умножения внутри CPU и 1 блок — ОЗУ. Меня это очень радует: полнофункциональный научный калькулятор уместился в 35% небольшой дешёвой FPGA.

Читать далее

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

Как перестать искать место для плат и начать тестировать

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

Привет, Хабр! Меня зовут Антон. Я работаю в группе разработки аппаратной поддержки СнК в YADRO. Моя команда занимается разработкой аппаратной и программной частей стендов для тестирования полупроводниковых продуктов, поэтому наша деятельность находится на стыке железа и программирования. А тестовая лаборатория — неотъемлемая часть нашей работы.

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

Читать далее

Проект eMMC-emu

Уровень сложностиСложный
Время на прочтение23 мин
Охват и читатели12K

Полноценных эмуляторов eMMC практически нет: программные решения не справляются с требуемыми скоростями, а существующие обходные подходы не позволяют воспроизводить всё многообразие поведения накопителя. Мы решили исправить эту ситуацию и создать собственный эмулятор для исследований безопасности и воспроизведения нестандартного поведения накопителей.

В процессе разработки пришлось разбираться с FPGA, DDR4, AXI, Clock Domain Crossing и особенностями реальных хост-контроллеров. Оказалось, что они не всегда следуют спецификации (которой нет в открытом доступе) и порой предъявляют к eMMC собственные требования.

Нам приходилось отлаживать эмулятор с кардридером, программатором и даже одноплатником Orange Pi 3B. В итоге он смог загрузить Linux и перейти к режиму HS200.

Как превратить FPGA в eMMC и почему отладка хост-контроллера иногда сложнее самой эмуляции - читайте в статье.

Send CMD18 (READ_FULL_ARTICLE)

Подробный обзор модуля FMC ADRV9009

Уровень сложностиСложный
Время на прочтение90 мин
Охват и читатели12K

Ко мне пришла плата для организации SDR-трассивера и я решил сделать технический разбор FMC-модуля на широкополосном трансивере Analog Devices ADRV9009 - того самого «китайского клона» оценочной платы ADRV9009-W/PCBZ, который продаётся на Taobao и AliExpress под именем FMC ADRV9009. Обзор рассчитан на читателя, который в целом понимает, что такое SDR, FPGA и JESD204B, но хочет разобраться в конкретной плате: что на ней стоит, как она устроена схемотехнически, к чему её можно подключить и чего от неё ждать. Если тебя заинтересовала данная тема - добро пожаловать под кат.

Читать далее

Основатель движения мейкеров Дейл Догерти расспросил Майю и Свету об их проектах на нашем кружке электроники

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

Я писал в предыдущих постах, что наш митап по верилогу пригласили на мероприятие торговой палаты города Маунтин-Вью, Калифорния. И вот мероприятие состоялось. Ну, как я уже написал в заголовке, на наш стенд зашел Дейл Догерти, основатель журнала самоделкиных Make Magazine и выставок Maker Faire. Дейл расспросил Майю и Свету почему у них возник интерес к проектам с микросхемами малой степени интеграции.

Читать далее

Одна страничка для ответа на вопросы про FPGA и рассыпуху на городских ярмарках

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

На всяких народных гуляниях типа MakerFaire и OpenSauce меня постоянно спрашивают при виде FPGA “Это Ардуино / Raspberry Pi?” Причем когда я отвечаю “нет”, у людей появляется выражение лица будто я им нагрубил. Я раньше не понимал, с чем это связано, но теперь думаю, что цель такого вопроса - просто показать свою эрудицию, а я эту цель обламываю. Кроме этого минимум у одной дамы было такое выражение лица, что она наверное подумала, что я сумасшедший.

Теперь при использований микросхем малой степени интеграции появляется второй вопрос “разве все эти микросхемы не устарели и не были заменены Ардуино?”

Короче для Technology Showcase в Mountain View в этот четверг я решил сделать вот такую одну страничку и просто молча давать ее людям, которые задают эти два вопроса. Первая сторона:

Читать далее

Школьницы ваяют цифру на макетке ничуть не хуже школьников

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

Оказывается, школьницы стран бывшего СССР умеют ваять цифровые схемы на CMOS 4000 ничуть не хуже школьников, причем не только русскоязычных школьников, но и школьников из Индии и Китая. Под конец нашей месячной «Школы не в Замке, а в Клубе Хакеров по викендам» образовалась такая теплая компашка:

Читать далее

Проектируем с нуля калькулятор на FPGA. Часть 9: погоня за последним разрядом

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

← Восьмая часть

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

Но «большинство» это не «все», а «примерно 12» — это не 15-16 разрядов, которые может и должна обеспечивать 16-разрядная BCD-машина. Существовали пограничные случаи, в которых результаты оказывались совершенно неверными. Имелись итеративные алгоритмы с точностью приемлемой, но не такой, какой она могла быть. Кроме того, в процессе тестирования я обнаружил ошибки, при отладке которых обнаружились фундаментальные баги в коде прототипа на C++. Это привело меня в смятение, ведь для их устранения мне бы пришлось переделать заново код прототипа. В конечном итоге, так я и поступил. Старый код я оставил в репозитории (Pathfinding/Methods) и с нуля разработал совершенно новую версию (Pathfinding/Proof). Я пообещал себе, что занимаюсь этим последний раз в жизни, поэтому стремился делать всё идеально.

В итоге, версия 2025 года устранила найденные мной проблемы. Это был не патч, а почти полное переписывание арифметического движка, расширение набора команд CPU и существенное увеличение библиотеки функций. В этом посте я расскажу об изменениях и их причинах.

Читать далее
1
23 ...