Search
Write a publication
Pull to refresh
-4
Эдуард Зиганшин @e-zigread⁠-⁠only

Разработка электроники

Send message

Создание процессора с нуля для чайников

Reading time18 min
Views53K

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

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

В данной статьей мы пройдем путь создания процессора от единичного транзистора до работающего 8-битного процессора, и напишем свой ассемблер для него.

Читать далее

Моделирование IP-ядер Xilinx в ModelSim

Level of difficultyMedium
Reading time5 min
Views2.3K

Недавно у меня возникла потребность в том, чтобы смоделировать в ModelSim дизайн, использующий IP-ядра Xilinx. У меня не сработала стандартная схема с компиляцией исходников в Vivado и я решил попробовать скомпилировать всё самостоятельно. В итоге у меня всё получилось! Более того, я написал несколько Tcl-скриптов, которые помогают немного упростить этот процесс. Все, у кого возникла такая же потребность — прошу к прочтению.

Читать далее

Type Loopholes: решая нерешаемое. Рефлексия времени компиляции

Reading time17 min
Views5.6K

Лупхолы — это техника, позволяющая манипулировать глобальным состоянием компилятора, добавляя значения и считывая их.

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

Узнать, какие параметры принимает конструктор типа.

Узнать, с какими шаблонными параметрами вызывался метод/функция с ADL.

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

Читать далее

Согласование импедансов: как сломать и как починить

Reading time8 min
Views40K

Рано или поздно в руки любителей, начинавших с Ардуино, попадают куда более быстрые устройства. Накинув щупы осциллографа на навесные провода, они обнаруживают, что сигнал, который задумывался, как голубая линия на заглавной картинке на деле выглядит, как жёлтая. В поисках решения проблемы они приходят к весьма многогранной области знаний под названием «Целостность сигналов». И если такие её аспекты, как питание и возвратные токи относительно просты для понимания, то согласование импедансов содержит ряд контринтуитивных положений. В процессе освоения данной темы мне показалось, что материалы по ней разделены на три не слишком хорошо связанных блока:
1) теория с формулами и отсылками к 2 курсу ВУЗа
2) гипертрофированные примеры на симуляторах
3) применение на практике (с эмпирическими суевериями)

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

Согласовать импедансы

Оцениваем алгоритмы планирования процессов в операционных системах

Level of difficultyMedium
Reading time17 min
Views13K

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

Моделирование реализации модуля Быстрого Преобразования Фурье (БПФ/FFT) и сравнение с аналогичным ядром от Xilinx

Level of difficultyMedium
Reading time7 min
Views3.8K

При разработке сложно-функциональных блоков (СФБ) цифровой обработки сигналов важным этапом является моделирование алгоритма работы. Этот этап может занимать существенное время, откладывать запуск написания RTL и, как результат, увеличивать общее время разработки. Поэтому в условиях ограниченного времени на разработку многие предпочитают этот этап пропускать. А зря.

Читать далее

Настройка Git сервера с нуля

Level of difficultyEasy
Reading time12 min
Views20K

Любой начинающий DevOps начинает своё знакомство с Git. Этот инструмент стал неотъемлемой частью рабочего процесса разработчиков по всему миру. Во многих курсах и руководствах по DevOps описывается настройка серверов через популярные платформы, такие как GitLab, а иногда и Gitea. Однако мне стало интересно попробовать другой путь — использовать встроенный в Git инструмент GitWeb.

Подробнее

ИИ познает женскую красоту

Level of difficultyEasy
Reading time5 min
Views1.7K

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

Цифровые решения в индустрии красоты стали внедрятся примерно 10 лет назад. Дополненная и виртуальная реальность (augmented and virtual reality) первыми стали использоваться торговыми сетями и косметическими компаниями в “виртуальных примерочных” и "косметологических кабинетах с дополненной реальностью", позволяя красавицам удаленно протестировать как будет выглядеть та или иная краска для волос, лак для ногтей, прическа и т.д.

Однако, принципиальное отличие ИИ, наученного вкусу в бьюти и пониманию критериев женской красоты, состоит в том, что он симулирует умение различать интонации, намеки и полутона. Самообучаясь, он становится для женщин отменным советчиком, полезной и тактичной "умницей - подругой".

Перспективы коммерциализации

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

Читать далее

Как делать бинарно-совместимые API на компилируемых языках

Reading time10 min
Views3.3K


При разработке продукта на компилируемом языке (таком как C или Rust) рано или поздно может наступить момент, когда нужно разделить продукт на несколько компонентов, развивающихся независимо, или дать возможность расширять функциональность плагинами, разрабатываемыми отдельными коллективами или сообществом.
Читать дальше →

Архитектура Xорошего Кода Прошивки (Массив-Наше Всё)

Level of difficultyEasy
Reading time10 min
Views8.6K

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

В этом тексте я написал о некоторых подходах к организации кода для микроконтроллеров.

Основная идея - массив наша основная скрепа.

Главные достоинства представленной архитектуры - это простота поддержки, сопровождения и масштабирования кодовой базы.

Читать далее

Фабрика для std::variant: как объединить compile-time и run-time, чтобы получить выигрыш от обоих

Level of difficultyMedium
Reading time18 min
Views5.7K


Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии пользовательского приложения для совместной работы сотрудников с любого устройства VK Teams

Если вы тоже работали с большими проектами, где активно применяются объектно-ориентированные паттерны проектирования, то наверняка знаете о быстро нарастающей лавине кода. Такой код сложно писать, изучать и тем более поддерживать. Сегодня я расскажу, как удалось избежать таких сложностей. Поделюсь, как можно использовать современный С++, чтобы совместить compile-time и run-time исполнение, не потеряв при этом в производительности и выразительности кода.
Читать дальше →

Почти все, что вы хотели бы знать про Docker

Level of difficultyEasy
Reading time11 min
Views77K

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

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

Читать далее

Почему для меня так важен алгоритм CORDIC

Level of difficultyMedium
Reading time8 min
Views21K

CORDIC — это алгоритм для вычисления тригонометрических функций вроде
sin, cos, tan и тому подобных на маломощных устройствах без использования модуля обработки операций с плавающей запятой или затратных таблиц поиска. По факту он сводит эти сложные функции до простых операций сложения и битового сдвига.

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

Практика измерения коэффициента шума при помощи анализатора спектра. Заметки и наблюдения

Level of difficultyMedium
Reading time26 min
Views8.2K

Одним из показателей качества аналогового тракта приемника является коэффициент шума (КШ). Чем он меньше, тем меньше дополнительных шумов вносит аналоговый тракт в сигнал, поступающий на его вход.

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

В [1] рассматриваются 3-и метода измерения коэффициента шума:

1.     Метод Y-фактора. Этот метод предполагает использование генератора шума.

2.     Метод генератора сигнала с удвоением мощности.

3.     Метод прямого измерения шума (метод холодного источника)

1-й метод заключается в использовании генератора шума, достаточно распространен и хорошо описан в инструкциях на приборы. В статье подробнее рассматривается пример измерения коэффициента шума при помощи анализатора спектра, используя 2 и 3 способ. Также приводятся возможные ошибки при измерении коэффициента шума подобными методами и сравнение полученных результатов на практике. В свое время использовать эти методы для оценки КШ меня побудило отсутствие в доступе генератора шума на нужный диапазон частот. Также эти способы позволяют измерять устройства с большим коэффициентом шума, такие как преобразователи частоты, усилители мощности.

Читать далее

Как загрузить, установить Office 2024 LTSC с сайта Microsoft и активировать навсегда?

Level of difficultyMedium
Reading time8 min
Views475K

Десять лет назад я писал пару статей - Как загрузить последний Office с сайта Microsoft без всякого App-V / Хабр (habr.com) и Как загрузить Microsoft Office 16 с сайта Microsoft / Хабр (habr.com), при помощи на тот момент еще мало кому известным Office Deployment Tool.

Время бежит стремительно, за Office 2016 выходит Office 2019, Office 2021, и вот сейчас подошло время для Office 2024. Что ж, посмотрим, что поменялось в плане загрузки, установки и активации продукта за десять лет.

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

Microsoft давно перешел на систему распространения продуктов семейства Office по разным, так называемым, "каналам" (channels), в зависимости от того как часто вы хотите получать нововведения и обновления.

Ключевым отличием в текущей загрузке и установке Office от того, что было актуально во времена Office 2016, является то, что вы должны определить, каким каналом распространения вы собираетесь пользоваться, - то есть с какого канала собираетесь устанвливать сам продукт. Тем, кто хотел бы подробно изучить разные каналы распространения я предложу почитать первоисточник - Обновления Office - Office release notes | Microsoft Learn. Остальным кратко резюмирую - Microsoft сейчас предпочитает всем продать подписку на Microsoft 365 (то, что ранее называлось Office 365), с регулярно обновляемыми возможностями в течении так называемой Современной политики жизненного цикла. По этой же современной политике распространяется пользовательские (коробочные, ретейл) версии Office 2021. Office 2021, например, поддерживается лишь до 13 октября 2026. А более старые версии следуют, так называемой политике фиксированного жизненного цикла, в рамках которой Office 2016 и Office 2019 поддерживаются лишь до 14 октября 2025. В целом, они не перестанут работать после, однако, перестанут обновляться. И у тех из вас, кто пользуется почтовыми сервисами на базе Microsoft Outlook.com или Office365, а возможно и пользователям Microsoft Exchange, с обновлениями выпущенными после 14 октября 2025 уже пора призадуматься об обновлении.

Читать далее об установке Office 2024

Укрощаем суммы с плавающей запятой

Level of difficultyEasy
Reading time9 min
Views9.9K

Допустим, у нас есть массив чисел с плавающей запятой, и мы хотим их суммировать. Можно наивно подумать, что их достаточно просто сложить, например, на Rust.

Однако это запросто может привести к произвольно большой накопленной погрешности. Давайте проверим:

naive_sum(&vec![1.0; 1_000_000]) = 1000000.0
naive_sum(&vec![1.0; 10_000_000]) = 10000000.0
naive_sum(&vec![1.0; 100_000_000]) = 16777216.0
naive_sum(&vec![1.0; 1_000_000_000]) = 16777216.0

Ой-ёй… Что произошло? Проблема в том .что следующее 32-битное число с плавающей запятой после 16777216 — это 16777218. Так что при вычислении 16777216 + 1, значение округляется до ближайшего числа с плавающей запятой, имеющей чётную мантиссу, то есть снова до 16777216. Мы зашли в тупик.

К счастью, есть более совершенные способы суммирования массива.

Читать далее

Проверка поставщика в Китае своими силами

Level of difficultyHard
Reading time5 min
Views3.5K

Бизнес с Китаем оживает потихоньку, бизнесмены пытаются найти альтернативных поставщиков в Китае на смену старых европейских брендов.

Я решил выложить инструкцию, по которой уже на протяжении длительного срока я и мои коллеги проверяем компании в Китае.

Читать далее

Руководство по межпроцессному взаимодействию (IPC) в Linux — Часть 1

Level of difficultyMedium
Reading time15 min
Views13K

Представляю вашему вниманию перевод работы A guide to inter-process communication in Linux. Объём данной работы большой, поэтому перевод будет выполнен в виде нескольких отдельных статей:

Читать далее

Краткое сравнение популярных функций измерения времени

Level of difficultyEasy
Reading time11 min
Views7.8K

Какую реальную точность можно ожидать от функции возвращающей время, а сколько времени она выполняется сама? Попытка замерить и сравнить несколько десятков функций, доступных программисту на C++.

Вот что получилось

Information

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

Specialization

System Software Engineer, Hardware Engineer
Senior
From 225,000 ₽
C++
Qt
Verilog HDL
VHDL
C
Git
Linux