I think I have mostly worked out how I'll coordinate between the two GPU. I have introduced a D-Type Flip-flop to perform the role of a hardware mutex. When the GPU AVRs start up, they will read the value on their PORTD5 pin. The left hand GPU PORTD5 pin will be connected to the Q output of the Flip Flop and PORTD5 on the other GPU will be connected to Q'. Whichever GPU reads a high value is going to render while the other will perform the RAMDAC role. Then the Flip-flop flips, the roles will reverse.
The RAMDAC GPU will be responsible for handing off to the other. The hand off process will look like this:
- At the end of the video frame the RAMDAC GPU will drive the Flip-flop clock pin high causing:
- The Flip-flop will toggle.
- The VSYNC will go high (or high depending on how I wire it)
- The Serial ports will be connected to the new Render GPU.
- The SRAM data line buffers will toggle their enabled state.
- The SRAM address line buffers will toggle their enabled state.
- The new RAMDAC will wait for the VSYNC period and then drive the Flip-flop clock pin low.
- The new Render GPU will set appropriate pins to High-Z and then can get on with rendering.
Things left to do on the video board:
- Ground plane
- Decoupling capacitors