0
\$\begingroup\$

I've now spent quite a few hours of researching and trying to identify the error, but no luck for me. I'm making a very similar circuit to James Bates RAM video (schematic here: James Bates RAM Schematic).

We can forget the selector ICs, I connected the (MAR)register to address lines of the SRAM (I tied unused input pins to ground). I have transistors with LEDs on every output of the register and output of the SRAM chip, so I can see what's going on. After power-up, I can see some "random data", but when I tie all I/O pins to ground (assuming I have already changed the #OE pin to react as inputs and after every change of address, I changed the #WE pin to 0 for short period of time so basically I'm writing to it). I can write all addresses to logic "0" but when I'm reading it, there seems to be some random moments (on 255 addresses, about 20 examples) where the output is not 0 but some random value.

I'm using CY62256DLL SRAM chip (datasheet here) and a 74HC574 as my register. Is there something I'm missing? All the component values are same as on the schematic above.

Thanks a lot.

[EDIT]

Here is the schematic I put together and output of my logic analyzer (I forgot to connect output enable of the '245 on the schematic, basically it goes on the breadboard as well)

enter image description here

enter image description here

\$\endgroup\$
  • \$\begingroup\$ Is there some schematic? Code? \$\endgroup\$ – Eugene Sh. Jan 2 at 15:13
  • \$\begingroup\$ there is no code yet, im playing with the wires on breadboard before ill be sure. and for the schematic im making one, give me a sec, thanks \$\endgroup\$ – Kralik Jan 2 at 15:16
  • \$\begingroup\$ This is pretty much unanswerable. Likely you aren't writing to the address in question, or you have timing violations when you do so. But since you don't show how the addresses are generated, or how they change in precise timing relation to the write strobe, it's not really possible for anyone to tell you what is specifically wrong. \$\endgroup\$ – Chris Stratton Jan 2 at 16:17
  • \$\begingroup\$ Additionally, as a word of advice, if you're going to bother with an external video memory, pick one that is dual port so that you don't have to work out an arbitration scheme between writing to it and display scanning. Of course no one would build this with low integration chips anymore. \$\endgroup\$ – Chris Stratton Jan 2 at 16:19
  • \$\begingroup\$ I understand, but i dont know hot to show it, what i have described thats on the breadboard i i change the values of the adress and value to store (via jumpers) and then activate the write cycle. The thing is that it works, if i store some value i will see it after i read it, but there is some randomness so cca 20% of change that i will get some other value (typ.255) after i read it. \$\endgroup\$ – Kralik Jan 2 at 16:23

Your Answer

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

Browse other questions tagged or ask your own question.