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

Last change on this file was 1792, checked in by murphpo, 12 years ago
File size: 4.4 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, ad1_rst_n, ad2_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] ad1 reset (active low) 0x00000010
37    [   26] ad2 reset (active low) 0x00000020
38    [0 :25] Reserved
39
401: SPI Tx
41    [24:31] Tx data byte
42    [16:23] 8-bit register address (0x00 to 0xFF all valid)
43    [11:15] 5'b0 (always zero)
44    [ 9:10] Num bytes to Tx/Rx; must be 2'b0 for 1-byte Tx/Rx
45    [    8] RW# 1=Read, 0=Write
46    [    7] ad1 chip select mask
47    [    6] ad2 chip select mask
48    [ 0: 5] Reserved
49
502: SPI Rx: {ad1_rxByte, ad2_rxByte, 16'b0}
51    [24:31] SPI Rx byte for ad1 0x00FF
52    [16:23] SPI Rx byte for ad2 0xFF00
53    [ 0:15] Reserved 0xFFFF0000
54   
553-15: Reserved
56*/
57
58#define ADCTRL_REG_CONFIG   WARP_AD_CONTROLLER_SLV_REG0_OFFSET
59#define ADCTRL_REG_SPITX    WARP_AD_CONTROLLER_SLV_REG1_OFFSET
60#define ADCTRL_REG_SPIRX    WARP_AD_CONTROLLER_SLV_REG2_OFFSET
61
62#define ADCTRL_REG_CONFIG_MASK_CLKDIV    0x03
63#define ADCTRL_REG_CONFIG_MASK_RFA_AD_RESET 0x10
64#define ADCTRL_REG_CONFIG_MASK_RFB_AD_RESET 0x20
65
66#define ADCTRL_REG_SPITX_RFA_AD_CS      0x01000000
67#define ADCTRL_REG_SPITX_RFB_AD_CS      0x02000000
68#define ADCTRL_REG_SPITX_RFC_AD_CS      0x04000000
69#define ADCTRL_REG_SPITX_RFD_AD_CS      0x08000000
70#define ADCTRL_REG_SPITX_RNW            0x00800000
71
72//Shorter versions for user code
73#define AD_CHAN_I 1
74#define AD_CHAN_Q 2
75
76#define AD_DACCLKSRC_DLL 0x40
77#define AD_DACCLKSRC_EXT 0x00
78
79#define AD_ADCCLKSRC_DLL 0x80
80#define AD_ADCCLKSRC_EXT 0x00
81
82#define AD_DCS_ON   0x0
83#define AD_DCS_OFF  0x4
84
85#define AD_ADCCLKDIV_1  0x1
86#define AD_ADCCLKDIV_2  0x2
87#define AD_ADCCLKDIV_4  0x3
88
89#define AD_PWR_ALLOFF   1
90#define AD_PWR_ALLON    2
91
92#define RFA_AD_CS ADCTRL_REG_SPITX_RFA_AD_CS
93#define RFB_AD_CS ADCTRL_REG_SPITX_RFB_AD_CS
94#define RFC_AD_CS ADCTRL_REG_SPITX_RFC_AD_CS
95#define RFD_AD_CS ADCTRL_REG_SPITX_RFD_AD_CS
96
97
98//Functions
99u32 ad_spi_read(u32 baseaddr,  u32 csMask, u8 regAddr);
100void ad_spi_write(u32 baseaddr, u32 csMask, u8 regAddr, u8 txByte);
101int ad_init(u32 baseaddr, u8 clkdiv);
102
103int ad_set_TxDCO(u32 baseaddr, u32 csMask, u8 iqSel, u16 dco);
104int ad_set_TxGain1(u32 baseaddr, u32 csMask, u8 iqSel, u8 gain);
105int ad_set_TxGain2(u32 baseaddr, u32 csMask, u8 iqSel, u8 gain);
106int ad_config_DLL(u32 baseaddr, u32 csMask, u8 DLL_En, u8 DLL_M, u8 DLL_N, u8 DLL_DIV);
107int ad_config_clocks(u32 baseaddr, u32 csMask, u8 DAC_clkSrc, u8 ADC_clkSrc, u8 ADC_clkDiv, u8 ADC_DCS);
108int ad_config_filters(u32 baseaddr, u32 csMask, u8 interpRate, u8 decimationRate);
109
110#endif /** WARP_AD_CONTROLLER_H */
Note: See TracBrowser for help on using the repository browser.