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

Last change on this file was 3909, checked in by welsh, 10 years ago

Updating clock controller software.

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