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?

  • 3
    \$\begingroup\$ Sounds like a transmission or timing issue. \$\endgroup\$ – Ignacio Vazquez-Abrams Mar 22 '14 at 4:37
  • 6
    \$\begingroup\$ Forgot to hook up VCC and the chip is being powered by the high address lines through protection diodes? \$\endgroup\$ – Ben Jackson Mar 22 '14 at 6:25
  • \$\begingroup\$ Ditto Ben's comment and add : decoupling caps at the SRAM present and correct? and good grounding to main board? \$\endgroup\$ – user_1818839 Mar 22 '14 at 11:33
  • 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.

  • 1
    \$\begingroup\$ Thank you for your response. You all were right when suspecting the power connection. We attached our oscilloscope to the power and it was going way out of the acceptable range depending on the address. (as much as 0.3V off) Adding capacitors did not seem to help, in fact it seemed to make it slightly worse. The data we are storing is raw image data. By applying a median filter we eliminated the noise without damaging any of the important data. In the future when we have more time we'll try to solve this electrically. \$\endgroup\$ – tylerjw Mar 23 '14 at 21:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.