Shift Register Failure

A project log for TeensyBoy

The goal of this project is to advance my understanding of emulation whilst seeing how far I can push the new Teensy 3.6 and the Arduino IDE

ChaosChrisChaosChris 03/17/2017 at 22:490 Comments

The Problems:

So after assembling the SRAM PCB I was greeted with a multitude of problems ranging from bad jumper wire connections to shift register voltage sag. Once I had shortened all the wires and replaced the pin headers with soldered joints I did manage to get a single run through of the bios but my relief was short lived.. I'm not sure exactly what the issue with the shift registers is but after the first run the memory checks failed every time at semi-random locations in memory, after some poking around with the oscilloscope I found that one or two of the address lines that where supposed to be logic high (roughly VCC) where in fact struggling to manages 1/3 of VCC roughly 1V out of 3V3 this seems to be related to higher than expected current draw on certain address lines at any given address.... weird as this information appears to be non existent in the data sheet and I apparently wrongly assumed the address lines would be of a constant high impedance, sort of like an op-amp but no such luck.

The Solution (kinda)

Shift registers desoldered and slung back in the parts draw with a reluctant shrug I decided to try connecting the address lines directly to the Teensy, not ideal as this uses up a lot of the IO but I needed a sanity check. Result!! worked a charm first time and every time after, I have now tweaked the code a little to gain a little extra speed and the result of my labours is a peak FPS of 4.5 as apposed the 0.01 of the SD card page file. There is still some gains to be had by using direct port manipulation and combining multiple digitalWriteFast calls on a port into a single port update but that is for another day.