ad9912.h 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #ifndef AD9912_H
  2. #define AD9912_H
  3. #include "pci.h"
  4. #include "tmsgheaders.h"
  5. #define AD9912_COUNT 37
  6. #define AD9912_BASE_ADDR 0x04
  7. #define AD9912_RST_ON ((DDS_SAW1_FPGA << 21) | \
  8. (GPIO_ADRF_V2 << 20) | \
  9. (GPIO_ADRF_V1 << 19) | \
  10. (REF_OFFSET_CTRL_FPGA << 18) | \
  11. (DDS_SAW2_FPGA << 17) | \
  12. (DDS_X2_FPGA << 16) | \
  13. (PLL_LOOP_CTRL << 15) | \
  14. (PLL_SYNC << 14) | \
  15. (PLL_SYNC_CTRL << 13) | \
  16. (PLL_VTUNE_CTRL << 12) | \
  17. (AM_ALC_1_FIX << 11) | \
  18. (SW_CAP1 << 10) | \
  19. (SW_CAP2 << 9) | \
  20. (SW_CAP3 << 8) | \
  21. (AM_ALC_SW << 7) | \
  22. (SW_CAP4 << 6) | \
  23. (DDS_SYNC_FPGA << 5) | \
  24. (0x1 << 4) | \
  25. (DDS_SYNC_CTRL_FPGA << 3) | \
  26. (CTRL_AM_SW3 << 2) | \
  27. (RF_SW2 << 1) | \
  28. (RF_SW1 << 0))
  29. /**********************************************************************************
  30. * FTW0[7:0]
  31. *********************************************************************************/
  32. #define BITP_AD9912_FTW0_FREQ_WORD_7_0 0
  33. #define BITM_AD9912_FTW0_FREQ_WORD_7_0 (0xFF << BITP_AD9912_FTW0_FREQ_WORD_7_0)
  34. #define REGP_AD9912_FTW0_FREQ_WORD_7_0 0xE
  35. /**********************************************************************************
  36. * FTW0[15:8]
  37. *********************************************************************************/
  38. #define BITP_AD9912_FTW0_FREQ_WORD_15_8 0
  39. #define BITM_AD9912_FTW0_FREQ_WORD_15_8 (0xFF << BITP_AD9912_FTW0_FREQ_WORD_15_8)
  40. #define REGP_AD9912_FTW0_FREQ_WORD_15_8 0xF
  41. /**********************************************************************************
  42. * FTW0[23:16]
  43. *********************************************************************************/
  44. #define BITP_AD9912_FTW0_FREQ_WORD_23_16 0
  45. #define BITM_AD9912_FTW0_FREQ_WORD_23_16 (0xFF << BITP_AD9912_FTW0_FREQ_WORD_23_16)
  46. #define REGP_AD9912_FTW0_FREQ_WORD_23_16 0x10
  47. /**********************************************************************************
  48. * FTW0[31:24]
  49. *********************************************************************************/
  50. #define BITP_AD9912_FTW0_FREQ_WORD_31_24 0
  51. #define BITM_AD9912_FTW0_FREQ_WORD_31_24 (0xFF << BITP_AD9912_FTW0_FREQ_WORD_31_24)
  52. #define REGP_AD9912_FTW0_FREQ_WORD_31_24 0x11
  53. /**********************************************************************************
  54. * FTW0[39:32]
  55. *********************************************************************************/
  56. #define BITP_AD9912_FTW0_FREQ_WORD_39_24 0
  57. #define BITM_AD9912_FTW0_FREQ_WORD_39_24 (0xFF << BITP_AD9912_FTW0_FREQ_WORD_7_0)
  58. #define REGP_AD9912_FTW0_FREQ_WORD_39_24 0x12
  59. /**********************************************************************************
  60. * FTW0[47:40]
  61. *********************************************************************************/
  62. #define BITP_AD9912_FTW0_FREQ_WORD_47_40 0
  63. #define BITM_AD9912_FTW0_FREQ_WORD_47_40 (0xFF << BITP_AD9912_FTW0_FREQ_WORD_47_40)
  64. #define REGP_AD9912_FTW0_FREQ_WORD_47_40 0x13
  65. /**********************************************************************************
  66. * INSTRUCTION WORD[15:0]
  67. *********************************************************************************/
  68. #define BITP_AD9912_INSTRUCTION_WORD_15_0 0
  69. #define BITM_AD9912_INSTRUCTION_WORD_15_0 (0xFFFF << BITP_AD9912_INSTRUCTION_WORD_15_0)
  70. #define BITP_AD9912_INSTRUCTION_WORD_READ_WRITE 7
  71. #define BITM_AD9912_INSTRUCTION_WORD_READ_WRITE (0x1 << BITP_AD9912_INSTRUCTION_WORD_READ_WRITE)
  72. #define ENUM_AD9912_INSTRUCTION_WORD_WRITE (0x0 << BITP_AD9912_INSTRUCTION_WORD_READ_WRITE)
  73. #define ENUM_AD9912_INSTRUCTION_WORD_READ (0x1 << BITP_AD9912_INSTRUCTION_WORD_READ_WRITE)
  74. #define BITP_AD9912_INSTRUCTION_WORD_LENGTH 5
  75. #define BITM_AD9912_INSTRUCTION_WORD_LENGTH (0x3 << BITP_AD9912_INSTRUCTION_WORD_LENGTH)
  76. #define ENUM_AD9912_INSTRUCTION_WORD_LENGTH_1 (0x0 << BITP_AD9912_INSTRUCTION_WORD_LENGTH)
  77. #define ENUM_AD9912_INSTRUCTION_WORD_LENGTH_2 (0x1 << BITP_AD9912_INSTRUCTION_WORD_LENGTH)
  78. #define ENUM_AD9912_INSTRUCTION_WORD_LENGTH_3 (0x2 << BITP_AD9912_INSTRUCTION_WORD_LENGTH)
  79. #define ENUM_AD9912_INSTRUCTION_WORD_STREAM (0x3 << BITP_AD9912_INSTRUCTION_WORD_LENGTH)
  80. #define BITP_AD9912_INSTRUCTION_WORD_ADDRESS_0_8 16
  81. #define BITM_AD9912_INSTRUCTION_WORD_ADDRESS_0_8 (0xFF << BITP_AD9912_INSTRUCTION_WORD_ADDRESS_0_8)
  82. #define BITP_AD9912_INSTRUCTION_WORD_ADDRESS_9_12 0
  83. #define BITM_AD9912_INSTRUCTION_WORD_ADDRESS_9_12 (0xF << BITP_AD9912_INSTRUCTION_WORD_ADDRESS_9_12)
  84. //Addr[12:0]
  85. #define BITM_AD9912_INSTRUCTION_WORD_ADDRESS (0x1FFF << BITP_AD9912_INSTRUCTION_WORD_ADDRESS)
  86. #define ENUM_AD9912_INSTRUCTION_WORD_INIT_ADDR (0x01A6 << BITP_AD9912_INSTRUCTION_WORD_ADDRESS)
  87. #define ENUM_ADD9912_INSTRUCTION_WORD_INIT_ADDR_0_8 (0xAD << BITP_AD9912_INSTRUCTION_WORD_ADDRESS_0_8)
  88. #define ENUM_ADD9912_INSTRUCTION_WORD_INIT_ADDR_9_12 (0x1 << BITP_AD9912_INSTRUCTION_WORD_ADDRESS_9_12)
  89. /**********************************************************************************
  90. * QSPI_FTW[7:0][15:8]
  91. *********************************************************************************/
  92. #define BITP_AD9912_QSPI_7_0 0
  93. #define BITM_AD9912_QSPI_7_0 (0xFF << BITP_AD9912_QSPI_7_0)
  94. /**********************************************************************************
  95. * QSPI_FTW[15:8][7:0]
  96. *********************************************************************************/
  97. #define BITP_AD9912_QSPI_15_8 8
  98. #define BITM_AD9912_QSPI_15_8 (0xFF << BITP_AD9912_QSPI_15_8)
  99. /**********************************************************************************
  100. * QSPI_FTW[23:16]
  101. *********************************************************************************/
  102. #define BITP_AD9912_QSPI_23_16 16
  103. #define BITM_AD9912_QSPI_23_16 (0xFF << BITP_AD9912_QSPI_23_16)
  104. /**********************************************************************************
  105. * QSPI_FTW[31:24]
  106. *********************************************************************************/
  107. #define BITP_AD9912_QSPI_31_24 0
  108. #define BITM_AD9912_QSPI_31_24 (0xFF << BITP_AD9912_QSPI_31_24)
  109. /**********************************************************************************
  110. * QSPI_FTW[39:32]
  111. *********************************************************************************/
  112. #define BITP_AD9912_QSPI_39_32 8
  113. #define BITM_AD9912_QSPI_39_32 (0xFF << BITP_AD9912_QSPI_39_32)
  114. /**********************************************************************************
  115. * QSPI_FTW[47:40]
  116. *********************************************************************************/
  117. #define BITP_AD9912_QSPI_47_40 16
  118. #define BITM_AD9912_QSPI_47_40 (0xFF << BITP_AD9912_QSPI_47_40)
  119. /**********************************************************************************
  120. * QSPI_PHASE[7:0]
  121. *********************************************************************************/
  122. #define BITP_AD9912_QSPI_PHASE_7_0 0
  123. #define BITM_AD9912_QSPI_PHASE_7_0 (0xFF << BITP_AD9912_QSPI_PHASE_7_0)
  124. /**********************************************************************************
  125. * QSPI_PHASE[13:8]
  126. *********************************************************************************/
  127. #define BITP_AD9912_QSPI_PHASE_13_8 8
  128. #define BITM_AD9912_QSPI_PHASE_13_8 (0x3F << BITP_AD9912_QSPI_PHASE_13_8)
  129. extern uint32_t ad9912_ftw_regs_qspi[4];
  130. void ad9912_init(reg_addr_pci* pci_bar_1);
  131. double ad9912_set(reg_addr_pci* pci_bar_1, double freq, double f_pd);
  132. double ad9912_set_out_of_band(double freq,double f_pd);
  133. double ad9912_set_main_band(double freq,double f_pd);
  134. #endif //AD9912_H