plasmo wrote:
Using 2 inverters as delay line so RAM addresses & data are stable before RAM chip select is asserted is somewhat dangerous because this is a race between RAM, latch, and inverter. However, it should work. The slow RAM actually helps you because it may ignore fast glitches. Fast RAM can be more troublesome.
Bill
Thank you Bill.
It's hard to test this, because of course it would write to the location I'm thinking. But it might also write somewhere else, something else. I might not know I have an issue until I start seeing random little issues here and there later down the line.
I am thinking of using faster RAM. I found that the 71256 yesterday, never knew it existed! And that is 20ns.
Thank you again.
Chad
EDIT: I did a lot of datasheet diving, drew pictures, and did some math. I'm now looking in particular at the 71256 SRAM, which claims 20ns.
T=0, /CS or /WE on RAM falls, and also the /OE on the '373 falls.
Time for RAM to write from the falling of /WE or /CS is 15 ns.
The data must be on the bus for 11 ns before that, thus 4 ns after T=0.
The latch opens up around 20ns (could even be 30ns!).
So now the data that should be ready at 4 ns after T=0 is actually ready 20ns after T=0. That's not good.
Each NOT gate is 10ns. So lets redo the timing, with a double-not to the RAM to move it out some. I'll just keep /CS low and use /WE in this case.
T=0, /OE on '373 falls, at the same time it falls on the first NOT gate.
T=10ns, /OE turns into OE on first NOT gate, travels to second not gate.
T=20ns, latch data opened up on bus, also OE turns into /WE on the second NOT gate, so /WE on RAM now falls.
T=24ns, RAM needs valid data, which it now has.
T=35ns, RAM finally writes the data on the bus.
If the latch goes to 30ns it's not going to work, but it says typical is 20ns?? Who knows.
Whelp, I think I'll just keep /CS low and let /OE and /WE do the work.
Thank you all.