I decided to spend saturday morning digging into the Elgato Game Capture HD 60FPS encoder, partly because I felt like taking a deeper look at its design and partly because my prior imaging article was a trip down memory lane. I thought I’d try a different imaging technique then dive into the hardware for a few minutes.
The board itself is pretty flat, no high-rise capacitors, no protruding headers so a quick scan of the board in the Cannon 8800F scanner produced a couple of useful 600dpi TIFF images without too much trouble. I later converted to PNG, the full resolution images are here. See board top and board bottom.
While its tempting to dive in and start looking at the components, that would be a distraction. The primary goal for today was trying something different in Photoshop. I wanted to import the PCB images and align them correctly on different layers.
If they’re positioned correctly in relation to each other then I’d be able to rapidly switch between layers and follow traces faster than physically handling a board. IE, performing a virtual board flip, backwards and forwards with the click of a mouse, all while keeping my eyes focused on a specific VIA. This trick, should it work, would enable faster debugging of a PCB when I don’t have access to schematics.
Another good reason for adding new layers, I wanted to add additional comments, coloring and routing information and have that detail be stored inline with the PCB images, not on paper. Paper records can easily be lost.
Fair warning: If I talk about the components on the PCB or discuss them at all then consider it a bonus.
Step 1 - Flip the bottom PCB image so that all layers are viewed from above
Load your top and bottom PCB images into a new Photoshop image:
Menu, File / Scripts, Load Files into Stack.
Here are the two PCB layers in Photoshop, I’m flipping between the two visible layers, notice the problem?
When I scanned the original PCB, I scanned the top layer first, flipped the board over, being careful to keep the connectors in the same place, then scanned the bottom layer. As a result, the visual view is from above and below. I need all the layers in Photoshop to be from above, so when flipping through the layers I’m looking through the board from the top, not inverting the view as if looking from beneath.
Its a simple fix, Select the layer you want to flip, then Menu / Edit / Transform / Vertical, now toggle through both layers in Photoshop and you should have a top down view of both PCB surfaces.
Step 2 - Properly aligning the layers
You’ll notice the PCB layers don’t quite line up in the video above. I selected the bottom layer and performed a series of minor rotations and canvas moves so that some key PCB components and markings were stacked perfectly above each other when flipping layer views.
To do this, select the bottom PCB layer (which is the top most layer in the Photoshop stack) and adjust the opacity to roughly 50%. This allows us to view both images concurrently. See this higher resolution screenshot for finer detail.
Use the Photoshop Move tool and the control key for finer movement control. Place the PCBs exactly over each other. Once done, you should be able to adjust the opacity of the bottom layer from 0 to 100% and assuming you’re rotation and alignment is good, the PCB layers should now be properly placed.
For demonstration purposes I’ve created a new top most layer, highlighted in red a couple of things you should focus your attension on, then adjusted the opacity to highlight the effect. I took a short video to demonstrate the final alignment.
Its also worth taking a moment to cleanup the image a little more. I used the Magic Wand selection tool and highlighted the PCB, inverted the selection mask (to select everything else outside the PCB) and deleted all of the unwanted pixels. Here’s an updated image.
A quick .5 degree rotate clockwise brought the image slightly more vertical.
With close inspection the images aren’t perfectly aligned, the top image is 2% smaller than the bottom image, which leads to small issues on the right hand side of the overall project. That being said its definitly close enough for my goals.
Step 3 - Pull the datasheets and create layers with additional comments
For each major component on the PCB, add any additional notes to the layer using Text and line drawing tools. The benefit of this is that as you explore the board and mark up any traces, pins or VIAs without trashing the original PCB pixels, and you can enable/disable the debug layers easily as you later need to add or remove additional visual detail.
Check the datasheets and mark up any relevant pins or points of interest. I tend to start with I2C and board wide Resets. If no datasheets are available and Google doesn’t help then its a manual exercise requiring you to probe the pins with a meter to check for continuity or look at the pins with a scope while the device is active to spot any obvious buses.
I noticed that when zooming in that the image resolution quickly starts to deteriorate. Most likely, higher resolution PCB scans are required for serious use. Either I need a better scanner or I should spend the time to use the digital SLR.
At this point in time my general goal is complete, it was pretty trivial to import PCB images, align them and add additional notes and layers. Here’s a sample image.
… and the higher resolution version.
Technical Follow-up
Interesting, a 32bit Micro and SPI flash!
I had a hunch that the NUVOTON NUC100 keeps track of the HDMI input and output format negotiation process, for when the software isn’t running so that video passthrough works reliably.
I dug into the I2C traces to look for that. Additionally, I suspect it loads its firmware from the SPANSION flash, positioned fairly close to it, and this uses a SPI bus.
I dug into the SPI traces but was unable to prove the SPI was used by the microcontroller. Most likely its used by the Fujitsu video encoder.
At this point the Reset lines have been traced and I2C.
The NUVOTON has the following I2C connects:
I2C Bus 1
- Direct to the DibCom 0700 USB controller.
I2C BUS 0
- CAT6612 HDMI TX
- P15C Power DC Related
- Cirrus 42L51C Audio Codec (ADC)
- MStar MST3367 HDMI RX / SOC
Time for some I2C debug fun
I took a couple of quick I2C bus traces using a logic analyzer on the pins highlighted below:
No surprises, I2C traffic on the buses.
Photoshop, a swiss-army knife for pixels!
Copyright © 2015 Steven Toth