User manual
Table Of Contents
- Zynq-7000 All Programmable SoC
- Table of Contents
- Ch. 1: Introduction
- Ch. 2: Signals, Interfaces, and Pins
- Ch. 3: Application Processing Unit
- Ch. 4: System Addresses
- Ch. 5: Interconnect
- Ch. 6: Boot and Configuration
- Ch. 7: Interrupts
- Ch. 8: Timers
- Ch. 9: DMA Controller
- Introduction
- Functional Description
- DMA Transfers on the AXI Interconnect
- AXI Transaction Considerations
- DMA Manager
- Multi-channel Data FIFO (MFIFO)
- Memory-to-Memory Transfers
- PL Peripheral AXI Transactions
- PL Peripheral Request Interface
- PL Peripheral - Length Managed by PL Peripheral
- PL Peripheral - Length Managed by DMAC
- Events and Interrupts
- Aborts
- Security
- IP Configuration Options
- Programming Guide for DMA Controller
- Programming Guide for DMA Engine
- Programming Restrictions
- System Functions
- I/O Interface
- Ch. 10: DDR Memory Controller
- Introduction
- AXI Memory Port Interface (DDRI)
- DDR Core and Transaction Scheduler (DDRC)
- DDRC Arbitration
- Controller PHY (DDRP)
- Initialization and Calibration
- DDR Clock Initialization
- DDR IOB Impedance Calibration
- DDR IOB Configuration
- DDR Controller Register Programming
- DRAM Reset and Initialization
- DRAM Input Impedance (ODT) Calibration
- DRAM Output Impedance (RON) Calibration
- DRAM Training
- Write Data Eye Adjustment
- Alternatives to Automatic DRAM Training
- DRAM Write Latency Restriction
- Register Overview
- Error Correction Code (ECC)
- Programming Model
- Ch. 11: Static Memory Controller
- Ch. 12: Quad-SPI Flash Controller
- Ch. 13: SD/SDIO Controller
- Ch. 14: General Purpose I/O (GPIO)
- Ch. 15: USB Host, Device, and OTG Controller
- Introduction
- Functional Description
- Programming Overview and Reference
- Device Mode Control
- Device Endpoint Data Structures
- Device Endpoint Packet Operational Model
- Device Endpoint Descriptor Reference
- Programming Guide for Device Controller
- Programming Guide for Device Endpoint Data Structures
- Host Mode Data Structures
- EHCI Implementation
- Host Data Structures Reference
- Programming Guide for Host Controller
- OTG Description and Reference
- System Functions
- I/O Interfaces
- Ch. 16: Gigabit Ethernet Controller
- Ch. 17: SPI Controller
- Ch. 18: CAN Controller
- Ch. 19: UART Controller
- Ch. 20: I2C Controller
- Ch. 21: Programmable Logic Description
- Ch. 22: Programmable Logic Design Guide
- Ch. 23: Programmable Logic Test and Debug
- Ch. 24: Power Management
- Ch. 25: Clocks
- Ch. 26: Reset System
- Ch. 27: JTAG and DAP Subsystem
- Ch. 28: System Test and Debug
- Ch. 29: On-Chip Memory (OCM)
- Ch. 30: XADC Interface
- Ch. 31: PCI Express
- Ch. 32: Device Secure Boot
- Appx. A: Additional Resources
- Appx. B: Register Details
- Overview
- Acronyms
- Module Summary
- AXI_HP Interface (AFI) (axi_hp)
- CAN Controller (can)
- DDR Memory Controller (ddrc)
- CoreSight Cross Trigger Interface (cti)
- Performance Monitor Unit (cortexa9_pmu)
- CoreSight Program Trace Macrocell (ptm)
- Debug Access Port (dap)
- CoreSight Embedded Trace Buffer (etb)
- PL Fabric Trace Monitor (ftm)
- CoreSight Trace Funnel (funnel)
- CoreSight Intstrumentation Trace Macrocell (itm)
- CoreSight Trace Packet Output (tpiu)
- Device Configuration Interface (devcfg)
- DMA Controller (dmac)
- Gigabit Ethernet Controller (GEM)
- General Purpose I/O (gpio)
- Interconnect QoS (qos301)
- NIC301 Address Region Control (nic301_addr_region_ctrl_registers)
- I2C Controller (IIC)
- L2 Cache (L2Cpl310)
- Application Processing Unit (mpcore)
- On-Chip Memory (ocm)
- Quad-SPI Flash Controller (qspi)
- SD Controller (sdio)
- System Level Control Registers (slcr)
- Static Memory Controller (pl353)
- SPI Controller (SPI)
- System Watchdog Timer (swdt)
- Triple Timer Counter (ttc)
- UART Controller (UART)
- USB Controller (usb)

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.










