Pull to refresh
1
Андрей Зимаков@somebyte

Embedded Systems Programmer

7
Subscribers
Send message

SPI-контроллер на FPGA: от идеи до сигналов на осциллографе

Level of difficultyMedium
Reading time142 min
Reach and readers12K

Откройте любой учебный материал по FPGA. С вероятностью девяносто процентов он закончится мигающим светодиодом, бегущей строкой на семисегментнике или, в лучшем случае, генератором VGA-сигнала с цветными полосами. Это нормальные учебные задачи, но у них есть общее свойство, о котором редко говорят вслух: они работают сразу или не работают совсем. Прошили — мигает. Не мигает — перепроверили три строчки кода, нашли опечатку, мигает.

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

Эта статья - следующий шаг в моем обучении и попытка показать полный путь: от фразы "нам нужен SPI-контроллер" до момента, когда логический анализатор показывает красивые пачки импульсов на ножках кристалла. Здесь будут не только архитектурные решения и листинги, но и все ошибки, которые были сделаны по дороге: testbench, который врал, потому что master и slave-модель содержали один и тот же баг; гонка на один такт, из-за которой тест прерываний падал при исправном железе; и финальный детектив — прошивка, в которой SPI-сигналы честно генерировались... на других ножках, потому что файл назначения пинов на диске оказался не тем, который мы правили. Каждая такая история — это методика: симптом, гипотеза, эксперимент, причина, фикс.

Читать далее

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

Reading time9 min
Reach and readers62K

Предисловие


Прочитав много увлекательных статей об интересных разработках под FPGA, таких как тетрис, радиопередатчик и другие, я тоже загорелся идеей сделать что-нибудь для души. Для этой цели мной была приобретена камера OV7670 и отладочная плата DE-1 фирмы Terasic с чипом Cyclone II фирмы Altera. Задачу поставил следующую: вывести изображение с камеры на VGA монитор. Для того, чтобы оправдать использование FPGA, я собираюсь сделать это на максимальной для камеры скорости. Должен отметить, что легче понять эту работу помогут знания в области электроники: знания интерфейсов VGA и I2C, представление о SDRAM памяти и т.п.
Читать дальше →

Представлен процессор 486SX-20 на плате ПЛИС размером с кредитную карту

Reading time2 min
Reach and readers20K

Разработчик опубликовал проект 486Tang — процессора 486SX-20 на плате ПЛИС, размер которой не больше кредитной карты.

Читать далее

Ретро-компьютер уровня «Радио-86РК» с RISC-V процессором на плате OMDAZZ

Level of difficultyEasy
Reading time7 min
Reach and readers13K

Статья про то, как из недорогой отладочной платы OMDAZZ c ПЛИС  CycloneIV EP4CE6 получить ретро-компьютер с монитором, клавиатурой и тетрисом, но с современным процессором на базе RSIC-V и компилятором GCC.

Как же это сделать

Насколько быстр Intel 8080? Используем чипсет на FPGA чтоб проверить

Level of difficultyMedium
Reading time14 min
Reach and readers19K

Я люблю вызовы - например, написать код в условиях ограниченных ресурсов: медленный процессор, странный набор инструкций, крохи памяти. У меня уже было несколько проектов такого рода - я запускал тяжелую вычислительную задачу на процессорах, которые уже разменяли пол-века: Intel 4004, Intel 4040 и Intel 8008. Очевидно, что на очереди Intel 8080!

В этой статье я опишу детали проекта по созданию системной платы с чипсетом на основе FPGA, на которой будет запущен Intel 8080A-1 на частоте выше 3Мгц. А также расскажу о том, как писать программы для этого процессора на C, и в финале покажу результаты бенчмарков - Dhrystone и CoreMark.

Читать далее

Простой программатор для атмеловских 8051

Reading time7 min
Reach and readers8.6K

В этой заметке речь больше про принцип — программатор можно сделать так, чтобы на стороне компьютера не требовался дополнительный софт. Будем прямо лить HEX‑файл в последовательный порт. Идея не новая, но не лишне напомнить (в том числе об одном‑двух подводных камнях рассказать).

Собственно программатор — голый Arduino с прошивкой, разбирающей HEX‑файл построчно и реализующий программирование целевого чипа по SPI. Прошивка и инструкции сложены в репозитории на гитхабе: At89s‑prog.

Конкретные чипы (At89s...) здесь скорее для примера. Мы не будем воспевать достоинства 8051-й архитектуры (конечно, они архаичны но у них есть плюсы, благодаря которым они до сих пор сохраняют популярность). У меня в какой‑то момент оказалась их горстка а программатора под рукой не нашлось. Они (те что с индексом S) программируются через SPI, а не стандартным «многоногим» интерфейсом что делает удобным их применение в любительских поделках.

Читать далее

Обратная разработка XC2064 — первой микросхемы FPGA

Reading time17 min
Reach and readers15K
Программируемая Логическая Интегральная Схема (ПЛИС) может реализовать произвольную логику, что угодно, от микропроцессора до генератора видеосигнала или майнера криптовалюты. ПЛИС состоит из множества логических блоков, каждый из которых обычно состоит из триггера и логической функции, а также из сети проводников, соединяющей логические блоки. Что делает ПЛИС особенной, это то, что она является программируемым аппаратным обеспечением, вы можете сконфигурировать каждый логический блок и соединения между ними. В результате вы можете построить сложную цифровую схему без физического соединения каждого логического элемента и триггера, что обошлось бы вам в стоимость разработки заказной интегральной схемы.


Фотография показывает один из 64 блоков микросхемы XC2064. Слои металлизации убраны, мы видим кремний и поликремниевые транзисторы, лежащие под металлизацией. По ссылке вы можете увидеть фото в большем масштабе: siliconpr0n.
Читать дальше →

Как установить GOWIN EDA для запуска примеров Школы Синтеза

Level of difficultyMedium
Reading time4 min
Reach and readers18K

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

Чтобы справиться с данной проблемой, группа энтузиастов, под руководством Юрия Панчула, добавила поддержку множества плат и нескольких toolchain’ов от различных производителей FPGA.

В данном туториале, посвященном работе с FPGA от компании Gowin, я расскажу про то, как установить GOWIN EDA, о доступных платах и перефирии к ним и про работу со скриптами сборки примеров.

Читать далее

Программирование FPGA Gowin с использованием свободных инструментов

Level of difficultyMedium
Reading time4 min
Reach and readers8.3K

Краткая инструкция, о том, как запрограммировать чип FPGA Gowin с использованием только свободных программных инструментов и комплекта Sipeed Tang Primer 20K Dock.

Читать далее

Низкоуровневое программирование под 8086 для любопытных, часть 2

Level of difficultyMedium
Reading time15 min
Reach and readers18K

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

Читать далее

Низкоуровневое программирование под 8086 для любопытных, часть 1

Level of difficultyMedium
Reading time27 min
Reach and readers23K

Вторая часть уже здесь.

В первой части мы:

• посмотрим, как работать с памятью и регистрами 8086

• узнаем, как написать простую программу на ассемблере прямо в отладчике

• изучим работу механизма прерываний и сделаем демонстрационный пример

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

Примеры в бинарном виде доступны по ссылке

Читать далее

Допустимые и недопустимые контакты металлов. Популярные метрические и дюймовые резьбы

Reading time8 min
Reach and readers214K
Электронику часто называют наукой о контактах. Многие знают, что нельзя скручивать между собой медный и алюминиевый провода. Медная шина заземления или латунная стойка для платы плохо сочетаются с оцинкованными винтиками, купленными в ближайшем строительном супермаркете. Почему? Коррозия может уничтожить электрический контакт, и прибор перестанет работать. Если это защитное заземление корпуса, то прибор продолжит работу, но будет небезопасен. Голая алюминиевая деталь вообще может постепенно превратиться в прах, если к ней приложить даже низковольтное напряжение.

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

В советских ГОСТах было написано почти всё о допустимых контактах металлов, но если изучение чёрно-белых таблиц из 1000 ячеек мелким шрифтом утомляет, то правильный ответ на «медный» вопрос — нержавейка, либо никелированная сталь, из которой, кстати, и сделан почти весь «компьютерный» крепёж. В эпоху чёрно-белого телевидения были другие понятия об удобстве интерфейса, поэтому для уважаемых читателей (и для себя заодно) автор приготовил цветную шпаргалку.

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

7 производителей печатных плат вместо JLCPCB. Где можно заказать платы в 2023 году

Level of difficultyEasy
Reading time6 min
Reach and readers152K

Привет, Хабр! Я – Дима, в компании отвечаю за закупку компонентов. Долгове время у нас было два поставщика печатных плат. Один из них вышеупомянутый JLCPCB. После того, как он ушел из России, пришла проблема откуда не ждали – второй поставщик начал подводить по срокам и отгружать откровенный брак. 

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

Для удобства в конце привожу сводную таблицу с кратким описанием преимуществ и недостатков производителей.

Читать далее

Трассировка печатной платы в KiCAD

Reading time8 min
Reach and readers139K


Введение



Одним из критических замечаний к предыдущей статье было следующее: дескать фу таким быть, стрелять из пушки по воробьям да ещё проприетарным софтом за 10000$, к тому же наверняка украденным с торрентов. Оставляя за кадром моральную сторону вопроса, а так же презумпцию невиновности, обратимся к следующему вопросу — а что там у нас имеется в Open Source секторе, пригодное для решения задач проектирования электронной техники. В частности изготовления печатных плат. Наиболее достойной, на мой взгляд, оказалась кроссплатформенная программа KiCAD, распространяемая по лицензии GNU GPL. Имеются версии для Linux, Windows и macOS.

Рассмотрим этот инструмент подробнее применительно к уже решенной мною задаче — трассировке печатной платы для преобразователя уровней на базе MAX232.

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

Первые впечатления от 1921вг015, отечественного RISC-V контроллера

Reading time10 min
Reach and readers116K

рис.1


Недавно мне в руки противоестественными путями попал интересный представитель RISC-V контроллеров производства НИИЭТ. Упакован он в пластиковый lqfp100 корпус, в котором скрывается ядро на 50 МГц, мегабайт флеш-памяти и 256 кБ оперативки. Разумеется, в наличии и стандартная периферия вроде UART-ов, SPI и USB. А вот из необычного — сигма-дельта АЦП на 16 бит. Ну и всякая неинтересная периферия вроде аппаратных модулей шифрования. Сразу оговорюсь, что тыкаю палочкой я его меньше двух недель, поэтому здесь описаны именно первые впечатления.

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

Путеводитель по китайской микроэлектронике: Loongson, Feiteng, Kunpeng, Zhaoxin, Hygon, Sunway

Level of difficultyEasy
Reading time14 min
Reach and readers12K

Китайская индустрия создания CPU уникальна, причем, не только за счет национального калорита, но огромного многообразия производителей, каждый из которых предлагает уникальные технологические решения. Мы насчитали целых 8 производителей и выделили их уникальные архитектуры, такие как LoongArch LA464 от Loongson, FTC от Feiteng, CN86 от Zhaoxin, а также ряд других других интересных платформ и технологий, о которых вам определенно хотелось бы узнать. В этом путеводителе по китайской полупроводниковой индустрии мы рассказали о всех наиболее интересных и перспективных китайских чипмейкерах, а также об их передовых центральных процессорах.

Читать далее

Работа с RISC-V контроллерами на примере GD32VF103 и CH32V303. Часть 3: прерывания

Reading time19 min
Reach and readers9.9K

Макетная плата GD32VF103


Часть 1. Введение


Часть 2. Память и UART


Часть 3. Прерывания


Часть 4. Си и таймеры


Часть 5. DMA


Как уже неоднократно говорилось, специфика микроконтроллеров заключается в их скорости реакции на внешние события и большом разнообразии подключаемой периферии, но при этом не слишком большой вычислительной мощности. Чтобы повысить скорость реакции, можно чаще проверять биты статуса, но это существенно усложнит написание программ и замедлит выполнение. А начиная с некоторого количества периферии, вообще наступит физический предел: на опрос всех битов уйдет больше времени, чем допустимо в устройстве. Чтобы это обойти, для проверки битов придумали использовать не программный код, а аппаратный модуль — контроллер прерываний. Его задача заключается в том, чтобы отловить факт возникновения события, удостовериться, что данное событие разработчику интересно и что контроллер в данный момент готов его обрабатывать. После этого выполнение основного кода приостанавливается (прерывается), а управление передается на специальную подпрограмму — обработчик прерывания. Именно этот механизм мы сегодня и рассмотрим.

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

СH32V307 и о переходе на QingKeV4 от WCH. Контроллер прерываний PFIC

Level of difficultyEasy
Reading time5 min
Reach and readers3.4K

В продолжении своего предыдущего поста, хочу рассказать о своем переходе на WCH и RISC-V. Поскольку QingKeV4 существует аж в 5-и версиях, то SDK ко всему этому великолепию содержит рудименты и нестыковки. Возможно, кому-то мой опыт сэкономит время и нервы. Начнем с прерываний

Читать далее

Практический опыт реверс-инжиниринга печатной платы: зачем, как и когда это нужно?

Level of difficultyEasy
Reading time8 min
Reach and readers18K

Привет, Хабр! Меня зовут Андрей, и я работаю разработчиком программно-аппаратных решений в компании FPLUS, которая занимается выпуском электроники для корпоративного и государственного сектора. По сути моя статья дает старт публикациям в недавно запущенном блоге FPLUS, где я и мои коллеги будем делиться опытом о своей работе и новых проектах, создающихся в партнёрстве с НТЦ «Модуль» и другими игроками на рынке. В этом первом материале я решил поговорить об импортозамещении – явлении, ставшем в последние годы довольно актуальным, — и расскажу о собственных наработках в этом направлении.

Реалии нашего времени требуют активно использовать в производстве опыт, полученный при изучении импортных узлов и деталей – то, что называют обратным проектированием или реверс-инжинирингом. Почему-то эти понятия считаются чем-то модным и суперсовременным, однако такой подход к решению внезапно и остро встающих технических вопросов применяется уже довольно давно. Например, в 60-х годах прошлого века на основе швейцарского оригинала компании Gebrüder Sulzer Aktiengesellschaft советскими специалистами был создан бесчелночный ткацкий станок СТБ, а в самом начале 90-х годов в массовом порядке стихийно импортозамещались детали оборудования, ввезённого из стран, ранее входивших в Совет экономической взаимопомощи (СЭВ).

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

Читать далее

C++20 в bare-metal программировании, работа с регистрами микроконтроллеров Cortex-M

Level of difficultyMedium
Reading time43 min
Reach and readers27K

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

Статья предполагает, что читатель имеет базовые знания программирования bare-metal систем и языка С++, в том числе и современных стандартов. Это означает, что совсем базовые пояснения выходят за рамки этой статьи.

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Инженер встраиваемых систем, Разработчик приложений
Средний
Git
Linux
C++
Qt
C
Программирование микроконтроллеров
Embedded linux
Системное программирование