User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 371
UG585 (v1.11) September 27, 2016
Chapter 13: SD/SDIO Controller
Burst types such as an 8-beat incrementing burst or a 4-beat incrementing burst, or a single transfer
is used to transfer or receive the data from the system memory mainly to avoid the hold of the AHB
bus by the master for a longer time.
The sequence for using DMA is as follows:
1. Set the system address for DMA in the System Address register.
2. Set the value corresponding to the executed data byte length of one block in the Block Size
register.
3. Set the value corresponding to the executed data block count in the Block Count register.
4. Set the value corresponding to the issued command to the Argument register.
5. Set the value to Multi/Single Block Select and Block Count Enable. Set the value corresponding
to the issued command to Data Transfer Direction, Auto CMD12 Enable, and DMA Enable.
6. Set the value corresponding to the issued command to the Command register.
Note: When writing to the upper byte of the Command register, the SD command is issued.
7. Wait for the command complete interrupt.
8. Write a 1 to the Command Complete in the Normal Interrupt Status register for clearing this bit.
9. Read the Response register and get the necessary information in accordance with the issued
command.
°
DMA Write Transfer
On receiving the Response End Bit from the card for the write command (data is flowing from
the host to the card) the SD host controller acts as the master and requests the AHB bus.
After receiving the grant the host controller starts reading a block of data from system
memory and fills the first half of the FIFO. Whenever a block of data is ready the transmitter
starts sending the data on the SD bus.
While transmitting the data on the SD bus the host controller requests the bus to fill the
second block in the second half of the FIFO. “Ping Pong” FIFOs are used to increase the
throughput. Similarly, the host controller reads a block of data from system memory
whenever a FIFO is empty. This continues until all of the blocks are read from system memory.
A transfer complete interrupt is set only after transferring all of the blocks of data to the card.
°
DMA Read Transfer
The block of data received from the card (data is flowing from the card to the host) is stored
in the first half of the FIFO. Whenever a block of data is ready the SD host controller acts as
the master and request the AHB bus. After receiving the grant the host controller starts
writing a block of data into system memory from the first half of the FIFO.
While transmitting data into system memory the host controller receives the second block of
data and stores it in the second half of the FIFO. Similarly the host controller writes a block
of data into system memory whenever data is ready. This continues until all of the blocks are
transferred to system memory. A transfer complete interrupt is set only after transferring all
of the blocks of data into system memory.
Note: The host controller receives a block of data from the card only when it has room to
store a block of data in the FIFO. When both FIFOs are full the host controller stops the data
coming from the card through a “read wait” mechanism (if the card supports read wait) or
through clock stopping.