Memory Controller
Arbitrate memory transactions for one or more Memory Channel blocks
Libraries:
SoC Blockset /
Memory
Description
The Memory Controller block arbitrates between masters and grants them unique access to shared memory. Configure this block to support multiple channels with various arbitration protocols. The Memory Controller block is also instrumented to log and display performance data, enabling you to debug and understand the performance of your system at simulation time.
The following image shows the implementation of the Memory Controller block.
The numbers in the image represent different latency stages of the block.
A burst-request enters the block.
The request may be delayed by arbitration until it is granted access to the bus. Set the arbitration policy in Interconnect arbitration.
If your model requires an additional delay before the first transfer starts, set that value in Request to first transfer (in clocks).
The burst execution latency is calculated by the burst size, the data-width, the clock frequency, and the Bandwidth derating (%) value.
If your model requires a delay from burst completion until a burst response is issued to the channel, set that value in Last transfer to transaction complete (in clocks).
The memory controller has an internal state, which is visible when using a Logic Analyzer to view simulation and execution metrics. The state values are:
BurstIdle
: At start of simulation, before the block receives a burst request.BurstRequest
: A burst request enters the block.BurstAccepted
: The arbiter accepted the burst for processing.BurstExecuting
: A burst is executing.BurstDone
: A burst request is done executing.BurstComplete
: A burst response is done, and the burst is complete. The burstDone signal is now sent to the master.
For information about visualizing memory controller latencies, see Memory Controller Latency Plots.
Limitations
Soc models do not support backward stepping. For more information on simulation stepping, see Debug Simulations in the Simulink Editor.
The following memory blocks already include a memory controller:
Therefore, when you use one of these blocks, you will get an error if you also add a Memory Controller block to the design.
Ports
Input
Output
Parameters
Extended Capabilities
Version History
Introduced in R2019a