Обновить
49.22

FPGA *

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

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

Реверс-инжиниринг лазерного датчика расстояния

Время на прочтение11 мин
Охват и читатели43K
image
Однажды ко мне попал нерабочий лазерный датчик расстояния Keyence LK-G407. Мало того, что он был нерабочий, так его еще и нельзя было использовать без специального управляющего блока. Но ведь у датчика такие интересные характеристики: измерение расстояния с точностью до единиц микрон, и скорость работы — 50 килоизмерений/с. Так что, чтобы запустить его, придется заметно поковыряться в самом датчике, заодно и ценный опыт получить.
Читать дальше →

Обзор отладочной платы ALINX AXU15EGB

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели5.4K
Давненько ко мне в руки не попадалось ничего интересного, но ситуация поменялась 🙂. Попутным ветром принесло тут платку, и я решил, мол, а почему бы мне не сделать на неё небольшой обзорчик? Итак, отладочная плата с Zynq MPSoC от небезызвестной компании Alinx, которая торгует всяким интересным на Aliexpress.

Давайте посмотрим вместе, что есть на этой плате и какие возможности предоставляет разработчикам данный отладочный набор.

Кому интересно – добро пожаловать под кат!



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

ASIC и FPGA: сорок лет эволюции

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

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

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

Читать далее

Разглядывая JTAG: идентификация

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

Каждый электронщик, работающий (или отдыхающий) с цифровыми микросхемами рано или поздно обязательно сталкивается с протоколом JTAG. Значительное количество материалов о данном протоколе содержит три раздела:
1) Обширный экскурс в историю и рассказ о том, как стенд с летающими щупами и рентгеновская установка легко могут быть заменены отладчиком на 2-3 порядка дешевле их.
2) Достаточно сжатое описание протокола JTAG (с картинкой его конечного автомата).
3) Рассказ о том, что фирменный отладчик, а также программное обеспечение компании <COMPANY NAME> позволят почти без усилий протестировать почти любое устройство почти любой сложности и конфигурации.

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

Идентифицировать микросхему

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

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


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


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

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

Scala/Chisel против SystemVerilog: генерируем сложные цифровые схемы

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

В наши дни общепризнанный стандарт для RTL-описаний — это язык SystemVerilog, но популярность сейчас набирает его альтернатива, Chisel. Далее я расскажу подробней об этом языке, его преимуществах, недостатках и рисках, связанных с переходом на Chisel со стандартного стека. Отдельно остановлюсь на функциональном программировании — возможности Chisel, которой нет в SystemVerilog, — и на дополнительных возможностях Chisel, улучшающих механизм переиспользования модулей. А также о том, почему код на Chisel менее подвержен ошибкам и всегда работает. Ну, почти всегда.

Читать далее

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

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


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

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

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

Реализация целочисленного БПФ на ПЛИС

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

Однажды меня спросили заказчики, нет ли у меня в проектах целочисленного БПФ, на что я всегда отвечал, что это уже сделано другими в виде готовых, хоть и кривых, но бесплатных IP-ядер (Altera / Xilinx) – берите и пользуйтесь. Однако, эти ядра не оптимальны, обладают набором «особенностей» и требуют дальнейшей доработки. В связи с чем, уйдя в очередной плановый отпуск, который не хотелось провести бездарно, я занялся реализацией конфигурируемого ядра целочисленного БПФ.


КДПВ (процесс отдладки ошибки переполнения данных)

В статье я хочу рассказать, какими способами и средствами реализуются математические операции при вычислении быстрого преобразования Фурье в целочисленном формате на современных кристаллах ПЛИС. Основу любого БПФ представляет узел, который носит название «бабочка». В бабочке реализуются математические действия – сложение, умножение и вычитание. Именно о реализации «бабочки» и её законченных узлов будет идти рассказ в первую очередь. За основу взяты современные семейства ПЛИС фирмы Xilinx – это серия Ultrascale и Ultrascale+, а также затрагиваются старшие серии 6- (Virtex) и 7- (Artix, Kintex, Virtex). Более старшие серии в современных проектах – не представляют интереса в 2018 году. Цель статьи – раскрыть особенности реализации кастомных ядер цифровой обработки сигналов на примере БПФ.
Читать дальше →

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

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




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

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

Сделай шаг к ПЛИС

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


Ты ждал знак? Вот он!

Много лет я не решался начать программировать ПЛИС, потому что это сложно, дорого и больно (как мне казалось). Но хорошо, когда есть друзья, которые помогают сделать первый шаг. И теперь я не понимаю одного — ПОЧЕМУ Я ЖДАЛ ТАК ДОЛГО?

Сейчас я помогу сделать первый шаг и тебе!

Я готов!

Генерация видео математической функцией на ПЛИС

Время на прочтение7 мин
Охват и читатели47K
Здравствуйте!
В этой статье я хочу рассказать о своём опыте изучения разработки на ПЛИС и познакомить со своим проектом — генератором видео по формуле.



Цель поста


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

Цель работы


Направить вычислительную мощь ПЛИС на нужды генеративного искусства: порождать в реальном времени потоковое видео по сложной формуле в высоком разрешении, с высоким фрейм-рейтом. В качестве фронтэнда выбран IBNIZ, — язык описания формул для генерации демо, разработанный камрадом viznut в качестве виртуальной платформы для демосцены. Ранее я реализовывал на ПЛИС, на платформе "Марсоход", другую его находку.
Читать дальше →

In RISC-V Rust

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

Превращаем простой пример распознавания нот из лабораторных работ Школы синтеза цифровых схем в Enterprise. Используем компилятор Rust для RISC-V микроконтроллера YRV-Plus.

Читать далее

Кто жмёт лучше, или Уолш против Фурье

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

Для начала хочу поблагодарить автора статей «Декодирование JPEG для чайников» и «Изобретаем JPEG», которые очень помогли мне в работе по написанию данной публикации. Когда я занялся вопросами изучения алгоритмов сжатия изображений с потерями, то в части алгоритма JPEG меня всё время мучил вопрос: «Почему роль базисного преобразования в алгоритме JPEG отведена именно частному случаю преобразования Фурье?». Здесь автор даёт ответ на этот вопрос, но я решил подойти к нему не с точки зрения теории, математических моделей или программной реализации, а с точки зрения схемотехники.

Алгоритм сжатия изображений JPEG является алгоритмом цифровой обработки сигналов, которые, аппаратно, как правило, реализуются либо на цифровых сигнальных процессорах, либо на программируемых логических интегральных схемах. В моём случае, выбор для работы цифрового сигнального процессора означал бы приход к тому, от чего я пытался уйти — к программной реализации, поэтому решено было остановиться на программируемой логике.
Читать дальше →

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

Сдвиговый регистр или то, о чём не расскажут в статьях для начинающих :: атрибуты синтеза

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

Сдвиговыйрегистр — это одна из наиболее часто применяемых конструкций в проектах на ПЛИС. Сегодня мы уделим внимание тому, как можно и нужно писать VHDL и Verilog код для сдвиговых регистров, но при этом, чтобы синтезатор понял, что мы хотим реализовать сдвиговый регистр из нескольких триггеров или же задействовать для его реализации специальные ресурсы, такие как SRL регистры.

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

read_enable: in std_logic;

Практическое применение сервера с FPGA

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

В данной статье будет рассказано о попытке ускорить операции над разреженными булевыми матрицами, реализованные на OpenCL, с помощью замены целевой платформы GPGPU на FPGA.

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

Объем таких данных неуклонно растет и потому для получения хорошей производительности в задачах анализа графов все острее встает вопрос о разработке параллельных алгоритмов, что оказывается нетривиальной задачей из-за нерегулярности данных.
Читать дальше →

River Raid на FPGA

Время на прочтение4 мин
Охват и читатели15K
Еще не делали River Raid на FPGA? Ок, тогда я сделаю.


Совсем недавно FPGA для меня был черным ящиком, а Verilog казался вообще магией — ну как можно написать программу, по которой построится схема на логических элементах? Изучить это я планировал давно, но без реальной железки даже не хотел начинать.

SoC: пишем реализацию framebuffer для контроллера в FPGA

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


Приветствую!

В прошлый раз мы остановились на том, что подняли DMA в FPGA.
Сегодня мы реализуем в FPGA примитивный LCD-контроллер и напишем драйвер фреймбуфера для работы с этим контроллером.

Вы ещё раз убедитесь, что разработка под FPGA и написание драйверов под Linux дело очень простое, но интересное.

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

Добро пожаловать

Процессор на коленке ч.6. Классический 5-этапный конвейер

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

Готовим процессор к добавлению суперскалярности - переделываем 3-х этапный конвейер RISC-V в 5-этапный и попутно измеряем производительность.

Читать далее

Процессор на коленке ч.3. Алгоритм быстрого деления

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


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

Дэвид Харрис, автор «Цифровой схемотехники и архитектуры компьютера», ответил на вопросы про его следущую книгу и вообще

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

Встретился на ланч с Дэвидом Харрисом, автором (вместе с Сарой Харрис) популярного учебника «Цифровая Схемотехника и Архитектура Компьютера», который за последние 10 лет помог закрыть монументальную дыру в техническом образовании десятков вузов России и Украины. До этого учебника во многих вузах сразу после триггеров шло программирование микроконтроллеров, то есть раньше у многих студентов вообще не возникала база для проектирования современных чипов по маршруту RTL‑to‑GDSII, технологии, которая за последние 30 лет привела нас к смартфонам, быстрому интернету и ускорителям ИИ.

Учебник Дэвида активно используется на Школе Синтеза Цифровых Схем, которую поддерживают 24 российских и 1 белорусский университет. Регистрация на новый сезон Школы только что открылась.

Читать далее