Pull to refresh
75
0.1
Дмитрий Самсонов @Sdima1357

image processing

Send message

Разработка цифровой аппаратуры нетрадиционным методом: Yosys, SpinalHDL, VexRiscv (ч.1)

Level of difficulty Hard
Reading time 127 min
Views 4.7K

Основная прелесть использования ПЛИС, на мой взгляд, состоит в том, что разработка аппаратуры превращается в программирование со всеми его свойствами: написание и отладка кода как текста на специализированных языках описания аппаратуры (HDL); код распространяется в виде параметризованных модулей (IP-блоков), что позволяет его легко переиспользовать в других проектах; распределенная разработка обширным коллективом разработчиков с системой контроля версий, такой же, как у программистов (Git); и, как и в программировании, ничтожно низкая стоимость ошибки.

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

В этой статье я хочу поделиться своим небольшим опытом «программирования» микросхем ПЛИС и тем, как я постепенно погружался в тему ПЛИСоводства. Изначально я собирался написать небольшую заметку про открытый тулчейн для синтеза Yosys. Потом — про язык SpinalHDL и синтезируемое микропроцессорное ядро VexRiscv, на нём написанное. Потом — про замену микроконтроллеров микросхемами ПЛИС на примере моей отладочной платы «Карно». Но в процессе я погрузился в историю появления Hardware Description Languages (HDL), и когда я начал писать, Остапа, как это часто бывает, понесло... В общем, получилось то, что получилось.

А еще эту статью можно рассматривать как глубокое погружение в то, что происходит вот на этом новогоднем видео.

Погрузиться сполна
Total votes 46: ↑45 and ↓1 +44
Comments 30

Выявление ошибок в работе с памятью в C и C++: Сравниваем Sanitizers и Valgrind

Reading time 24 min
Views 4.2K

В этой статье вашему вниманию представлено сравнение двух инструментов для поиска ошибок в работе с памятью в программах, написанных на memory-unsafe (небезопасных при работе с памятью) языках — Sanitizers и Valgrind. Эти два инструмента работают совершенно по-разному. Поэтому, хоть Sanitizers (разработанный инженерами Google) имеет ряд преимуществ перед Valgrind, у каждого из них есть свои сильные и слабые стороны. Следует сразу отметить, что проект Sanitizers имеет название во множественном числе, потому что он состоит из нескольких инструментов, которые мы рассмотрим в этой статье в совокупности.

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 2

115 лет прогресса: от механического осциллографа до самодельного цифрового

Level of difficulty Easy
Reading time 9 min
Views 11K


Привет, Хабр! Вы ещё не собирали осциллограф DSO138? — Если нет, то вам можно позавидовать: впереди увлекательный проект со множеством перспектив. Если да, то почему бы не усовершенствовать уже собранный или собрать ещё один.

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

А начнём мы с истории осциллографов, и она гораздо интереснее, чем можно представить.
Читать дальше →
Total votes 62: ↑60 and ↓2 +58
Comments 27

Управление обратным маятником в MATLAB Simulink без формул. Настройка PID регуляторов

Level of difficulty Easy
Reading time 2 min
Views 1.6K

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

Объект управления (Plant)

Модель перевернутого маятника соберем в библиотеке Multibody. Для этого нам не понадобится знание физики и математики. Библиотека Multibody предоставляет нам готовые блоки степеней свободы, твердых тел, преобразований координат, которые нужно только верно соединить. Собираем подсистемы отдельно для маятника и отдельно для тележки, и собираем все вместе. Результат на рисунке, модель в прикрепленных файлах.

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 0

Полезен ли сегодня быстрый обратный квадратный корень из Quake III?

Reading time 23 min
Views 70K

В 2005 году id Software опубликовала под лицензией GPL-2 исходный код своей игры 1999 года Quake III Arena. В файле code/game/q_math.c есть функция для вычисления обратного квадратного корня числа, которая на первый взгляд выглядит очень любопытным алгоритмом:

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;                       // зловещий хакинг чисел с плавающей запятой на уровне битов
    i  = 0x5f3759df - ( i >> 1 );               // какого чёрта?
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );   // первая итерация
//  y  = y * ( threehalfs - ( x2 * y * y ) );   // вторая итерация, можно удалить

    return y;
}

Об этом алгоритме написано множество статей, и ему посвящена хорошая страница Википедии, где он назван fast inverse square root (быстрым обратным квадратным корнем). На самом деле, этот алгоритм упоминался на различных форумах ещё до публикации исходного кода Q3. Ryszard из Beyond3D провёл в 2004-2005 годах исследование и в конечном итоге выяснил, что первоначальным автором алгоритма был Грег Уолш из Ardent Computer, который создал его десятью годами ранее.
Читать дальше →
Total votes 196: ↑194 and ↓2 +192
Comments 52

Самое понятное объяснение Специальной теории относительности

Level of difficulty Medium
Reading time 13 min
Views 89K

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

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

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

Для иллюстраций я написал интерактивный визуализатор СТО, работающий в браузере. Ссылка на него и исходники проекта в конце статьи.

Читать далее
Total votes 378: ↑378 and ↓0 +378
Comments 387

SDR приемник GPS на микроконтроллере

Level of difficulty Medium
Reading time 28 min
Views 18K

В этой статье я расскажу о том, как я делал самодельный SDR GPS приемник на микроконтроллере. SDR в данном случае означает, что приемник не содержит готовых GPS-модулей или специализированных микросхем для обработки GPS сигналов - вся обработка "сырых" данных выполняется в реальном времени на микроконтроллере (STM32 или ESP32).
Зачем я это сделал — просто Just for fun, плюс - получение опыта.

Читать далее
Total votes 162: ↑161 and ↓1 +160
Comments 160

Поделка в стиле 2000-х — блютус-колонка с пультом, MP3, ЧМ-радио и эффектами

Level of difficulty Easy
Reading time 8 min
Views 9.6K


Привет, Хабр! Какие подводные камни таит в себе копеечный китайский модуль с этой фотографии, и как их преодолеть? Как сделать усилитель дешёвых компьютерных колонок менее чувствительным к помехам по питанию?

Как устроен расширитель стереобазы, он же «Surround sound» или «трёхмерный звук»? Как заставить маленькую моноблочную стереосистему звучать ещё объёмнее при помощи цифровых линий задержки?

Обо всём этом расскажет мой маленький проект, начавшийся десять лет назад и не законченный до сих пор.
Поделка работает и звучит, но я продолжаю её совершенствовать.
Total votes 56: ↑55 and ↓1 +54
Comments 7

Фантомное питание для микрофона

Level of difficulty Medium
Reading time 8 min
Views 6.6K


Привет, Хабр! Большинство распространённых аудиоинтерфейсов имеют всего два входных канала, которые обычно используются как левая и правая половина стереосигнала или два канала моно. Например, для микрофона и гитары.

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

В свою очередь, микшеру необходим микрофонный предусилитель с балансным входом, фантомным питанием и фильтром верхних частот, отсекающим низкочастотные шумы, прежде всего, от вентиляторов. Именно такое устройство мы сегодня изучим и соберём.
Заодно узнаем, какие бывают микрофоны
Total votes 44: ↑43 and ↓1 +42
Comments 12

Ноутбук Toshiba T1100Plus год 1986

Reading time 2 min
Views 3.5K

Хотел выкинуть этот Т1100Plus но машинка показала удивительную волю к жизни - пришлось восстанавливать. Или история "источника вдохновения" для первого советского ноутбука Электроника МС1504

Читать далее
Total votes 20: ↑20 and ↓0 +20
Comments 21

Цифровая музыка на микрокомпьютерах (часть 2/2)

Level of difficulty Easy
Reading time 31 min
Views 6.2K

В первой части статьи мы узнали про существование такого явления, как цифровая музыка, то есть состоящая из оцифрованных кусочков звучания реальных инструментов, на маломощных 8-битных микрокомпьютерах 1980-х годов, а затем углубились в детали этой истории в рамках горячо любимой на постсоветском пространстве платформы ZX Spectrum в реалиях 1990-х годов.

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

Настало время где-то узнать, а где-то вспомнить об этом поподробнее, а заодно и послушать побольше музыкальных примеров. И начнём мы не с зарубежной, а с другой, близкой многим местным компьютерным энтузиастам платформы.
Читать дальше →
Total votes 84: ↑83 and ↓1 +82
Comments 51

Примеры ассемблерного кода для ZX Spectrum

Reading time 6 min
Views 20K

Я не буду делать длинное вступление. Один знакомый хакер однажды сказал, что 10 строк кода могут быть понятнее и интереснее, чем 1000 слов объяснений. Все эти примеры написаны на ассемблере для архитектуры Z80 и запускаются на ретро-компьютере ZX Spectrum 48k.

Что внутри?
Total votes 48: ↑48 and ↓0 +48
Comments 29

Классификация облака точек с ограниченными данными: воксели и сиамские сети

Level of difficulty Medium
Reading time 8 min
Views 2K

После первого поста на Хабре моя карьера сделала неожиданный поворот, и я оказался перед непростой задачей классификации, которая потребовала от меня изучения новых для себя архитектур и подходов. В этой статье я поделюсь опытом решения задачи классификации облака точек, имея лишь 10 примеров для каждого класса. Мы поговорим о том, как преобразование данных в воксельное представление и использование сиамских нейронных сетей с 3D свертками помогло достичь отличных результатов.

Читать далее
Total votes 3: ↑3 and ↓0 +3
Comments 5

12 лет спустя: Damn Small Linux снова в строю. По-прежнему быстрый, но изрядно «располневший»

Reading time 3 min
Views 7.2K

Проект Damn Small Linux достаточно странный. Он не обновляется по многу лет, все считают, что он умер, а потом его авторы снова начинают работу над дистрибутивом. Так произошло в далёком уже 2012 году, когда апдейтов не было около 4 лет. После всё снова затихло, уже на 12 лет. И вот сейчас дистрибутив возродился и готов служить Linux-комьюнити. Подробности — под катом.

Читать далее
Total votes 21: ↑20 and ↓1 +19
Comments 10

SimulIDE: открытый симулятор цифровых схем и микроконтроллеров

Reading time 3 min
Views 20K

В этой заметке я решил рассказать о SimulIDE. Это относительно новое программное средство с открытым исходном кодом, предназначенное для моделирования 8-битных микроконтроллеров семейств AVR и PIC, а также прочих электронных схем. По интерфейсу SimulIDE напоминает Proteus. SimulIDE кроссплатформенный и работает под Linux, Windows и Mac. Далее будут рассмотрены основные возможности этого симулятора и рассказано о моих личных впечатлениях от работы с данной программой.

Читать далее
Total votes 57: ↑57 and ↓0 +57
Comments 35

ToolChain: Настройка сборки прошивок для микроконтроллеров Artery из Makefile

Level of difficulty Easy
Reading time 21 min
Views 2.9K

Настало время освоить очередное семейство микроконтроллеров: от компании Artery Technology.

Компания Artery Technology уже возвела полноценную экосистему для своих процессоров. Есть фирменные отладочные платы, программаторы, документация, исходные коды MCAL и даже кодо генераторы.

В этом тексте я представил пошаговую инструкцию того как запрограммировать микроконтроллер Artery.

Читать далее
Total votes 13: ↑10 and ↓3 +7
Comments 11

STM32. Процесс компиляции и сборки прошивки

Level of difficulty Easy
Reading time 30 min
Views 18K
Многие из начинающих разработчиков софта для микроконтроллеров реализуют свои проекты исключительно в средствах разработки, которые предоставляются производителем. Многое скрыто от пользователя и очень хорошо скрыто, из-за чего некоторые воспринимают эти процессы сродни настоящей магии. Я, в свою очередь, как человек в пытливым умом и природной любознательностью, решил попробовать собрать проект без использования IDE и различного рода автоматизаций.

Так родилась идея для этой статьи: не используя ничего, кроме текстового редактора и командной строки, собрать проект мигания светодиодом на отладочной плате STM32F0-Discovery. Поскольку я не до конца понимал, как происходит процесс компиляции и сборки проекта, мне пришлось восполнять пробелы в знаниях. Разобравшись с этим вопросом, я подумал — а почему бы не рассказать другим об этом?

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

Читать дальше →
Total votes 124: ↑123 and ↓1 +122
Comments 67

Раскрыта причина, по которой насекомые кружат вокруг огней по ночам

Reading time 5 min
Views 9.6K

Это наблюдение сделали уже очень давно — ещё когда люди стали собираться вокруг костров: свет в ночное время может привлечь беспорядочно кружащую стайку насекомых. В искусстве, музыке и литературе это зрелище является устойчивой метафорой опасного, но непреодолимого влечения. И при наблюдении за их бешеными движениями действительно возникает ощущение, что что-то не так: вместо того чтобы искать пищу и уходить от хищников, эти ночные летуны попадают в световую ловушку.

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

Читать далее
Total votes 32: ↑31 and ↓1 +30
Comments 17

Information

Rating
2,812-th
Location
Хацафон, Израиль
Date of birth
Registered
Activity