This post answers the question “What is the difference between synchronous and asynchronous memory?”. Comparing to synchronous, asynchronous memory is not synchronised to the clock, every memory access have it’s own read and write latency and enabled by falling and rising signals, that may happen at any time. Asynchronous memory can also perform burst and memory arbitration function.

Asynchronous memory usually has SRAM, that can be nonvolatile and volatile type. It can also come in various performance.  Processors that have asynchronous memory controller (AMC) share data and address pins with SDRAM controller.

AMC usually translates wishbone signals into control strobes for accessing the asynchronous memory. Controller decodes wishbone cycle types, and generates asynchronous chip selects, byte enable, read/write enable. This memory controller does not support dynamic or region-based latency.

Separate asynchronous RAM controller should be generated if different regions of asynchronous memory require different red/write latency values.

AMC has a possibility to chose which connected device it’s communicating with with AMS (asyncronous memory selects) pin. It also have programmable wait, setup and hold states for effective communication with connected device. AMC can also connect to a range of other devices, like FIFO, FPGA and others.

When AMC is connected to the non-memory device, DMA channel should be used for transferring data.

Big choice of asynchronous memory you can find at the Digi-Key Electronics website.

“Embedded Hardware”, Cypress Developer Community 3.0, LatticeMicro Asynchronous SRAM controller.