User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 548
UG585 (v1.11) September 27, 2016
Chapter 17: SPI Controller
Frequency Ratio Note: The range of the baud rate divider is from a minimum of 4 to a maximum of
256 in binary steps (i.e., divide by 4, 8, 16,... 256).
Example: SCLK for Master Mode
This example shows how to program the SPI_Ref_Clk to 100 MHz and the SCLK to 25 MHz. The
example assumes the I/O PLL is at 1,000 MHz. The CPU_1x clock frequency must be less than
100 MHz.
1. Program SPI_Ref_Clk: Select PLL source, divisors and enable: Write 0x0000_0A01 to the
slcr.SPI_CLK_CTRL register.
a. Select the I/O PLL: [SRCSEL] = 00.
b. Divide the I/O PLL clock by 10: [DIVISOR] = 0x0A.
c. Enable the SPI 0 reference clock: [CLKACT0] = 1.
2. Program the Baud Rate Generator: Write 001 to the spi.Contro_reg0 [BAUD_RATE_DIV] when
configuring the controller, refer to section 17.3.2 Controller Configuration.
Slave Mode SCLK
The controller clocks the MOSI and SS signals with the SCLK from the external master. These signals
are synchronized to the SPI_Ref_Clk and processed by the controller.
Frequency Ratio Note: The SPI_Ref_Clk frequency should be at least 2x the SCLK frequency in order
for the controller to properly detect the start of the word transfer on the SPI bus.
17.5 I/O Interfaces
17.5.1 Protocol
17.5.2 Back-to-Back Transfers
17.5.3 MIO/EMIO Routing
17.5.4 Wiring Connections
17.5.5 MIO/EMIO Signal Tables
17.5.1 Protocol
Master Mode
The controller supports various I/O signaling relationships for master mode. There are four
combinations for setting the phase and polarity control bits, spi.Config_reg0 [CLK_PH] and
[CLK_POL]. These parameters affect the active edge of the serial clock, the assertion of the slave
select and the idle state of the SCLK.