For anybody who ever wondered what exactly the 8088 was doing
while it was wast^H^H^H^Husing four cycles per memory access,
here's an interesting article:
http://www.righto.com/2024/04/intel-8088-bus-state-machine.html
For anybody who ever wondered what exactly the 8088 was doing
while it was wast^H^H^H^Husing four cycles per memory access,
here's an interesting article:
http://www.righto.com/2024/04/intel-8088-bus-state-machine.html
Seems like probably in a similar area as QSPI RAM.
Quick skim, looks like QSPI RAM access looks something like:
Pull CS low;
Send command byte;
Send address bytes (4);
Send/receive data bytes;
CS goes high when transfer is done;
CS going high apparently puts the chip back in its idle state.
If you do a 16-byte burst, this would be ~ 1.4 cycles (DDR) per data
byte, or 2.8 cycles if driving it from a faster SDR clock. A datasheet
for a random QSPI RAM chip I found suggests it has a maximum operating frequency of around 54 MHz (so, a little lower than the DDR chips), and
a lot are apparently "pseudo static" (they are DRAM internally, but also perform their own RAM refresh, appearing as SRAM from the POV of the
external bus interface).
BGB wrote:
Seems like probably in a similar area as QSPI RAM.
Quick skim, looks like QSPI RAM access looks something like:
Pull CS low;
Send command byte;
Send address bytes (4);
Send/receive data bytes;
CS goes high when transfer is done;
CS going high apparently puts the chip back in its idle state.
If you do a 16-byte burst, this would be ~ 1.4 cycles (DDR) per
data byte, or 2.8 cycles if driving it from a faster SDR clock. A
datasheet for a random QSPI RAM chip I found suggests it has a
maximum operating frequency of around 54 MHz (so, a little lower
than the DDR chips), and a lot are apparently "pseudo static" (they
are DRAM internally, but also perform their own RAM refresh,
appearing as SRAM from the POV of the external bus interface).
You are forgetting that DRAM RAS occurs after the first 2 address
bytes are latched, and that CAS occurs after the second 2 address
bits are latched {and that you are in a deRAS deCAS state already.}
QSPI at 54 Mhz is just under 20ns per DRAM address/command event not
that much different than current DDRs
But what current DDRs can do is to partially overlap address/command
with data transfer--I would suspect QSPI could do this too.
In my case, I hadn't found much information about accessing SDcards in anything other than SPI mode, but I guess if it turns out it is
basically just QSPI and the same byte-oriented protocol as before, that
would be useful to know.
When looking around before, I generally only found people talking about
the SPI interfaces. Granted, I didn't have the official specifications
(which seemed to be paywalled and not generally available otherwise). I mostly implemented stuff based on information I found on various websites.
We are talking about 1978 here. Back then, it was 7-bit raw addres
and 7-bit column addresss. I don't know how they applied address bits
above A13. Later on there were chip select and/or output enable signals,
but circa-1978 16-bit DRAM had neither of those. So, it seems, if one
wanted to put more than 16 KB on 8-bit bus, one had to generated
multiple sets of RAS# and CAS# signals.
Seems I was wrong about something before:
The combination of CMD0+CS is what selects SPI mode (for normal SD mode,
the CS signal would not be asserted).
I was mistaken in thinking that it was the stream of FF bytes and then asserting CS near the end (say, the init procedure for the SDcard
involving sending a large number of FF bytes at a fairly low speed, then sending some other commands and boosting the speed to the intended
operating speed).
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 307 |
Nodes: | 16 (3 / 13) |
Uptime: | 130:27:04 |
Calls: | 6,856 |
Calls today: | 2 |
Files: | 12,360 |
Messages: | 5,417,934 |