Changes between Initial Version and Version 1 of cores/w3_clock_controller


Ignore:
Timestamp:
Aug 20, 2012, 8:27:35 PM (12 years ago)
Author:
murphpo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • cores/w3_clock_controller

    v1 v1  
     1 = WARP v3 Clock Controller (w3_clock_controller) =
     2
     3This core implements an SPI master for reading/writing registers in the AD9512 clock buffers on the WARP v3 board. For details about how these buffers are connected to the FPGA and RF interfaces, refer to the [wiki:HardwareUsersGuides/WARPv3/Clocking WARP v3 User Guide Clocking] section.
     4
     5The w3_clock_controller core is packaged as a pcore which can instantiated in an XPS project. The design has been tested in hardware using Xilinx ISE 13.4.
     6
     7== Hardware ==
     8
     9The WARP v3 board uses two AD9512 clock buffers: one for distributing the sampling clock (to the RF interfaces, FPGA and FMC slot) and one for distributing the RF reference clock (to the RF interfaces and FMC slot). The w3_clock_controller HDL implements parallel SPI interfaces, one per AD9512 buffer. There are 4 SPI pins per buffer which must be connected to the corresponding FPGA pins. Refer to the WARP v3 reference projects for examples of known-good hardware configurations.
     10
     11== Driver ==
     12
     13The w3_clock_controller pcore includes a C driver to facilitate control of the AD9512s from user code. Refer to the [//svn/WARP/PlatformSupport/CustomPeripherals/pcores/w3_clock_controller_v3_00_b/doc/html/api/index.html w3_clock_controller driver documentation] for more details.
     14
     15All driver functions require the base memory address of the w3_clock_controller pcore. This address is set in your XPS project. The EDK tools copy this address into a macro in the {{{xparameters.h}}} file when you generate a BSP. The auto-generated macro should be named {{{XPAR_W3_CLOCK_CONTROLLER_0_BASEADDR}}} (assuming your pcore instance is named {{{w3_CLOCK_controller_0}}}, as in our reference projects).
     16
     17{{{
     18#!C
     19//Define our own macro, in case EDK changes its naming scheme in the future
     20// Assumes pcore instance is named w3_ad_controller_0; confirm in xparameters.h
     21#define CLOCK_BASEADDR XPAR_W3_CLOCK_CONTROLLER_0_BASEADDR
     22
     23}}}
     24
     25
     26== Usage ==
     27
     28An important factor in configuring the WARP v3 clock buffers is whether the FPGA logic implementing the w3_clock_controller core is itself clocked by the sampling clock. If so, it is critical the properties of the AD9512->FPGA clock are not changed by user code. All other outputs from the AD9512 buffers can be changed as needed by user code.
     29
     30The w3_clock_controller driver provides functions to configure the AD9512 output dividers, thereby configuring the frequency of the clocks feeding the RF interface AD9963 chips (the ADC/DAC chips). It is critical that the AD9512->AD9963 clock frequency be consistent with all other rates in the FPGA->DAC and ADC->FPGA interfaces. The combination of AD9963 clock settings (DLL state, ADC/DAC clock source, etc.), AD9963 filter settings (interpolation/decimation rates), AD9512 dividers and internal FPGA->w3_ad_bridge clock connections must all agree. Refer to the [wiki:HardwareUsersGuides/WARPv3/RF WARP v3 User Guide RF section] for more details and examples of valid AD9512/AD9963/FPGA configurations.
     31
     32== Source ==
     33
     34The full hardware and software source code is available in the repository: [source:/PlatformSupport/CustomPeripherals/pcores/w3_clock_controller_v3_00_b]. The VHDL, Verilog and C source code are made available under the [wiki:/license WARP license].