source: PlatformSupport/CustomPeripherals/pcores/w3_clock_controller_axi_v3_01_a/src/w3_clock_controller.h

Last change on this file was 1927, checked in by murphpo, 11 years ago

AXI versions of WARP v3 support cores

File size: 3.6 KB
Line 
1#ifndef WARP_CLOCK_CONTROLLER_H
2#define WARP_CLOCK_CONTROLLER_H
3
4#include "xbasic_types.h"
5#include "xstatus.h"
6#include "xil_io.h"
7
8#define WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET (0x00000000)
9#define WARP_CLOCK_CONTROLLER_SLV_REG0_OFFSET (WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000000)
10#define WARP_CLOCK_CONTROLLER_SLV_REG1_OFFSET (WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000004)
11#define WARP_CLOCK_CONTROLLER_SLV_REG2_OFFSET (WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000008)
12#define WARP_CLOCK_CONTROLLER_SLV_REG3_OFFSET (WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x0000000C)
13#define WARP_CLOCK_CONTROLLER_SLV_REG4_OFFSET (WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000010)
14#define WARP_CLOCK_CONTROLLER_SLV_REG5_OFFSET (WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000014)
15#define WARP_CLOCK_CONTROLLER_SLV_REG6_OFFSET (WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000018)
16#define WARP_CLOCK_CONTROLLER_SLV_REG7_OFFSET (WARP_CLOCK_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x0000001C)
17
18/* Address map:
19    HDL is coded [MSB:LSB] = [0:31]
20    regX[0]  maps to 0x80000000 in C driver
21    regX[31] maps to 0x00000001 in C driver
22
230: Config: {clk_div_sel[2:0], 1'b0, samp_func, rfref_func, 26'b0}
24        [29:31] Clock divider bit sel (00=0.5*busclk, 01=0.25*busclk, ...) 0x00000003
25        [28   ] Reserved
26        [   27] samp buf reset (active low)     0x00000010
27        [   26] rf ref buf reset (active low)   0x00000020
28        [16:25] Reserved                        0x0000FFC0
29        [0 :15] Clock module status             0xFFFF0000
30       
311: SPI Tx
32    [24:31] Tx data byte
33    [17:23] 7-bit register address (0x00 to 0xFF all valid)
34    [11:16] 6'b0 (always zero)
35    [ 9:10] Num bytes to Tx/Rx; must be 2'b0 for 1-byte Tx/Rx
36    [    8] RW# 1=Read, 0=Write
37    [    7] samp buf chip select mask
38    [    6] rf ref buf chip select mask
39    [ 0: 5] Reserved
40
412: SPI Rx: {samp_rxByte, rfref_rxByte, 16'b0}
42    [24:31] SPI Rx byte for samp buf 0x00FF
43    [16:23] SPI Rx byte for rf ref buf 0xFF00
44    [ 0:15] Reserved 0xFFFF0000
45   
463: RW: User reset outputs
47    [31] usr_reset0
48    [30] usr_reset1
49    [29] usr_reset2
50    [28] usr_reset3
51    [0:27] reserved
52
534: RO: User status inputs
54    [0:31] usr_status input
55
565-15: Reserved
57*/
58#define CLKCTRL_REG_CONFIG  WARP_CLOCK_CONTROLLER_SLV_REG0_OFFSET
59#define CLKCTRL_REG_SPITX   WARP_CLOCK_CONTROLLER_SLV_REG1_OFFSET
60#define CLKCTRL_REG_SPIRX   WARP_CLOCK_CONTROLLER_SLV_REG2_OFFSET
61
62#define CLKCTRL_REG_CONFIG_MASK_CLKDIV      0x03
63#define CLKCTRL_REG_CONFIG_MASK_SAMP_FUNC   0x10
64#define CLKCTRL_REG_CONFIG_MASK_RFREF_FUNC  0x20
65
66#define CLKCTRL_REG_SPITX_SAMP_CS   0x01000000
67#define CLKCTRL_REG_SPITX_RFREF_CS  0x02000000
68#define CLKCTRL_REG_SPITX_RNW       0x00800000
69
70#define CLK_SAMP_CS     CLKCTRL_REG_SPITX_SAMP_CS
71#define CLK_RFREF_CS    CLKCTRL_REG_SPITX_RFREF_CS
72
73#define CLK_SAMP_OUTSEL_FMC         0x01
74#define CLK_SAMP_OUTSEL_CLKMODHDR   0x02
75#define CLK_SAMP_OUTSEL_FPGA        0x04
76#define CLK_SAMP_OUTSEL_AD_RFA      0x08
77#define CLK_SAMP_OUTSEL_AD_RFB      0x10
78
79#define CLK_RFREF_OUTSEL_FMC        0x20
80#define CLK_RFREF_OUTSEL_CLKMODHDR  0x40
81#define CLK_RFREF_OUTSEL_RFAB       0x80
82
83#define CLK_OUTPUT_ON   1
84#define CLK_OUTPUT_OFF  2
85
86#define CLK_INSEL_ONBOARD 1
87#define CLK_INSEL_CLKMOD 2
88
89u32 clk_spi_read(u32 baseaddr,  u32 csMask, u8 regAddr);
90void clk_spi_write(u32 baseaddr, u32 csMask, u8 regAddr, u8 txByte);
91int clk_init(u32 baseaddr, u8 clkDiv);
92int clk_config_outputs(u32 baseaddr, u8 clkOutMode, u32 clkOutSel);
93int clk_config_dividers(u32 baseaddr, u8 clkDiv, u32 clkOutSel);
94int clk_config_input_rf_ref(u32 baseaddr, u8 clkInSel);
95u16 clk_config_read_clkmod_status(u32 baseaddr);
96
97#endif /** WARP_CLOCK_CONTROLLER_H */
Note: See TracBrowser for help on using the repository browser.