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

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

Adding/updating cores for FMC radio module

File size: 4.9 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] = [0:31]
30    regX[0]  maps to 0x80000000 in C driver
31    regX[31] maps to 0x00000001 in C driver
32
330: Config: {clk_div_sel[2:0], 1'b0, RFA_AD_rst_n, RFB_AD_rst_n, 26'b0}
34    [29:31] Clock divider bit sel (00=0.5*busclk, 01=0.25*busclk, ...) 0x00000003
35    [28   ] Reserved
36    [   27] RFA_AD reset (active low) 0x00000010
37    [   26] RFB_AD reset (active low) 0x00000020
38    [   25] RFC_AD reset (active low) 0x00000040
39    [   24] RFD_AD reset (active low) 0x00000080
40    [0 :23] Reserved
41
421: SPI Tx
43    [24:31] Tx data byte
44    [16:23] 8-bit register address (0x00 to 0xFF all valid)
45    [11:15] 5'b0 (always zero)
46    [ 9:10] Num bytes to Tx/Rx; must be 2'b0 for 1-byte Tx/Rx
47    [    8] RW# 1=Read, 0=Write
48    [    7] RFA_AD chip select mask
49    [    6] RFB_AD chip select mask
50    [    5] RFC_AD chip select mask
51    [    4] RFD_AD chip select mask
52    [ 0: 3] Reserved
53
542: SPI Rx: {RFA_AD_rxByte, RFB_AD_rxByte, RFC_AD_rxByte, RFD_AD_rxByte}
55    [24:31] SPI Rx byte for RFA_AD 0x000000FF
56    [16:23] SPI Rx byte for RFB_AD 0x0000FF00
57    [ 8:15] SPI Rx byte for RFC_AD 0x00FF0000
58    [ 0: 7] SPI Rx byte for RFD_AD 0xFF000000
59   
603-15: Reserved
61*/
62
63#define AD_CTRL_ALL_RF_CS (RFA_AD_CS | RFB_AD_CS | RFC_AD_CS | RFD_AD_CS)
64
65#define ADCTRL_REG_CONFIG   WARP_AD_CONTROLLER_SLV_REG0_OFFSET
66#define ADCTRL_REG_SPITX    WARP_AD_CONTROLLER_SLV_REG1_OFFSET
67#define ADCTRL_REG_SPIRX    WARP_AD_CONTROLLER_SLV_REG2_OFFSET
68
69#define ADCTRL_REG_CONFIG_MASK_CLKDIV    0x03
70#define ADCTRL_REG_CONFIG_MASK_RFA_AD_RESET 0x10
71#define ADCTRL_REG_CONFIG_MASK_RFB_AD_RESET 0x20
72#define ADCTRL_REG_CONFIG_MASK_RFC_AD_RESET 0x40
73#define ADCTRL_REG_CONFIG_MASK_RFD_AD_RESET 0x80
74
75#define ADCTRL_REG_SPITX_RFA_AD_CS      0x01000000
76#define ADCTRL_REG_SPITX_RFB_AD_CS      0x02000000
77#define ADCTRL_REG_SPITX_RFC_AD_CS      0x04000000
78#define ADCTRL_REG_SPITX_RFD_AD_CS      0x08000000
79#define ADCTRL_REG_SPITX_RNW            0x00800000
80
81//Shorter versions for user code
82#define AD_CHAN_I 1
83#define AD_CHAN_Q 2
84
85#define AD_DACCLKSRC_DLL 0x40
86#define AD_DACCLKSRC_EXT 0x00
87
88#define AD_ADCCLKSRC_DLL 0x80
89#define AD_ADCCLKSRC_EXT 0x00
90
91#define AD_DCS_ON   0x0
92#define AD_DCS_OFF  0x4
93
94#define AD_ADCCLKDIV_1  0x1
95#define AD_ADCCLKDIV_2  0x2
96#define AD_ADCCLKDIV_4  0x3
97
98#define AD_PWR_ALLOFF   1
99#define AD_PWR_ALLON    2
100
101#define RFA_AD_CS ADCTRL_REG_SPITX_RFA_AD_CS
102#define RFB_AD_CS ADCTRL_REG_SPITX_RFB_AD_CS
103#define RFC_AD_CS ADCTRL_REG_SPITX_RFC_AD_CS
104#define RFD_AD_CS ADCTRL_REG_SPITX_RFD_AD_CS
105
106
107//Functions
108u32 ad_spi_read(u32 baseaddr,  u32 csMask, u8 regAddr);
109void ad_spi_write(u32 baseaddr, u32 csMask, u8 regAddr, u8 txByte);
110int ad_init(u32 baseaddr, u32 adSel, u8 clkdiv);
111
112int ad_set_TxDCO(u32 baseaddr, u32 csMask, u8 iqSel, u16 dco);
113int ad_set_TxGain1(u32 baseaddr, u32 csMask, u8 iqSel, u8 gain);
114int ad_set_TxGain2(u32 baseaddr, u32 csMask, u8 iqSel, u8 gain);
115int ad_config_DLL(u32 baseaddr, u32 csMask, u8 DLL_En, u8 DLL_M, u8 DLL_N, u8 DLL_DIV);
116int ad_config_clocks(u32 baseaddr, u32 csMask, u8 DAC_clkSrc, u8 ADC_clkSrc, u8 ADC_clkDiv, u8 ADC_DCS);
117int ad_config_filters(u32 baseaddr, u32 csMask, u8 interpRate, u8 decimationRate);
118
119#endif /** WARP_AD_CONTROLLER_H */
Note: See TracBrowser for help on using the repository browser.