SDRAM interface slashes pin count
Tim Hellman, M&M Consulting, Concord, MA -- 3/29/2001
Many designs need deep buffering but don't require ultrahigh-memory
bandwidth. Examples include image and audio processing, as well as some
deep-FIFO applications. These designs often use a single ×8 SDRAM device that
connects to an FPGA or ASIC. This approach solves the buffering problem but also
burns a lot of valuable pins, which can be as many as 27 for a single SDRAM
device. The design in Figure 1 takes advantage of the burst counter inside the SDRAM to reduce this pin count to 18 by multiplexing the lower eight address lines with the data. The efficiency loss is low; the design requires only one extra clock during the write burst. Figure 1 uses an 8Mx8, 125-MHz SDRAM, but this technique works with any SDRAM.The read- and write-cycle timing diagrams reveal the secret (Figure 2). The figure shows a burst of 4, but any power-of-2 burst works. These diagrams assume a 50-MHz system clock, a read latency of 2, and a full-page burst. During the read cycle (Figure 2a), the data bus is inactive during the initial portion of the cycle (when the row and column addresses are presented), so there's no problem with using the data bus to carry address data. A precharge command ends the burst and prepares the RAM for the next access.
For the write cycle, however, some trickery is necessary (Figure 2b). Normally, the first byte of write data is presented to the SDRAM with the Write command, along with the starting column address for that burst. By asserting the DQM (data-mask) signal, the SDRAM ignores the data lines during this phase, thus allowing them to be used for the column address.
Note that the DQM signal does not prevent the internal column address from incrementing, however. Thus, the write-column address presented with the Write command must be one less than the desired burst starting address. For FIFO designs, this requirement is trivial because you can initialize the write-address column counter to –1 rather than 0. The column-address counter in the SDRAM wraps around at the end of the column, so this approach works even at the beginning of a column.
You can extend this idea to ×16 SDRAMs and to multiplex a few more of the address lines while getting a boost in memory bandwidth. If you do extend the idea, be careful with SDRAM line A10 because this line has special meaning during some SDRAM commands. You can also use this technique with double-data-rate SDRAMs.
© 2009, Reed Business Information, a division of Reed Elsevier Inc. All Rights Reserved.

