Pg020 Axi Vdma
Pg020 Axi Vdma
Chapter 1: Overview
Feature Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Unsupported Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Licensing and Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Appendix A: Updating
Migrating to the Vivado Design Suite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Upgrading in the Vivado Design Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Appendix B: Debugging
Finding Help on Xilinx.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Vivado Design Suite Debug Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Hardware Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Introduction
The Xilinx® LogiCORE™ IP AXI VDMA core is a LogiCORE IP Facts Table
soft IP core. It provides high-bandwidth direct Core Specifics
memory access between memory and Supported UltraScale+™
AXI4-Stream video type target peripherals Device UltraScale™
including peripherals which support the Family (1) Zynq®-7000, 7 Series
Example
• AXI4 Compliant Design
Provided
• Primary AXI4 data width support of 32, 64, Test Bench Provided
128, 256, 512, and 1,024 bits Constraints
Provided
File
• Primary AXI4-Stream data width support of
multiples of 8 up to 1,024 bits Simulation
Not Provided
Model
• Optional Data Realignment Engine Supported
Standalone and Linux
• Optional Genlock Synchronization S/W Drivers(3)
Overview
Many video applications require frame buffers to handle frame rate changes or changes to
the image dimensions (scaling or cropping). The AXI VDMA is designed to allow for efficient
high-bandwidth access between the AXI4-Stream video interface and the AXI4 interface.
Control and
Registers AXI4-Lite
Status
X13213
After registers are programmed through the AXI4-Lite interface, the Control/ Status logic
block generates appropriate commands to the DataMover to initiate Write and Read
commands on the AXI4 Master interface.
A configurable asynchronous line buffer is used to temporarily hold the pixel data prior to
writing it out to the AXI4-Memory Map interface or the AXI4-Stream interface.
In the Write path, the AXI VDMA accepts frames on the AXI4-Stream Slave interface and
writes it to system memory using the AXI4 Master interface.
In the Read path, the AXI VDMA uses the AXI4 Master interface for reading frames from
system memory and outputs it on the AXI4-Stream Master interface.
Both write and read paths operate independently. The AXI VDMA also provides an option to
synchronize the incoming/outgoing frames with an external synchronization signal.
Feature Summary
AXI4 Compliant
The AXI VDMA core is fully compliant with the AXI4 interface, AXI4-Stream interface and
AXI4-Lite interface. The AXI4-Stream also supports the Video Protocol as described in the
“Video IP: AXI Feature Adoption” section of the Vivado AXI Reference Guide (UG1037)[Ref 1].
32 Frame Buffers
The AXI VDMA core supports addressing up to 32 frame buffers for a 32-bit address space
and up to 8 frame buffers for more than a 32-bit address space.
Genlock Synchronization
The AXI VDMA supports a mechanism to synchronize writing and reading of frames in the
frame buffer through Genlock synchronization. Each channel of the AXI VDMA can be
designed to operate as either a Genlock Master/Slave or Dynamic Genlock Master/Slave. By
using this feature, the master and slave are kept in sync by not allowing both to use the
same buffer at the same time.
The AXI VDMA core supports internal Genlock bus by default when both read and write
channels are selected. This eliminates the need for an external connection between the
write and read channels. See Genlock Synchronization in Chapter 2 for more details.
Asynchronous Channels
The AXI VDMA core supports asynchronous clock domains for AXI4-Lite, S2MM
AXI4-Stream interface, Memory Map to Stream (MM2S) AXI4-Stream interface, Stream to
Memory Map (S2MM) AXI4 interface and MM2S AXI4 interface.
Vertical Flip
The AXI VDMA core supports Vertical Flip with S2MM as the path and Enable Vertical Flip
(Advanced tab) is selected.
Applications
The AXI VDMA core provides high-speed data movement between system memory and the
AXI4-Stream Video Protocol Video IP. See General Use Cases in Chapter 6 for information
and instructions for a quick bring-up of AXI VDMA.
Unsupported Features
The following AXI4 features are not supported by the AXI VDMA design.
Product Specification
Performance
The AXI VDMA is characterized as per the benchmarking methodology described in the
appendix in the Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 2]. Table 2-1
shows the results of the characterization runs.
Note: Maximum frequencies for Zynq®-7000 All Programmable SoCs and UltraScale™ devices are
expected to be similar to 7 series devices.
Table 2‐1: Maximum Frequencies
Family Speed Grade Fmax (MHz)
AXI4 AXI4-Stream AXI4-Lite
Virtex®-7 200 200 180
Kintex®-7 –1 200 200 180
Artix®-7 150 150 120
Latency
Table 2-2 shows the AXI VDMA core latency cycles measured on write (s2mm) and read
(mm2s) paths. It does not include system dependent latency or throttling.
Throughput
Table 2-3 shows the AXI VDMA throughput measured for different data widths. It was
measured using standard High Definition (HD) frames on hardware.
Table 2‐3: AXI VDMA Throughput
Memory Map and Streaming Data Widths
(in bits) Throughput (frames/sec)
32 96
64 192
128 384
256 500
512 680
Resource Utilization
For full details about performance and resource utilization, visit the
Performance and Resource Utilization web page.
Port Descriptions
This section describes the details for each interface. In addition, detailed information about
configuration and control registers is included.
Timing Diagrams
Example Read (MM2S) Path Timing
Figure 2-1 illustrates example timing on the MM2S channel for Vertical Size = 5 lines,
Horizontal Size = 16, bytes, and Stride = 32 bytes. The figure shows the m_axi_mm2s and
m_axis_mm2s interfaces.
m_axi_mm2s_aclk
mm2s_fsync
m_axi_mm2s_arready
m_axi_mm2s_arvalid
m_axi_mm2s_rvalid
m_axi_mm2s_rready
m_axi_mm2s_rlast
m_axis_mm2s_tready
m_axis_mm2s_tvalid
m_axis_mm2s_tlast
X13750
Dataflow: After the reception of s2mm_fsync, AXI VDMA drives s2mm_fsync_out and
s_axis_s2mm_tready to indicate its readiness to receive a frame on the streaming
interface. Incoming streaming data is stored in the line buffer and driven onto the mm side
by asserting m_axi_s2mm_awvalid and subsequently driving data on
m_axi_s2mm_wdata along with m_axi_s2mm_wvalid.
X-Ref Target - Figure 2-2
m_axi_s2mm_aclk
s2mm_fsync
s2mm_fsync_out
s_axis_s2mm_tready
s_axis_s2mm_tvalid
s_axis_s2mm_tlast
m_axi_s2mm_awready
m_axi_s2mm_awvalid
m_axi_s2mm_wvalid
m_axi_s2mm_wready
m_axi_s2mm_wlast
X13749
Register Space
The AXI VDMA core register space is shown in Table 2-5. The AXI VDMA registers are
memory-mapped into non-cacheable memory space. This memory space must be aligned
on an AXI word (32-bit) boundary.
Note: The AXI4-Lite write access register is updated by the 32-bit AXI Write Data (*_wdata) signal,
and is not impacted by the AXI Write Data Strobe (*_wstrb) signal. For a Write, both the AXI Write
Address Valid (*_awvalid) and AXI Write Data Valid (*_wvalid) signals should be asserted
together.
Endianess
All registers are in little endian format, as shown in Figure 2-3.
X-Ref Target - Figure 2-3
MSB LSB
Addr Offset 0x03 Addr Offset 0x02 Addr Offset 0x01 Addr Offset 0x00
31 BYTE3 24 23 BYTE2 16 15 BYTE1 8 7 BYTE0 0
X13752
Notes:
1. Start Addresses 2 to 32 for MM2S and S2MM depend on the Frame Buffers parameter. Start address registers greater than the
Frame Buffers setting are reserved. See the MM2S_REG_INDEX (MM2S Register Index – Offset 14h) and S2MM_REG_INDEX
(S2MM Register Index – Offset 44h) register definitions for accessing 32 start address registers.
2. When AXI VDMA is configured for an address space greater than 32, each start address is specified by a combination of two
registers. The first register specifies the LSB 32 bits of address, while the next register specifies the MSB 32 bits of address.
For example, 5Ch will specify the LSB bits while 60h will specify the MSB bits of the first start address.
3. Register will be enabled only when S2MM is Enabled.
31 24 23 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DlyCnt_Irq
VDMAIntErr Halted
RSVD RSVD RSVD VDMADecErr RSVD
31 24 23 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
31 0
RSVD
MM2S_REG_INDEX
X13745
31 29 28 24 23 21 20 16 15 13 12 8 7 5 4 1 0
31 28 27 20 19 16 15 0
Xilinx
Major Version Minor Version Revision
Internal X13738
DlyCnt_IrqEn
Circular_Park
Repeat_En WrPntrNmbr RSVD GenlockEn
31 24 23 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VDMADecErr
EOLLateErr SOFLateErr
VDMASlvErr
DlyCnt_Irq
RSVD RSVD
31 24 23 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IRQDelayCntSts
IRQFrameCntSts ERR_Irq EOLEarlyErr Halted
VDMAIntErr
FrmCnt_Irq SOFEarlyErr
X13214
1. First, clear all error bits in the S2MM_VDMASR register (bit 4 to bit 14).
2. Then, set/change the S2MM_VDMA_IRQ_MASK register.
X-Ref Target - Figure 2-11
IRQMaskSOFEarlyErr
IRQMaskSOFLateErr
31 4 3 2 1 0
RSVD IRQMaskEOLLateErr
IRQMaskEOLEarlyErr
X13215
31 0
RSVD
S2MM_REG_INDEX
X13740
31 13 12 0
31 16 15 0
31 29 28 24 23 15 0
When AXI VDMA is configured for an address space greater than 32, a maximum of 16
registers are available. Two registers are used to specify an address that is more than 32
bits. The first register is used to specify LSB 32 bits while the next register is used to specify
the MSB 32 bits of any start address. Therefore with an address space greater than 32 you
can specify a maximum of 8 frame buffers, each 64 bits wide.
X-Ref Target - Figure 2-16
31 Start Address 1 0
.
31 . 0
(1)
31 Start Address N 0
1. N = Frame Buffers in XGUI
X13744
31 13 12 0
31 16 15 0
31 29 28 24 23 16 15 0
When AXI VDMA is configured for an address space greater than 32, a maximum of 16
registers are available. Two registers are used to specify an address that is more than 32
bits. The first register is used to specify LSB 32 bits while the next register is used to specify
the MSB 32 bits of any start address.
Therefore with an address space greater than 32 you can specify a maximum of 8 frame
buffers, each 64 bits wide.
X-Ref Target - Figure 2-20
31 Start Address 1 0
.
31 . 0
(1)
31 Start Address N 0
1. N = Frame Buffers in XGUI
X13739
Notes:
1. The writes and reads to this register are allowed only when S2MM is enabled and Enable Vertical Flip is selected
from the Advanced tab. See Figure 4-2.
2. When Enable Vertical Flip is selected then by default the image is flipped and later the flip can be controlled
using the Enable Vertical Flip register.
3. It is recommended to change this bit when the VDMA is in IDLE or stop condition.
Genlock Synchronization
In many video applications, a producer of data runs at a different rate than the consumer of
that data. To avoid the potential ill effects such that a rate mismatch can cause, frame
buffering is often used. Frame buffering allocates multiple frames worth of memory to be
used to hold the data. The data producer writes to one buffer while the consumer reads
from another.
The Genlock feature of the AXI VDMA compensates for this by preventing the read and write
channels from accessing the same frame simultaneously.
The AXI VDMA supports four modes of Genlock synchronization. They are Genlock Master,
Genlock Slave, Dynamic Genlock Master and Dynamic Genlock Slave. Figure 2-21 and
Figure 2-22 show the valid Genlock Connections.
*frame_ptr_out *frame_ptr_in
Write/Read Write/Read
Genlock Master Genlock Slave
X13748
*frame_ptr_out *frame_ptr_in
Write/Read Write/Read
Genlock Master Genlock Slave
*frame_ptr_in *frame_ptr_out
X13753
Figure 2‐22: Dynamic Genlock Master and Dynamic Genlock Slave Connection
Genlock Master
Read (MM2S) channel: When configured as Genlock Master, the channel does not skip or
repeat the frames. It outputs the current frame number on mm2s_frame_ptr_out. It does
not monitor the frame pointer values on mm2s_frame_ptr_in. Genlock Slave should
follow the Genlock Master with a predetermined frame delay value set in its
*frmdly_stride[28:24].
Write (S2MM) channel: When configured as Genlock Master, the channel does not skip or
repeat the frames. It outputs the current frame number on s2mm_frame_ptr_out. It does
not monitor the frame pointer values on s2mm_frame_ptr_in. Genlock Slave should
follow the Genlock Master with a predetermined frame delay value set in its
*frmdly_stride[28:24].
Genlock Slave
Read (MM2S) channel: When configured as Genlock Slave, the channel tries to catch up
with the Genlock Master either by skipping or repeating frames. It samples the Genlock
Master frame number on mm2s_frame_ptr_in and operates with a predetermined frame
delay value set in its mm2s_frmdly_stride[28:24]. It outputs its current frame number
on mm2s_frame_ptr_out for status purpose.
To set up the channel in Genlock Slave mode, the following settings should be used:
Write (S2MM) channel: When configured as Genlock Slave, the channel tries to catch up
with the Genlock Master either by skipping or repeating frames. It samples the Genlock
Master frame number on s2mm_frame_ptr_in and operates with a predetermined frame
delay value set in its s2mm_frmdly_stride[28:24]. It outputs its current frame number
on s2mm_frame_ptr_out for status purpose.
To set up the channel in Genlock Slave mode, the following settings should be used:
To set up the channel in Dynamic Genlock Master mode, the following settings should be
used:
Example: In case of three frame stores, the Dynamic Genlock Master will rotate around
0,1,2,0,1,2 and so on as long as it is not stepping on the Slave buffer. If it does detect that
it is stepping on the Slave buffer, it skips that buffer and keeps on rotating. Thus if the Slave
buffer is 1 for a long time, the Master rotates between 0,2,0,2 and so on.
Write (S2MM) channel: When configured as Dynamic Genlock Master, the channel skips
the frame buffers that Dynamic Genlock Slave is operating on. It is done by either skipping
or repeating frames. It samples the Dynamic Genlock Slave frame number on
s2mm_frame_ptr_in. It outputs the previously accessed frame number on
s2mm_frame_ptr_out.
To set up the channel in Dynamic Genlock Master mode, the following settings should be
used:
To set up the channel in Dynamic Genlock Slave mode, the following settings should be
used:
Write (S2MM) channel: When configured as a Dynamic Genlock Slave, the channel
accesses the previous frame that the Dynamic Genlock Master operated on. It samples the
Dynamic Genlock Master frame number on s2mm_frame_ptr_in. It outputs the current
accessed frame number on s2mm_frame_ptr_out.
To set up the AXI VDMA in Dynamic Genlock Slave mode, the following settings should be
used:
Figure 2-23 illustrates the simple timing of the Genlock operation. In this example,
Write(S2MM) channel has been configured as the Genlock Master and Read(MM2S) channel
has been configured as the Genlock Slave and Write channel frame rate is faster than that
of Read channel.
As seen in Figure 2-23, in the time the Write channel cycles through frame 0, 1, 2 and back
to 0, the Read channel has only cycled through two frame.
Due to the slow frame rate of the Read channel compared to the Write channel, the Read
channel processes frame 2 then frame 0 then frame 2 again, skipping frame 1.
X-Ref Target - Figure 2-23
SMM?FRAME?REF
SMM?FSYNC
MMS?FSYNC
MMS?FRAME?REF
The Genlock Master uses the index of the Start Address register to specify which Start
Address register the Genlock Slave should use. This Start Address register index is encoded
as a Gray code value and appears on mm2s_frame_ptr_out and s2mm_frame_ptr_out
for the MM2S and S2MM channels respectively.
Figure 2-24 illustrates the simple timing of the Dynamic Genlock operation. In this example,
the Write (S2MM) channel has been configured as the Dynamic Genlock Master and Read
(MM2S) channel has been configured as the Dynamic Genlock Slave and Write channel
frame rate is faster than that of Read channel.
• Master does not step onto the Slave current working frame.
• Slave works on the last completed frame by Master.
In Figure 2-24, after cycling through frame 0, 1, 2, the Write channel finds the Read channel
on frame 0, and therefore skips this frame and moves to frame 1. The Read channel
processes the last completed frame by the Write channel.
X-Ref Target - Figure 2-24
SMM?FRAME?REF
SMM?FSYNC
MMS?FSYNC
MMS?FRAME?REF
Errors
Any detected error on the primary datapath (that is, VDMAIntErr, VDMASlvErr, and
VDMADecErr) results in the associated channel (MM2S or S2MM) to halt gracefully. To
resume operations, a reset must be issued, either soft or hard. A soft reset can be issued to
the channel that logged the error. Hard reset will reset the whole VDMA engine. The
following sections describe the possible errors and their causes.
VDMAIntErr
This error occurs if the VSIZE and/or HSIZE register for the respective channel = 0 when the
VSIZE register was written. This error also occurs when there is a frame size mismatch
between the programmed vsize and the received(S2MM path)/transmitted(MM2S path)
lines.
VDMASlvErr
VDMA Slave Error occurs when the slave to/from which data are transferred responds with
a SLVERR on the memory map interface.
VDMADecErr
A VDMA Decode Error occurs when the address request is targeted to an address that does
not exist. As an example, the valid base address offset for DDR might be assigned in IP
integrator, generally defaulting to 0x80000000. If START_ADDRESS (1 to n) is set to values
outside of the range of addresses for the DDR (or other connected slave), this error will
occur because the AXI Interconnect will not be able to decode the address to a valid slave.
Generate the core using the Vivado® Design Suite. See Chapter 4, Customizing and
Generating the Core.
The core is delivered through the Vivado Design Suite with an HDL example design built
around the core, allowing the functionality of the core to be demonstrated using either a
simulation package or in hardware, if placed on a suitable board. For details about the
Vivado Design Suite example design, see Chapter 5, Example Design.
Also see Designing High-Performance Video Systems in 7 Series FPGAs with the AXI
Interconnect (XAPP741) [Ref 3], AXI VDMA Reference Design (XAPP742) [Ref 4], AXI
Multi-Ported Memory Controller (XAPP739) [Ref 9], and Designing High-Performance Video
Systems with the AXI Interconnect (XAPP740) [Ref 10] for various system configuration using
AXI VDMA.
Clocking
AXI VDMA provides two clocking modes of operation: asynchronous and synchronous. In
async mode VDMA control, MM2S and S2MM Primary datapaths can all run asynchronously
from each other. Checking Enable Asynchronous Mode in the Vivado IDE enables this
mode and creates five clock domains.
In asynchronous mode, s_axi_lite_aclk clock must have a lower frequency than both
m_axi_mm2s_aclk and m_axi_s2mm_aclk clocks.
IMPORTANT: Make sure the memory map side clock frequency is equal to or greater than the
streaming side clock frequency to achieve required performance.
In synchronous mode, all logic runs in a single clock domain. The signals
m_axi_mm2s_aclk, m_axi_s2mm_aclk, m_axis_mm2s_aclk, and
s_axis_s2mm_aclk must be tied to the same source otherwise undefined results occur.
The s_axi_lite_aclk can be connected to a slower clock.
Frequency
Changing clock frequencies dynamically is supported on the AXI4-Stream. This allows you
to dynamically change the AXI4-Stream clocks (m_axis_mm2s_aclk and
s_axis_s2mm_clk). Dynamic frequency changes of m_axi_mm2s_aclk,
m_axi_s2mm_aclk and s_axi_lite_aclk are not supported.
Dynamic Resolution
This feature allows you to dynamically change both the streaming clock and frame format
without going through the reset cycle. For example, you will be able to switch between
HD1080 to National Television System Committee/Phase Alternating Line (NTSC/PAL)
without going through the reset cycle.
Table 3-1 illustrates signal sets and their corresponding clocks in asynchronous mode.
Resets
The AXI VDMA uses an active-Low reset input axi_resetn. The reset signal must be
synchronous to the s_axi_lite_aclk signal. Each time this reset is asserted, it should be
asserted for a minimum of sixteen clock cycles of the slowest clock. All registers are reset to
power-on conditions; all queues are flushed; all internal logic is returned to power-on
conditions.
AXI VDMA also provides Soft Reset with the VDMA Control Register for each channel.
Issuing a Soft Reset by setting the MM2S VDMA Control Register Reset bit to 1 or the S2MM
VDMA Control Register Reset bit to 1 causes the respective channel to reset gracefully. All
pending transactions on the AXI interface will be completed. Resetting one channel with the
VDMA Control Register does not reset the other channel.
Programming Sequence
AXI VDMA operations begin with the setup of the video parameter and start address
registers and the VDMA control registers. The following lists the minimum steps, in order,
required to start AXI VDMA operations:
1. Write control information to the channel VDMACR register (Offset 0x00 for MM2S and
0x30 for S2MM) to set interrupt enables if desired, and set VDMACR.RS=1 to start the
AXI VDMA channel running.
2. Write a valid video frame buffer start address to the channel START_ADDRESS register 1
to N where N equals Frame Buffers (Offset 0x5C up to 0x98 for MM2S and 0xAC up to
0xE8 for S2MM). Set the REG_INDEX register if required.
When AXI VDMA is configured for an address space greater than 32, each start address
is to be programmed as a combination of two registers where the first register is used
to specify LSB 32 bits of address while the next register is used to specify MSB 32 bits.
3. Write a valid Frame Delay (valid only for Genlock Slave) and Stride to the channel
FRMDLY_STRIDE register (Offset 0x58 for MM2S and 0xA8 for S2MM).
4. Write a valid Horizontal Size to the channel HSIZE register (Offset 0x54 for MM2S and
0xA4 for S2MM).
5. Write a valid Vertical Size to the channel VSIZE register (Offset 0x50 for MM2S and
0xA0 for S2MM). This starts the channel transferring video data.
You should be able to update video parameter settings at any time while the engine is
running by writing new video parameters and a video start address through the AXI4-Lite
control interface. The newly written video transfer values take effect on the next frame
boundary after you write the vertical size register for the respective channel.
To update video parameters dynamically while AXI VDMA operations are ongoing, a similar
process to the start steps is needed.
1. Write the Frame Delay, Stride, and Horizontal Size in any order for the associated
channel.
2. Write the Vertical Size. When VSize is written, the video register values are transferred to
an internal register block. On the next frame boundary the VDMA controller for the
associated channel starts transfers using the newly updated values.
Interrupts
An interrupt output is provided for each channel (MM2S and S2MM). This output drives
High when there is an error if the error interrupt is enabled.
1. Open a project by selecting File > Open Project or create a new project by selecting
File > New Project.
2. Open IP Catalog and choose AXI Infrastructure/Video & Image Processing in the
View by Function pane.
3. Double-click AXI Video Direct Memory Access to display the AXI VDMA Vivado
Integrated Design Environment (IDE).
For details, see the Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 2] and
the Vivado Design Suite User Guide: Getting Started (UG910) [Ref 6].
Note: Figures in this chapter are illustrations of the Vivado IDE. This layout might vary from the
current version.
If you are customizing and generating the core in the IP integrator, see the Vivado Design
Suite User Guide: Designing IP Subsystems using IP Integrator (UG994) [Ref 8] for detailed
information. Vivado IDE might auto-compute certain configuration values when validating
or generating the design, as noted in this section. You can view the parameter value after
successful completion of the validate_bd_design command.
X-Ref Target - Figure 4-1
Basic Options
The following describes the basic options that affect both channels of the AXI VDMA core.
Frame Buffers
This option enables selection of the number of frame buffer storage locations to be
processed by AXI VDMA. For an address space greater than 32 bits a maximum of 8 frame
buffers are allowed.
IMPORTANT: When using this IP in IP integrator, this parameter is auto computed and set based on the
stream data width. You can override the automatic settings. In that case, you should ensure that the
manual set value for this parameter is either equal to or greater than the stream data width.
This option specifies the maximum size of the burst cycles on the AXI S2MM memory map
Write interface. For example, if the burst length is set to 16, the maximum burst on the
memory map interface is 16 data beats.
This option enables selection of the AXI4-Stream data width for the S2MM channel. Valid
values are multiples of 8 up to 1,024 bits. This value must be less than or equal to the
Memory Map Data Width.
IMPORTANT: When using this IP in IP integrator, this parameter is auto computed and set based on the
connected master stream data width.
This option enables selection of the line buffer depth for the S2MM channel (line buffer is
stream data wide).
This option enables selection of the desired AXI4 data width for the MM2S channel. Valid
values are 32, 64, 128, 256, 512 and 1,024.
This option specifies the maximum size of the burst cycles on the AXI MM2S memory map
Read interface. For example, if the burst length is set to 16, the maximum burst on the
memory map interface is 16 data beats.
This option enables selection of the AXI4-Stream data width for the MM2S channel. Valid
values are multiples of 8 up to 1,024 bits. This value must be less than or equal to the
Memory Map Data Width.
This option enables selection of the line buffer depth for the MM2S channel (line buffer is
stream data wide).
X-Ref Target - Figure 4-3
Advanced Options
The following describes advanced options that affect both channels of the AXI VDMA core.
IMPORTANT: When using this IP in IP integrator, this parameter is auto computed and set based on the
clock ports connection of the core.
Fsync Options
This option is used to set various frame synchronization modes of AXI VDMA.
• None
Selecting this option enables AXI VDMA in free run mode. In free run mode, video data
are transferred as quickly as possible without waiting for any external trigger.
• s2mm fsync
When selected, the AXI VDMA starts processing each frame on the falling edge of the
s2mm_fsync input.
• s2mm tuser
When selected, the AXI VDMA expects the start-of-frame (SOF) over the AXI4-Stream
s_axis_s2mm_tuser(0) signal. The SOF pulse is 1 valid transfer wide, and must
coincide with the first pixel of the frame.
• Genlock Mode
• Master
• Slave
When selected, Slave follows the Master by the frames set in the Frame Delay register
either by skipping or repeating frames. The GenlockEn (S2MM_VDMACR[3]=1) register
should be set to enable genlock synchronization between the Master and Slave. It
outputs the current frame number on the mm2s_frame_ptr_out port.
• Dynamic Master
When selected, AXI VDMA skips the frame buffers that the Dynamic Slave is working on.
It outputs the completed frame number on the s2mm_frame_ptr_out port.
• Dynamic Slave
When selected, AXI VDMA follows the Dynamic Master either by skipping or repeating
frames. It outputs the current frame number on the s2mm_frame_ptr_out port.
Enables or disables the S2MM Data Realignment Engine. When checked, the data
realignment engine is enabled and allows data realignment to the byte (8 bits) level on the
S2MM Memory Map datapath. When unchecked, the Start Address must be aligned to
multiples of the write memory map data width bytes. Also Horizontal Size and Stride must
be specified in multiples of write memory map data width bytes. For example, if read
memory map data width = 32, data is aligned if the Start Address at word offsets(32-bit
offset), that is, 0x0, 0x4, 0x8, 0xC, and so on. Horizontal Size is 0x4, 0x8, 0xC and so on.
Stride is 0x4, 0x8, 0xC, and so on.
IMPORTANT: Having an unaligned Start Address, HSize, and/or Stride when Allow Unaligned Transfers
is unchecked will result in undefined behavior.
Note: The Data Realignment Engine only supports AXI4-Stream data width settings of 64-bits and
less.
• Fsync Options
This option is used to set various frame synchronization modes of AXI VDMA.
• None
Selecting this option enables AXI VDMA in free run mode. In free run mode, video data
are transferred as quickly as possible without waiting for any external trigger.
When selected the AXI VDMA starts processing each frame on the falling edge of the
mm2s_fsync input.
GenLock Mode
• Master
When selected, outputs the current frame number on the mm2s_frame_ptr_out port.
• Slave
When selected, Slave follows the Master by the frames set in the Frame Delay register
either by skipping or repeating frames. GenlockEn (MM2S_VDMACR[3]=1) register
should be set to enable genlock synchronization between Master and Slave. It outputs
the current frame number on the s2mm_frame_ptr_out port.
• Dynamic Master
When selected, AXI VDMA skips the frame buffers that the Dynamic Slave is working on.
It outputs the completed frame number on the mm2s_frame_ptr_out port.
• Dynamic Slave
When selected, AXI VDMA follows the Dynamic Master either by skipping or repeating
frames. It outputs the current frame number on the mm2s_frame_ptr_out port.
Enables or disables the MM2S Data Realignment Engine. When checked, the Data
Realignment Engine is enabled and allows data realignment to the byte (8 bits) level on the
MM2S Memory Map datapath.
When disabled, the Start Address must be aligned to multiples of the read memory map
data width bytes. Also Horizontal Size and Stride must be specified in multiples of read
memory map data width bytes. For example, if read memory map data width = 32, data is
aligned if the Start Address at word offsets(32-bit offset), that is, 0x0, 0x4, 0x8, 0xC, and so
on. Horizontal Size is 0x4, 0x8, 0xC and so on. Stride is 0x4, 0x8, 0xC, and so on.
IMPORTANT: Having an unaligned Start Address, HSize, and/or Stride when Allow Unaligned Transfers
is unchecked will result in undefined behavior.
Note: The Data Realignment Engine only supports AXI4-Stream data width settings of 64-bits and
less.
User Parameters
Table 4-1 shows the relationship between the fields in the Vivado IDE and the User
Parameters (which can be viewed in the Tcl Console).
Any hidden parameter mentioned in Table 4-2 can be enabled in the Vivado design tools
using the following command.
To enable all debug options and ports, use the following command.
To enable the any hidden parameter mentioned in Table 4-2 in the IP integrator, use the
following command.
Note: You need to regenerate output products for the core after setting the parameter using the Tcl
Console command in the Vivado design tools.
FRMPTR_STS (MM2S and S2MM Current Frame Pointer Status – Offset 24h)
This register provides the current operating frame pointer status of both MM2S and S2MM
channels. This helps in tracking frame pointers when they are operating in different Genlock
modes.
Output Generation
For details, see the Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 2].
Required Constraints
This section is not applicable for this IP core.
Clock Frequencies
In synchronous mode, all clocks run at the same frequency and are derived from the same
source. There are no multicycle or false paths in this design.
In asynchronous mode, all clocks are treated asynchronously to each other and the core will
write out appropriate clock domain crossing constraints.
Table 4-6 lists the files delivered for the core constraints.
Table 4‐6: Core Constraints Files
Name Description
<component_name>.xdc Core constraints
<component_name>_clocks.xdc Core constraints
Table 4-7 lists the OOC constraint file for the core.
Clock Management
This section is not applicable for this IP core.
Clock Placement
This section is not applicable for this IP core.
Banking
This section is not applicable for this IP core.
Transceiver Placement
This section is not applicable for this IP core.
Simulation
For comprehensive information about Vivado simulation components, as well as
information about using supported third-party tools, see the Vivado Design Suite User
Guide: Logic Simulation (UG900) [Ref 7].
IMPORTANT: For cores targeting 7 series or Zynq®-7000 devices, UNIFAST libraries are not supported.
Xilinx IP is tested and qualified with UNISIM libraries only.
Example Design
This chapter contains information about the provided example design in the Vivado®
Design Suite. One of the most common use cases, the triple frame buffer, is discussed as an
example in detail.
For detailed information about available example designs for the VDMA core, see AXI
Multi-Ported Memory Controller (XAPP739) [Ref 9], Designing High-Performance Video
Systems with the AXI Interconnect (XAPP740) [Ref 10], Designing High-Performance Video
Systems in 7 Series FPGAs with the AXI Interconnect (XAPP741) [Ref 3], AXI VDMA Reference
Design (XAPP742) [Ref 4], and AXI VDMA Reference Design for the Kintex KC705 Evaluation
Board (XAPP1218) [Ref 5].
The top module instantiates all components of the core and the example designs that are
needed to implement the design in hardware, as shown in Figure 5-1. This includes the
clock generator (MMCM), register configuration, data generator, and data checker modules.
<Componetname>_exdes.vhd (top)
Fsync Generator
fsync_gen_logic.vhd
AXI4 RD AXIS RD
Read Data Generator Read Data Checker
axi4_write_master.vhd
axis_data_read.vhd
DUT
AXI4 WR AXIS WR
Write Data Checker Write Data Generator
axi_s2mm_read.vhd axis_write_master.vhd
AXILite
clock_in To example
design modules
Clock Generator Register configuration
X13589
Clock generator: The mixed-mode clock manager (MMCM) is used to generate the clocks
for the example design. When the DUT is in synchronous mode, MMCM generates a 50 MHz
clock for all the AXI interfaces in the example design. When the DUT is in asynchronous
mode, the MMCM generates a 50 MHz clock for the AXI4-Lite interface and a 75 MHz clock
for the AXI4 and AXI4-Stream interfaces. The DUT and other modules of the example design
are kept under reset until the MMCM is locked.
Register configuration: The AXI Traffic Generator core is used to configure the DUT
registers in sequence as mentioned in Programming Sequence in Chapter 3. For the Read
channel, the run/stop and circular_park bits are enabled in the DMACR register. The HSIZE
register is configured as (MMAP_DATA_WIDTH/8)*32 bytes. The VSIZE register is configured
as 1.
For the Write channel, the run/stop and circular_park bits are enabled in the DMACR
register. The HSIZE register is configured as (STRM_DATA_WIDTH/8)*256 bytes. The VSIZE
register is configured as 1.
Read path generator: This uses an AXI block RAM which is filled (with a fixed amount of
transfers) after MMCM is locked. The MM2S channel reads this AXI block RAM and transfers
data to the AXI4-Stream interface.
Read path checker: This module checks that the data is transferred on the AXI4-Stream
interface.
Write path generator: When the Write (S2MM) channel is configured, this module drives
the transactions (with a fixed amount of transfers) on the AXI4-Stream interface.
Write path checker: This module checks that the data is transferred on the AXI4-Stream
interface. Data received on the AXI4 interface is also written into an AXI block RAM.
1. Right-click the core in the Hierarchy window, and select Open IP Example Design.
2. A new window pops up, asking you to specify a directory for the example design. Select
a new directory, or keep the default directory.
A new project is automatically created in the selected directory and it is opened in a new
Vivado IDE window.
3. In the Flow Navigator (left-side pane), click Run Implementation and follow the
directions.
Table 5-1 lists the HDL files delivered with the example design.
Table 5-2 lists the example demonstration test bench file delivered with the example
design.
Table 5-3 lists the example design constraint file delivered with the example design.
The XDC delivered with the example design is configured for the KC705 board. The I/O
constraints are commented by default. Uncomment them before implementing the example
design on the KC705 board.
top_tb
clock_in
<componentname>_exdes.vhd
(top)
status
Test Status
done
X13590
Figure 5-2 shows the test bench for the AXI VDMA example design. The top-level test bench
generates a 200 MHz clock and drives an initial reset to the example design. The test
completes when both status and done bits are driven High.
This section contains instructions for running a functional simulation of the AXI VDMA
example design. The example design supports functional (behavioral) and post-synthesis
simulations.
1. To run a functional simulation, click Run Simulation in the Flow Navigator (left pane)
and then click Run Behavioral Simulation. See Master AR 56989.
2. To run a post-synthesis simulation, click Run Simulation in the Flow Navigator (left
pane) and then click Run Post-Synthesis Functional Simulation.
Simulation Results
The simulation script compiles the AXI VDMA example design and supporting simulation
files. It then runs the simulation and checks to ensure that it completed successfully.
If the test passes, the following message displays: Test Completed Successfully
If the test hangs, the following message displays: Test Failed!! Test Timed Out
The AXI VDMA Vivado® Integrated Design Environment (IDE) parameters are configured
for Triple Buffer Mode by default. You can generate the core by clicking OK in the Vivado
IDE if the Write and Read channel data widths, Burst size, and Line buffer depth changes are
not required.
When changing frame sizes, the incoming frame size might not match the S2MM HSIZE and
VSIZE registers and an error is noted on S2MM VDMASR register VDMAIntErr. The
preceding example enables S2MM Frame Repeat on Error and the next frame is written to
the same frame store location invalidating the bad frame. If the start addresses are based
on maximum frame sizes, no changes are necessary to their registers. However, the S2MM
HSIZE and VSIZE registers must be updated with the new frame size. VSIZE should be
written last. After a full frame is written into memory, the MM2S HSIZE and VSIZE registers
can be updated and are used with the new frame after Frame Sync occurs.
Updating
This appendix contains information about migrating a design from ISE® to the Vivado®
Design Suite, and for upgrading to a more recent version of the IP core. For customers
upgrading in the Vivado Design Suite, important details (where applicable) about any port
changes and other impact to user logic are included.
• C_ENABLE_DEBUG_ALL to C_ENABLE_ALL
• C_ENABLE_DEBUG_INFO_0 to C_ENABLE_MM2S_RST_OUT
• C_ENABLE_DEBUG_INFO_1 to C_ENABLE_MM2S_BUF_EMPTY
• C_ENABLE_DEBUG_INFO_2 to C_ENABLE_MM2S_PARAM_UPDT
• C_ENABLE_DEBUG_INFO_3 to C_ENABLE_MM2S_FSYNC_OUT
• C_ENABLE_DEBUG_INFO_4 to C_ENABLE_TSTVEC
• C_ENABLE_DEBUG_INFO_5 to C_ENABLE_MM2S_FRMSTR_REG
• C_ENABLE_DEBUG_INFO_6 to C_ENABLE_MM2S_DELAY_COUNTER
• C_ENABLE_DEBUG_INFO_7 to C_ENABLE_MM2S_FRM_COUNTER
• C_ENABLE_DEBUG_INFO_8 to C_ENABLE_S2MM_RST_OUT
• C_ENABLE_DEBUG_INFO_9 to C_ENABLE_S2MM_BUF_FULL
• C_ENABLE_DEBUG_INFO_10 to C_ENABLE_S2MM_PARAM_UPDT
• C_ENABLE_DEBUG_INFO_11 to C_ENABLE_S2MM_FSYNC_OUT
• C_ENABLE_DEBUG_INFO_12 to C_ENABLE_S2MM_STS_REG
• C_ENABLE_DEBUG_INFO_13 to C_ENABLE_S2MM_FRMSTR_REG
• C_ENABLE_DEBUG_INFO_14 to C_ENABLE_S2MM_DELAY_COUNTER
• C_ENABLE_DEBUG_INFO_15 to C_ENABLE_S2MM_FRM_COUNTER
Debugging
This appendix includes details about resources available on the Xilinx Support website and
debugging tools.
Documentation
This product guide is the main document associated with the AXI VDMA core. This guide,
along with documentation related to all products that aid in the design process, can be
found on the Xilinx Support web page or by using the Xilinx® Documentation Navigator.
Download the Xilinx® Documentation Navigator from the Downloads page. For more
information about this tool and the features available, open the online help after
installation.
Answer Records
Answer Records include information about commonly encountered problems, helpful
information on how to resolve these problems, and any known issues with a Xilinx product.
Answer Records are created and maintained daily ensuring that users have access to the
most accurate information available.
Answer Records can also be located by using the Search Support box on the main Xilinx
support web page. To maximize your search results, use proper keywords such as
• Product name
• Tool message(s)
• Summary of the issue encountered
A filter search is available after results are returned to further target the results.
AR: 54448
Technical Support
Xilinx provides technical support at the Xilinx Support web page for this LogiCORE™ IP
product when used as described in the product documentation. Xilinx cannot guarantee
timing, functionality, or support if you do any of the following:
• Implement the solution in devices that are not defined in the documentation.
• Customize the solution beyond that allowed in the product documentation.
• Change any section of the design labeled DO NOT MODIFY.
To contact Xilinx Technical Support, navigate to the Xilinx Support web page.
The Vivado logic analyzer is used to interact with the logic debug LogiCORE IP cores
including:
See the Vivado Design Suite User Guide: Programming and Debugging (UG908) [Ref 13].
Hardware Debug
Following are common issues that you can encounter:
1. AXI VDMA works, but the bottom few lines are not proper.
Answer: Most of these issues are attributed to the wrong hsize and vsize programming
in AXI VDMA. Double-check programmed values and check if fsync signals are
connected and fsync period is maintained properly.
Answer: The following registers are implemented to help debug the failures:
3. Per VDMA park pointer register read, VDMA channel is not moving to the next frame
buffer.
Answer: VDMA park ptr register latches the frame_number value when any (line/frame)
error happens. After the error bits are cleared, this register continuously updates the
working frame numbers.
4. When the VDMA system is re-initialized through software (or after a soft reset),
horizontal shift is observed onscreen.
Answer: This could be related to the system reset release sequence and programming
issues. You need to make sure all FIFOs in the datapath are flushed and the VDMA
trigger (vsize) is programmed at the end of the initialization sequence.
Answer: Check that all clocks related to the VDMA channel have proper connectivity and
are running.
Answer: Make sure the Memory Map side clock is equal or greater than the Streaming
side Clock.
7. Core violates AXI4 protocol (example: ARVALID/AWVALID/WVALID toggles without
receiving ARREADY/AWREADY/WREADY from interconnect.)
Answer: Ensure that the system clock connectivity is correct for the VDMA and AXI4
interconnect, that is, the VDMA datapath memory map clock and the corresponding
AXI4 Interconnect port clock are tied to the same source.
8. S2MM channel does not transfer any data on the memory side and after a few stream
transactions s_axis_s2mm_tready goes Low.
Answer: This can happen if you are not meeting alignment constraints when Allow
Unaligned Transfers is disabled while generating the core. In this case, the start
address must be aligned to multiples of the memory map data width bytes. HSize and
Stride must be specified in multiples of the memory map data width bytes. For example,
if memory map data width = 32, data is aligned if the Start Address at word offsets
(32-bit offset), that is, 0x0, 0x4, 0x8, 0xC, and so on. Horizontal Size is 0x4, 0x8, 0xC
and so on. Stride is 0x4, 0x8, 0xC, and so on.
10. When you bring up the core and read the status registers for the first time, you are
seeing several errors that do not go away.
Answer: Frame size errors are very common at startup because partial frames can be
sent to the VDMA at power-up. The VDMA will not halt in this situation, but errors in the
status registers will persist until explicitly cleared (R/WC). Before reading the status
register for the first time, clear it by writing 0xffffffff. If the errors persist, refer to
the other sections of the documentation to continue debugging specific errors.
11. See Appendix C, Additional Design Information to enable vsize and hsize counters for
debugging purposes.
IMPORTANT: AXI VDMA does not support intra-frame mode. Genlock synchronization cannot be
provided for writing and reading the same frame with a predetermined delay between write and read
operations.
FRMSTORE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 0
1
2 0 1
3 2
3 1 3 2
6 7 5
4 0 1 3 2
6 7 5 4
5 2 6 7 5 4
12 13 15 14 10
6 3 2 6 7 5 4
12 13 15 14 10 11
7 1 3 2 6 7 5 4
12 13 15 14 10 11 9
8 0 1 3 2 6 7 5 4
12 13 15 14 10 11 9 8
9 4 12 13 15 14 10 11 9 8
24 25 27 26 30 31 29 28 20
FRMSTORE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
10 5 4 12 13 15 14 10 11 9 8
24 25 27 26 30 31 29 28 20 21
11 7 5 4 12 13 15 14 10 11 9 8
24 25 27 26 30 31 29 28 20 21 23
12 6 7 5 4 12 13 15 14 10 11 9 8
24 25 27 26 30 31 29 28 20 21 23 22
13 2 6 7 5 4 12 13 15 14 10 11 9 8
24 25 27 26 30 31 29 28 20 21 23 22 18
14 3 2 6 7 5 4 12 13 15 14 10 11 9 8
24 25 27 26 30 31 29 28 20 21 23 22 18 19
15 1 3 2 6 7 5 4 12 13 15 14 10 11 9 8
24 25 27 26 30 31 29 28 20 21 23 22 18 19 17
16 0 1 3 2 6 7 5 4 12 13 15 14 10 11 9 8
24 25 27 26 30 31 29 28 20 21 23 22 18 19 17 16
FRMSTORE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
17 8 24 25 27 26 30 31 29 28 20 21 23 22 18 19 17
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
18 9 8 24 25 27 26 30 31 29 28 20 21 23 22 18 19
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
19 11 9 8 24 25 27 26 30 31 29 28 20 21 23 22 18
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
20 10 11 9 8 24 25 27 26 30 31 29 28 20 21 23 22
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
21 14 10 11 9 8 24 25 27 26 30 31 29 28 20 21 23
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
22 15 14 10 11 9 8 24 25 27 26 30 31 29 28 20 21
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
FRMSTORE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
23 13 15 14 10 11 9 8 24 25 27 26 30 31 29 28 20
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
24 12 13 15 14 10 11 9 8 24 25 27 26 30 31 29 28
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
25 4 12 13 15 14 10 11 9 8 24 25 27 26 30 31 29
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
26 5 4 12 13 15 14 10 11 9 8 24 25 27 26 30 31
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
27 7 5 4 12 13 15 14 10 11 9 8 24 25 27 26 30
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
28 6 7 5 4 12 13 15 14 10 11 9 8 24 25 27 26
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
29 2 6 7 5 4 12 13 15 14 10 11 9 8 24 25 27
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
30 3 2 6 7 5 4 12 13 15 14 10 11 9 8 24 25
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
31 1 3 2 6 7 5 4 12 13 15 14 10 11 9 8 24
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
32 0 1 3 2 6 7 5 4 12 13 15 14 10 11 9 8
48 49 51 50 54 55 53 52 60 61 63 62 58 59 57 56
FRMSTORE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
17 16
40
18 17 16
40 41
19 19 17 16
40 41 43
20 18 19 17 16
40 41 43 42
21 22 18 19 17 16
40 41 43 42 46
22 23 22 18 19 17 16
40 41 43 42 46 47
23 21 23 22 18 19 17 16
40 41 43 42 46 47 45
24 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44
25 28 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44 36
26 29 28 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44 36 37
27 31 29 28 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44 36 37 39
28 30 31 29 28 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44 36 37 39 38
29 26 30 31 29 28 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44 36 37 39 38 34
30 27 26 30 31 29 28 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44 36 37 39 39 34 35
31 25 27 26 30 31 29 28 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44 36 37 39 36 34 35 33
32 24 25 27 26 30 31 29 28 20 21 23 22 18 19 17 16
40 41 43 42 46 47 45 44 36 37 39 38 34 35 33 32
The Gray codes received by the Genlock slave are then converted to a frame reference to tell
the Genlock slave which frame to work on. The slave modifies the Genlock frame reference
received by the frame delay such that the Genlock slaves remain a Frame Delay behind the
Genlock Master. Table C-4 illustrates an example conversion from Genlock Gray Code to
Frame Reference used by the Genlock Slave.
Note: In some situations (like when the channel is halted or the input frame pointer reference
reaches a terminal point in the row), the frame pointer out from MM2S/S2MM channel toggles in the
column between two values for the same frame number.
Xilinx Resources
For support resources such as Answers, Documentation, Downloads, and Forums, see Xilinx
Support.
• From the Vivado ® IDE, select Help > Documentation and Tutorials.
• On Windows, select Start > All Programs > Xilinx Design Tools > DocNav.
• At the Linux command prompt, enter docnav.
Xilinx Design Hubs provide links to documentation organized by design tasks and other
topics, which you can use to learn key concepts and address frequently asked questions. To
access the Design Hubs:
• In the Xilinx Documentation Navigator, click the Design Hubs View tab.
• On the Xilinx website, see the Design Hubs page.
Note: For more information on Documentation Navigator, see the Documentation Navigator page
on the Xilinx website.
References
1. Vivado AXI Reference Guide (UG1037)
2. Vivado Design Suite User Guide: Designing with IP (UG896)
3. Designing High-Performance Video Systems in 7 Series FPGAs with the AXI Interconnect
(XAPP741)
4. AXI VDMA Reference Design (XAPP742)
5. AXI VDMA Reference Design for the Kintex KC705 Evaluation Board (XAPP1218)
6. Vivado Design Suite User Guide: Getting Started (UG910)
7. Vivado Design Suite User Guide: Logic Simulation (UG900)
8. Vivado Design Suite User Guide: Designing IP Subsystems using IP Integrator (UG994)
9. AXI Multi-Ported Memory Controller (XAPP739)
10. Designing High-Performance Video Systems with the AXI Interconnect (XAPP740)
11. Synthesis and Simulation Design Guide (UG626)
12. ISE to Vivado Design Suite Migration Guide (UG911)
13. Vivado Design Suite User Guide: Programming and Debugging (UG908)
14. AXI Interconnect LogiCORE IP Product Guide (PG059)
15. AMBA AXI4-Stream Protocol Specification (com.arm.doc.ihi0051a)
16. AXI4-Stream Video IP and System Design Guide (UG934)
Revision History
The following table shows the revision history for this document.