Video TimingController v6.1 LogiCORE IP Pg016 - V - TC
Video TimingController v6.1 LogiCORE IP Pg016 - V - TC
Video TimingController v6.1 LogiCORE IP Pg016 - V - TC
Controller v6.1
Chapter 1: Overview
FeatureSummary.................................................................. 7
Applications...................................................................... 7
LicensingandOrderingInformation ................................................... 8
Chapter 2: ProductSpecification
Standards........................................................................ 9
Performance...................................................................... 9
ResourceUtilization............................................................... 10
CoreInterfacesandRegisterSpace .................................................. 16
Chapter 3: DesigningwiththeCore
BasicArchitecture ................................................................ 44
ControlSignalsandTiming ......................................................... 45
UseModel ...................................................................... 58
Clocking......................................................................... 60
Resets.......................................................................... 62
ProtocolDescription .............................................................. 63
Chapter 4: CustomizingandGeneratingtheCore
VivadoIntegratedDesignEnvironment(IDE) .......................................... 64
GraphicalUserInterface........................................................... 64
OutputGeneration................................................................ 72
Chapter 5: ConstrainingtheCore
RequiredConstraints .............................................................. 73
Chapter 7: SynthesisandImplementation
Chapter 8: DetailedExampleDesign
Chapter 9: TestBench
DemonstrationTestBench ......................................................... 77
Appendix A: Verification,Compliance,andInteroperability
Simulation ...................................................................... 79
HardwareTesting................................................................. 79
Appendix B: MigratingandUpgrading
MigratingtotheVivadoDesignSuite................................................. 81
UpgradinginVivadoDesignSuite.................................................... 81
Appendix C: Debugging
FindingHelponXilinx.com ......................................................... 83
DebugTools ..................................................................... 84
HardwareDebug ................................................................. 85
InterfaceDebug.................................................................. 86
Appendix D: AdditionalResources
XilinxResources .................................................................. 88
References ...................................................................... 88
RevisionHistory .................................................................. 89
NoticeofDisclaimer............................................................... 89
Introduction LogiCOREIPFactsTable
CoreSpecifics
The Xilinx LogiCORE IP Video Timing
Supported UltraScale+ Families,
Controller core is a general purpose video UltraScale Architecture, Zynq -7000,
Device Family (1)
timing generator and detector. The core is 7 Series
highly programmable through a comprehensive Supported User
AXI4-Lite (2)
register set allowing control of various timing Interfaces
generation parameters. This programmability is Resources See Table 2-1 through Table 2-4.
coupled with a comprehensive set of interrupt
bits which provides easy integration into a ProvidedwithCore
processor system for in-system control of the Documentation Product Guide
block in real-time. The Video Timing Controller Design Files Encrypted RTL
is provided with an optional AXI4-Lite
Example Design Not Provided
compliant interface.
Test Bench Verilog
Simulation
XDC
horizontal and vertical video timing signals Simulation For supported simulators, see the Xilinx Design
Tools: Release Notes Guide.
Support for multiple combinations of Synthesis Tools Vivado Synthesis
blanking or synchronization signals
Support
Automatic detection of input video control
Provided by Xilinx at the, Inc.
signal polarities
1. For a complete listing of supported devices, see the Vivado IP
Catalog.
Support for detection and generation of 2. Refer to the Video IP: AXI Feature Adoption section of AXI
horizontal delay of vertical blank/sync Reference Guide [Ref 1].
3. Standalone driver details can be found in the SDK directory
Programmable output video signal (<install_directory>/doc/usenglish/xilinx_drivers.htm). Linux
polarities OS and driver support information is available from
the Xilinx Wiki page.
Generation of up to 16 additional 4. For the supported versions of the tools, see the Xilinx Design
independent output frame synchronization Tools: Release Notes Guide.
signals
Optional AXI4-Lite processor interface
High number of interrupts and status
registers for easy system control and
integration
Overview
All video systems require management of video timing signals, which are used to
synchronize processes. The Video Timing Controller serves the function of both detecting
and generating these timing signals.
The input side of this core automatically detects horizontal and vertical synchronization
pulses, polarity, blanking timing and active video pixels. While on the output, it generates
the horizontal and vertical blanking and synchronization pulses used with a standard video
system including support for programmable pulse polarity. The core is commonly used with
the Video in to AXI4-Stream core to detect the format and timing of incoming video data or
with the AXI4-Stream to Video out core to generate outgoing video timing for downstream
sinks such as a video monitor.
Figure11: ExampleVideoFrameandTimingSignals
A video frame can be completely described in terms of timing by only a few definitions. A
video frame comprises active video and blanking periods. The vertical and horizontal
synchronization signals describe the video frame timing, which includes active and blanking
data. In addition, the frame synchronization signals can be used to synchronize video data
from one component to another within a video system. There are additional signals that can
also be used to control the video system, such as a signal to differentiate valid chroma
samples.
Video systems may utilize different combinations of blank, synchronization or active signals
with various polarities to synchronize processing and control video data. The Video Timing
Controller simplifies working with video timing signals by providing a highly programmable
and flexible core that allows detection and generation of the various timing signals within
a video system.
FeatureSummary
The Video Timing Controller core supports the AXI4-Lite interface and a constant-mode
interface. The AXI4-Lite interface allows the core to be easily incorporated into a Vivado
project. The Constant interface utilizes core parameters configurable by the Graphical User
Interface (GUI) to setup the core for fixed-mode operation. These configurable options
allow the Video Timing Controller core to be easily integrated with AXI4 based processor
systems, with non-AXI4-compliant processors systems with some additional logic, and in
systems without a processor.
The Video Timing Controller core supports detecting video frame sizes up to 8192 clocks by
8192 lines (including horizontal and vertical blanking). The detection typically requires
three to five input video frames to detect and lock. The Video Timing Controller core
automatically detects the timing involved with horizontal/vertical blanks and syncs. The
timing of the active_video and the active_chroma signals are also detected. This
allows the user to easily determine the video frame size via the core register (AXI4-Lite)
interface. The minimum set of signals used for detection is either vertical blank, horizontal
blank and active video or vertical sync, horizontal sync and active video. The polarities of
each input signal is also detected and reported via the register interface to allow easy use
of each signal once the polarity is known.
The core also supports generating and regenerating (matching the detected input) video
frame sizes up to 8192 clocks by 8192 lines (including blanking time). The output can be the
same format or a different format as the detected input. This allows detecting one format
and generating a different format. The output can also be synchronized to the detected
input and has separate signal polarity settings as well. This allows regenerating the input
with different signal polarities or with slight timing adjustments (such as delayed or shorted
active video).
The Video Timing Controller core supports up to 16 frame sync output signals. These are
toggled high for one clock cycle during each frame. These frame syncs allow triggering
timing critical hardware processes at different times during a frame.
Applications
Video Surveillance
Industrial Imaging
Video Conferencing
Machine Vision
Video Systems requiring timing detection or timing generation
LicensingandOrderingInformation
This Xilinx LogiCORE IP module is provided at no cost under the terms of the Xilinx Core
License Agreement. The module is shipped as part of the Vivado Design Suite. For full
access to all core functionalities in simulation and in hardware, you must purchase a license
for the core. Contact your local Xilinx sales representative for information about pricing and
availability.
For more information, visit the Video Timing Controller product web page.
Information about other Xilinx LogiCORE IP modules is available at the Xilinx Intellectual
Property page. For information on pricing and availability of other Xilinx LogiCORE IP
modules and tools, contact your local Xilinx sales representative.
ProductSpecification
Standards
The Video Timing Controller core is compliant with the AXI4-Lite interconnect standards.
Refer to the Video IP: AXI Feature Adoption section of the Vivado AXI Reference Guide
(UG1037) [Ref 1] for additional information.
Performance
The following sections detail the performance characteristics of the Video Timing
Controller core.
MaximumFrequencies
This section contains typical clock frequencies for the target devices. The maximum
achievable clock frequency can vary. The maximum achievable clock frequency and all
resource counts can be affected by other tool options, additional logic in the FPGA device,
using a different version of Xilinx tools and other factors. Refer to in Table 2-1 through
Table 2-4 for device-specific information.
Latency
The Video Timing Controller core does not read or generate data, and therefore, does not
have a specific data latency.
The Video Timing Controller core monitors and generates control signals. The output
control signals can be configured to be the same as the input with no latency, or the output
signals can be configured to incur a multi-clock or multi-line delay.
Throughput
The Video Timing Controller core does not read or generate data, and does not have a
specific throughput.
ResourceUtilization
For an accurate measure of the usage of primitives, slices, and CLBs for a particular instance,
check the Display Core Viewer after Generation check box in the interface.
The information presented in Table 2-1 through Table 2-4 is a guide to the resource
utilization and maximum clock frequency of the Video Timing Controller core for all input/
output width combinations for Virtex-7, Kintex-7, Artix-7, and Zynq-7000 families.
UltraScale results are expected to be similar to 7 series results. The design was tested
using Vivado with default tool options for characterization data.
Table21: Virtex7FPGAPerformance
AXI4Lite Maximum Detection Generation H/V H/V Active Active LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
Yes 256 No Yes No Yes Yes No 1350 1233
Yes 256 No Yes Yes No Yes No 1332 1168
Yes 256 Yes No No Yes Yes No 1555 1341
Yes 256 Yes No Yes No Yes No 1519 1301
Yes 512 No Yes No Yes No No 1398 1263
Yes 512 No Yes No Yes Yes No 1425 1290
Yes 512 No Yes Yes No Yes No 1405 1217
Yes 512 Yes No No Yes Yes No 1638 1409
Yes 512 Yes No Yes No Yes No 1600 1364
Yes 1024 No Yes No Yes No No 1445 1318
Yes 1024 No Yes No Yes Yes No 1475 1347
Yes 1024 No Yes Yes No Yes No 1457 1266
Yes 1024 Yes No No Yes Yes No 1725 1477
Yes 1024 Yes No Yes No Yes No 1674 1427
Yes 2048 No Yes No Yes No No 1516 1373
Yes 2048 No Yes No Yes Yes No 1543 1404
Yes 2048 No Yes Yes No Yes No 1521 1315
Yes 2048 Yes No No Yes Yes No 1813 1545
Yes 2048 Yes No Yes No Yes No 1765 1490
Yes 4096 No Yes No Yes No No 1550 1428
Table21: Virtex7FPGAPerformance(Contd)
AXI4Lite Maximum Detection Generation H/V H/V Active Active LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
Yes 4096 No Yes No Yes Yes No 1578 1461
Yes 4096 No Yes Yes No Yes No 1556 1364
Yes 4096 Yes No No Yes Yes No 1855 1613
Yes 4096 Yes No Yes No Yes No 1795 1553
Yes 8192 No Yes No Yes No No 1587 1483
Yes 8192 No Yes No Yes Yes No 1618 1518
Yes 8192 No Yes Yes No Yes No 1592 1413
Yes 8192 Yes No No Yes Yes No 1957 1681
Yes 8192 Yes No Yes No Yes No 1875 1616
No 256 No Yes No Yes No No 97 77
No 256 No Yes No Yes Yes No 115 89
No 256 No Yes Yes No Yes No 106 84
No 512 No Yes No Yes No No 103 82
No 512 No Yes No Yes Yes No 124 96
No 512 No Yes Yes No Yes No 110 91
No 1024 No Yes No Yes No No 109 87
No 1024 No Yes No Yes Yes No 128 103
No 1024 No Yes Yes No Yes No 117 98
No 2048 No Yes No Yes No No 123 92
No 2048 No Yes No Yes Yes No 138 110
No 2048 No Yes Yes No Yes No 120 105
No 4096 No Yes No Yes No No 93 97
No 4096 No Yes No Yes Yes No 115 117
No 4096 No Yes Yes No Yes No 100 112
No 8192 No Yes No Yes No No 98 102
No 8192 No Yes No Yes Yes No 126 124
No 8192 No Yes Yes No Yes No 107 119
Table22: Kintex7FPGAandZynq7000DeviceswithKintexBasedProgrammableLogic
Performance
AXI4Lite Maximum Detection Generation H/V H/V Active Active
LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
Yes 256 No Yes No Yes No No 1325 1208
Yes 256 No Yes No Yes Yes No 1351 1233
Yes 256 No Yes Yes No Yes No 1334 1168
Yes 256 Yes No No Yes Yes No 1554 1341
Table22: Kintex7FPGAandZynq7000DeviceswithKintexBasedProgrammableLogic
Performance(Contd)
AXI4Lite Maximum Detection Generation H/V H/V Active Active
LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
Yes 256 Yes No Yes No Yes No 1518 1301
Yes 512 No Yes No Yes No No 1397 1263
Yes 512 No Yes No Yes Yes No 1425 1290
Yes 512 No Yes Yes No Yes No 1403 1217
Yes 512 Yes No No Yes Yes No 1637 1409
Yes 512 Yes No Yes No Yes No 1600 1364
Yes 1024 No Yes No Yes No No 1448 1318
Yes 1024 No Yes No Yes Yes No 1476 1347
Yes 1024 No Yes Yes No Yes No 1457 1266
Yes 1024 Yes No No Yes Yes No 1730 1477
Yes 1024 Yes No Yes No Yes No 1675 1427
Yes 2048 No Yes No Yes No No 1515 1373
Yes 2048 No Yes No Yes Yes No 1543 1404
Yes 2048 No Yes Yes No Yes No 1519 1315
Yes 2048 Yes No No Yes Yes No 1814 1545
Yes 2048 Yes No Yes No Yes No 1770 1490
Yes 4096 No Yes No Yes No No 1549 1428
Yes 4096 No Yes No Yes Yes No 1578 1461
Yes 4096 No Yes Yes No Yes No 1555 1364
Yes 4096 Yes No No Yes Yes No 1854 1613
Yes 4096 Yes No Yes No Yes No 1794 1553
Yes 8192 No Yes No Yes No No 1588 1483
Yes 8192 No Yes No Yes Yes No 1618 1518
Yes 8192 No Yes Yes No Yes No 1592 1413
Yes 8192 Yes No No Yes Yes No 1957 1681
Yes 8192 Yes No Yes No Yes No 1879 1616
No 256 No Yes No Yes No No 96 77
No 256 No Yes No Yes Yes No 115 89
No 256 No Yes Yes No Yes No 104 84
No 512 No Yes No Yes No No 102 82
No 512 No Yes No Yes Yes No 123 96
No 512 No Yes Yes No Yes No 110 91
No 1024 No Yes No Yes No No 109 87
No 1024 No Yes No Yes Yes No 128 103
Table22: Kintex7FPGAandZynq7000DeviceswithKintexBasedProgrammableLogic
Performance(Contd)
AXI4Lite Maximum Detection Generation H/V H/V Active Active
LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
No 1024 No Yes Yes No Yes No 116 98
No 2048 No Yes No Yes No No 123 92
No 2048 No Yes No Yes Yes No 138 110
No 2048 No Yes Yes No Yes No 118 105
No 4096 No Yes No Yes No No 92 97
No 4096 No Yes No Yes Yes No 117 117
No 4096 No Yes Yes No Yes No 105 112
No 8192 No Yes No Yes No No 99 102
No 8192 No Yes No Yes Yes No 125 124
No 8192 No Yes Yes No Yes No 107 119
Table23: Artix7FPGAandZynq7000DevicewithArtixBasedProgrammableLogic
Performance
AXI4Lite Maximum Detection Generation H/V H/V Active Active
LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
Yes 256 No Yes No Yes No No 1326 1208
Yes 256 No Yes No Yes Yes No 1349 1233
Yes 256 No Yes Yes No Yes No 1334 1168
Yes 256 Yes No No Yes Yes No 1556 1341
Yes 256 Yes No Yes No Yes No 1516 1301
Yes 512 No Yes No Yes No No 1400 1263
Yes 512 No Yes No Yes Yes No 1423 1290
Yes 512 No Yes Yes No Yes No 1402 1217
Yes 512 Yes No No Yes Yes No 1634 1409
Yes 512 Yes No Yes No Yes No 1594 1364
Yes 1024 No Yes No Yes No No 1449 1318
Yes 1024 No Yes No Yes Yes No 1475 1347
Yes 1024 No Yes Yes No Yes No 1455 1266
Yes 1024 Yes No No Yes Yes No 1721 1477
Yes 1024 Yes No Yes No Yes No 1670 1427
Yes 2048 No Yes No Yes No No 1516 1373
Yes 2048 No Yes No Yes Yes No 1543 1404
Yes 2048 No Yes Yes No Yes No 1522 1315
Yes 2048 Yes No No Yes Yes No 1811 1545
Yes 2048 Yes No Yes No Yes No 1769 1490
Table23: Artix7FPGAandZynq7000DevicewithArtixBasedProgrammableLogic
Performance(Contd)
AXI4Lite Maximum Detection Generation H/V H/V Active Active
LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
Yes 4096 No Yes No Yes No No 1550 1428
Yes 4096 No Yes No Yes Yes No 1577 1461
Yes 4096 No Yes Yes No Yes No 1557 1364
Yes 4096 Yes No No Yes Yes No 1855 1613
Yes 4096 Yes No Yes No Yes No 1793 1553
Yes 8192 No Yes No Yes No No 1589 1483
Yes 8192 No Yes No Yes Yes No 1620 1518
Yes 8192 No Yes Yes No Yes No 1592 1413
Yes 8192 Yes No No Yes Yes No 1956 1681
Yes 8192 Yes No Yes No Yes No 1878 1616
No 256 No Yes No Yes No No 96 77
No 256 No Yes No Yes Yes No 115 89
No 256 No Yes Yes No Yes No 106 84
No 512 No Yes No Yes No No 102 82
No 512 No Yes No Yes Yes No 123 96
No 512 No Yes Yes No Yes No 110 91
No 1024 No Yes No Yes No No 109 87
No 1024 No Yes No Yes Yes No 127 103
No 1024 No Yes Yes No Yes No 116 98
No 2048 No Yes No Yes No No 121 92
No 2048 No Yes No Yes Yes No 138 110
No 2048 No Yes Yes No Yes No 121 105
No 4096 No Yes No Yes No No 93 97
No 4096 No Yes No Yes Yes No 118 117
No 4096 No Yes Yes No Yes No 99 112
No 8192 No Yes No Yes No No 99 102
No 8192 No Yes No Yes Yes No 121 124
No 8192 No Yes Yes No Yes No 104 119
Table24: Zynq7000DevicePerformance
AXI4Lite Maximum Detection Generation H/V H/V Active Active LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
Yes 256 No Yes No Yes No No 1327 1208
Yes 256 No Yes No Yes Yes No 1350 1233
Yes 256 No Yes Yes No Yes No 1331 1168
Table24: Zynq7000DevicePerformance(Contd)
AXI4Lite Maximum Detection Generation H/V H/V Active Active LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
Yes 256 Yes No No Yes Yes No 1563 1341
Yes 256 Yes No Yes No Yes No 1517 1301
Yes 512 No Yes No Yes No No 1396 1263
Yes 512 No Yes No Yes Yes No 1424 1290
Yes 512 No Yes Yes No Yes No 1405 1217
Yes 512 Yes No No Yes Yes No 1640 1409
Yes 512 Yes No Yes No Yes No 1600 1364
Yes 1024 No Yes No Yes No No 1450 1318
Yes 1024 No Yes No Yes Yes No 1476 1347
Yes 1024 No Yes Yes No Yes No 1453 1266
Yes 1024 Yes No No Yes Yes No 1731 1477
Yes 1024 Yes No Yes No Yes No 1679 1427
Yes 2048 No Yes No Yes No No 1514 1373
Yes 2048 No Yes No Yes Yes No 1544 1404
Yes 2048 No Yes Yes No Yes No 1523 1315
Yes 2048 Yes No No Yes Yes No 1811 1545
Yes 2048 Yes No Yes No Yes No 1764 1490
Yes 4096 No Yes No Yes No No 1549 1428
Yes 4096 No Yes No Yes Yes No 1579 1461
Yes 4096 No Yes Yes No Yes No 1557 1364
Yes 4096 Yes No No Yes Yes No 1856 1613
Yes 4096 Yes No Yes No Yes No 1790 1553
Yes 8192 No Yes No Yes No No 1589 1483
Yes 8192 No Yes No Yes Yes No 1620 1518
Yes 8192 No Yes Yes No Yes No 1590 1413
Yes 8192 Yes No No Yes Yes No 1953 1681
Yes 8192 Yes No Yes No Yes No 1879 1616
No 256 No Yes No Yes No No 97 77
No 256 No Yes No Yes Yes No 115 89
No 256 No Yes Yes No Yes No 106 84
No 512 No Yes No Yes No No 103 82
No 512 No Yes No Yes Yes No 124 96
No 512 No Yes Yes No Yes No 110 91
No 1024 No Yes No Yes No No 108 87
No 1024 No Yes No Yes Yes No 128 103
Table24: Zynq7000DevicePerformance(Contd)
AXI4Lite Maximum Detection Generation H/V H/V Active Active LUTs FFs
Interface Lines Enable Enable Blanks Syncs Video Chroma
No 1024 No Yes Yes No Yes No 117 98
No 2048 No Yes No Yes No No 123 92
No 2048 No Yes No Yes Yes No 134 110
No 2048 No Yes Yes No Yes No 120 105
No 4096 No Yes No Yes No No 93 97
No 4096 No Yes No Yes Yes No 118 117
No 4096 No Yes Yes No Yes No 99 112
No 8192 No Yes No Yes No No 98 102
No 8192 No Yes No Yes Yes No 123 124
No 8192 No Yes Yes No Yes No 104 119
CoreInterfacesandRegisterSpace
This chapter provides detailed descriptions for each interface. In addition, detailed
information about configuration and control registers is included.
PortDescriptions
The Video Timing Controller (VTC) core uses the AXI4-Lite industry standard control
interface to connect to other system components. The following sections describe the
various interfaces available with the core. Some signals are optional and not present for all
configurations of the core. The AXI4-Lite interface and the IRQ pin are present only when
the core is configured via the GUI with an AXI4-Lite control interface. The INTC_IF interface
is present only when the core is configured via the GUI with the INTC interface enabled.
Figure 2-1 illustrates an I/O diagram of the VTC core.
9LGHR7LPLQJ&RQWUROOHU
ILHOGBLGBLQ ILHOGBLGBRXW
YEODQNBLQ YEODQNBRXW
YV\QFBLQ YV\QFBRXW
9LGHR7LPLQJ KEODQNBLQ KEODQNBRXW 9LGHR7LPLQJ
LQSXW KV\QFBLQ KV\QFBRXW RXWSXW
,QWHUIDFH DFWLYHBYLGHRBLQ DFWLYHBYLGHRBRXW ,QWHUIDFH
DFWLYHBFKURPDBLQ DFWLYHBFKURPDBRXW
VBD[LBDFON LUT
VBD[LBDFONHQ
VBD[LBDUHVHWQ LQWFBLI>@
VBD[LBDZDGGU>@
VBD[LBDZYDOLG IV\QFBRXW>@
VBD[LBDZUHDG\
VBD[LBZGDWD>@
VBD[LBZVWUE>@
VBD[LBZYDOLG
2SWLRQDO
$;,/LWH VBD[LBZUHDG\
&RQWURO VBD[LBEUHVS>@
,QWHUIDFH VBD[LBEYDOLG
VBD[LBEUHDG\
VBD[LBDUDGGU>@
VBD[LBDUYDOLG
VBD[LBDUUHDG\
VBD[LBUGDWD>@
VBD[LBUUHVS>@
VBD[LBUYDOLG
VBD[LBUUHDG\
FON
FONHQ
UHVHWQ
JHQBDFONHQ
GHWBDFONHQ
IV\QFBLQ
Figure21: TCCoreTopLevelSignalingInterface
CoreInterfaces
ControlInterface
Video systems commonly use an integrated processor system to dynamically control the
parameters within the system. This is especially important when several independent image
processing cores are integrated into a single FPGA. The Video Timing Controller core can be
configured with an AXI4-Lite interface.
CommonI/OSignals
The signals not included in the AXI4-Lite interface are specified in Table 2-5.
Table25: CommonPortDescriptions
Name Direction Width Description
clk In 1 Video Core Clock
clken In 1 Video Core Active High Clock Enable
det_clken In 1 Video Timing Detection Core Active High Clock Enable
gen_clken In 1 Video Timing Generator Core Active High Clock Enable
resetn In 1 Video Core Active Low Synchronous Reset
irq Output 1 Interrupt request output, active high edge
intc_if Output 32 OPTIONAL EXTERNAL INTERRUPT CONTROLLER INTERFACE
Available when the "Include INTC Interface" or C_HAS_INTC_IF has
been selected.
Bits [31:8] are the same as the bits [31:8] in the status register
(0x0004).
Bits [5:0] are the same as bits [21:16] of the error register (0x0008).
Bits [7:6] are reserved and are always 0.
DetectorInterface(VideoTimingInputInterface)
INPUT FIELD ID
Used to set the field_id polarity in th e Detector Polarity Register
field_id_in Input 1
(Address Offset 0x002C).
Optional. Only valid when interlace support and field id are enabled.
INPUT HORIZONTAL SYNCHRONIZATION
Used to set the DETECTOR HSYNC register.
Polarity is auto-detected.
hsync_in Input 1 Optional. Either horizontal blank or horizontal synchronization
signal inputs must be present. Both do not have to be present.
If the hsync_in input is not connected, then the "Horizontal Sync
Detection" option must be deselected.
INPUT HORIZONTAL BLANK
Used to set the DETECTOR HSIZE register.
Polarity is auto-detected.
hblank_in Input 1 Optional. Either horizontal blank or horizontal synchronization
signal inputs must be present. Both do not have to be present.
If the hblank_in input is not connected, then the "Horizontal Blank
Detection" option must be deselected.
INPUT VERTICAL SYNCHRONIZATION
Used to set the DETECTOR F0_VSYNC_V and the F0_VSYNC_H
registers.
Polarity is auto-detected.
vsync_in Input 1
Optional. One of the following inputs must be present: active video,
vertical blank or vertical synchronization.
If the vsync_in input is not connected, then the "Vertical Sync
Detection" option must be deselected.
Table25: CommonPortDescriptions(Contd)
Name Direction Width Description
INPUT VERTICAL BLANK
Used to set the DETECTOR_VSIZE and the F0_VBLANK_H registers.
Polarity is auto-detected.
vblank_in Input 1 Optional. One of the following inputs must be present: active video,
vertical blank or vertical synchronization.
If the vblank_in input is not connected, then the "Vertical Blank
Detection" option must be deselected.
INPUT ACTIVE VIDEO
Used to set the DETECTOR ACTIVE_SIZE register.
Polarity is auto-detected.
active_video_in Input 1 Optional. One of the following inputs must be present: active video,
vertical blank or vertical synchronization.
If the active_video_in input is not connected, then the "Active Video
Detection" option must be deselected.
INPUT ACTIVE CHROMA
Used to set the VIDEO_FORMAT and the CHROMA_PARITY bits in the
Detector Encoding Register.
active_chroma_in Input 1 Polarity is auto-detected.
Optional.
If the active_chroma_in input is not connected, then the "Active
Chroma Detection" option must be deselected.
GeneratorInterface(VideoTimingOutputInterface)
OUTPUT FIELD ID
Generated field id signal. Polarity configured by the Generator
field_id_out Output 1 Polarity Register (Address Offset 0x006C)
Optional. Only enabled when interlaced support and field id
generation is enabled.
OUTPUT HORIZONTAL SYNCHRONIZATION
Generated horizontal synchronization signal. Polarity configured by
hsync_out Output 1 the control register. Asserted active during the cycle set by the
HSYNC_START bits and deasserted during the cycle set by the
HSYNC_END bits in the GENERATOR HSYNC register.
OUTPUT HORIZONTAL BLANK
Generated horizontal blank signal. Polarity configured by the control
hblank_out Output 1 register. Asserted active during the cycle set by ACTIVE_HSIZE and
deasserted during the cycle set by the FRAME_HSIZE bits in the
GENERATOR HSIZE register.
OUTPUT VERTICAL SYNCHRONIZATION
Generated vertical synchronization signal. Polarity configured by the
vsync_out Output 1 control register. Asserted active during the line set by the
F#_VSYNC_VSTART bits and deasserted during the line set by the
F#_VSYNC_VEND bits in the GENERATOR F#_VSYNC_V registers.
Table25: CommonPortDescriptions(Contd)
Name Direction Width Description
OUTPUT VERTICAL BLANK
Generated vertical blank signal. Polarity configured by the control
vblank_out Output 1 register. Asserted active during the line set by the ACTIVE_VSIZE bits
and deasserted during the line set by the GENERATOR VSIZE
register.
OUTPUT ACTIVE VIDEO
Generated active video signal. Polarity configured by the control
active_video_out Output 1 register. Active for non blanking lines. Asserted active during the
first cycle of the field/frame and deasserted during the cycle set by
the GENERATOR ACTIVE_SIZE register
OUTPUT ACTIVE CHROMA
Generated active chroma signal. Denotes which lines contain valid
active_chroma_out Output 1 chroma samples (used for YUV 4:2:0). Polarity configured by the
GENERATOR POLARITY register. Active for non-blanking lines
configured y the VIDEO_FORMAT and the CHROMA_PARITY bits in
the GENERATOR Encoding Register.
FrameSynchronizationInterface
FRAME SYNCHRONIZATION OUTPUT
Each Frame Synchronization bit toggles for only one clock cycle
[Frame
during each frame. The number of bits is configured with the Frame
fsync_out Output Syncs -
Syncs GUI parameter.
1:0]
Each bit is independently configured for horizontal and vertical
clock cycle position with the Frame Sync 0-15 Config registers).
FRAME SYNCHRONIZATION INPUT
fsync_in Input 1 This is a one clock cycle pulse (active high) input. The video timing
generator will be synchronized to the input if used.
Notes:
1. All ports are little-endian.
The clk, clken and resetn, det_clken, and gen_clken signals are shared between the
core and the Video Timing interfaces. The AXI4-Lite control interface has its own set of
clock, clock enable and reset pins: S_AXI_ACLK, S_AXI_ACLKEN and S_AXI_ARESETn.
TheclkPin
The Video Timing interfaces must be synchronous to the core clock signal clk. All Video
Timing interface input signals are sampled on the rising edge of clk. All Video Timing
output signal changes occur after the rising edge of clk. If the clk signal is not running,
the AXI4-Lite interface asserts the slave error response (0x2) for all addresses. The clken Pin
registers to be read and/or written, since all core registers reside within the core clock
domain. This clock enable must be asserted high for AXI4-Lite registers to be read and/or
written, since all core registers reside within the core clock domain. If the clock enable is
deasserted, the AXI4-Lite interface asserts the slave error response (0x2) for all addresses.
Thedet_clkenPin
The det_clken pin is an Active-High, synchronous clock-enable pertaining to the Video
Timing Controller detector (input) interface. This clock enable allows halting the detector
independently from the generator. The internal detector clock enable is a logical "AND"
between the clken and det_clken inputs. The internal logic that controls the detector
sub-core clock enable is shown in Figure 2-2.
X-Ref Target - Figure 2-2
Figure22: DetectorInternalClockEnableLogic
Thegen_clkenPin
The gen_clken pin is an Active-High, synchronous clock-enable pertaining to the Video
Timing Controller generator (output) interface. This clock enable allows halting the
generator independently from the detector. The internal generator clock enable is a
logical "AND" between the clken and get_clken inputs. For example, to enable the
detector while halting the generator, drive clken to '1', det_clken to '1' and gen_clken
to '0'. The internal logic that controls the generator sub-core clock enable is shown in
Figure 2-3.
X-Ref Target - Figure 2-3
Figure23: GeneratorInternalClockEnableLogic
TheresetnPin
The resetn pin is an active-low, synchronous reset input pertaining to only Video Timing
interfaces. resetn supersedes clken, and when set to 0, the core resets at the next rising
edge of clk even if clken is de-asserted. The resetn signal must be synchronous to the
clk and must be held low for a minimum of 32 clock cycles of the slowest clock. This reset
must be asserted high for AXI4-Lite registers to be read and/or written, since all core
registers reside within the core clock domain. If the reset is asserted low, the AXI4-Lite
interface asserts the slave error response (0x2) for all addresses.
Thefsync_inPin
The fsync_in pin is an Active-High input. The video timing generator will be synchronized
to the fsync_in input if used. The fsync_in should be driven high for only one clock cycle
per frame. This will reset all internal generator counters and start the generated frame
timing synchronized to this input. Internally the fsync_in pin is logically "OR" combined
with the frame sync produced by the detector. The internal logic for this is show in
Figure 2-4. If the fsync_in input is used, then the detector must be disabled. Likewise, if
the detector is used, then the fsync_in pin must be driven to '0'. The use of the external
fsync_in pin and the detector can be changed at run-time, but one of the fsync signals
must always be '0'.
X-Ref Target - Figure 2-4
Figure24: VideoTimingControllerInternalfsyncLogic
AXI4LiteInterface
The AXI4-Lite interface creates a core that can be easily added to an Vivado Project as a
processor peripheral. This section describes the I/O signals associated with the Video
Timing Controller AXI4-Lite interface.
Table26: AXI4LiteSignals
PinName Dir Width Description
AXIWriteAddressChannelSignals(1)
s_axi_aclk I 1 AXI4-Lite Clock
s_axi_aclken I 1 AXI4-Lite Active High Clock Enable
s_axi_aresetn I 1 AXI4-Lite Active Low Synchronous Reset
Table26: AXI4LiteSignals(Contd)
s_axi_awaddr I [(c_s_axi_addr_width-1):0] AXI4-Lite Write Address Bus. The write address bus gives
the address of the write transaction.
s_axi_awvalid I 1 AXI4-Lite Write Address Channel Write Address Valid. This
signal indicates that valid write address is available.
1 = Write address is valid.
0 = Write address is not valid.
s_axi_awready O 1 AXI4-Lite Write Address Channel Write Address Ready.
Indicates core is ready to accept the write address.
1 = Ready to accept address.
0 = Not ready to accept address.
AXIWriteDataChannelSignals(1)
s_axi_wdata I [(c_s_axi_data_width-1):0] AXI4-Lite Write Data Bus.
s_axi_wstrb I [c_s_axi_data_width/8-1:0] AXI4-Lite Write Strobes. This signal indicates which byte
lanes to update in memory.
s_axi_wvalid I 1 AXI4-Lite Write Data Channel Write Data Valid. This signal
indicates that valid write data and strobes are available.
1 = Write data/strobes are valid.
0 = Write data/strobes are not valid.
s_axi_wready O 1 AXI4-Lite Write Data Channel Write Data Ready. Indicates
core is ready to accept the write data.
1 = Ready to accept data.
0 = Not ready to accept data.
s_axi_wready O 1 AXI4-Lite Write Data Channel Write Data Ready. Indicates
core is ready to accept the write data.
1 = Ready to accept data.
0 = Not ready to accept data.
AXIWriteResponseChannelSignals(1)
s_axi_bresp (2) O [1:0] AXI4-Lite Write Response Channel. Indicates results of the
write transfer.
00b = OKAY - Normal access has been successful.
01b = EXOKAY - Not supported.
10b = SLVERR - Error.
11b = DECERR - Not supported.
s_axi_bvalid O 1 AXI4-Lite Write Response Channel Response Valid.
Indicates response is valid.
1 = Response is valid.
0 = Response is not valid.
s_axi_bready I 1 AXI4-Lite Write Response Channel Ready. Indicates Master
is ready to receive response.
1 = Ready to receive response.
0 = Not ready to receive response.
AXIReadAddressChannelSignals(1)
Table26: AXI4LiteSignals(Contd)
s_axi_araddr I [(C_S_AXI_ADDR_WIDTH-1):0 AXI4-Lite Read Address Bus. The read address bus gives the
] address of a read transaction.
s_axi_arvalid I 1 AXI4-Lite Read Address Channel Read Address Valid.
1 = Read address is valid.
0 = Read address is not valid.
s_axi_arready O 1 AXI4-Lite Read Address Channel Read Address Ready.
Indicates core is ready to accept the read address.
1 = Ready to accept address.
0 = Not ready to accept address.
AXIReadDataChannelSignals(1)
s_axi_rdata O [(C_S_AXI_DATA_WIDTH-1):0] AXI4-Lite Read Data Bus.
(2)
s_axi_rresp O [1:0] AXI4-Lite Read Response Channel Response. Indicates
results of the read transfer.
00b = OKAY - Normal access has been successful.
01b = EXOKAY - Not supported.
10b = SLVERR - Error.
11b = DECERR - Not supported.
s_axi_rvalid O 1 AXI4-Lite Read Data Channel Read Data Valid. This signal
indicates that the required read data is available and the
read transfer can complete.
1 = Read data is valid.
0 = Read data is not valid.
s_axi_rready I 1 AXI4-Lite Read Data Channel Read Data Ready. Indicates
master is ready to accept the read data.
1 = Ready to accept data.
0 = Not ready to accept data.
1. The function and timing of these signals are defined in the AMBA AXI Protocol Version: 2.0 Specification.
2. For signals S_AXI_RRESP[1:0] and S_AXI_BRESP[1:0], the core does not generate the Decode Error ('11') response.
Other responses such as '00' (OKAY) and '10' (SLVERR) are generated by the core based upon certain conditions.
AXI4LiteRegisterSet
The AXI4-Lite Interface provides a memory mapped interface for all programmable
registers within the core. All registers default to the values specified in Page 2 of the core
GUI. All other bits default to 0x00000000 on Power-on/Reset unless otherwise noted.
Table27: AXI4LiteAddressMap
Address Access Double Default
Name Description
Offset Type Buffered Value
0x0000 CONTROL R/W Yes 0 General Control
(XVTC_CTL)
0x0004 STATUS R/W No 0 Core/Interrupt Status
(XVTC_STATS) All Status bits are
write-1-to-clear
Table27: AXI4LiteAddressMap(Contd)
Address Name Access Double Default Description
Offset Type Buffered Value
0x0008 ERROR R/W No 0 Additional Status & Error
(XVTC_ERROR) Conditions
All Error bits are
write-1-to-clear
0x000C IRQ_ENABLE R/W No 0 Interrupt Enable/Clear
(XVTC_IER)
0x0010 VERSION R N/A 0x06010001 Core Hardware Version
(XVTC_VER)
0x0014 RESERVED R N/A 0 RESERVED
0x001C
0x0020 DETECTOR R N/A 0 Horizontal and Vertical Frame
ACTIVE_SIZE Size (without blanking)
(XVTC_DASIZE)
0x0024 DETECTOR R N/A 0 Timing Measurement Status
TIMING_STATUS
(XVTC_DTSTAT)
0x0028 DETECTOR ENCODING R N/A 0 Frame encoding
(XVTC_DFENC)
0x002C DETECTOR POLARITY R N/A 0 Blank, Sync polarities
(XVTC_DPOL)
0x0030 DETECTOR HSIZE R N/A 0 Horizontal Frame Size (with
(XVTC_DHSIZE) blanking)
0x0034 DETECTOR VSIZE R N/A 0 Vertical Frame Size (with
(XVTC_DVSIZE) blanking)
0x0038 DETECTOR HSYNC R N/A 0 Start and end cycle index of
(XVTC_DHSYNC) HSync
0x003C DETECTOR R N/A 0 Start and end cycle index of
F0_VBLANK_H VBlank for field 0.
(XVTC_DVBHOFF)
0x0040 DETECTOR R N/A 0 Start and end line index of
F0_VSYNC_V VSync for field 0.
(XVTC_DVSYNC)
0x0044 DETECTOR R N/A 0 Start and end cycle index of
F0_VSYNC_H VSync for field 0.
(XVTC_DVSHOFF)
0x0048 DETECTOR R N/A 0 Start and end cycle index of
F1_VBLANK_H VBlank for field 1.
(XVTC_DVBHOFF_F1)
0x004C DETECTOR R N/A 0 Start and end line index of
F1_VSYNC_V VSync for field 1.
(XVTC_DVSYNC_F1)
Table27: AXI4LiteAddressMap(Contd)
Address Name Access Double Default Description
Offset Type Buffered Value
0x0050 DETECTOR R N/A 0 Start and end cycle index of
F1_VSYNC_H VSync for field 1.
(XVTC_DVSHOFF_F1)
0x0060 GENERATOR R/W Yes Specified via Horizontal and Vertical Frame
ACTIVE_SIZE GUI Size (without blanking)
(XVTC_GASIZE)
0x0064 GENERATOR R No Specified via Timing Measurement Status
TIMING_STATUS GUI
(XVTC_GTSTAT)
0x0068 GENERATOR R/W Yes Specified via Frame encoding
ENCODING GUI
(XVTC_GFENC)
0x006C GENERATOR POLARITY R/W Yes Specified via Blank, Sync polarities
(XVTC_GPOL) GUI
0x0070 GENERATOR HSIZE R/W Yes Specified via Horizontal Frame Size (with
(XVTC_GHSIZE) GUI blanking)
0x0074 GENERATOR VSIZE R/W Yes Specified via Vertical Frame Size (with
(XVTC_GVSIZE) GUI blanking)
0x0078 GENERATOR HSYNC R/W Yes Specified via Start and end cycle index of
(XVTC_GHSYNC) GUI HSync
0x007C GENERATOR R/W Yes Specified via Start and end cycle index of
F0_VBLANK_H GUI VBlank for field 0.
(XVTC_GVBHOFF)
0x0080 GENERATOR R/W Yes Specified via Start and end line index of
F0_VSYNC_V GUI VSync for field 0.
(XVTC_GVSYNC)
0x0084 GENERATOR R/W Yes Specified via Start and end cycle index of
F0_VSYNC_H GUI VSync for field 0.
(XVTC_GVSHOFF)
0x0088 GENERATOR R/W Yes Specified via Start and end cycle index of
F1_VBLANK_H GUI VBlank for field 1.
(XVTC_GVBHOFF_F1)
0x008C GENERATOR R/W Yes Specified via Start and end line index of
F1_VSYNC_V GUI VSync for field 1.
(XVTC_GVSYNC_F1)
0x0090 GENERATOR R/W Yes Specified via Start and end cycle index of
F1_VSYNC_H GUI VSync for field 1.
(XVTC_GVSHOFF_F1)
0x0094 RESERVED R N/A 0 RESERVED
0x00FC
Table27: AXI4LiteAddressMap(Contd)
Address Name Access Double Default Description
Offset Type Buffered Value
0x0100 FRAME SYNC 0 - 15 R/W Yes 0 Horizontal start clock and
CONFIG vertical start line of Frame
0x013c (XVTC_FS00 - Sync 0 - 15
XVTC_FS15)
0x0140 GENERATOR GLOBAL R/W Yes 0 Horizontal cycle and vertical
DELAY line delay of generator.
(XVTC_GGD)
Table28: ControlRegister(AddressOffset0x0000)
0x0000 CONTROL Read/Write
Name Bits Description
SW_RESET 31 Core reset.
Writing a '1' resets the core. This bit automatically clears when
reset complete.
FSYNC_RESET 30 Frame Sync Core reset.
Writing a '1' resets the core after the start of the next input
frame. This bit automatically clears when reset complete.
RESERVED 29:27 Reserved
FIELD_ID_POL_SRC 26 Field ID Polarity Source Select
0: selects generated polarity from detection register (0x002c)
1: selects generated polarity from generators register (0x006c)
ACTIVE_CHROMA_POL_ 25 Active Chroma Polarity Source Select
SRC 0: selects generated polarity from detection register (0x002c)
1: selects generated polarity from generator register (0x006c)
ACTIVE_VIDEO_POL_SRC 24 Active Video Polarity Source Select
0: selects generated polarity from detection register (0x002c)
1: selects generated polarity from generator register (0x006c)
HSYNC_POL_SRC 23 Horizontal Sync Polarity Source Select
0: selects generated polarity from detection register (0x002c)
1: selects generated polarity from generator register (0x006c)
VSYNC_POL_SRC 22 Vertical Sync Polarity Source Select
0: selects generated polarity from detection register (0x002c)
1: selects generated polarity from generator register (0x006c)
HBLANK_POL_SRC 21 Horizontal Blank Polarity Source Select
0: selects generated polarity from detection register (0x002c)
1: selects generated polarity from generator register (0x006c)
VBLANK_POL_SRC 20 Vertical Blank Polarity Source Select
.0: selects generated polarity from detection register (0x002c)
1: selects generated polarity from generator register (0x006c)
RESERVED 19 RESERVED
Table28: ControlRegister(AddressOffset0x0000)(Contd)
0x0000 CONTROL Read/Write
Name Bits Description
CHROMA_SRC 18 Generator Chroma Polarity and Encoding Source Select
0: selects Polarity and encoding from detection registers 0x0028
and 0x002C.
1: selects Polarity and encoding from generator registers 0x0068
and 0x006C.
VBLANK_HOFF_SRC 17 Generator Vertical Blank Offset Source Select
0: selects F0_VBLANK_HSTART from detection register (0x003c)
selects F0_VBLANK_HEND from detection register (0x003c)
1: selects F0_VBLANK_HSTART from generator register (0x007c)
selects F0_VBLANK_HEND from generator register (0x007c)
VSYNC_END_SRC 16 Generator Vertical Sync End Source Select
0: selects F0_VSYNC_HEND from detection register (0x0044)
selects F0_VSYNC_VEND from detection register (0x0040)
1: selects F0_VSYNC_HEND from generator register (0x0084)
selects F0_VSYNC_VEND from generator register (0x0080)
VSYNC_START_SRC 15 Generator Vertical Sync Start Source Select
0: selects F0_VSYNC_HSTART from detection register (0x0044)
selects F0_VSYNC_VSTART from detection register (0x0040)
1: selects F0_VSYNC_HSTART from generator register (0x0084)
selects F0_VSYNC_VSTART from generator register (0x0080)
ACTIVE_VSIZE_SRC 14 Generator Vertical Active Size Source Select
0: selects ACTIVE_VSIZE from detection register (0x0020)
1: selects ACTIVE_VSIZE from generator register (0x0060)
FRAME_VSIZE_SRC 13 Generator Vertical Frame Size Source Select
0: selects FRAME_VSIZE from detection register (0x0034)
1: selects FRAME_VSIZE from generator register (0x0074)
RESERVED 12 Reserved
HSYNC_END_SRC 11 Generator Horizontal Sync End Source Select
0: selects HSYNC_END from detection register (0x0038)
1: selects HSYNC_END from generator register (0x0078)
HSYNC_START_SRC 10 Generator Horizontal Sync Start Source Select
0: selects HSYNC_START from detection register (0x0038)
1: selects HSYNC_START from generator register (0x0078)
ACTIVE_HSIZE_SRC 9 Generator Horizontal Active Size Source Select
0: selects ACTIVE_HSIZE from detection register (0x0020)
1: selects ACTIVE_HSIZE from generator register (0x0060)
FRAME_HSIZE_SRC 8 Generator Horizontal Frame Size Source Select
0: selects FRAME_HSIZE from detection register (0x0030)
1: selects FRAME_HSIZE from generator register (0x0070)
RESERVED 7:6 Reserved
Table28: ControlRegister(AddressOffset0x0000)(Contd)
0x0000 CONTROL Read/Write
Name Bits Description
SYNC_ENABLE 5 Generator Synchronization Enable.
Enables the generator to synchronize to the Detector or to the
fsync_in pin.
1: Generator synchronizes to the Detector or to fsync_in
0: Generator does not synchronize.
RESERVED 4 Reserved
DET_ENABLE 3 Detection Enable.
1: Perform timing signal detection for enabled signals.
0: If SW_ENABLE is '0', No detection will be performed. All
'locked' status bits will be driven low. SW_ENABLE must be '0' to
utilize the DET_ENABLE bit. If SW_ENABLE is '1', both the
detector and generator will be enabled.
GEN_ENABLE 2 Generation Enable.
1: Enable hardware to generate output. Set this bit high only
after the software has configured the generator registers.
0: If SW_ENABLE is '0', The generation hardware will not generate
video timing output signals. SW_ENABLE must be '0' to utilize
the DET_ENABLE bit. If SW_ENABLE is '1', both the detector and
generator will be enabled.
REG_UPDATE 1 Register Update. Generator and Fsync Registers are
double-buffered.
1: Update the Generator and Fsync registers at the start of next
frame.
0: Do not update the Generator and Fsync registers.
SW_ENABLE 0 Core Enable.
1: Enable both the Video Timing Generator and Detector.
0: Generator or Detector can be selectively enabled with bits 2
and 3 of the CONTROL register.
The DET_ENABLE bit allows enabling the detector independently from the generator. The
internal detector enable is a logical "OR" between the DET_ENABLE and SW_ENABLE bits in
the control register. The internal logic that controls the detector sub-core enable is shown
in Figure 2-5. The SW_ENABLE bit allows setting one bit to '1' to enable both the detector
and the generator. To enable the detector or the generator only, the SW_ENABLE bit must
be set to '0' and the detector/generator ENABLE bits (Control Register bits [3:2]) set
independently.
Figure25: DetectorInternalEnableLogic
The internal generator enable is a logical "OR" between the GEN_ENABLE and SW_ENABLE
bits in the control register. The internal logic that controls the generator sub-core enable is
shown in Figure 2-6.
X-Ref Target - Figure 2-6
Figure26: GeneratorInternalEnableLogic
Table29: StatusRegister(AddressOffset0x0004)
0x0004 STATUS Read/Write
Name Bits Description
FSYNC 31:16 Frame Synchronization Interrupt Status. Bits 16-31 are set high
when frame syncs
0-15 are set respectively.
RESERVED 15:14 Reserved
GEN_ACTIVE_VIDEO 13 Generated Active Video Interrupt Status. Set high during the first
cycle the output active video is asserted.
GEN_VBLANK 12 Generated Vertical Blank Interrupt Status. Set high during the first
cycle the output vertical blank is asserted.
DET_ACTIVE_VIDEO 11 Detected Active Video Interrupt Status. Set high during the first
cycle the input active video is asserted active after lock.
DET_VBLANK 10 Detected Vertical Blank Interrupt Status. Set high during the first
cycle the input vertical blank is asserted active after lock.
LOCK_LOSS 9 Loss-of-Lock Status. Set High when any detection signals have
lost locked. Signals that have detection disabled will not affect
this bit.
Check ERROR (0x0008) Register for signal lock status.
Table29: StatusRegister(AddressOffset0x0004)(Contd)
0x0004 STATUS Read/Write
Name Bits Description
LOCK 8 Lock Status. Set High when all detection signals have locked.
Signals that have detection disabled will not affect this bit.
Check ERROR (0x0008) Register for signal lock status. The
detector typically takes from 3 to 5 video frame periods to lock
onto the incoming video standard.
RESERVED 7:0 Reserved
Note: Writing a '1' to a bit in the STATUS register will clear the corresponding interrupt when set.
Writing a '1' to a bit that is cleared, will have no effect.
Table210: ErrorRegister(AddressOffset0x0008)
0x0008 ERROR Read/Write
Name Bits Description
RESERVED 31:22 Reserved
ACTIVE_CHROMA_LOCK 21 Active Chroma Lock Status. Set high when the active chroma timing
remains unchanged.
ACTIVE_VIDEO_LOCK 20 Active Video Lock Status. Set high when the active video timing remains
unchanged.
HSYNC_LOCK 19 Horizontal Sync Lock Status. Set high when the horizontal sync timing
remains unchanged.
VSYNC_LOCK 18 Vertical Sync Lock Status. Set high when the vertical sync timing remains
unchanged.
HBLANK_LOCK 17 Horizontal Blank Lock Status. Set high when the horizontal blank timing
remains unchanged.
VBLANK_LOCK 16 Vertical Blank Lock Status Set high when the vertical blank timing
remains Unchanged.
RESERVED 15:0 Reserved
Writing a '1' to a bit in the ERROR register will clear the corresponding bit when set. Writing a '1' to a bit that is
cleared, will have no effect.
Table211: IRQEnableRegister(AddressOffset0x000C)
0x000C IRQ_ENABLE Read/Write
Name Bits Description
FSYNC 31:16 Frame Synchronization Interrupt Enable
RESERVED 15:14 Reserved
GEN_ACTIVE_VIDEO 13 Generated Active Video Interrupt Enable
GEN_VBLANK 12 Generated Vertical Blank Interrupt Enable
DET_ACTIVE_VIDEO 11 Detected Active Video Interrupt Enable
DET_VBLANK 10 Detected Vertical Blank Interrupt Enable
Table211: IRQEnableRegister(AddressOffset0x000C)
0x000C IRQ_ENABLE Read/Write
Name Bits Description
LOCK_LOSS 9 Loss-of-Lock Interrupt Enable
LOCK 8 Lock Interrupt Enable
RESERVED 7:0 Reserved
Setting a bit high in the IRQ_ENABLE register enables the corresponding interrupt. Bits that are low mask the
corresponding interrupt from triggering.
Table212: VersionRegister(AddressOffset0x0010)
0x0010 VERSION Read
Name Bits Description
MAJOR 31:24 Major version as a hexadecimal value (0x00 - 0xFF)
MINOR 23:16 Minor version as a hexadecimal value (0x00 - 0xFF)
REVISION 15:12 Revision as a hexadecimal value (0x0 - 0xF)
PATCH_REVISION 11:8 Core Revision as a single 4-bit hexadecimal value (0x0 - 0xF) Used
for patch tracking.
INTERNAL_REVISION 7:0 Internal revision number. Hexadecimal value (0x00 - 0xFF)
Table213: DetectorActiveSizeRegister(AddressOffset0x0020)
DETECTOR
0x0020 Read
ACTIVE_SIZE
Name Bits Description
RESERVED 31:29 Reserved
ACTIVE_VSIZE 28:16 Detected Vertical Active Frame Size.
The height of the frame without blanking in number of lines.
RESERVED 15:13 Reserved
ACTIVE_HSIZE 12:0 Detected Horizontal Active Frame Size.
The width of the frame without blanking in number of pixels/clocks.
Table214: DetectorTimingStatusRegister(AddressOffset0x0024)
DETECTOR
0x0024 Read
TIMING_STATUS
Name Bits Description
RESERVED 31:3 Reserved
DET_ACTIVE_VIDEO 2 Detected Active Video Interrupt Status. Set high during the
first cycle the input active video is asserted active after lock.
Table214: DetectorTimingStatusRegister(AddressOffset0x0024)
Table215: DetectorEncodingRegister(AddressOffset0x0028)
Table216: DetectorPolarityRegister(AddressOffset0x002C)
DETECTOR
0x002C POLARITY Read
Table217: DetectorHorizontalFrameSizeRegister(AddressOffset0x0030)
Table218: DetectorVerticalFrameSizeRegister(AddressOffset0x0034)
Table219: DetectorHorizontalSyncRegister(AddressOffset0x0038)
DETECTOR
0x0038 HSYNC Read
Table220: DetectorFrame/Field0VerticalBlankCycleRegister(AddressOffset0x003C)
DETECTOR
0x003C Read
F0_VBLANK_H
Name Bits Description
RESERVED 31:29 Reserved
F0_VBLANK_HEND 28:16 Detected Vertical Blank Horizontal End
End Cycle index of vertical blank. Denotes the first cycle
vblank_in is de-asserted.
RESERVED 15:13 Reserved
F0_VBLANK_HSTART 12:0 Detected Vertical Blank Horizontal Start
Start Cycle index of vertical blank. Denotes the first cycle
vblank_in is asserted.
Table221: DetectorFrame/Field0VerticalSyncLineRegister(AddressOffset0x0040)
DETECTOR
0x0040 F0_VSYNC_V Read
Table222: DetectorFrame/Field0VerticalSyncCycleRegister(AddressOffset0x0044)
DETECTOR
0x0044 F0_VSYNC_H Read
Table223: DetectorField1VerticalBlankCycleRegister(AddressOffset0x0048)
DETECTOR
0x0048 Read
F1_VBLANK_H
Name B its Description
RESERVED 31:29 Reserved
F1_VBLANK_HEND 28:16 Detected Field 1 Vertical Blank Horizontal End
End Cycle index of vertical blank for field 1.
Denotes the first cycle
vblank_in is de-asserted.
RESERVED 15:13 Reserved
F1_VBLANK_HSTART 12:0 Detected Field 1 Vertical Blank Horizontal Start
Start Cycle index of vertical blank for field 1.
Denotes the first cycle
vblank_in is asserted.
Table224: DetectorField1VerticalSyncLineRegister(AddressOffset0x004C)
Table225: DetectorField1VerticalSyncCycleRegister(AddressOffset0x0050)
DETECTOR
0x0050 F1_VSYNC_H Read
Table226: GeneratorActiveSizeRegister(AddressOffset0x0060)
GENERATOR
0x0060 Read/Write
ACTIVE_SIZE
Name Bits Description
RESERVED 31:29 Reserved
ACTIVE_VSIZE 28:16 Generated Vertical Active Frame Size. The height of the frame
without blanking in number of lines.
RESERVED 15:13 Reserved
ACTIVE_HSIZE 12:0 Generated Horizontal Active Frame Size. The width of the frame
without blanking in number of pixels/clocks.
Table227: GeneratorTimingStatusRegister(AddressOffset0x0064)
GENERATOR
0x0064 Read
TIMING_STATUS
Name Bits Description
RESERVED 31:3 Reserved
GEN_ACTIVE_VIDEO 2 Generated Active Video Interrupt Status. Set high during the
first cycle the output active video is asserted.
GEN_VBLANK 1 Generated Vertical Blank Interrupt Status. Set high during the
first cycle the output vertical blank is asserted.
RESERVED 0 Reserved
Table228: GeneratorEncodingRegister(AddressOffset0x0068)
GENERATOR
0x0068 ENCODING Read/Write
Table229: GeneratorPolarityRegister(AddressOffset0x006C)
GENERATOR
0x006C Read/Write
POLARITY
Name Bits Description
RESERVED 31:7 Reserved
FIELD_ID_POL 6 Generated Field ID Polarity
0: Low during Field 0 and High during Field 1
1: High during Field 0 and Low during Field 1
ACTIVE_CHROMA_POL 5 Generated Active Chroma Polarity
0: Active Low Polarity
1: Active High Polarity
Table229: GeneratorPolarityRegister(AddressOffset0x006C)
Table230: GeneratorHorizontalFrameSizeRegister(AddressOffset0x0070)
GENERATOR
0x0070 Read/Write
HSIZE
Name Bits Description
RESERVED 31:13 Reserved
FRAME_HSIZE 12:0 Generated Horizontal Frame Size. The width of the frame with
blanking in number of pixels/clocks.
Table231: GeneratorVerticalFrameSizeRegister(AddressOffset0x0074)
GENERATOR
0x0074 Read/Write
VSIZE
Name Bits Description
RESERVED 31:29 Reserved
FIELD1_VSIZE 28:16 Generated Vertical Field 1 Size. The height with blanking in number
of lines of field 1.
FRAME_VSIZE 12:0 Generated Vertical Frame Size. The height of the frame with
blanking in number of lines.
Table232: GeneratorHorizontalSyncRegister(AddressOffset0x0078)
GENERATOR
0x0078 HSYNC Read/Write
Table233: GeneratorFrame/Field0VerticalBlankCycleRegister(AddressOffset0x007C)
GENERATOR
0x007C Read/Write
F0_VBLANK_H
Name Bits Description
RESERVED 31:29 Reserved
F0_VBLANK_HEND 28:16 Generated Vertical Blank Horizontal End
End Cycle index of vertical blank. Denotes the first cycle
vblank_in is de-asserted.
RESERVED 15:13 Reserved
F0_VBLANK_HSTART 12:0 Generated Vertical Blank Horizontal Start
Start Cycle index of vertical blank. Denotes the first cycle
vblank_in is asserted.
Table234: GeneratorFrame/Field0VerticalSyncLineRegister(AddressOffset0x0080)
GENERATOR
0x0080 F0_VSYNC_V Read/Write
Table235: GeneratorFrame/Field0VerticalSyncCycleRegister(AddressOffset0x0084)
GENERATOR
0x0084 F0_VSYNC_H Read/Write
Table236: GeneratorField1VerticalBlankCycleRegister(AddressOffset0x0088)
GENERATOR
0x0088 Read
F1_VBLANK_H
Name Bits Description
RESERVED 31:29 Reserved
F1_VBLANK_HEND 28:16 Generated Field 1 Vertical Blank Horizontal End
End Cycle index of vertical blank for field 1.
Denotes the first cycle
vblank_in is de-asserted.
RESERVED 15:13 Reserved
F1_VBLANK_HSTART 12:0 Generated Field 1 Vertical Blank Horizontal Start
Start Cycle index of vertical blank for field 1.
Denotes the first cycle
vblank_in is asserted.
Table237: GeneratorField1VerticalSyncLineRegister(AddressOffset0x008C)
Table238: GeneratorField1VerticalSyncCycleRegister(AddressOffset0x0090)
GENERATOR
0x0090 F1_VSYNC_H Read
Table239: FrameSync015ConfigurationRegisters(AddressOffsets0x01000x013C)
FRAMESYNC0
0x0100 Read/Write
CONFIG
Name Bits Description
RESERVED 31:29 Reserved
V_START 28:16 FRAME SYNCHRONIZATION VERTICAL START
Vertical line during which the fsync_out[0] output port is asserted
active-high.
Note: Frame Syncs are not active during the complete line, only in
the cycle during which both the V_START and H_START are valid
each frame.
RESERVED 15:13 Reserved
H_START 12:0 FRAME SYNCHRONIZATION HORIZONTAL START
Horizontal Cycle during which fsync_out[0] output port is asserted
active-high
Frame Sync 1-15 Config Registers (address offset 0x0100 - 0x013c) have the same format as the Frame Sync 0
Config Register.
Table240: GeneratorGlobalDelayRegister(AddressOffset0x140)
Generator
0x140 Read/Write
GlobalDelay
Name Bits Description
Reserved 31:29 Reserved
V_DELAY 28:16 GENERATOR VERTICAL DELAY
Vertical line offset. This is the number of lines that the generated output
will be shifted relative to the detector (input timing). The vertical delay
is only available when both the detector and generator are enabled. Can
be combined with the H_DELAY.
Table240: GeneratorGlobalDelayRegister(AddressOffset0x140)(Contd)
DesigningwiththeCore
BasicArchitecture
The Video Timing Controller core contains three modules: the video timing detector, the
video timing generator and the interrupt controller. See Figure 3-1.
Either the detector or the generator module can be disabled at instantiation with the GUI to
save resources.
X-Ref Target - Figure 3-1
Figure31: VideoTimingControllerBlockDiagram
ControlSignalsandTiming
The Video Timing Controller Inputs and Outputs are discussed and shown with timing
diagrams in the following sections.
The blanking and active period definitions were discussed in Chapter 1, Overview. In
addition to these definitions, the period from the start of blanking (or end of active video)
to the start of synchronization is called the front porch. The period from the end of
synchronization to the end of blanking (or start of active video) is called the back porch. The
total horizontal period (including blanking and active video) can also be defined, and
similarly the total vertical period.
Figure 3-2 shows the start of the horizontal front porch (Hblank Start), synchronization
(Hsync Start), back porch (Hsync End) and active video (SAV). It also shows the start of the
vertical front porch (Vblank Start), synchronization (Vsync Start), back porch (Vsync End)
and active video (SAV). The total number of horizontal clock cycles is HSIZE and the total
number of lines is the VSIZE.
These definitions of video frame periods are used for both Video Timing Detection and
Video Timing Generation.
X-Ref Target - Figure 3-2
Figure32: ExampleVideoFrameandTimingSignalswithFrontandBackPorch
VideoTimingDetection
The Video Timing Controller has six optional inputs for detecting the timing of the input
video signal: vertical blank, vertical synchronization, horizontal blank, horizontal
synchronization, active video and active chroma. The minimum set of inputs required to
detect is either vertical blank, horizontal blank and active video or vertical sync, horizontal
sync and active video. To enable detection, the Enable Detection GUI parameter must be set,
and the control register bit 1 must also be set. The GUI parameter allows saving FPGA
resources. The Control Register allows run-time flexibility. Other GUI parameters can be set
to selectively disable detection of one or more input video timing signals.
The detected polarity of each input signal is shown by bits 0-5 of the Detection Polarity
Register (address offset 0x2C). High denotes active high polarity, and low denotes active
low polarity. Bits 8 and 9 of the Detection Encoding Register shows the number of lines
skipped between each active chroma line. Bit 8 High denotes that every other line is
skipped (4:2:0), and low denotes that no lines are skipped (4:4:4 or 4:2:2). Bit 9 High denotes
that every other pixel is skipped, and low denotes that no pixels are skipped.
VideoTimingGeneration
The Video Timing Controller can generate up to six output video signals: vertical blank,
vertical synchronization, horizontal blank, horizontal synchronization, active video and
active chroma. To enable generation of these signals, the Enable Generation GUI parameter
must be set, and the control register bit 0 or bit 2 must also be set. Other GUI parameters
can be set to selectively disable generation of one or more video timing signals.
The polarity of each output signal can be set by bits 0-5 of the Generator Polarity Register
(Address Offset 0x006C). High denotes active high polarity, and low denotes active low
polarity. Bits 8 and 9 of the Control Register also sets the number of lines skipped between
each active chroma line. Bit 8 High denotes that every other line is skipped (4:2:0), and low
denotes that no lines are skipped (4:4:4 or 4:2:2). Bit 9 High denotes that every other pixel
is skipped, and low denotes that no pixels are skipped.
The Video Timing Controller has bits in the Control Register called Source Selects to select
the internal detection registers or the external input generation registers. These bits allow
the detected timing (if enabled) to control the generated outputs or allow the host
processor to override each value independently via the generation registers at address
offset 0x0060 - 0x0084, as described in Table 2-7.
Table 3-1 through Table 3-6 show example settings of the input control busses and the
resultant video timing output signals.
HorizontalGenerationConfigurationExample
Programming the horizontal generation registers to the values shown in Table 3-1 will result
in the video timing signal outputs shown in Figure 3-3.
Notice that in Table 3-1 the Control Register bit 2 is set to enable generation, that all source
selects are set to 1 to select the Generation Registers and that the polarity bits are all set to
1 to configure the outputs for active high polarity.
Table31: ExampleHorizontalGenerationRegisterInputs
RegisterAddress RegisterName Value
0x0060 Generator Active Size 0x0003_0003
Figure33: GeneratedHorizontalTiming
IMPORTANT: All signals are shown active high. The polarities of the output signals can be changed at
any time via the GENERATOR POLARITY REGISTER (0x006C).
The following C code shows how to configure the register values in Table 3-1 using the
Video Timing Controller driver.
VtcCfgPtr = XVtc_LookupConfig(VTC_DEVICE_ID);
SourceSelect.HBlankPolSrc = 1;
SourceSelect.HSyncPolSrc = 1;
SourceSelect.ActiveVideoPolSrc = 1;
SourceSelect.ActiveChromaPolSrc= 1;
SourceSelect.VChromaSrc = 1;
SourceSelect.VActiveSrc = 1;
SourceSelect.VBackPorchSrc = 1;
SourceSelect.VSyncSrc = 1;
SourceSelect.VFrontPorchSrc = 1;
SourceSelect.VTotalSrc = 1;
SourceSelect.HActiveSrc = 1;
SourceSelect.HBackPorchSrc = 1;
SourceSelect.HSyncSrc = 1;
SourceSelect.HFrontPorchSrc = 1;
SourceSelect.HTotalSrc = 1;
SignalCfg.V0Total = 7;
SignalCfg.V0ChromaStart = 0;
SignalCfg.V0ActiveStart = 0;
SignalCfg.V0FrontPorchStart = 3;// Active Video Height
SignalCfg.V0SyncStart = 4;// Active Video Height + FP_Width
SignalCfg.V0BackPorchStart = 5;// Active Video Height + FP Width + Sync Width
VerticalGenerationConfigurationExample
Programming the generation registers to the values shown in Table 3-2 will result in the
video timing signal outputs shown in Figure 3-4.
Notice that in Table 3-2 the Generator Encoding Register bits [3:0] are set to 0 to configure
the number of lines skipped between each active chroma line to be 0. This configures the
Active Chroma output signal for 4:4:4 or 4:2:2 mode in which every line contains valid
chroma samples.
Table32: ExampleVerticalGenerationRegisterInputs
RegisterAddress RegisterName Value
0x0060 Generator Active Size 0x0004_0003
Figure34: GeneratedVerticalTiming(4:4:4Chroma)
The following C code shows how to configure the register values in Table 3-2 using the
Video Timing Controller driver.
VtcCfgPtr = XVtc_LookupConfig(VTC_DEVICE_ID);
SourceSelect.ActiveChromaPolSrc= 1;
SourceSelect.VChromaSrc = 1;
SourceSelect.VActiveSrc = 1;
SourceSelect.VBackPorchSrc = 1;
SourceSelect.VSyncSrc = 1;
SourceSelect.VFrontPorchSrc = 1;
SourceSelect.VTotalSrc = 1;
SourceSelect.HActiveSrc = 1;
SourceSelect.HBackPorchSrc = 1;
SourceSelect.HSyncSrc = 1;
SourceSelect.HFrontPorchSrc = 1;
SourceSelect.HTotalSrc = 1;
SignalCfg.V0Total = 8;
SignalCfg.V0ChromaStart = 0;
SignalCfg.V0ActiveStart = 0;
SignalCfg.V0FrontPorchStart = 4;// Active Video Height
SignalCfg.V0SyncStart = 5;// Active Video Height + FP_Width
SignalCfg.V0BackPorchStart = 6;// Active Video Height + FP Width + Sync Width
VerticalGenerationConfigurationExamplewithActiveChromaforYUV4:2:0
ActiveforEvenLines
Programming the vertical generation registers to the values shown in Table 3-3 will result in
the video timing signal outputs shown in Figure 3-5.
Notice that in Table 3-3 the Generator Encoding Register bits [3:0] are set to 0b0011 to
configure the number of lines skipped between each active chroma line to be one line. This
configures the Active Chroma output signal for 4:2:0 mode in which only every other line
contains valid chroma samples.
Table33: ExampleVerticalGenerationRegisterInputs(4:2:0Chroma)
RegisterAddress RegisterName Value
0x0060 Generator Active Size 0x0004_0003
Figure35: GeneratedVerticalTiming(4:2:0Chroma)
The following C code shows how to configure the register values in Table 3-3 using the
Video Timing Controller driver.
VtcCfgPtr = XVtc_LookupConfig(VTC_DEVICE_ID);
SourceSelect.VChromaSrc = 1;
SourceSelect.VActiveSrc = 1;
SourceSelect.VBackPorchSrc = 1;
SourceSelect.VSyncSrc = 1;
SourceSelect.VFrontPorchSrc = 1;
SourceSelect.VTotalSrc = 1;
SourceSelect.HActiveSrc = 1;
SourceSelect.HBackPorchSrc = 1;
SourceSelect.HSyncSrc = 1;
SourceSelect.HFrontPorchSrc = 1;
SourceSelect.HTotalSrc = 1;
SignalCfg.V0Total = 8;
SignalCfg.V0ChromaStart = 0;
SignalCfg.V0ActiveStart = 0;
SignalCfg.V0FrontPorchStart = 4;// Active Video Height
SignalCfg.V0SyncStart = 5;// Active Video Height + FP_Width
SignalCfg.V0BackPorchStart = 6;// Active Video Height + FP Width + Sync Width
VerticalGenerationConfigurationExamplewithActiveChromaforYUV4:2:0
ActiveforOddLines
Programming the vertical generation registers to the values shown in Table 3-4 will result in
the video timing signal outputs shown in Figure 3-6.
Notice that the Generator Encoding Register bits [3:0] are set to 0b0011, as in the previous
example. Bits [9:8] of the Generator Encoding Register is set to 1 instead of 0. This
configures the Active Chroma output signal for 4:2:0 mode, but with the opposite line set.
Table34: ExampleVerticalGenerationRegisterInputs(Alternate4:2:0Chroma)
RegisterAddress RegisterName Value
0x0060 Generator Active Size 0x0004_0003
Figure36: GeneratedVerticalTiming(Alternate4:2:0Chroma)
The following C code shows how to configure the register values in Table 3-4 using the
Video Timing Controller driver.
VtcCfgPtr = XVtc_LookupConfig(VTC_DEVICE_ID);
SourceSelect.VChromaSrc = 1;
SourceSelect.VActiveSrc = 1;
SourceSelect.VBackPorchSrc = 1;
SourceSelect.VSyncSrc = 1;
SourceSelect.VFrontPorchSrc = 1;
SourceSelect.VTotalSrc = 1;
SourceSelect.HActiveSrc = 1;
SourceSelect.HBackPorchSrc = 1;
SourceSelect.HSyncSrc = 1;
SourceSelect.HFrontPorchSrc = 1;
SourceSelect.HTotalSrc = 1;
SignalCfg.V0Total = 8;
SignalCfg.V0ChromaStart = 0;
SignalCfg.V0ActiveStart = 1;
SignalCfg.V0FrontPorchStart = 4;// Active Video Height
SignalCfg.V0SyncStart = 5;// Active Video Height + FP_Width
SignalCfg.V0BackPorchStart = 6;// Active Video Height + FP Width + Sync Width
TimingRegenerationExamplewithSelectiveSignalsOverridden
Table 3-5 shows the detection register values for the source video timing in Figure 3-7.
Programming the horizontal generation registers to the values shown in Table 3-6 will result
in the video timing signal outputs shown in Figure 3-7.
Table35: ExampleHorizontalDetectionRegisterOutputs
RegisterAddress RegisterName Value
0x0020 Detector Active Size 0x0004_0003
Table35: ExampleHorizontalDetectionRegisterOutputs(Contd)
RegisterAddress RegisterName Value
0x0028 Detector Encoding 0x0000_0000
Notice that all polarities bits are high in the Detection Polarity Register, signifying that all
inputs are detected to have an active high polarity.
Table36: ExampleHorizontalGenerationRegisterInputs
RegisterAddExample
HorizontalGenerationRegister RegisterName Value
Inputsress
0x0060 Generator Active Size 0x0004_0001
0x0070 Generator HSize 0x0000_0007
0x0078 Generator HSync 0x0004_0003
0x0068 Generator Encoding 0x0000_0000
0x006C Generator Polarity 0x0000_0037
0x0000 Control 0x0080_062f
Notice, in the Control Register, that bit 2 is set to enable generation, bit 3 is set to enable
detection and bit 5 is set to enable synchronizing the generated output to the detected
inputs.
The Horizontal Size (ACTIVE_HSIZE_SRC) Source Select (bit 9 of the Control Register) is
set to 1. All other source selects are low, signifying that all other detection registers should
be used.
Also notice that the polarity of the output horizontal synchronization has been changed to
active low by clearing bit 3 of the Generator Polarity Register.
X-Ref Target - Figure 3-7
Figure37: DetectedandRegeneratedHorizontalTiming
IMPORTANT: All generated outputs remain synchronized to the inputs. The only changes
made to the output are to the horizontal synchronization polarity and to the active video
start and stop times.
The following C code shows how to configure the register values in Table 3-6 using the
Video Timing Controller driver.
VtcCfgPtr = XVtc_LookupConfig(VTC_DEVICE_ID);
SourceSelect.VChromaSrc = 0;
SourceSelect.VActiveSrc = 1;
SourceSelect.VBackPorchSrc = 0;
SourceSelect.VSyncSrc = 0;
SourceSelect.VFrontPorchSrc = 0;
SourceSelect.VTotalSrc = 0;
SourceSelect.HActiveSrc = 0;
SourceSelect.HBackPorchSrc = 0;
SourceSelect.HSyncSrc = 0;
SourceSelect.HFrontPorchSrc = 0;
SourceSelect.HTotalSrc = 0;
SignalCfg.V0Total = 8;
SignalCfg.V0ChromaStart = 0;
SignalCfg.V0ActiveStart = 0;
SignalCfg.V0FrontPorchStart = 4;// Active Video Height
Synchronization
Generation of the video timing output signals can be synchronized to the detected video
timing input signals or generated independently. Synchronization of the output to the input
allows the developer to override each individual timing signal with different settings such
as signal polarity or start time. For example, the active video signal could be regenerated
shifted one cycle earlier or later. This provides a flexible method for regenerating video
timing output signals with different settings while remaining synchronized to the input
timing.
The Video Timing Controller also has a GUI parameter, called Auto Generation Mode, to
control the behavior of the generated outputs based on the detected inputs. When the Auto
Generation Mode parameter is set, the generated video timing outputs will change based
on the detected inputs. If this parameter is not set, then the video timing outputs will be
generated based on only the first detected input format. (If the detector loses lock, the
generated outputs will continue to be generated.) To change output timing while Auto
Generation Mode is set, timing detection must first be disabled by clearing bit 1 in the
Control Register and then re-enabling, if any of the Source Select bits are low.
FrameSyncs
The Video Timing Controller has a frame synchronization output bus. Each bit can be
configured to toggle high for any one clock cycle during each video frame. Each bit is
independently configured for horizontal and vertical clock cycle position with the Frame
Sync Configuration Registers (address offsets 0x0100 - 0x013c).
Interrupts
The Video Timing Controller has an active high interrupt output port named "irq". This
output is set high when an interrupt occurs and set low when the interrupt event has been
cleared. The Video Timing Controller also contains three 32-bit registers for configuring
and reporting status of interrupts: the Interrupt Status/Clear, the Interrupt Enable and the
Interrupt Clear Registers. A logical AND is performed on the Interrupt Enable Register and
the Interrupt Status Register to set the interrupt output high. The Interrupt Clear Register is
used to clear the Interrupt Status Register. Writing a '1' to a bit in the Interrupt Status
Register clears the corresponding interrupt when set. Writing a '1' to a bit that is cleared,
will have no effect.
UseModel
This section illustrates likely usage scenarios for the Xilinx Video Timing Controller core.
X-Ref Target - Figure 3-8
%XTERNAL 6IDEO 3OURCE
6IDEO
)N
!8) !8) !8)
-- 3TREAM
4O
6$-! 3OURCE
!8)
3TREAM 6IDEO
4IMING
3IGNALS
!8)
3TREAM
6IDEO FSYNC
!8) !8)
0ROCESSOR
%XTERNAL %XTERNAL -- 6$-! !8)
6IDEO
-EMORY -EMORY 3TREAM
!8) !8) 4IMING !8)
#ONTROLLER -- ,ITE
)NTERCONNECT #ONTROLLER
$$2 !8) 6IDEO
3$2!- !8) $$28 !8) !8) 3TREAM
--
0ROCESSOR
6$-!
!8) FSYNC
3TREAM 'ENERATED
6IDEO
4IMING
!8)
3TREAM 3IGNALS
!8) !8) !8)
-- 3TREAM
4O
6$-!
6IDEO
/UT
4O $ISPLAY
Figure38: ExampleVideoTimingControllerUseModel
Figure 3-8 shows four features of the Video Timing Controller being utilized in a video
system:
To detect the timing of the source video, the timing signals are connected to the Video
Timing Controller Detection Module. Both the timing and the signal polarity of the timing
signals are captured and easily read by the host processor.
Video timing signals are generated to control a AXI4-Stream to Video-Out module and an
external display. The timing of these output signals is controlled by the host processor. The
Video Timing Controller can be configured in real-time to replicate the source video format
or to slightly change the format on the output, for example, in cases where the input signals
are positive polarity yet the display requires negative polarity synchronization signals. The
Video Timing Controller can also be reconfigured in real-time to output a completely
different format from the input source.
Two Frame Sync outputs are generated to control Video Processor 1 and Video Processor 2.
These outputs could be used to control when Video Processor 2 starts processing relative to
when Video Processor 1 starts processing. These Frame Syncs can be reconfigured in
real-time as well.
The Video Timing Controller is connected to a Host Processor in this example. The AXI4-Lite
Interface allows for easy connection between status/control registers and the host
processor. In addition, the Video Timing Controller interrupt output can also be used to
synchronize the software with hardware events.
If the video system requires that only complete video frames are sent from the Video-In To
AXI4-Stream core, then the Video Timing Controller must be configured to drive the
axis_enable input with bit 8 of the INTC_IF bus. This bus must be enabled with the "Include
INTC Interface".
9LGHR7LPLQJ
&RQWUROOHU ILHOGBLGBRXW
*HQHUDWRU YEODQNBRXW
YV\QFBRXW
IV\QFBLQ KEODQNBRXW 9LGHR7LPLQJ
KV\QFBRXW RXWSXW
DFWLYHBYLGHRBRXW ,QWHUIDFH
DFWLYHBFKURPDBRXW
IV\QFBRXW
9LGHR7LPLQJ
&RQWUROOHU ILHOGBLGBRXW
*HQHUDWRU YEODQNBRXW
YV\QFBRXW
YV\QF IV\QFBLQ KEODQNBRXW 9LGHR7LPLQJ
YEODQN KV\QFBRXW RXWSXW
,QWHUIDFH
DFWLYHBYLGHRBRXW
DFWLYHBFKURPDBRXW
6HOHFW
Figure39: VideoTimingControllerGeneratorSynchronizationUseModel
Figure 3-9 shows the ability of the Video Timing Controller to synchronize the timing
generator to an incoming frame sync, vertical sync or vertical blank signal. This is useful to
generate timing signals that are not present. For example, if blank signals can be generated
from sync signals. Also, this allows the timing generator to synchronize to a separate timing
generator
In this example, the bottom timing generator can be synchronized to the top timing
controller, a separate vsync or separate vblank signal. This is controlled by the mux "Select"
signal.
IMPORTANT: The timing generator can be offset from the input by configuring the Generator Global
Delay Register (Address Offset 0x140)]
Once the fsync_in input is selected, the pixel or line offset delay of the synchronized
generator can be configured with the Generator Global Delay Register.
Clocking
The Video Timing Controller core has two clock sources, CLK and S_AXI_ACLK, one for
each clock domain. The Video Timing Controller core also has four clock enable sources:
CLK, DET_CLKEN, GEN_CLKEN and S_AXI_ACLKEN.
CLK
The input and output video timing interfaces use the CLK clock signal as their shared clock
reference.
S_AXI_ACLK
The AXI4-Lite interface uses the S_AXI_ACLK pin as its clock source. The CLK pin is not
shared between the AXI4-Lite and video timing interfaces. The Video Timing Controller core
contains clock-domain crossing logic between the CLK (video timing) and S_AXI_ACLK
(AXI4-Lite) clock domains. The core automatically ensures that the AXI4-Lite transactions
completes even if the video processing is stalled with RESETn, CLKEN or with the video
clock not running.
CLKEN
The Video Timing Controller core has multiple enable options: the CLKEN pin (hardware
clock enable), and the software enable option provided via the AXI4-Lite control interface
(when present).
The CLKEN pin cannot ensure synchronization internally to video timing processing
therefore de-asserting CLKEN for extended periods of time may lead to generating
incomplete frames or lengthening the period needed to detect incoming video frame
timing.
Multi-cycle path designs (high speed clock division without clock gating),
Standby operation of subsystems to save on power
Hardware controlled bring-up of system components
DET_CLKEN
The Video Timing Controller core also has a separate clock enable input pin to control the
detector. This clock enable allows halting the detector independently from the generator.
GEN_CLKEN
The Video Timing Controller core also has a separate clock enable input pin to control the
generator. This clock enable allows halting the generator independently from the detector.
S_AXI_ACLKEN
The S_AXI_ACLKEN is the clock enable signal for the AXI4-Lite interface only. Driving this
signal low only affects the AXI4-Lite interface and does not halt the video timing processing
in the CLK clock domain.
Resets
The Video Timing Controller core has two reset pins, RESETn and S_AXI_ARESETn, one
for each clock domain. Both resets are active low.
RESETn
The Video Timing Controller core has two reset sources: the RESETn pin (hardware reset),
and the software reset provided via the AXI4-Lite control interface (when present). The
software reset is available via the control register at address offset 0x0000, bit 31.
IMPORTANT: RESETn is not synchronized internally to the video timing processing. De-asserting
RESETn while frame timing is being process can lead to incomplete frames (from the generator).
The external reset pulse needs to be held for at least 32 CLK cycles to reset the core. The
RESETn signal only resets the video timing interfaces and processing of the core. The
AXI4-Lite interface is unaffected by the RESETn signal to allow the video timing processing
core to be reset without halting the AXI4-Lite interface. However, if the RESETn is asserted
low during an AXI4-Lite register read or write, the AXI4-Lite interface asserts the slave error
response (0x2) for all addresses.
IMPORTANT: When a system with multiple-clocks and corresponding reset signals are being reset, the
reset generator has to ensure all signals are asserted/de-asserted long enough so that all interfaces
and clock-domains are correctly reinitialized.
S_AXI_ARESETn
The S_AXI_ARESETn signal is synchronous to the S_AXI_ACLK clock domain, but is
internally synchronized to the CLK clock domain. The S_AXI_ARESETn signal resets the
entire core including the AXI4-Lite and video timing interfaces.
ProtocolDescription
The Video Timing Controller core register interface is compliant with the AXI4-Lite
interface.
CustomizingandGeneratingtheCore
This chapter includes information about using Xilinx tools to customize and generate the
core in the Vivado Design Suite environment.
VivadoIntegratedDesignEnvironment(IDE)
You can customize the IP for use in your design by specifying values for the various
parameters associated with the IP core using the following steps:
For details, see the sections, Working with IP and Customizing IP for the Design in the
Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 3] and the Working with the
Vivado IDE section in the Vivado Design Suite User Guide: Getting Started (UG910) [Ref 5].
If you are customizing and generating the core in the Vivado IP Integrator, see the Vivado
Design Suite User Guide: Designing IP Subsystems Using IP Integrator (UG994) [Ref 7] for
detailed information. IP Integrator might auto-compute certain configuration values when
validating or generating the design. To check whether the values do change, see the
description of the parameter in this chapter. To view the parameter value you can run the
validate_bd_design command in the Tcl console.
Note: Figures in this chapter are illustrations of the Vivado IDE. This layout might vary from the
current version.
GraphicalUserInterface
The Xilinx Video Timing Controller core is easily configured to meet the developer's specific
needs through the Vivado tools graphical user interface (Figure 4-1, Figure 4-2). This
section provides a quick reference to parameters that can be configured at generation time.
Figure41: VivadoIPCatalogGUIMainWindow
Figure42: VivadoIPCatalogGUIDefault/ConstantModeOptionsTab
Figure43: VivadoIPGUIFrameSyncPositionTab
The GUI displays a representation of the IP symbol on the left side and the parameter
assignments on the right side, described as follows:
Component Name: The component name is used as the base name of output files
generated for the module. Names must begin with a letter and must be composed
from characters: a to z, 0 to 9 and _.
Note: The name v_tc_v6_1 is not allowed.
Optional Features:
Include INTC Interface: When selected, the core generates the optional INTC_IF
port, which gives parallel access to signals indicating frame processing status and
error conditions. For more information, refer to Interrupts in Chapter 2.
- Interlaced Video Support: When selected, the core is generated with interlaced
video detection and/or generation enabled.
- Synchronize Generator to Detector or to fsync_in: When selected, the timing
generator automatically synchronizes to the detector or to the fsync_in input
port. Otherwise, the generator runs in free-run mode.
Options:
Maximum Clocks per Line: This parameter sets the maximum number of clock
cycles per video line that the Video Timing Controller can generate or detect.
Values of 128, 256, 512, 1024, 2048, 4096 and 8192 are valid.
Maximum Lines per Frame: This parameter sets the maximum number of lines per
video frame that the Video Timing Controller can generate or detect. Values of 128,
256, 512, 1024, 2048, 4096 and 8192 are valid.
Frame Syncs: This parameter sets the number of frame synchronization outputs to
generate and supports up to 16 independent outputs.
Enable Generation: This parameter enables or disables the video timing outputs.
Enable Detection: This parameter enables or disables the detecting the timing of
the video inputs.
Generation Options:
- Field ID Generation: This parameter enables or disables generating the field ID
output.
- Vertical Blank Generation: This parameter enables or disables generating the
vertical blank output.
- Horizontal Blank Generation: This parameter enables or disables generating
the horizontal blank output.
- Vertical Sync Generation: This parameter enables or disables generating the
vertical synchronization output.
- Horizontal Sync Generation: This parameter enables or disables generating the
horizontal synchronization output.
- Active Video Generation: This parameter enables or disables generating the
active video output.
- Active Chroma Generation: This parameter enables or disables generating the
active chroma output.
- Auto Generation Mode: When enabled, this parameter will cause the generated
video timing outputs to change based on the detected inputs. If this parameter
is disabled, the video timing outputs will be generated based on only the first
detected input format. The output for the generated synchronization signals will
continue even if the detection block loses lock. This parameter is available only
if both the Enable Generation and Enable Detection parameters are enabled.
Note: This parameter has an effect only if one or more of the source select
control register bits are set to low.
Detection Options:
- Field ID Detection: This parameter enables or disables detecting the field id
input.
Video Format:
- Video Mode: This parameter sets the default video format and controls the
Horizontal, Vertical and Horizontal Fine Adjustment settings below. Values of
720p, 480p, 576p, 1080p, 352x288p, 352x576p, 480x576p, 544x575p, 704x576p,
704x480p, 640x480p, 800x600p, 1024x768p, 1280x1024p, 1600x1200p or
Custom are valid. The interlaced video modes of 1080i, 480i and 576i are also
available when the Interlaced Support parameter is checked. Video Modes are
removed or added to this list based upon the sizes selected in the Max Clocks
per Line and Max Lines per Frame parameters.
- Chroma Format: This parameter sets the default value of the video format in
the GENERATOR ENCODING register at address offset 0x68. This controls the
behavior of the active_chroma_out output port.
- Chroma Parity: This parameter sets the default value of the chroma parity in the
GENERATOR ENCODING register at address offset 0x68. This controls the
behavior of the active_chroma_out output port.
Horizontal Settings:
- Active Size: This parameter sets the default number of clock cycles per frame
(without blanking) in the GENERATOR ACTIVE_SIZE register at address offset
0x060.
- Frame Size: This parameter sets the default number of clock cycles per frame
(with blanking) in the GENERATOR HSIZE register at address offset 0x70.
- Sync Start: This parameter sets the default value of the clock cycle count during
which the horizontal sync starts in the GENERATOR HSYNC register at address
offset 0x78.
- Sync End: This parameter sets the default value of the clock cycle count during
which the horizontal sync ends in the GENERATOR HSYNC register at address
offset 0x78.
- Sync Start: This parameter sets the Field 1 default value of the line count during
which the vertical sync starts in the GENERATOR F1_VSYNC_V register at
address offset 0x8C.
- Sync End: This parameter sets the Field 1 default value of the line count during
which the vertical sync ends in the GENERATOR F1_VSYNC_V register at
address offset 0x8C.
Active Polarity:
- Field ID: This parameter sets the polarity of the field_id_out signal. Values
of Active High or Active Low are valid. This parameter is enabled when the
Interlaced Video Support and Interlaced parameters are enabled.
- Vblank: This parameter sets the polarity of the vblank_out signal. Values of
Active High or Active Low are valid.
- Hblank: This parameter sets the polarity of the hblank_out signal. Values of
Active High or Active Low are valid.
- Vsync: This parameter sets the polarity of the vsync_out signal. Values of
Active High or Active Low are valid.
- Hsync: This parameter sets the polarity of the hsync_out signal. Values of
Active High or Active Low are valid.
- Active Video: This parameter sets the polarity of the active_video_out
signal. Values of Active High or Active Low are valid.
- Active Chroma: This parameter sets the polarity of the active_chroma_out
signal. Values of Active High or Active Low are valid.
- Frame Sync # Horizontal Position: These parameters set the default value of
the clock cycle count during which Frame Sync # is active in the FRAME SYNC
0-15 CONFIG registers at address offset 0x100-0x13c.
- Frame Sync # Vertical Position: These parameters set the default value of the
line count during which Frame Sync # is active in the FRAME SYNC 0-15
CONFIG registers at address offset 0x100-0x13c.
Note: The parameter values within the Constant/Default Timing Generation Options will also be
the values used during timing generation when the Include AXI4-Lite Register Interface parameter is
disabled. These parameter values will be used when the core is in constant mode when it does not
have an AXI4-Lite interface.
OutputGeneration
Vivado generates the files necessary to build the core and place those files in the
<project>/<project>.srcs/sources_1/ip/<core> directory.
FileDetails
The Vivado tools output consists of some or all the following files.
Table41: VivadoSoftwareOutput
Name Description
v_tc_v6_1 Library directory for the v_tc_v6_1 core IP-XACT XML file describes which
options were used to generate the core. An XCI file can also be used as a
source file.
v_tc_v6_1.veo Verilog instantiation template
v_tc_v6_1.vho VHDL instantiation template
v_tc_v6_1.xci IP-XACT XML file describes which options were used to generate the core. An
XCI file can also be used as a source file.
v_tc_v6_1.xml IP-XACT XML file describes how the core is constructed to build the core.
ConstrainingtheCore
RequiredConstraints
The only constraints required are clock frequency constraints for the video clock, clk, and
the AXI4-Lite clock, s_axi_aclk. Paths between the two clock domains should be
constrained with a max_delay constraint and use the datapathonly flag, causing setup
and hold checks to be ignored for signals that cross clock domains. These constraints are
provided in the XDC constraints file included with the core.
Simulation
This chapter contains information about simulating IP in the Vivado Design Suite
environment. 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 6].
SynthesisandImplementation
For details about synthesis and implementation, see Synthesizing IP and Implementing
IP in the Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 3].
DetailedExampleDesign
No example design is available at the time for the Video Timing Controller v6.1 core.
TestBench
This chapter contains information about the provided test bench in the Vivado Design
Suite environment.
DemonstrationTestBench
A demonstration test bench is provided with the core which enables you to observe core
behavior in a typical scenario. This test bench is generated together with the core in
Vivado Design Suite. You are encouraged to make simple modifications to the
configurations and observe the changes in the waveform.
DirectoryandFileContents
The following files are expected to be generated in the in the demonstration test bench
output directory:
axi4lite_mst.v
axi4s_video_mst.v
axi4s_video_slv.v
ce_generator.v
tb_<IP_instance_name>.v
TestBenchStructure
The top-level entity is tb_<IP_instance_name>.
DUT
axi4lite_mst
The AXI4-Lite master module, which initiates AXI4-Lite transactions to program core
registers.
axi4s_video_mst
The AXI4-Stream master module, which generates ramp data and initiates AXI4-Stream
transactions to provide video stimuli for the core and can also be used to open stimuli
files and convert them into corresponding AXI4-Stream transactions.
a. Add define macro for the stimuli file name and directory path
define STIMULI_FILE_NAME<path><filename>.
b. Comment-out/remove the following line:
MST.is_ramp_gen(`C_ACTIVE_ROWS, `C_ACTIVE_COLS, 2);
and replace with the following line:
MST.use_file(`STIMULI_FILE_NAME);
axi4s_video_slv
The AXI4-Stream slave module, which acts as a passive slave to provide handshake
signals for the AXI4-Stream transactions from the core output, can be used to open the
data files and verify the output from the core.
a. Add define macro for the golden file name and directory path
define GOLDEN_FILE_NAME <path><filename>.
b. Comment out the following line:
SLV.is_passive;
and replace with the following line:
SLV.use_file(`GOLDEN_FILE_NAME);
ce_gen
Verification,Compliance,and
Interoperability
Simulation
A highly parameterizable test bench was used to test the Video Timing Controller core.
Testing included the following:
Register accesses
Processing of multiple frames of data
Testing of various frame sizes including 1080p, 720p, and 480p
Varying instantiations of the core
Varying the polarity of input and output signals
Varying the horizontal offset of the vertical timing signals
Regenerating the input on the output
Testing of various interrupts
HardwareTesting
The Video Timing Controller core has been tested in a variety of hardware platforms at
Xilinx to represent a variety of parameterizations, including the following:
A test design was developed for the core that incorporated a MicroBlaze processor,
AXI4 Interconnect and various other peripherals. The software for the test system
included live video input for the Video Timing Controller core. The Video Timing
Controller, in addition to live video, was also connected in loopback allow the
generator to feed the detector for a robust loopback test. Various tests could be
supported by varying the configuration of the Timing Controller core or by loading a
different software executable. The MicroBlaze processor was responsible for:
Initializing the HDMI/DVI input and output cores for live video.
Configuring the Video Timing Controller for various input frame sizes and checking
the detection/generation loopback connection for correct video detection
MigratingandUpgrading
This appendix contains information about migrating from an ISE design to the Vivado
Design Suite, and for upgrading to a more recent version of the IP core. For customers
upgrading their IP core, important details (where applicable) about any port changes and
other impact to user logic are included.
MigratingtotheVivadoDesignSuite
For information about migration to Vivado Design Suite, see ISE to Vivado Design Suite
Migration Guide (UG911) [Ref 2].
UpgradinginVivadoDesignSuite
This section provides information about any changes to the user logic or port designations
that take place when you upgrade to a more current version of this IP core in the Vivado
Design Suite.
ParameterChanges
The Video Timing Controller v5.00.a added parameters for configuring the core in constant
mode, thus the core can be initialized to generate timing after reset without a processor or
software.
PortChanges
The Video Timing Controller v5.00.a removed all GPP interface ports. The Video Timing
Controller v4.00.a.0 added the ability to operate on video frame sizes up to 8192 x 8192.
Previous versions supported 4096 x 4096 maximum. If the maximum sizes of 8192 are
selected, some GPP ports will be 13 bits wide where on previous versions of the core, these
ports were 12 bits.
The Video Timing Controller v4.00.a also added the ability to detect and generate vertical
signals with a horizontal offset. In order to report the horizontal start cycle of these vertical
signals, the Video Timing Controller v4.00.a added the following new ports:
gen_v0blank_hstart
gen_v0blank_hend
gen_v0sync_hstart
gen_v0sync_hend
det_v0blank_hstart
det_v0blank_hend
det_v0sync_hstart
det_v0sync_hend
OtherChanges
MigratingtotheAXI4LiteInterface
The Video Timing Controller v4.00.a changed from the PLB processor interface to the
AXI4-Lite interface. As a result, all of the PLB-related connections have been replaced with
an AXI4-Lite interface. For more information, see the AXI Reference Guide [Ref 1].
FunctionalityChanges
The Video Timing Controller v5.00.a AXI4-Lite register definitions changed from the
previous version, simplifying the address map. The Video Timing Controller v5.00.a also
added parameters for configuring the core in constant mode, thus the core can be
initialized to generate timing after reset without a processor or software. The Video Timing
Controller v3.0 added the ability to operate on video frame sizes up to 8192 x 8192.
Previous versions supported 4096 x 4096 maximum.
The Video Timing Controller v3.0 also added the ability to detect and generate vertical
signals with a horizontal delay offset.
SpecialConsiderationswhenMigratingtoAXI
The Video Timing Controller v3.0 added the support for the AXI4-Lite interface with this
version. When using the Video Timing Controller v3.0, note that the core name changed
from "timebase" to "axi_vtc". All software driver functions, data structures and filenames
also changed from a "xtimebase" prefix to "xvtc" prefix.
Debugging
This appendix includes details about resources available on the Xilinx Support website and
debugging tools.
FindingHelponXilinx.com
To help in the design and debug process when using the Video Timing Controller, the Xilinx
Support web page contains key resources such as product documentation, release notes,
answer records, information about known issues, and links for opening a Technical Support
Web Case.
Documentation
This product guide is the main document associated with the Video Timing Controller. 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.
AnswerRecords
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 for this core are listed below, and 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 54541
http://Xilinx Support web page/answers/54541.htm
TechnicalSupport
Xilinx provides technical support in 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.
Xilinx provides premier technical support for customers encountering issues that require
additional assistance.
To contact Xilinx Technical Support, navigate to the Xilinx Support web page.
1. Open a WebCase by selecting the WebCase link located under Support Quick Links.
A block diagram of the video system that explains the video source, destination and IP
(custom and Xilinx) used.
Note: Access to WebCase is not available in all cases. Please login to the WebCase tool to see your
specific support options.
DebugTools
There are many tools available to address Video Timing Controller design issues. It is
important to know which tools are useful for debugging various situations.
ExampleDesign
The Video Timing Controller is delivered with an example test bench. Information about the
example test bench can be found in Chapter 6, Example Design for the Vivado Design Suite.
VivadoDesignSuiteDebugFeature
Vivado inserts logic analyzer and virtual I/O cores directly into your design. Vivado Lab
Tools allows you to set trigger conditions to capture application and integrated block port
signals in hardware. Captured signals can then be analyzed. This feature represents the
functionality in the Vivado IDE that is used for logic debugging and validation of a design
running in Xilinx FPGA devices in hardware.
The Vivado logic analyzer is used to interact with the logic debug LogiCORE IP cores,
including:
ReferenceBoards
Various Xilinx development boards support Video Timing Controller. These boards can be
used to prototype designs and establish that the core can communicate with the system.
KC705
ZC702
LicenseCheckers
If the IP requires a license key, the key must be verified. The Vivado tool flows have a
number of license check points for gating licensed IP through the flow. If the license check
succeeds, the IP may continue generation. Otherwise, generation halts with error. License
checkpoints are enforced by the following tools:
RDS
RDI
Bitgen
IMPORTANT: IP license level is ignored at checkpoints. The test confirms a valid license exists. It does
not check IP license level.
HardwareDebug
Hardware issues can range from link bring-up to problems seen after hours of testing. This
section provides debug steps for common issues. The ChipScope tool is a valuable resource
to use in hardware debug. The signal names mentioned in the following individual sections
can be probed using the ChipScope tool for debugging the specific problems.
Many of these common issues can also be applied to debugging design simulations. Details
are provided on General Checks
GeneralChecks
Ensure that all the timing constraints for the core were properly incorporated from the
example design and that all constraints were met during implementation.
Does it work in post-place and route timing simulation? If problems are seen in
hardware but not in timing simulation, this could indicate a PCB issue. Ensure that all
clock sources are active and clean.
If using MMCMs in the design, ensure that all MMCMs have obtained lock by
monitoring the LOCKED port.
If your outputs go to 0, check your licensing. The evaluation version of the core will
time out after running for 8 hours at 75 MHz.
EvaluationCoreTimeout
The Video Timing Controller hardware evaluation core times out after approximately eight
hours of operation. The output is driven to zero. This results in a dark-green screen for YUV
color systems and possibly loss of lock on output monitors.
InterfaceDebug
AXI4LiteInterfaces
Table C-1 describes how to troubleshoot the AXI4-Lite interface.
TableC1: TroubleshootingtheAXI4LiteInterface
Symptom Solution
Readback from the Version Are the S_AXI_ACLK and ACLK pins connected?
Register through the AXI4-Lite The VERSION_REGISTER readout issue may be indicative of the
interface times out, or a core core not receiving the AXI4-Lite interface.
instance without an AXI4-Lite
interface seems non-responsive.
Readback from the Version Is the core enabled? Is s_axi_aclken connected to vcc?
Register through the AXI4-Lite Verify that signal ACLKEN is connected to either net_vcc or to a
interface times out, or a core designated clock enable signal.
instance without an AXI4-Lite
interface seems non-responsive.
TableC1: TroubleshootingtheAXI4LiteInterface(Contd)
Symptom Solution
Readback from the Version Is the core in reset?
Register through the AXI4-Lite S_AXI_ARESETn and ARESETn should be connected to vcc for
interface times out, or a core the core not to be in reset. Verify that the S_AXI_ARESETn and
instance without an AXI4-Lite ARESETn signals are connected to either net_vcc or to a
interface seems non-responsive. designated reset signal.
Readback value for the The core and/or the driver in a legacy project has not been
VERSION_REGISTER is different updated. Ensure that old core versions, implementation files, and
from expected default values implementation caches have been cleared.
Assuming the AXI4-Lite interface works, the second step is to bring up the AXI4-Stream
interfaces.
OtherInterfaces
Table C-2 describes how to troubleshoot third-party interfaces.
TableC2: TroubleshootingThirdPartyInterfaces
Symptom Solution
Severe color Verify that the color component logical addressing on the AXI4-Stream TDATA
distortion or signal is in according to Data Interface in Chapter 2. If misaligned:
color-swap when In HDL, break up the TDATA vector to constituent components and manually
interfacing to connect the slave and master interface sides.
third-party video IP.
Severe color Unless the particular software driver was developed with the AXI4-Stream TDATA
distortion or signal color component assignments described in Data Interface in Chapter 2 in
color-swap when mind, there are no guarantees that the software correctly identifies bits
processing video corresponding to color components.
written to external Verify that the color component logical addressing TDATA is in alignment with
memory using the the data format expected by the software drivers reading/writing external
AXI-VDMA core. memory. If misaligned:
In HDL, break up the TDATA vector to constituent components, and manually
connect the slave and master interface sides.
AdditionalResources
XilinxResources
For support resources such as Answers, Documentation, Downloads, and Forums, see the
Xilinx Support website at:
http://www.xilinx.com/support/documentation/sw_manuals/glossary.pdf.
For a comprehensive listing of Video and Imaging application notes, white papers,
reference designs and related IP cores, see the Video and Imaging Resources page at:
http://www.xilinx.com/esp/video/refdes_listing.htm#ref_des.
References
These documents provide supplemental material useful with this user guide:
RevisionHistory
The following table shows the revision history for this document.
NoticeofDisclaimer
The information disclosed to you hereunder (the Materials) is provided solely for the selection and use of Xilinx products. To the
maximum extent permitted by applicable law: (1) Materials are made available AS IS and with all faults, Xilinx hereby DISCLAIMS
ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether
in contract or tort, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related
to, arising under, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect,
special, incidental, or consequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage
suffered as a result of any action brought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had
been advised of the possibility of the same. Xilinx assumes no obligation to correct any errors contained in the Materials or to
notify you of updates to the Materials or to product specifications. You may not reproduce, modify, distribute, or publicly display
the Materials without prior written consent. Certain products are subject to the terms and conditions of the Limited Warranties
which can be viewed at http://www.xilinx.com/warranty.htm; IP cores may be subject to warranty and support terms contained in
a license issued to you by Xilinx. Xilinx products are not designed or intended to be fail-safe or for use in any application requiring
fail-safe performance; you assume sole risk and liability for use of Xilinx products in Critical Applications: http://www.xilinx.com/
warranty.htm#critapps.
Copyright 2011-2013 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Zynq, and other designated brands
included herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the property of their
respective owners.