You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

298 lines
15 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. #pragma once
  2. #include <fstream>
  3. #include <functional>
  4. #include <iostream>
  5. #include <list>
  6. #include <map>
  7. #include <memory>
  8. #include <set>
  9. #include <sstream>
  10. #include <string>
  11. #include <vector>
  12. namespace xsync {
  13. namespace reg {
  14. using namespace std;
  15. #define REG_ADD_OFF_STM32 (0x0000)
  16. #define REG_ADD_OFF_STM32_CONFIG_START_ADD (0x0010)
  17. // 控制中心寄存器地址
  18. #define REG_ADD_OFF_SIG_GENERATOR (0x00030)
  19. // 输入组件
  20. #define REG_ADD_OFF_TIMECODE_IN (0x0140)
  21. #define REG_ADD_OFF_GENLOCK_IN (0x0150)
  22. // 输出组件
  23. #define REG_ADD_OFF_TIMECODE_OUT (0x0240)
  24. #define REG_ADD_OFF_GENLOCK_OUT (0x0250)
  25. #define REG_ADD_OFF_CAMERA_SYNC_OUT (0x0260)
  26. // 调试组件
  27. #define REG_ADD_OFF_DEBUGER (0x0300)
  28. #define REGADDOFF__FPGA_INFO (0x0020)
  29. #define REGADDOFF__TTLIN (0x0100)
  30. #define REGADDOFF__EXTERNAL_TIMECODE (0x0120)
  31. #define REGADDOFF__EXTERNAL_GENLOCK (0x0130)
  32. #define REGADDOFF__INTERNAL_TIMECODE (0x0300)
  33. #define REGADDOFF__INTERNAL_GENLOCK (0x0310)
  34. #define REGADDOFF__INTERNAL_CLOCK (0x0320)
  35. #define REGADDOFF__TTLOUT1 (0x0200)
  36. #define REGADDOFF__TTLOUT2 (0x0210)
  37. #define REGADDOFF__TTLOUT3 (0x0220)
  38. #define REGADDOFF__TTLOUT4 (0x0230)
  39. #define REGADDOFF__TIMECODE_OUT (0x0240)
  40. #define REGADDOFF__GENLOCK_OUT (0x0250)
  41. #define REGADDOFF__CAMERA_SYNC_OUT (0x0260)
  42. #define REGADDOFF__SYS_TIMECODE (0x0400)
  43. #define REGADDOFF__SYS_GENLOCK (0x0410)
  44. #define REGADDOFF__SYS_CLOCK (0x0420)
  45. #define REGADDOFF__RECORD_SIG_GENERATOR (0x0500)
  46. typedef enum {
  47. /**
  48. * @brief
  49. * REG 0(16)
  50. */
  51. ksoftware_version = 0,
  52. kmanufacturer0 = 1,
  53. kmanufacturer1 = 2,
  54. kproduct_type_id = 3,
  55. ksn_id0 = 4,
  56. ksn_id1 = 5,
  57. ksn_id2 = 6,
  58. kmac0 = 7,
  59. kmac1 = 8,
  60. /**
  61. * @brief
  62. * REG 16(32) STM32配置寄存器0
  63. */
  64. kstm32_obtaining_ip_mode = REG_ADD_OFF_STM32_CONFIG_START_ADD + 0,
  65. kstm32_ip = REG_ADD_OFF_STM32_CONFIG_START_ADD + 1,
  66. kstm32_gw = REG_ADD_OFF_STM32_CONFIG_START_ADD + 2,
  67. kstm32_netmask = REG_ADD_OFF_STM32_CONFIG_START_ADD + 3,
  68. kstm32_config0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 4, // bit0: timecode report enable, bit1: camera sync report enable
  69. kstm32_camera_sync_signal_count = REG_ADD_OFF_STM32_CONFIG_START_ADD + 5, // 写任意数值之后清零
  70. kstm32_camera_sync_signal_count_report_period = REG_ADD_OFF_STM32_CONFIG_START_ADD + 6, // 上报周期,单位为帧数
  71. kstm32_action0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 14, // action reg
  72. kstm32_action_val0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 15, // action val reg
  73. /**
  74. * @brief
  75. * REG 48(32) FPGA配置寄存器0
  76. */
  77. kfpga_info_reg0 = REGADDOFF__FPGA_INFO + 0,
  78. kfpga_info_reg1 = REGADDOFF__FPGA_INFO + 1,
  79. kfpga_info_reg2 = REGADDOFF__FPGA_INFO + 2,
  80. kfpga_info_reg3 = REGADDOFF__FPGA_INFO + 3,
  81. kfpga_info_reg4 = REGADDOFF__FPGA_INFO + 4,
  82. kfpga_info_reg5 = REGADDOFF__FPGA_INFO + 5,
  83. kfpga_info_reg6 = REGADDOFF__FPGA_INFO + 6,
  84. kfpga_info_reg7 = REGADDOFF__FPGA_INFO + 7,
  85. kfpga_info_reg8 = REGADDOFF__FPGA_INFO + 8,
  86. kfpga_info_reg9 = REGADDOFF__FPGA_INFO + 9,
  87. kfpga_info_rega = REGADDOFF__FPGA_INFO + 10,
  88. kfpga_info_regb = REGADDOFF__FPGA_INFO + 11,
  89. kfpga_info_regc = REGADDOFF__FPGA_INFO + 12,
  90. kfpga_info_regd = REGADDOFF__FPGA_INFO + 13,
  91. kfpga_info_rege = REGADDOFF__FPGA_INFO + 14,
  92. kfpga_info_regf = REGADDOFF__FPGA_INFO + 15,
  93. /**
  94. * @brief
  95. */
  96. kSigGenerator_ctl = REG_ADD_OFF_SIG_GENERATOR + 0, // 控制模式选择寄存器
  97. kSigGenerator_genlock_format = REG_ADD_OFF_SIG_GENERATOR + 2, // genlock格式寄存器
  98. kSigGenerator_timecode_format = REG_ADD_OFF_SIG_GENERATOR + 3, // timecode格式寄存器
  99. kSigGenerator_control_trigger_reg = REG_ADD_OFF_SIG_GENERATOR + 4, // StartSigCtrl[0]
  100. kSigGenerator_timecode0 = REG_ADD_OFF_SIG_GENERATOR + 6, // timecode0
  101. kSigGenerator_timecode1 = REG_ADD_OFF_SIG_GENERATOR + 7, // timecode1
  102. kSigGenerator_timecode_start0 = REG_ADD_OFF_SIG_GENERATOR + 8, // 时码启动寄存器0
  103. kSigGenerator_timecode_start1 = REG_ADD_OFF_SIG_GENERATOR + 9, // 时码启动寄存器1
  104. kSigGenerator_work_state = REG_ADD_OFF_SIG_GENERATOR + 12, // 工作状态 read only
  105. /**
  106. * @brief
  107. * REG_ADD_OFF_TIMECODE_OUT
  108. */
  109. // ktimecode_out_timecode_select = REG_ADD_OFF_TIMECODE_OUT + 0,
  110. // ktimecode_out_timecode0 = REG_ADD_OFF_TIMECODE_OUT + 1,
  111. // ktimecode_out_timecode1 = REG_ADD_OFF_TIMECODE_OUT + 2,
  112. // ktimecode_out_timecode_format = REG_ADD_OFF_TIMECODE_OUT + 3,
  113. // ktimecode_out_bnc_outut_level_select = REG_ADD_OFF_TIMECODE_OUT + 4,
  114. // ktimecode_out_headphone_outut_level_select = REG_ADD_OFF_TIMECODE_OUT + 5,
  115. kcamera_sync_out_camera_sync_select = REG_ADD_OFF_CAMERA_SYNC_OUT + 0,
  116. /*******************************************************************************
  117. * *
  118. *******************************************************************************/
  119. // kexternal_timecode_sig_selt = REG_ADD_OFF_TIMECODE_IN + 0,
  120. // kexternal_timecode_format = REG_ADD_OFF_TIMECODE_IN + 1,
  121. // kexternal_timecode_code0 = REG_ADD_OFF_TIMECODE_IN + 2,
  122. // kexternal_timecode_code1 = REG_ADD_OFF_TIMECODE_IN + 3,
  123. /*******************************************************************************
  124. * TTL输入模块 *
  125. *******************************************************************************/
  126. k_ttlin_module = REGADDOFF__TTLIN + 0,
  127. k_ttlin_en_reg = REGADDOFF__TTLIN + 1,
  128. k_ttlin1_freq_detector_reg = REGADDOFF__TTLIN + 2,
  129. k_ttlin2_freq_detector_reg = REGADDOFF__TTLIN + 3,
  130. k_ttlin3_freq_detector_reg = REGADDOFF__TTLIN + 4,
  131. k_ttlin4_freq_detector_reg = REGADDOFF__TTLIN + 5,
  132. k_ttlin1_filter_factor_reg = REGADDOFF__TTLIN + 6,
  133. k_ttlin2_filter_factor_reg = REGADDOFF__TTLIN + 7,
  134. k_ttlin3_filter_factor_reg = REGADDOFF__TTLIN + 8,
  135. k_ttlin4_filter_factor_reg = REGADDOFF__TTLIN + 9,
  136. /*******************************************************************************
  137. * TTL输出模块 *
  138. *******************************************************************************/
  139. kreg_ttlout1_module = REGADDOFF__TTLOUT1 + 0,
  140. kreg_ttlout1_signal_process_mode = REGADDOFF__TTLOUT1 + 1,
  141. kreg_ttlout1_input_signal_select = REGADDOFF__TTLOUT1 + 2,
  142. kreg_ttlout1_pllout_freq_division_ctrl = REGADDOFF__TTLOUT1 + 3,
  143. kreg_ttlout1_pllout_freq_multiplication_ctrl = REGADDOFF__TTLOUT1 + 4,
  144. kreg_ttlout1_pllout_polarity_ctrl = REGADDOFF__TTLOUT1 + 5,
  145. kreg_ttlout1_pllout_trigger_edge_select = REGADDOFF__TTLOUT1 + 6,
  146. kreg_ttlout1_forward_mode_polarity_ctrl = REGADDOFF__TTLOUT1 + 7,
  147. kreg_ttlout1_placeholder0 = REGADDOFF__TTLOUT1 + 8,
  148. kreg_ttlout1_freq_detect_bias = REGADDOFF__TTLOUT1 + 9,
  149. kreg_ttlout1_sig_in_freq_detect = REGADDOFF__TTLOUT1 + 0xE,
  150. kreg_ttlout1_sig_out_freq_detect = REGADDOFF__TTLOUT1 + 0xF,
  151. kreg_ttlout2_module = REGADDOFF__TTLOUT2 + 0,
  152. kreg_ttlout2_signal_process_mode = REGADDOFF__TTLOUT2 + 1,
  153. kreg_ttlout2_input_signal_select = REGADDOFF__TTLOUT2 + 2,
  154. kreg_ttlout2_pllout_freq_division_ctrl = REGADDOFF__TTLOUT2 + 3,
  155. kreg_ttlout2_pllout_freq_multiplication_ctrl = REGADDOFF__TTLOUT2 + 4,
  156. kreg_ttlout2_pllout_polarity_ctrl = REGADDOFF__TTLOUT2 + 5,
  157. kreg_ttlout2_pllout_trigger_edge_select = REGADDOFF__TTLOUT2 + 6,
  158. kreg_ttlout2_forward_mode_polarity_ctrl = REGADDOFF__TTLOUT2 + 7,
  159. kreg_ttlout2_placeholder0 = REGADDOFF__TTLOUT2 + 8,
  160. kreg_ttlout2_freq_detect_bias = REGADDOFF__TTLOUT2 + 9,
  161. kreg_ttlout2_sig_in_freq_detect = REGADDOFF__TTLOUT2 + 0xE,
  162. kreg_ttlout2_sig_out_freq_detect = REGADDOFF__TTLOUT2 + 0xF,
  163. kreg_ttlout3_module = REGADDOFF__TTLOUT3 + 0,
  164. kreg_ttlout3_signal_process_mode = REGADDOFF__TTLOUT3 + 1,
  165. kreg_ttlout3_input_signal_select = REGADDOFF__TTLOUT3 + 2,
  166. kreg_ttlout3_pllout_freq_division_ctrl = REGADDOFF__TTLOUT3 + 3,
  167. kreg_ttlout3_pllout_freq_multiplication_ctrl = REGADDOFF__TTLOUT3 + 4,
  168. kreg_ttlout3_pllout_polarity_ctrl = REGADDOFF__TTLOUT3 + 5,
  169. kreg_ttlout3_pllout_trigger_edge_select = REGADDOFF__TTLOUT3 + 6,
  170. kreg_ttlout3_forward_mode_polarity_ctrl = REGADDOFF__TTLOUT3 + 7,
  171. kreg_ttlout3_placeholder0 = REGADDOFF__TTLOUT3 + 8,
  172. kreg_ttlout3_freq_detect_bias = REGADDOFF__TTLOUT3 + 9,
  173. kreg_ttlout3_sig_in_freq_detect = REGADDOFF__TTLOUT3 + 0xE,
  174. kreg_ttlout3_sig_out_freq_detect = REGADDOFF__TTLOUT3 + 0xF,
  175. kreg_ttlout4_module = REGADDOFF__TTLOUT4 + 0,
  176. kreg_ttlout4_signal_process_mode = REGADDOFF__TTLOUT4 + 1,
  177. kreg_ttlout4_input_signal_select = REGADDOFF__TTLOUT4 + 2,
  178. kreg_ttlout4_pllout_freq_division_ctrl = REGADDOFF__TTLOUT4 + 3,
  179. kreg_ttlout4_pllout_freq_multiplication_ctrl = REGADDOFF__TTLOUT4 + 4,
  180. kreg_ttlout4_pllout_polarity_ctrl = REGADDOFF__TTLOUT4 + 5,
  181. kreg_ttlout4_pllout_trigger_edge_select = REGADDOFF__TTLOUT4 + 6,
  182. kreg_ttlout4_forward_mode_polarity_ctrl = REGADDOFF__TTLOUT4 + 7,
  183. kreg_ttlout4_placeholder0 = REGADDOFF__TTLOUT4 + 8,
  184. kreg_ttlout4_freq_detect_bias = REGADDOFF__TTLOUT4 + 9,
  185. kreg_ttlout4_sig_in_freq_detect = REGADDOFF__TTLOUT4 + 0xE,
  186. kreg_ttlout4_sig_out_freq_detect = REGADDOFF__TTLOUT4 + 0xF,
  187. /*******************************************************************************
  188. * TIMECODE输入模块 *
  189. *******************************************************************************/
  190. external_timecode_module = REGADDOFF__EXTERNAL_TIMECODE + 0,
  191. external_timecode_sig_selt = REGADDOFF__EXTERNAL_TIMECODE + 1,
  192. external_timecode_format = REGADDOFF__EXTERNAL_TIMECODE + 2,
  193. external_timecode_code0 = REGADDOFF__EXTERNAL_TIMECODE + 3,
  194. external_timecode_code1 = REGADDOFF__EXTERNAL_TIMECODE + 4,
  195. /*******************************************************************************
  196. * TIMECODE模块 *
  197. *******************************************************************************/
  198. internal_timecode_module = REGADDOFF__INTERNAL_TIMECODE + 0,
  199. internal_timecode_en = REGADDOFF__INTERNAL_TIMECODE + 1,
  200. internal_timecode_format = REGADDOFF__INTERNAL_TIMECODE + 2,
  201. internal_timecode_data0 = REGADDOFF__INTERNAL_TIMECODE + 3,
  202. internal_timecode_data1 = REGADDOFF__INTERNAL_TIMECODE + 4,
  203. /*******************************************************************************
  204. * SYS_TIMECODE *
  205. *******************************************************************************/
  206. sys_timecode_module = REGADDOFF__SYS_TIMECODE,
  207. sys_timecode_select = REGADDOFF__SYS_TIMECODE + 1,
  208. sys_timecode_format = REGADDOFF__SYS_TIMECODE + 2,
  209. sys_timecode_data0 = REGADDOFF__SYS_TIMECODE + 3,
  210. sys_timecode_data1 = REGADDOFF__SYS_TIMECODE + 4,
  211. /*******************************************************************************
  212. * TIMECODE输出模块 *
  213. *******************************************************************************/
  214. timecode_output_module = REGADDOFF__TIMECODE_OUT + 0,
  215. timecode_output_timecode0 = REGADDOFF__TIMECODE_OUT + 1,
  216. timecode_output_timecode1 = REGADDOFF__TIMECODE_OUT + 2,
  217. timecode_output_timecode_format = REGADDOFF__TIMECODE_OUT + 3,
  218. timecode_output_bnc_outut_level_select = REGADDOFF__TIMECODE_OUT + 4,
  219. timecode_output_headphone_outut_level_select = REGADDOFF__TIMECODE_OUT + 5,
  220. /*******************************************************************************
  221. * GENLOCK *
  222. *******************************************************************************/
  223. external_genlock_module = REGADDOFF__EXTERNAL_GENLOCK + 0,
  224. external_genlock_freq_detect_bias = REGADDOFF__EXTERNAL_GENLOCK + 1,
  225. external_genlock_freq = REGADDOFF__EXTERNAL_GENLOCK + 2,
  226. /*******************************************************************************
  227. * GENLOCK *
  228. *******************************************************************************/
  229. internal_genlock_module = REGADDOFF__INTERNAL_GENLOCK + 0,
  230. internal_genlock_ctrl_mode = REGADDOFF__INTERNAL_GENLOCK + 1,
  231. internal_genlock_en = REGADDOFF__INTERNAL_GENLOCK + 2,
  232. internal_genlock_format = REGADDOFF__INTERNAL_GENLOCK + 3,
  233. internal_genlock_freq = REGADDOFF__INTERNAL_GENLOCK + 4,
  234. /*******************************************************************************
  235. * SYSGENLOCK *
  236. *******************************************************************************/
  237. sys_genlock_module = REGADDOFF__SYS_GENLOCK,
  238. sys_genlock_source = REGADDOFF__SYS_GENLOCK + 1,
  239. sys_genlock_freq_detect_bias = REGADDOFF__SYS_GENLOCK + 2,
  240. sys_genlock_freq = REGADDOFF__SYS_GENLOCK + 3,
  241. /*******************************************************************************
  242. * CLOCK *
  243. *******************************************************************************/
  244. internal_clock_module = REGADDOFF__INTERNAL_CLOCK + 0,
  245. internal_clock_ctrl_mode = REGADDOFF__INTERNAL_CLOCK + 1,
  246. internal_clock_en = REGADDOFF__INTERNAL_CLOCK + 2,
  247. internal_clock_freq = REGADDOFF__INTERNAL_CLOCK + 3,
  248. /*******************************************************************************
  249. * SYSCLOCK *
  250. *******************************************************************************/
  251. sys_clock_module = REGADDOFF__SYS_CLOCK,
  252. sys_clock_source = REGADDOFF__SYS_CLOCK + 1,
  253. sys_clock_freq_division_ctrl = REGADDOFF__SYS_CLOCK + 2,
  254. sys_clock_freq_multiplication_ctrl = REGADDOFF__SYS_CLOCK + 3,
  255. sys_clock_freq_detect_bias = REGADDOFF__SYS_CLOCK + 4,
  256. sys_clock_trigger_edge_select = REGADDOFF__SYS_CLOCK + 5,
  257. sys_clock_infreq_detect = REGADDOFF__SYS_CLOCK + 0xE,
  258. sys_clock_outfreq_detect = REGADDOFF__SYS_CLOCK + 0xF,
  259. } RegAdd_t;
  260. } // namespace reg
  261. } // namespace xsync