Admit it, you love looking at silicon die shots, especially when you have help walking through the functionality of all the different sections. This one’s really easy for a couple of reasons. [electronupdate] pointed his microscope at the die on a WS2812.
The WS2812 is an addressible RGB LED that is often called a Neopixel (a brand name assigned to it by Adafruit). The part is packaged in a 5×5 mm housing with a clear window on the front. This lets you easily see the diodes as they are illuminated, but also makes it easy to get a look at the die for the logic circuit controlling the part.
This die is responsible for reading data as it is shifted in, shifting it out to the next LED in the chain, and setting each of the three diodes accordingly. The funcitonality is simple which makes it a lot easier to figure out what each part of the die contributes to the effort. The diode drivers are a dead giveaway because a bonding wire connected to part of their footprint. It’s quite interesting to hear that the fourth footprint was likely used in testing — sound off in the comments if you can speculate on what those tests included.
We had no trouble spotting logic circuitry. This exploration doesn’t drill down to the gate level like a lot of [Ken Shirriff’s] silicon reverse engineering but the process that [electronupdate] uses is equally fun. He grabs a tiny solar cell and scopes it while the diodes are running to pick up on the PWM pattern used to fade each LED. That’s a neat little trick to keep in your back pocket for use in confirming your theories about clock rate and implementation when reverse engineering someone else’s work.
[via Dangerous Prototypes]
The IC-Version of the Controller does have an extra Pin with which you can select a fast or slow clocking speed. Maybe the pad on the die is bonded out to that pin if the silicon is used in chip-form and not integrated in the LED.
Perhaps the chip has RGBW capability and that is what the fourth pad is?
Possibly, but it looks like it has been probed, and lacks the output transistor. Looks to me like just a low current test pad of some description
Pure guesswork ahead, taken with a pinch of salt could it be confirmed or denied?
On the silicon controller IC it looks like that black square above the 3 red squares is the output transistor, MFG disabled maybe?
The bottom red is the brightest (a side question before I finish writing sentences: heat?, IR?, camera angle and reflections?, Voodoo??) with the top two about the same.
This makes sense, if I remember correctly, because the blue would be pulling the most power relative to the green and red, this leaves the black square that to me becomes immediately obviously a transistor (I believe).
Though the red and green transistors seem the same colour, I thought green required a slightly higher voltage thus higher wattage at the nominal 20mA of most LEDs I have used as far?
This is the most I could garner from the heading picture.
Took a read on the [electronupdate] blog linked above, the black transistor I was on about doesn’t have a coating like the rest and thus appears completely disabled.
Yep, it is that time again. Too long withoit a doze of neopixel coverage.
I hate the WS2812, but i love to use it
One slightly better choice would be APA102 LEDs. Those use SPI for communication, so they are a bit handier. And can be driven by a raspberry pi without an additional µC.
They are pricier and harder to get in nice, premade boards but yeah anything with a looser timing requirement would be better
i have even in the past been forced to use dual core MCUs just to control a set of neopixels
Also seeing how the die is exposed, i wonder if you can mess with one using a very bright light …
would the LED themselves not affect it? did they design something in to mitigate this effect.
Generally you need quite a bit of light to effect something with such a big feature size
Ahh the old “Camera Shy” Raspberry Pi…
They are NOT addressable
Er, yes they are…
TECHNICALLY they are not, they are more like shift registers, you send a large serial string and they shift down the line … you cant address an individual one using a proper address
it depends on your definition of “address”…
address-ABLE as in address-ED meaning dont need a huge matrix of output wires, just send serial data down ONE wire, then yes, its address-ED
but address as in THIS led will be told by the CPU that it will be #28 today then no, the order of each LED in the string is determined by the wiring, the first LED connected is #1 and the second in line is LED#2 no matter what bits are sent down the data line(s)
WS2812 (WS2811) protocol does not have real addressing like (the) (phillips?) G35 protocol, where the pixels need to be given an address at power-up. the advantage of the G35 protocol is that an animation can be hard-coded to use certain LED addresses and then at power-up you can change the order without having to edit the subroutine. also code that calculates an address can add extra code-space andor computation time.
the downside of G35 is, well, all the glitches and limitations, like proper combinations of multi-brightness levels and refresh-rate, at least with my knock-off sets i got for cheap. doesnt even work with stock G35 code.
“Admit it, you love looking at silicon die shots,”
Oh you know it! http://cdn.funnyisms.com/0c338ff6-ee29-4568-b138-05b370a41f87.jpg
“especially when you have help walking through the functionality of all the different sections.”
Hey.. whatever you are into.