Реверс-инжиниринг мерцающего светодиода (+RGB)
1.5 года назад на Хабре писали о попытке реверс-инжениринга случайно мерцающего светодиода. Тогда попытки проанализировать паттерны мерцания светодиода как черного ящика окончательным успехом не увенчались — однако было установлено распределение скважностей модуляции яркости, и был написан эмулятор. За прошедшее время разные группы вскрывали мерцающие светодиоды — и об их работе стало известно несколько больше. Наконец, дошли до них руки и у меня.За прошедшее время обнаружилось, что кристаллов «случайного моргания» — довольно много разновидностей. Фотографии и размышления авторов на тему принципа работы аналогичных кристаллов — siliconpr0n.org, cpldcpu.wordpress.com, hackaday.com. Удивляет то, что мало того, что кто-то предметно занимается разработкой и массовым производством такой казалось бы незначительной вещи как мерцающий светодиод — там еще есть и прогресс/конкуренция!
Размер кристалла 580×476 µm, технология 3µm. 3 контакта — плюс, минус и вывод на кристалл светодиода.Похоже в качестве источника случайных данных тут опосредованно используется разность фаз между двумя RC-генераторами, и поведение получается не детерминировано. Существует множество вариантов реализации этой микросхемы, например можно встретить вариант c LFSR и одним генератором (16-и битный регистр сдвига с линейной обратной связью — для реализации требует 16-и битного сдвигового регистра и одного многовходового XOR, цикл повторения генерируемой псевдослучайной последовательности — 65536 при оптимальном выборе конфигурации, самый простой аппаратный генератор псевдослучайных чисел).
Фотография кристалла без металлизации:
Поведение этого светодиода полностью детерминировано: отличия в поведении между разными светодиодами только в разбросе частоты встроенного RC генератора (~±10%). Левая нижняя часть — напоминает ROM-based микрокод. Т.е. этот светодиод напоминает старые процессоры — последовательное переключение режимов работы через этот микрокод в нужное время активирует различные комбинации подсхем мерцания. И, также как и процессор, начиная программу с 0 — тут каждый светодиод идет по тому же самому графу состояний, просто с немного разной скоростью.Размер кристалла 553×474 µm, технология 1.5µm. Не смотря на усложнение схемы — кристалл получился меньше. Эту микросхему получилось нормально отснять только с 3-й попытки: с такими мелкими кристаллами (площадь ~0.25 мм²) работа получается очень нервная: 1,2.
Фотография кристалла без металлизации.
PS. В получении светодиодов помог факультет АСОИ ГГУ.
Все кристаллы (как те, что попались мне, так и другим) произведены по относительно старым технологиям производства, от 1.5 до 3 мкм (1500–3000нм!) — что подчеркивает, что далеко не всегда тонкие нормы производства экономически оправданы для новой продукции: площадь кристаллов — примерно 0.25 мм², кристалл меньшей площади уже затруднительно отрезать, и соответственно более тонкие нормы производства продукт дешевле/лучше уже не сделают (собственно, технологию у RGB улучшили только до 1500нм чтобы получился примерно такой размер кристалла). Также это хороший пример, что даже на простых продуктах кто-то зарабатывает —, но делать что-то простое дешевле всех пожалуй также сложно, как и делать что-то самое сложное.Сами управляющие микросхемы — сложнее, чем я ожидал: не удивился бы, увидев вообще что-то аналоговое, из нескольких транзисторов (для монохромного варианта конечно) —, но видимо у таких решений сложно обеспечить температурную стабильность и нужный визуальный эффект.