Обновить
32K+

FPGA *

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

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

Из обучения школьников цифре на макетке нужно выкинуть все резисторы и вставить микросхемы с FIFO

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

Раз уж я начал учить школьников как собирать на макетной плате цифровые схемы (в рамках подготовки демонстраций к мероприятию торговой палаты города Маунтин-Вью, Калифорния), то возникла необходимость написать для них инструкции. У меня тут же ожидаемо спросили, почему мне не подходят существующие инструкции от Make и других источников. Объясняю:

1. Все эти туториалы последние 55 лет переписывают друг от друга как использовать: 1) резисторы при светодиодах и 2) подтягивающие резисторы. У меня этого нет, потому что я использую LED толерантные к пяти вольтам, кнопки со встроенными подтягивающими резисторами, а также блок питания от USB которые генерит стабильные 5V вместо 9-вольтовой батарейки "Крона". То есть я удалил как кучу лишних резисторов на плате, так и необходимость объяснять законы Ома и Кирхгофа.

2. Эти туториалы часто описывают как строить генератор тактового сигнала из микросхемы 555, конденсатоов и резисторов. У меня этого нет, посколько я используют уже собранные генераторы тактового сигнала с AlExpress. Сборка такого блока самому не дает ничего полезного для обучения цифровому проектированию по направлении к микроархитектуре.

3. В мейкерских туториалах есть куча вещей, которые никогда не возникают в работе проектировщика современного чипа (JK-триггеры, SR-защелки), но нет того, что используется ежедневно (FIFO - микросхема CMOS 40105, приоритетный энкодер - CMOS 4532 итд).

Короче вот первые четыре страницы и фотки школьников с последней сессии:

Читать далее

Новости

Как шлёпанцы запоминают: глубокое понимание последовательных схем

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

Мы привыкли воспринимать триггеры и ячейки памяти как данность — удобные «чёрные ящики», которые просто работают. Интуитивно понятно, как выход комбинационной схемы зависит от её входа, но как именно схема, изначально лишенная памяти, вдруг обретает способность сохранять свое состояние?

В этой статье я объясню логическую суть последовательных схем и вместе препарируем работающую D-защёлку (D-latch) с нуля на уровне цифровой логики и булевой алгебры.

Читать далее

Обзор и схемотехническое ревью платы TZT RK-ZYNQ7020-F с FMC LPC разъемом

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

Я давно хотел купить плату с Zynq-7020, да такую, чтобы на ней был FMC LPC разъем на который, к примеру, можно было бы установить плату c AD9361 или множеством портов Ethernet, или еще какой-нибудь вариант. И на просторах китайского Aliexpress мне попалась одна такая - TZT RK-ZYNQ7020-F версии 1.1. Я не долго думая сразу ее прикупил и решил что это как раз то, что нужно. И в этой статье хотел бы поделиться своими впечатлениями и обзором того, что на этой плате любезно нам предоставил разработчик. Это будет обзор в несколько ином ключе, без пересказа schematic, а в виде подробного инженерного обзора по подсистемам. Сначала рассмотрим комплектацию, стоимость, затем архитектуру платы, ее внешний вид и что на ней есть. Потом заглянем в питание, reset, clocking и boot. Затем память: DDR3, QSPI, eMMC, microSD. Далее интерфейсы PS: UART, USB, Ethernet, I2C, интерфейсы PL и расширения: FMC, 40-pin, HDMI, MIPI, CAN, RS485, LCD. И в конце - общее впечатление, риски и выводы. Поехали!

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

Читать далее

Хроники занятий микросхемами с русскими школьниками не в замке во Франции, а в хакерском клубе в Калифорнии

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

Продолжаем хроники занятий со школьниками на Verilog Meetup в Hacker Dojo. Цель занятий - собрать за месяц несколько демонстраций и показать их на городском мероприятии Technology Showcase в Mountain View. Для тех кто не в курсе, Маунтин-Вью - это такой город, в котором я однажды увидел на улице Сергея Брина, выходящего из-за угла с озабоченным лицом.

Как я уже писал, на первое занятие, на которое я ожидал придет человека три - пришло двадцать, и их не было никакой возможности обслужить. На второе занятие пришло десять: трое русских мальчиков с предыдущего занятия, трое новых русских мальчиков и девочка, китайский мальчик и их родители. Также зашел соратник Виктор и один товарищ на пять минут посмотреть. Под конец зашел американец, который советуется со мной по поводу FPGA. Он раньше работал в NASA JPL в Пасадене и похвастался мне что снимки его трансляций с Марса до сих лежат на сайте Института космических исследований Российской академии наук.

В процессе дискуссии возникли три возможных проекта:

Читать далее

Проектируем с нуля калькулятор на FPGA. Часть 6: CPU

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

← Четвёртая и пятая части

Это самый длинный пост всей серии, потому что он посвящён главной части этого проекта — всё вращается вокруг CPU.

Почему бы просто не взять готовый CPU?

Кто-то может заявить: зачем заморачиваться проектированием собственного CPU? Есть куча маленьких хорошо задокументированных процессоров и дешёвых микроконтроллеров, способных исполнять прошивку калькулятора. Zilog Z80 не так сложно реализовать на FPGA, и я в этом уже убедился (проект A-Z80, находящийся у меня на GitHub). Подойдёт и 6502. Маленький встраиваемый RISC тоже прекрасно справится с этой работой.

Отвечу честно: это было бы не так интересно, потому что подобное уже много раз делали. Но есть и другие (более удобные для меня) причины.

Наш калькулятор построен на BCD (двоично-десятичном коде),в котором каждый десятичный разряд хранится в отдельном 4-битном полубайте (ниббле). Это правильный выбор для калькулятора, и он определяет всё дальнейшее. Z80 (и другие стандартные CPU) работает на уровне байтов. Для индексации регистра мантиссы из 16 нибблов с ориентированным на байты процессором пришлось бы постоянно жонглировать сдвигами, масками и двумя нибблами на байт. На каждом шаге режимы адресации вступают в конфликт со схемой данных.

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

Читать далее

Zynq 7000. Переносим I2C Master Controller. Работа над ошибками и утилиты userspace

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

В прошлой статье мы собрали готовый образ Linux и запустили I2C Master Controller который живет в ПЛИС и управляется драйвером предоставляющим в ОС доступ к нему как типовому I2C-контроллеру. В этой, заключительной части из общей серии статей, я хотел бы филигранно отшлифовать все мелкие недочеты и привести примеры утилит, которые могли бы отправлять нужные нам данные на I2C OLED-дисплей SSD1306, например температуру кристалла, время или что-нибудь еще. 

Всем кому интересна тема - го под кат! :)

Читать далее

Подключаем к ПЛИС оперативную память SDRAM

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

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

В общих чертах, необходимо провести инициализацию микросхемы (см. документацию на микросхему) и в дальнейшем подавать команды (это сигналы CS, RAS, CAS, WE). Повторюсь, почитайте литературу. Для тех кто совсем не в теме краткое резюме по работе с SDRAM.

Каждые 64 мс необходимо выполнить перезаряд строки памяти. Какой строки, решает сама микросхема, главное команду ей дать (плюс-минус не сильно позже указанного интервала). Так как команды выполняются значительно быстрее этого срока, то не страшно если пришло время регенерации, а выполняется команда. Можно подождать.

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

Читать далее

Загружаем bitstream из Linux через FPGA Manager на Zynq-7000

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

Добрый день!
В прошлой статье мы подготовили кастомную плату на Zynq-7000 для загрузки Linux: Buildroot, U-Boot SPL, device tree и минимальная rootfs уже работают. Но PL-часть при этом оставалась почти пустой.

На первых этапах bring-up это нормально: bitstream обычно шьют через JTAG или кладут в BOOT.BIN, чтобы FPGA конфигурировалась ещё до старта Linux. Но для реального проекта такой подход быстро становится неудобным: иногда нужно менять PL-логику уже после загрузки системы.

В этой статье разберём, как загрузить bitstream в Zynq-7000 из Linux через FPGA Manager, какие параметры ядра для этого нужны, и как завернуть загрузку в небольшую C++ утилиту.

Читать далее

Zynq 7000. Переносим I²C Master Controller.  Linux + buildroot + kernel driver

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

Теперь пора переносить проект под управление ОС Linux. В этой статье мы подробно вопросы разберем как пройти весь путь от FSBL до вывода системной консоли на OLED SSD1306. Для этого нам потребуется собрать все необходимые загрузочные артефакты: FSBL c отладкой для информативной загрузки, DTS, out-of-tree драйвер для I2C Controller, ядро и rootfs, соберем uImage, потом слепим BOOT.BIN и загрузим его на SD-карту.

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

Читать далее

Игровой автомат своими руками

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

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

Потому что купить готовую реплику — скучно. А вот переписать NES на ПЛИС, заставить работать монетоприемник, впаять SCART в телевизор, который его не поддерживает, и выпилить корпус из ДСП — это уже приключение.

Кому мало «купить готовое» — прошу под кат.

Читать далее

MLIR-to-RTL simulation flow: от linalg.matmul до systolic array

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

Привет! Хотел бы рассказать о своем MVP проекта hw-mlir-lab, где я использую MLIR для lowering операции умножения матриц (matmul) на systolic array, который я симулирую в Verilator.

Читать далее

Создаем I2C Master Controller на Verilog. Перенос на Zynq 7000 (bare‑metal)

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

После успешной отладки на плате с Cyclone IV пришла пора перенести наработки на плату Zynq Mini c XC7Z020. В этой статье я опишу, каким образом можно организовать вывод нужной нам информации из PS‑части Zynq на дисплей который подключен к EMIO на выводах PL. Сделаем обновленный модуль i2c_master_axi который добавляет сверху к уже разработанному ядру поддержку AXI4-Lite Slave, сделаем сборку проекта, подключим их к PS и проверим в bare‑metal сценарии. После того как это будет все работать — переходить к Linux уже будет гораздо проще.

Всем заинтересованным добро пожаловать под кат! 

Читать далее

Поднимаем Linux на плате Zynq RK-7020-F V1.1 c помощью Buildroot и U-Boot SPL

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

Не так давно у меня на руках появилась плата RK-ZYNQ7020-F REV 1.1.

В данной статье я хочу поделиться своим опытом, связанным с подготовкой buildroot для данной платы. Здесь мы разберем этапы от формирования xsa файла до запуска платы и первых логов, с объяснением что происходит в железе на каждом этапе.
Также в рамках этой статьи я не буду использовать FSBL, мы попробуем обойтись U-Boot SPL.

Итак, приступим к рассмотрению!

Описание отладочной платы

Базовый набор периферии на данной плате, заявленный в документации:

Читать далее

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

64 прямоугольника хватит всем

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

«Студент-программист реализовал на FPGA полноценную игровую приставку с нуля за полтора месяца, не имея опыта цифрового проектирования». Для меня самого это звучит как фантастика или реклама очередных онлайн-курсов, но я расскажу эту историю. Реальную историю моего пути — студента четвертого курса направления «Программная инженерия». Приставка «Брус-16», о которой недавно писали в блоге YADRO, работает на FPGA-платах уровня Tang Nano 9K, поддерживает ввод с джойстиков DualShock 2 и выводит изображение на обычный HDMI-монитор. Статья будет интересна студентам, новичкам в области аппаратного проектирования и всем тем, кто хочет увидеть, как работают игры для «Брус-16» в «железе».

Читать далее

Четыре простых шага до изделия: использование проектирования на основе моделей для программно-определяемых радиосистем 4

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

В предыдущих частях этой серии статей мы рассказали о платформе быстрого прототипирования Zynq SDR,1 представили этапы использования MATLAB и Simulink для разработки алгоритма, который может успешно обрабатывать и декодировать передачи ADS-B,2 а также показали, как проверить алгоритм как в симуляторе, так и с помощью реальных данных, полученных с платформы SDR.3 Конечная цель всех этапов — создать проверенную модель, которую можно преобразовать в код на языках C и HDL и интегрировать в программно-аппаратную инфраструктуру платформы SDR.

Читать далее

Четыре простых шага до изделия: использование проектирования на основе моделей для программно-определяемых радиосистем 3

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

После реализации любого алгоритма обработки сигналов в MATLAB или Simulink® следующим логичным шагом будет проверка работоспособности алгоритма на реальных данных, полученных от аппаратной программно-определяемой радиосистемы, на которой он будет работать. На первом этапе алгоритм проверяется на различных наборах входных данных, полученных от системы. Это помогает проверить работоспособность алгоритма, но не гарантирует, что он будет работать должным образом в условиях, отличных от тех, в которых были получены исходные данные, а также что его поведение и производительность будут такими же при различных настройках аналогового входного каскада и цифровых блоков программно-определяемой радиосистемы. Чтобы проверить все эти аспекты, очень полезно иметь возможность запускать алгоритм в режиме реального времени, получая на вход данные в режиме реального времени и настраивая программно-определяемую радиосистему для достижения оптимальной производительности. В этой части серии статей рассматриваются программные инструменты, предоставляемые компанией Analog Devices для обеспечения прямого взаимодействия моделей MATLAB и Simulink с платформами FMCOMMSx SDR. В ней показано, как эти инструменты можно использовать для проверки моделей ADS-B, представленных во второй части серии статей.2

Читать далее

Четыре простых шага до изделия: использование проектирования на основе моделей для программно-определяемых радиосистем 2

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

Беспроводные сигналы, которые можно обнаружить и расшифровать, окружают нас повсюду, и к ним легко получить доступ с помощью современного программно-определяемого радио (Software-Defined Radio, SDR), например, интегрированных радиочастотных приёмопередатчиков Analog Devices AD9361/AD9364.™1,2 Сигналы Automatic Dependent Surveillance Broadcast (ADS-B) с коммерческих самолётов — это легкодоступные беспроводные сигналы, и их можно использовать для демонстрации процесса быстрого прототипирования на основе AD9361, подключённого к программируемой однокристальной системе Xilinx® Zynq®-7000. Коммерческие воздушные суда используют передатчики ADS-B для передачи диспетчерам данных о своём местоположении, скорости, высоте и идентификационном номере воздушного судна.3 Формат полётных данных определён в спецификации Mode S Extended Squitter Международной организации гражданской авиации (ICAO).4 ADS-B внедряется по всему миру для модернизации систем управления воздушным движением и предотвращения столкновений. Она уже используется в Европе и постепенно внедряется в США.

Читать далее

Четыре простых шага до изделия: использование проектирования на основе моделей для программно-определяемых радиосистем 1

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

Между концепцией беспроводной системы и ее практическим воплощением существует значительный разрыв. Для преодоления этого разрыва обычно привлекаются команды инженеров с самыми разными навыками (радиочастотные технологии, программное обеспечение, цифровые сигнальные процессоры, HDL и встраиваемые системы на базе Linux®), и во многих случаях проекты срываются на ранних этапах разработки из-за сложности координации усилий различных проектных групп.

В этой статье, состоящей из четырех частей, мы рассмотрим достижения в области платформ и инструментов, которые позволяют разработчикам быстро моделировать и создавать прототипы беспроводных систем, а также прокладывать путь к их внедрению в производство. В качестве реального примера мы создадим прототип беспроводной программно-определяемой радиосистемы, которая принимает и декодирует сигналы автоматической зависимой системы наблюдения (ADS-B), чтобы определять и сообщать о местоположении, высоте и скорости коммерческих самолетов, пролетающих поблизости. Для этого нам понадобятся MATLAB® и Simulink, а также навыки интеграции аппаратного и программного обеспечения. Аппаратной платформой станет система прототипирования программно-определяемых радиосистем (SDR) от Analog Devices/Xilinx®.

Читать далее

Подключаем к ПЛИС клавиатуру PS/2 и ПК по интерфейсу RS232

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

Не большой пример для начинающих ПЛИСоводов, как подключить к ПЛИС (ALTERA Cyclon 4) клавиатуру с интерфейсом PS/2, а так же компьютер по интерфейсу RS232 (он же COM-порт).

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

Читать далее

QPSK HDL приёмопередатчик

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

В этой статье описано, как создать QPSK передатчик и приёмник на HDL языке, интегрировать их в ПЛИС и передать данные через радиоканал. В одной из прошлых статей было рассказано, что нужно чтобы инициализировать ad9361 на PlutoSDR. Эта статья может считаться продолжением работы, которая была начата в той статье. Для создания HDL реализации QPSK приёмопередатчика использованы Matlab и Simulink c их возможностями генерации HDL кода из моделей. В качестве моделей использованы примеры, которые предоставляются с дополнительными пакетами, разработанные специально для демонстрации возможностей генерации HDL кода. Запустим этот код на плате из прошлой статьи, а также и на новой плате — ещё одном клоне PlutoSDR с более ресурсоёмкой ПЛИС Z7020. И посмотрим на график созвездия.

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