Реверс-инжиниринг мерцающего светодиода (+RGB)

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

    За прошедшее время обнаружилось, что кристаллов «случайного моргания» — довольно много разновидностей. Фотографии и размышления авторов на тему принципа работы аналогичных кристаллов — siliconpr0n.org, cpldcpu.wordpress.com, hackaday.com. Удивляет то, что мало того, что кто-то предметно занимается разработкой и массовым производством такой казалось бы незначительной вещи как мерцающий светодиод — там еще есть и прогресс/конкуренция!


    Красный мерцающий светодиод



    Размер кристалла 580x476 µm, технология 3µm. 3 контакта — плюс, минус и вывод на кристалл светодиода.

    Похоже в качестве источника случайных данных тут опосредованно используется разность фаз между двумя RC-генераторами, и поведение получается не детерминировано. Существует множество вариантов реализации этой микросхемы, например можно встретить вариант c LFSR и одним генератором (16-и битный регистр сдвига с линейной обратной связью — для реализации требует 16-и битного сдвигового регистра и одного многовходового XOR, цикл повторения генерируемой псевдослучайной последовательности — 65536 при оптимальном выборе конфигурации, самый простой аппаратный генератор псевдослучайных чисел).

    Фотография кристалла без металлизации:


    RGB мерцающий светодиод



    Поведение этого светодиода полностью детерминировано: отличия в поведении между разными светодиодами только в разбросе частоты встроенного RC генератора (~±10%). Левая нижняя часть — напоминает ROM-based микрокод. Т.е. этот светодиод напоминает старые процессоры — последовательное переключение режимов работы через этот микрокод в нужное время активирует различные комбинации подсхем мерцания. И, также как и процессор, начиная программу с 0 — тут каждый светодиод идет по тому же самому графу состояний, просто с немного разной скоростью.

    Размер кристалла 553x474 µm, технология 1.5µm. Не смотря на усложнение схемы — кристалл получился меньше. Эту микросхему получилось нормально отснять только с 3-й попытки: с такими мелкими кристаллами (площадь ~0.25мм²) работа получается очень нервная: 1 ,2.

    Фотография кристалла без металлизации.


    PS. В получении светодиодов помог факультет АСОИ ГГУ.

    Резюме

    Все кристаллы (как те, что попались мне, так и другим) произведены по относительно старым технологиям производства, от 1.5 до 3 мкм (1500-3000нм!) — что подчеркивает, что далеко не всегда тонкие нормы производства экономически оправданы для новой продукции: площадь кристаллов — примерно 0.25мм², кристалл меньшей площади уже затруднительно отрезать, и соответственно более тонкие нормы производства продукт дешевле/лучше уже не сделают (собственно, технологию у RGB улучшили только до 1500нм чтобы получился примерно такой размер кристалла). Также это хороший пример, что даже на простых продуктах кто-то зарабатывает — но делать что-то простое дешевле всех пожалуй также сложно, как и делать что-то самое сложное.

    Сами управляющие микросхемы — сложнее, чем я ожидал: не удивился бы, увидев вообще что-то аналоговое, из нескольких транзисторов (для монохромного варианта конечно) — но видимо у таких решений сложно обеспечить температурную стабильность и нужный визуальный эффект.
    Zeptobars
    68.18
    Company
    Share post

    Comments 14

      0
      Хорошая работа. А это у вас хобби или действительно такая работа за которую платят?
        +12
        На 66% хобби (интерес все разбирать и смотреть что внутри думаю был когда-то у всех), 34% работа — но за которую платить пришлось бы самому себе :-) Есть ряд компаний, подобную работу выполняющие на коммерческой основе (и в России тоже).

        В моем случае эти 34% работы — смотреть на коммерческие продукты в интересующих областях, оценивать технологию, себестоимость и сложность разработки. Эти результаты затем ложатся в основу бизнес-плана и проч.
          +4
          Как вы точно посчитали процент)
            0
            Две трети — одна треть :)
        0
        Под RGB мерцающим светодиодом понимается тот, который моргает разными цветами или плавно переключателя между ними? Интересно было бы посмотреть на разницу начинки между ними.
          +3
          Там у него несколько режимов работы, разные алгоритмы мерцания и он по очереди переключается между ними.
          Да, RGB разных тоже много… И ведь люди сидят, разрабатывают эти разные моргающие светодиоды…

          Тот что у меня — вот так работает:
            +10
            А некоторые потом сидят и реверсят моргающие светодиоды, а мы потом сидим и завороженно смотрим на их фотографии))
          +3
          гм. угадал автора по первой картинке :)
            +3
            В этот тред надо отправлять всех мигателей светодиодами на Raspberry PI
              0
              Так это, выходит, не микроконтроллер, а цифровая схема, сделанная под эту конкретную задачу?
              0
              Я правильно понял, что такие диоды можно подключать прямо к источнику напряжения без резистора? Если да, то сколько В?
                +1
                Да, можно напрямую. 3.3-5В, больше 5 — слишком большой ток и температура, сгорят со временем :-)
                0
                Нашел на просторах интернета:



                Upper left is GND pad.
                Lower right is VCC pad.
                Upper right is output to LED anode.

                To the left of the LED output pad is the large serpentine LED driver transistor.

                Between the GND pad and serpentine transistor is Power on Reset with the metal plate the capacitor and a long trace loop to form a resistor for an RC time constant.

                In the lower region, to the left of the VCC pad, is a similar pad which forms a capacitor. With the serpentine resistor connected to the upper left of this pad, this, forms the on board RC oscillator. The drive transistor is center bottom with four T-flip-flop divider stages repeated to the lower left of the chip.

                The middle of the chip has three horizontal bands.

                The upper band (just below the GND pad and extending across to the LED pad) is a 9-stage divider chain along with miscellaneous logic at right. This divides down the RC clock. Additionally various taps from the divider chain are used in the second horizontal region.

                The second horizontal region has several EXOR gates (center) which combine outputs from the divides chain, along with various outputs from region three below.

                Region three has several cells wired as shift registers. Near the left is misc logic, then two shift rigisters, then an EXOR gate, then five additional shift register cells. At the far right is a buffer which then drives the previously mentioned large serpentine transistor to the LED pad.

                The shift register cells are very similar to the T-flip-flop cells used in the 9-stage divider chain, but wired differently.

                Only users with full accounts can post comments. Log in, please.