1.26.19 Static Memory Controller (SMC)
The Static Memory Controller (SMC) generates the signals that control the access to the external memory devices or peripheral devices. It has 6 Chip Selects and a 26-bit address bus. The 32-bit data bus can be configured to interface with 8-, 16-, or 32-bit external devices. Separate read and write control signals allow for direct memory and peripheral interfacing. Read and write signal waveforms are fully parametrizable.
The SMC can manage wait requests from external devices to extend the current access. The SMC is provided with an automatic slow clock mode. In slow clock mode, it switches from user-programmed waveforms to slow-rate specific waveforms on read and write signals. The SMC supports asynchronous burst read in page mode access for page size up to 32 bytes.
Using The Library
Static Memory Controller (SMC) is initialized as configured in the MHC as part of System Initialization.
Library Interface
Static Memory Controller peripheral library provides the following interfaces:
Functions
Name | Description |
---|---|
SMC_Initialize | Initializes Static Memory Controller (SMC) interface |
SMC_DataAddressGet | Returns the External Bus Interface (EBI) address for the requested chip select number |
SMC_CommandWrite | Writes command to the External Bus Interface (EBI) address |
SMC_CommandWrite16 | Writes 16-bit command to the External Bus Interface (EBI) address |
SMC_AddressWrite | Writes address to the External Bus Interface (EBI) address |
SMC_AddressWrite16 | Writes 16-bit address to the External Bus Interface (EBI) address |
SMC_DataWrite | Writes data to the External Bus Interface (EBI) address |
SMC_DataWrite16 | Writes 16-bit data to the External Bus Interface (EBI) address |
SMC_DataRead | Reads data from the External Bus Interface (EBI) address |
SMC_DataRead16 | Reads 16-bit data from the External Bus Interface (EBI) address |
SMC_CallbackRegister | Sets the pointer to the function (and it's context) to be called when the given SMC's interrupt occurred |
PMECC_CallbackRegister | Sets the pointer to the function (and it's context) to be called when the given PMECC's interrupt occurred |
PMERRLOC_CallbackRegister | Sets the pointer to the function (and it's context) to be called when the given PMERRLOC's interrupt occurred |
PMECC_DataPhaseStart | Enables PMECC Write access and start data phase |
PMECC_StatusIsBusy | Returns PMECC busy status |
PMECC_ErrorGet | Returns PMECC error |
PMECC_RemainderGet | Returns PMECC remainder |
PMECC_ECCGet | Returns error correction code (ECC) |
PMERRLOC_ErrorLocationGet | Find and returns error location of memory |
PMERRLOC_ErrorLocationDisable | Disables error location of memory |
PMERRLOC_SigmaSet | Set sigma value to the PMERRLOC register |
PMERRLOC_ErrorLocationFindNumOfRoots | Find the number of roots using PMERRLOC acceleration |
Data types and constants
Name | Type | Description |
---|---|---|
SMC_CALLBACK | Typedef | Defines the data type and function signature for the SMC peripheral callback function |
PMECC_CALLBACK | Typedef | Defines the data type and function signature for the PMECC peripheral callback function |
PMERRLOC_CALLBACK | Typedef | Defines the data type and function signature for the PMERRLOC peripheral callback function |