Interfacing External SRAM
By
Eric Chan, Tim Bensler
External memory is often necessary when relatively large amounts of memory is required by a FPGA application. Such applications include data compression, DSP chips, or any application that requires large amounts of buffering. The on-board memory of a Altera EP10K20 in a UP1 board is limited to only about 12Kbits (6 2Kbit EAB blocks). Using external SRAM, one can command up to 1Mbyte of memory depending on the availability.
The main advantage of using SRAM over DRAM is that it is easier to interface with. To access DRAM, one needs a memory controller that handles the periodic refresh of the DRAM memory. With SRAM, however, one only needs to supply a constant DC source in order for the SRAM to retain its data. Furthermore, in the case of CMOS static memories, the power requirement is extremely small compared to the DRAM counterparts, allowing the implementation to be battery powered.
SRAM Operation
Here we are assuming that the one Data Bus is used for both the read/write operations. Static RAM is typically accessed as follows:
READ: (Assumes all signals are active low)
WRITE:
Parameter |
SYMBOL |
LH51256L-10 |
UNIT |
|
MIN |
MAX |
|||
Read Cycle Time |
tRC |
100 |
|
ns |
Address access time |
tAA |
|
100 |
ns |
Chip Enable access time |
tACE |
|
100 |
ns |
Output Enable access time |
tOE |
|
50 |
ns |
Output hold time |
tOH |
5 |
|
ns |
CE Low to output in Low-Z |
tLZ |
5 |
|
ns |
OE Low to output in Low-Z |
tOLZ |
5 |
|
ns |
CE High to output in High-Z |
tHZ |
0 |
30 |
ns |
OE High to output in High-Z |
tOHZ |
0 |
30 |
ns |
Parameter |
SYMBOL |
LH51256L-10 |
UNIT |
|
MIN |
MAX |
|||
Write Cycle Time |
tWC |
100 |
|
ns |
CE Low to end of write |
tCW |
90 |
|
ns |
Address valid to end of write |
tAW |
90 |
|
ns |
Address setup time |
tAS |
5 |
|
ns |
Write recovery time |
tWR |
15 |
|
ns |
Write pulse width |
tWP |
50 |
|
ns |
Input data setup time |
tDW |
30 |
|
|
Input data hold time |
tDH |
10 |
|
|
WE High to output in High-Z |
tOW |
0 |
ns |
|
WE Low to output in High-Z |
tWZ |
0 |
30 |
ns |
OE High to output in High-Z |
tOHZ |
0 |
30 |
ns |
Here is the VHDL code used to implement the SRAM interface: