Zynq-7000 AP SoC and 7 Series FPGAs MIS v4.1
124
UG586 November 30, 2016
Chapter 1:
DDR3 and DDR2 SDRAM Memory Interface Solution
Column commands can be reordered for the purpose of optimizing memory interface
throughput. The ordering algorithm nominally ensures data coherence. The reordering
feature is explained in greater detail in the
Rank Machines
The rank machines correspond to DRAM ranks. Rank machines monitor the activity of the
bank machines and track rank or device-specific timing parameters. For example, a rank
machine monitors the number of activate commands sent to a rank within a time window.
After the allowed number of activates have been sent, the rank machine generates an
inhibit signal that prevents the bank machines from sending any further activates to the
rank until the time window has shifted enough to allow more activates. Rank machines are
statically assigned to a physical DRAM rank.
Column Machine
The single column machine generates the timing information necessary to manage the DQ
data bus. Although there can be multiple DRAM ranks, because there is a single DQ bus, all
the columns in all DRAM ranks are managed as a single unit. The column machine monitors
commands issued by the bank machines and generates inhibit signals back to the bank
machines so that the DQ bus is utilized in an orderly manner.
Arbitration Block
The arbitration block receives requests to send commands to the DRAM array from the bank
machines. Row commands and column commands are arbitrated independently. For each
command opportunity, the arbiter block selects a row and a column command to forward to
the physical layer. The arbitration block implements a round-robin protocol to ensure
forward progress.
Reordering
DRAM accesses are broken into two quasi-independent parts, row commands and column
commands. Each request occupies a logical queue entry, and each queue entry has an
associated bank machine. These bank machines track the state of the DRAM rank or bank it
is currently bound to, if any.
If necessary, the bank machine attempts to activate the proper rank, bank, or row on behalf
of the current request. In the process of doing so, the bank machine looks at the current
state of the DRAM to decide if various timing parameters are met. Eventually, all timing
parameters are met and the bank machine arbitrates to send the activate. The arbitration is
done in a simple round-robin manner. Arbitration is necessary because several bank
machines might request to send row commands (activate and precharge) at the same time.