Создаем I2C Master Controller на Verilog. Пишем HDL код
Весь этот процесс перехода от идеи и результатов моделирования к написанию кода — я и хотел бы описать в данной статье.
Всем интересующимся — добро пожаловать под кат! =)

Программируемые логические интегральные схемы
Шина Avalon-MM является одной из стандартных шин передачи данных, используемых в ПЛИС фирмы Intel. Использование этой шины в своих модулях для передачи данных существенно повышает их возможность повторного применения и повышает надежность проектов. Также упрощается интеграция модулей в проект с помощью Platform Designer.
Этой частью завершается серия статей, рассказывающих о разработке и тестировании сумматора с AXI-Stream интерфейсами. Мы покажем, как можно улучшить тестовое окружение за счет добавления возможности его настройки без повторной перекомпиляции исходников. Также мы модифицируем драйверы и мониторы AXI-Stream интерфейса, чтобы их можно было повторно использовать в других окружениях и проектах.
В предыдущей части был рассмотрен основной подход, применяемым для тестирования сложных цифровых устройств - constraint random testing. Мы узнали, как автоматизировать проверку корректности работы устройства с помощью сравнения его выходов с эталонной моделью. Тестовые окружения, работающие по такому принципу, называются self-test testbench. Мы увидели из каких компонентов строятся тестовые окружения и разработали структуру окружения для проверки сумматора с AXI-Stream интерфейсами. В этой статье мы перейдем от теории к практике и покажем, как реализовать это окружение на языке Verilog.
Чем хорош FPGA-хаб на Хабре это еще и тем что тема протокола valid/ready время от времени тут всплывает. И это действительно важно так как valid/ready является одним из основных протоколов организации управления потоком (flow-control). Понимание valid/ready для микроархитектора так же необходимо как необходимо понимание закона Ома электрику.
На прошлом занятии мы отработали концепцию очереди FIFO на микроархитектурном тренажере - hdlgadgets. В этот раз мы возьмем два FIFO буфера (которые образуют конвейер с valid/ready рукопожатиями) и будем менять flow-control логику конвейера.
Мы покажем что valid/ready это не только механизм передачи данных от одной очереди к другой, но еще и метод для организации разного рода логического функционала между очередями.
Если до этого момента вы не сталкивались с протоколом valid/ready, то будете приятно удивлены как легким движением руки (а если точнее, написанием пары строк на верилоге) мы можем реализовывать разного рода функционал взяв за основу конвейер из двух FIFO.
В предыдущей статье мы познакомились с основами работы AXI-Stream протокола и модифицировали наш сумматор, чтобы он был совместим с этим интерфейсом. Также было отмечено, что из-за увеличения сложности сумматора встает проблема в его тестировании. Напрямую генерировать все возможные входные воздействия достаточно сложно из-за большого количества их различных вариантов. Еще утомительней каждый раз вручную просматривать временные диаграммы в поисках ошибок. Нам нужен другой подход, и именно это мы будем обсуждать в этой статье.
Несколько лет назад мне довелось посетить университет Харви-Мадд, в котором работали Дэвид Харрис и Сара Харрис, авторы известного учебника "Цифровая схемотехника и архитектура компьютера". Cлучайно зашел в комнату, в которой сидела группа студентов и лежало нечто, напоминающее торпеду. Выяснилось, что это подводный робот, а студенты работают над общением этого робота с рыбами с помощью сонара (так я перевел для себя "IVER AUV for Sonar Mapping and Fish-Robot Interaction Modeling Projects"), и даже получили пару грантов на полмиллиона долларов.
Но чтобы студенты могли сделать что-нибудь полезное в обработке сигнала от сонара, им нужно знать кучу математики из области, которая в Америке называется DSP, а в России - ЦОС, или Цифровая Обработка Сигналов. Потом, в своих поездках по России я выяснил, что российские студенты в ЦОС тоже не лыком шиты.
Интереса ради сделал несколько простеньких модулей (аля платки для встраиваемых систем), про которые и хочу рассказать и поделиться исходниками, вдруг кому пригодится. Да, эта статья не про ПЛИСовую тематику, а что бы её немного разбавить, хотя кого я обманываю, модули же с ПЛИСами.
Про каждый модуль писать отдельно не вижу смысла, поэтому будет статья - сборник, а чтобы добавить наукообразия в текст, буду комментировать особенности разводки, если таковые будут. И предлагаю начать от сложного к простому.
Вторая статья из цикла, посвященного проектированию с использованием стандартного интерфейса AXI-Stream, а также отладке и документации проектов.
В данной статье описывается способ создания минималистичного образа sd карты c debian arm64 на примере отладочной платы с zynq ultrascale zcu106. Данный способ можно использовать для создания загрузочных образов других устройств с соответствующими изменениями. Битстрим, ядро Linux и dts для удобства разработки размещаются отдельными файлами.
Также описан способ загрузки по сети ядра Linux, dts и корневой файловой системы debian, который позволит сократить время разработки и ресурс карты памяти.
Интереса ради сделал максимально простенький комплект модулей: приемники, передатчики и те и другие с разным набором плюшек, реализующих простой самобытный протокол связи с манчестерским кодированием для связи 2х и более ПЛИС.
Простое, нестандартное процессорное ядро с открытым кодом, которое может быть использовано для создания микроконтроллера в базисе ПЛИС, в том числе ПЛИС - ОП.
Данная серия статей является туториалом по установке линукса на плату KC705 с софт-процессорным ядром Микроблэйз.
В первой части я описываю процесс создания схемы платформы, на которую мы поставим систему, с описанием некоторых нюансов.
Во второй части я опишу процесс сборки образа линукса и тестирование его работоспособности на отладочной плате путём прошивания через usb.
В третей — расскажу о том, как прошить SPI флэшку на плате, чтобы система стартовала сразу при включении платы.
Буду рад любым советам, замечаниям и фидбэку в комментариях. Статью считаю полезной, т.к. в процессе столкнулся с достаточно большим количеством неочевидных вещей, настроек и решений, информацию о которых в интернете нашёл с трудом. Да и вообще, актуальных туториалов и статей, конкретно по этой отладочной плате в интернете ничтожно мало. Поехали!
ПЛИС-Культ привет FPGA хабрунити!
Очередной движ по программируемой логике состоится с конца ноября по вторую неделю декабря в Мск, СПб и Томске/Омске
Приглашаем всех разработчиков и мимопроходилов принять участие в очередной конференции FPGA-Systems 2023.2 и в создании контента для первого номера журнала полностью посвященного проектированию на ПЛИС.
В данном цикле статей будет представлен процесс разработки и тестирования RTLмодулей на языке Verilog. В качестве примера будет рассмотрен целочисленный
сумматор с AXI-Stream интерфейсами. Мы разберем некоторые приемы и паттерны,
часто используемые при проектировании цифровых устройств. Также мы покажем
типовую структуру тестового окружения для проверки RTL-модулей.
Описанное нами окружение будет состоять из отдельных компонентов, у каждого из
которых будет своя конкретная задача. При правильном подходе к разработке этих
компонентов их можно будет повторно использовать в других тестовых окружениях.
Прошли первые три занятия Школы Синтеза Цифровых Схем в 18 вузах России и Беларуси. На втором занятии пошла речь о D-триггерах и их описании в современном SystemVerilog, а не в стареющем Verilog-2001 и не в допотопном Verilog-95.
D-триггер - это минимальный элемент состояния, он хранит 1 бит информации в течении 1 такта. Именно он делает электронику "умной", позволяет повторять вычисления, ждать события, организовывать конвейеры вычислений внутри микропроцессора, графического процессора, сетевого роутера.
В своей предыдущей статье я написал, как произвести оцифровку звукового сигнала FPGA платой MCY316. В том проекте данные полученные из АЦП просто передавались в компьютер через последовательный порт. Уже на компьютере данные принимались из последовательного порта программой на питоне и отрисовывались в окне.
А сейчас я хочу модифицировать этот проект и добавить в FPGA еще цифровой фильтр, чтобы разобраться, как он работает.
Рисунок выше показывает схему моего эксперимента.
В эти выходные в Silicon Valley прошла парти на 400 человек под названием GPT-Party, из которых все 400 человек говорили по-русски (когда ведущий спросил кто не говорит, никто не поднял руку).
На парти выступали основатели ИИ компаний, русские венчурные капиталисты (Давыдов, Шойфот, Орешкин), украинские венчурные капиталисты (Сорока) , а также креаторы контента (Алекс Кролл). Креаторы говорили, что из-за ChatGPT всех инженеров выгонят с работы и останутся только бармены и креаторы контента.
Под конец самый богатый человек на парти, основатель ABBYY Давид Ян - посягнул на проблему сознания. В качестве показателя прогресса ИИ в этой области Давид приводил решение компьютером задачек, в которых нужно ставить себя на место других людей. Типа (это не задачка Яна, а мой аналог приведенных им задачек):
В 2023 году появилось много всего интересного, связанного с FPGA. Компании ставят рекорды, выпускают новые чипы и разрабатывают технологии, которых не было раньше. Сегодня обо всём этом и поговорим. Что же, самое интересное — под катом.