What would cause SRAM to have no errors when 5 of the bits are high

microcontrollerribbon-cablesramwiring

We have a SRAM (8bit by 512k chip, 19bit address) connected to a XMOS micro-controller using a ribbon cable soldered on both sides. The xmos micro controller is a startKit and the sram chip is a Allience memory chip we bought off mouser (part number 913-AS7C34096A-8TIN). The SRAM chip is on a custom pcb board with breakouts for the pins. I have a test routine that writes to every address and then reads back checking that the values return what was written. There are three tests, one that writes the last 8 bytes of the address, one that writes all ones and one that rights all zeroes. The errors appear to be random (meaning the bad data doesn't have a pattern). However the addresses where the errors occur is not. There are no errors ever when 5 specific pins are high on one of the boards, 4 on another, and 6 on the last two. Each time the test is run a different number of errors occur but they range from 100-400 errors over the scope of the whole address range.

What might cause this?

Best Answer

  • Signal integrity?

    What is the length of your ribbon cable? A long cable will cause your beautiful square signal coming out the driver looking bad at the load.

    And what is clock rate of the transmission into the cable? Fast transmission might induce signal integrity issues such as cross-talk between the lines. Try to add a GND line in between every signal in your ribbon cable. It's the speed that tells you if your cable is long or not. (and more precisely, it's the rising/falling time of the signal, not its toggling frequency... )

  • Power integrity? If you have only one small wire for Vcc, this could create a voltage drop that is big enough to disturb your chip. If you have only one GND for the power and all the signals, this might cause the same issue. Did you put enough decoupling caps at the power pins of you chip? (both chips)

    As @Ben Jackson suggested: Is Vcc properly connected?

And last (but not least):

  • Software: Are you sure about the code you use to check your hardware? You might be looking for a hardware bug, when it's your test software that has a bug.

This is just guesses, but related to my experience, it's highly probable that the issue is here somewhere.