Обновить
55
0.1

Пользователь

Отправить сообщение

Портативный аппаратный проигрыватель музыки для AY-3-8910 — hway

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

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

Поляризатор = датчик угла

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

Поговорим о датчиках угла.

Есть один остроумный и умозрительный способ измерять углы: при помощи поляризаторов.

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

Насколько реально сделать датчик угла на основе закона Малюса?

Читать далее

Причуды эволюции: необычное «железо», которое не должно было появиться. Часть 1

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


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

То ли дело раньше — в погоне за кошельками пользователей производители комплектующих были готовы идти на куда больший риск, а иногда в роли авантюристов выступали даже создатели альтернативных чипсетов. Встречались даже материнские платы для двух разных поколений процессоров, например 386 и 486! Или, например с двумя разъемами — для процессора базового и для топового уровней. И это не только возможность выбора между Celeron (socket 370) и Pentium II (slot 1), но и даже между Pentium III (slot 1) и могучим Pentium III Xeon (slot 2).

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

Как принять сигнал мобильной связи на приёмник цифрового телевидения: теория и практика

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

Несмотря на вроде бы абсурдный заголовок, принять и декодировать сигналы мобильной связи действительно можно на телевизионный приёмник, хотя и с некоторыми оговорками. Не все и не на любой приёмник, но такая возможность есть. Чтобы вам это выполнить самим, понадобятся:

  • ноутбук,
  • DVB-Т-приёмник в виде USB-брелока,
  • свободный флеш-накопитель для записи дистрибутива Linux на него.

Чтобы лучше разобраться в работе GSМ, нужно два мобильных телефона или телефон и GSM-модем.

Если вас заинтересовала эта тема, и вы хотите расширить свои знания, добро пожаловать под кат.
Читать дальше →

Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма

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

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

Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.

За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходимо начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.

Итак, поехали.

Погрузиться

Оживляем веб-камеру 1999 года

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

Покупая девайс, мы, в принципе, понимаем, что вечно он не прослужит: разъёмы износятся и/или сам прибор выйдет из моды. Но лично меня наиболее удручает ещё одна причина избавляться от техники: для неё просто перестают делать драйвера.

Успех USB особенно примечателен. Этот стандарт с нами уже очень долго, и разъём его практически не менялся (в основном, не считая USB-C). Это значит, что очень старые устройства под USB 1 по-прежнему можно применять в системах, продаваемых сегодня. Как минимум, так должно быть, если у старых устройств есть драйверы для тех операционных систем, что актуальны сегодня.

Читать далее

Аналоговый режим работы К155ЛА3

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

В предыдущих двух частях цикла мы использовали микросхему К155ЛА3 в привычном всем цифровом режиме работы. В этой части публикации мы рассмотрим схемотехнические решения на элементах ТТЛ в аналоговом режиме.

Любопытно, что в аналоговом режиме можно включить практически любой из инвертирующих элементов ТТЛ. Примеры подобного использования микросхемы К155ЛА3 есть даже в пособиях для начинающих, правда, мало кто из начинающих догадывается, что режим работы элементов 2И-НЕ в этих схемах аналоговый.
Будет интересно

Использование простейших микросхем в конструкции ранних ЕС ЭВМ

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

Серия статей Дмитрия Руднева (эта и др.) натолкнула меня на мысль написать заметку о построении простых схем (триггеров, дешифраторов и т. п.) в реальных отечественных вычислительных машинах начала 1970-х годов — в первую очередь, ЕС-1020 (1971 год), по которой имеется довольно подробная литература.

Практически вся логическая часть процессора этой машины, как и создаваемой одновременно с ней более мощной ЕС-1030, была построена всего на девяти типах микросхем 155-й серии, в те годы (первая половина 1970-х) носивших обозначения К1ЛБ551, К1ЛБ552, К1ЛБ553, К1ЛБ554, К1ЛБ556, К1ЛБ557, К1ЛР551, К1ЛР553 и К1ЛП551. В 1975-м году была принята новая система обозначений, используемая с некоторыми расширениями и доработками до сих пор; перечисленным старым обозначениям соответствуют К155ЛА1, ЛА2, ЛА3, ЛА4, ЛА6, ЛА7, ЛР1, ЛР3 и ЛД1. В дальнейшем я буду использовать только привычные новые обозначения, для краткости опуская обозначение серии.

Читать далее

Семафоры в Linux медленно сходят со сцены

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

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

Читать далее

Ностальгические игры: Космические рейнджеры

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

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

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

В один из таких субботних дней я купил журнал Лучшие Компьютерные Игры, в котором была большая статья-руководство по замечательной игре «Космические рейнджеры». Её я зачитал буквально до дыр, причем самой игры у меня не было. Думаю, вы представляете, насколько сильно мне хотелось приобрести её! К сожалению, я уже не помню, как скоро я получил заветную коробочку, вряд ли это было в ближайший год, но ожидание того стоило!

Так произошло знакомство с еще одной прекрасной игрой, которая не теряет своего шарма даже в наши дни.

Читать далее

Триггер — электронная ячейка памяти

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


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

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

Удивительные клеточные автоматы: направленные и пользовательские окрестности

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


?, Хабр!

На прошлых неделях мы познакомились с различными вариациями альтернативных окрестностей – начиная с учёта расположения нотацией Хенселя, через альтернативные шаблоны расположения, и заканчивая взвешенными окрестностями. Сегодня добавим в тему окрестностей стандартного поля небольшой финальный штрих – пользовательские расположения.
Что здесь происходит (для новых читателей серии)
В этой серии мы разбираем клеточные автоматы – дискретную модель, основой которой является сетка из ячеек-клеток, которые изменяют (или не изменяют) своё состояние в зависимости от количества соседей.
Учёт соседей определяется правилами, которые устанавливаются нами. Вариаций правил существует бесчисленное множество, и они были систематизированы в определённые конфигурации.
Самая популярная конфигурация – «B/S», или «life-like», по названию крайне широко известного клеточного автомата «Game of Life», где B/S обозначает, что в нашем правиле мы описываем всего два параметра – количество соседей необходимых для рождения новой клетки в пустой ячейке, и количество соседей для выживания существующей клетки.
В каждой статье серии мы углубляемся в данную конфигурацию, добавляя новые параметры, либо дополняя существующие. Иногда заглядываем и в прочие конфигурации.
Для понимания сегодняшней статьи достаточно знать, что:
  • поиск соседей изначально выполняется в радиусе 1 (8 окружающих клеток – ), но мы можем установить другой, добавив к правилу Rx, где x – нужный нам радиус;
  • мы можем изменять шаблон окрестности поиска соседей. Изначально подразумевается окрестность Мура – R в каждую сторону (и диагональ) от рассматриваемой клетки, – но указывая Nxx мы будем определять иной шаблон, что, конечно, изменит вид правила. Сегодня мы продолжаем расширение этой части правила. Знакомство с предыдущими расширениями не является необходимым, но вы, конечно, можете предварительно ознакомиться с ними и прочими дополнениями, для большей последовательности чтения. Ссылки в конце материала и в профиле.
Читать дальше →

Создаем свой собственный язык программирования с использованием LLVM. Часть 5: Поддержка классов и перегрузки функций

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

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

Читать далее

Создаем eval через байт-код JVM

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

В интерпретируемых языках программирования (или в языках, которые включают возможность компиляции в runtime) есть возможность вычисления значения выражения, полученного из внешнего источника (например, для построения графика функции, введенной пользователем) с подстановкой актуальных значений переменных. Но JVM изначально ориентирована на компиляцию перед выполнением и механизма, аналогичного eval, в JVM нет (кроме, конечно, возможности использования Nashorn и eval в JavaScript-коде). В этой статье мы рассмотрим пример динамической генерации байт-кода из математического выражения.

Читать далее

Steer-by-wire: как разработать безопасный руль по проводам и нужно ли это делать?

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

Не так давно мы опубликовали статью на Хабре про рули, где затронули тему steer-by-wire. Народ в комментариях высказал сомнения в надёжности такого решения. А ведь на самом деле, что делать, если у какого-нибудь ECU внезапно пропадёт питание, перетрётся проводок или подвиснет софт? Как производители борются с такими рисками? И зачем нам отказываться от надёжной механической связи? Попробуем же в этом разобраться!

Читать далее

В России всего 2000 проектировщиков чипов. Что с этим делать?

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

Согласно статье Ивана Покровского «Возможности и проблемы отечественной микроэлектроники», в России всего две тысячи разработчиков микросхем. Для сравнения: в каждой крупной международной электронной компании есть несколько команд, работающих над чипом или над IP, в каждой по паре сотен разработчиков (хотя бывает и меньше ста, и больше тысячи).

Две тысячи человек — это мало для любого сценария развитии России:

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

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

В других стран бывшего СССР ситуация еще хуже.

Что же делать? Для ответа на этот вопрос мы привлекли Машу Горчичко — выпускницу МИФИ, которая защитила диссертацию в Университете Вандербильда в Теннесси. Маша работала инженером в Роскосмосе, а сейчас работает в Кремниевой Долине, разработчиком в компании Applied Materials — одного из лидеров в оборудовании для производства микросхем.

Представим Машу, которая будет пояснять и иллюстрировать наши тезисы на видео. От себя прибавлю, что МИФИ — крутой вуз, в нем внутри есть ядерный реактор, а на входе стоит автоматчик:

Читать далее

Разработка BIOS на языках высокого уровня

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели33K
Ничего лишнего: материнская плата, видеокарта и ROM-BIOS

Меня давно волнует вопрос, как подступиться к разработке на голом железе, на чистом си. Хотелось понять, каким же образом идёт запуск BIOS, u-boot, grub и прочих первичных загрузчиков. Ведь необходимо перейти от ассемблера к тёплому ламповому си и соблюсти условие, собрать всё это в линукс любимым компилятором gcc.

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

Здесь я хочу свести основные моменты разработки BIOS в одном месте и разобраться обо всех проблемах, которые я получил во время своих опытах в разработке (первая и вторая части).
Читать дальше →

Синхронные двигатели с постоянными магнитами на роторе: управление (синус и/или трапеция)

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

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

От теории к практике, наглядно, понятно и занимательно.

Читать далее

Мониторинг аномальной активности в операционной системе «Нейтрино»

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

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

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

Читать далее

Создаем байт-код для JVM без компилятора

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

Виртуальная машина Java использует концепцию промежуточного байт-кода для обеспечения переносимости между операционными системами и аппаратными платформами. Использование байт-кода позволяет отделить компилятор от среды выполнения и выполнять компиляцию с разных языков программирования для исполнения на JVM. В этой статье мы разберемся с внутренней организацией class-файлов и байт-кода в них и научимся работать с фреймворком ASM для исследования и программной генерации байт-кода для динамического определения новых классов или их компиляции из других языков программирования.

Читать далее

Информация

В рейтинге
3 178-й
Дата рождения
Зарегистрирован
Активность