source: PlatformSupport/CustomPeripherals/pcores/w3_ad_controller_axi_v3_02_a/src/w3_ad_controller.h

Last change on this file was 2909, checked in by murphpo, 10 years ago

Working on updated platform support cores for WARP v3

File size: 5.1 KB
Line 
1#ifndef WARP_AD_CONTROLLER_H
2#define WARP_AD_CONTROLLER_H
3
4#include "xbasic_types.h"
5#include "xstatus.h"
6#include "xil_io.h"
7
8#define WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET (0x00000000)
9#define WARP_AD_CONTROLLER_SLV_REG0_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000000)
10#define WARP_AD_CONTROLLER_SLV_REG1_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000004)
11#define WARP_AD_CONTROLLER_SLV_REG2_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000008)
12#define WARP_AD_CONTROLLER_SLV_REG3_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x0000000C)
13#define WARP_AD_CONTROLLER_SLV_REG4_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000010)
14#define WARP_AD_CONTROLLER_SLV_REG5_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000014)
15#define WARP_AD_CONTROLLER_SLV_REG6_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000018)
16#define WARP_AD_CONTROLLER_SLV_REG7_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x0000001C)
17#define WARP_AD_CONTROLLER_SLV_REG8_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000020)
18#define WARP_AD_CONTROLLER_SLV_REG9_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000024)
19#define WARP_AD_CONTROLLER_SLV_REG10_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000028)
20#define WARP_AD_CONTROLLER_SLV_REG11_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x0000002C)
21#define WARP_AD_CONTROLLER_SLV_REG12_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000030)
22#define WARP_AD_CONTROLLER_SLV_REG13_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000034)
23#define WARP_AD_CONTROLLER_SLV_REG14_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x00000038)
24#define WARP_AD_CONTROLLER_SLV_REG15_OFFSET (WARP_AD_CONTROLLER_USER_SLV_SPACE_OFFSET + 0x0000003C)
25
26
27
28    /* Address map:
29        HDL is coded [MSB:LSB] = [31:0], per Xilinx's convention for AXI peripherals
30        regX[31]  maps to 0x80000000 in C driver
31        regX[0] maps to 0x00000001 in C driver
32
33    0: Config: {clk_div_sel[2:0], 1'b0, RFA_AD_rst_n, RFB_AD_rst_n, RFC_AD_rst_n, RFD_AD_rst_n, 24'b0}
34        [ 2: 0] Clock divider bit sel (00=0.5*busclk, 01=0.25*busclk, ...) 0x00000007
35        [    3] Reserved
36        [    4] RFA_AD reset (active low) 0x00000010
37        [    5] RFB_AD reset (active low) 0x00000020
38        [    6] RFC_AD reset (active low) 0x00000040
39        [    7] RFD_AD reset (active low) 0x00000080
40        [    8] RF_AD_TXCLK_out_en (1 = enable TXCLK output from ad_bridge)
41        [31: 9] Reserved
42
43    1: SPI Tx
44        [ 7: 0] Tx data byte 0x00FF
45        [15: 8] 8-bit register address (0x00 to 0xFF all valid) 0xFF00
46        [20:16] 5'b0 (always zero)
47        [22:21] Num bytes to Tx/Rx; must be 2'b0 for 1-byte Tx/Rx
48        [   23] RW# 1=Read, 0=Write
49        [   24] RFA_AD chip select mask
50        [   25] RFB_AD chip select mask
51        [   26] RFC_AD chip select mask
52        [   27] RFD_AD chip select mask
53        [31:28] Reserved
54   
55    2: SPI Rx: {RFA_AD_rxByte, RFB_AD_rxByte, RFC_AD_rxByte, RFD_AD_rxByte}
56        [ 7: 0] SPI Rx byte for RFA_AD 0x000000FF
57        [15: 8] SPI Rx byte for RFB_AD 0x0000FF00
58        [23:16] SPI Rx byte for RFC_AD 0x00FF0000
59        [31:24] SPI Rx byte for RFD_AD 0xFF000000
60       
61    3-15: Reserved
62    */
63
64#define AD_CTRL_ALL_RF_CS (RFA_AD_CS | RFB_AD_CS | RFC_AD_CS | RFD_AD_CS)
65
66#define ADCTRL_REG_CONFIG   WARP_AD_CONTROLLER_SLV_REG0_OFFSET
67#define ADCTRL_REG_SPITX    WARP_AD_CONTROLLER_SLV_REG1_OFFSET
68#define ADCTRL_REG_SPIRX    WARP_AD_CONTROLLER_SLV_REG2_OFFSET
69
70#define ADCTRL_REG_CONFIG_MASK_CLKDIV    0x03
71#define ADCTRL_REG_CONFIG_MASK_RFA_AD_RESET 0x10
72#define ADCTRL_REG_CONFIG_MASK_RFB_AD_RESET 0x20
73#define ADCTRL_REG_CONFIG_MASK_RFC_AD_RESET 0x40
74#define ADCTRL_REG_CONFIG_MASK_RFD_AD_RESET 0x80
75#define ADCTRL_REG_CONFIG_TXCLK_OUT_EN      0x100
76
77#define ADCTRL_REG_SPITX_RFA_AD_CS      0x01000000
78#define ADCTRL_REG_SPITX_RFB_AD_CS      0x02000000
79#define ADCTRL_REG_SPITX_RFC_AD_CS      0x04000000
80#define ADCTRL_REG_SPITX_RFD_AD_CS      0x08000000
81#define ADCTRL_REG_SPITX_RNW            0x00800000
82
83//Shorter versions for user code
84#define AD_CHAN_I 1
85#define AD_CHAN_Q 2
86
87#define AD_DACCLKSRC_DLL 0x40
88#define AD_DACCLKSRC_EXT 0x00
89
90#define AD_ADCCLKSRC_DLL 0x80
91#define AD_ADCCLKSRC_EXT 0x00
92
93#define AD_DCS_ON   0x0
94#define AD_DCS_OFF  0x4
95
96#define AD_ADCCLKDIV_1  0x1
97#define AD_ADCCLKDIV_2  0x2
98#define AD_ADCCLKDIV_4  0x3
99
100#define AD_PWR_ALLOFF   1
101#define AD_PWR_ALLON    2
102
103#define RFA_AD_CS ADCTRL_REG_SPITX_RFA_AD_CS
104#define RFB_AD_CS ADCTRL_REG_SPITX_RFB_AD_CS
105#define RFC_AD_CS ADCTRL_REG_SPITX_RFC_AD_CS
106#define RFD_AD_CS ADCTRL_REG_SPITX_RFD_AD_CS
107
108
109//Functions
110u32 ad_spi_read(u32 baseaddr,  u32 csMask, u8 regAddr);
111void ad_spi_write(u32 baseaddr, u32 csMask, u8 regAddr, u8 txByte);
112int ad_init(u32 baseaddr, u32 adSel, u8 clkdiv);
113
114int ad_set_TxDCO(u32 baseaddr, u32 csMask, u8 iqSel, u16 dco);
115int ad_set_TxGain1(u32 baseaddr, u32 csMask, u8 iqSel, u8 gain);
116int ad_set_TxGain2(u32 baseaddr, u32 csMask, u8 iqSel, u8 gain);
117int ad_config_DLL(u32 baseaddr, u32 csMask, u8 DLL_En, u8 DLL_M, u8 DLL_N, u8 DLL_DIV);
118int ad_config_clocks(u32 baseaddr, u32 csMask, u8 DAC_clkSrc, u8 ADC_clkSrc, u8 ADC_clkDiv, u8 ADC_DCS);
119int ad_config_filters(u32 baseaddr, u32 csMask, u8 interpRate, u8 decimationRate);
120
121#endif /** WARP_AD_CONTROLLER_H */
Note: See TracBrowser for help on using the repository browser.