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.

587 lines
22 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. `timescale 1ns / 1ns
  2. module Top (
  3. input ex_clk,
  4. input ex_rst_n,
  5. /*******************************************************************************
  6. * genlock *
  7. *******************************************************************************/
  8. input genlock_in_hsync,
  9. input genlock_in_vsync,
  10. input genlock_in_fsync,
  11. output genlock_in_state_led,
  12. /*******************************************************************************
  13. * GENLOCK_OUTPUT *
  14. *******************************************************************************/
  15. output [9:0] genlock_out_dac,
  16. output genlock_out_dac_clk,
  17. output genlock_out_dac_state_led,
  18. /*******************************************************************************
  19. * TTL_IN *
  20. *******************************************************************************/
  21. input sync_ttl_in1,
  22. output sync_ttl_in1_state_led,
  23. input sync_ttl_in2,
  24. output sync_ttl_in2_state_led,
  25. input sync_ttl_in3,
  26. output sync_ttl_in3_state_led,
  27. input sync_ttl_in4,
  28. output sync_ttl_in4_state_led,
  29. /*******************************************************************************
  30. * TTL_OUT *
  31. *******************************************************************************/
  32. output sync_ttl_out1,
  33. output sync_ttl_out1_state_led,
  34. output sync_ttl_out2,
  35. output sync_ttl_out2_state_led,
  36. output sync_ttl_out3,
  37. output sync_ttl_out3_state_led,
  38. output sync_ttl_out4,
  39. output sync_ttl_out4_state_led,
  40. /*******************************************************************************
  41. * TIMECODE_IN *
  42. *******************************************************************************/
  43. input timecode_headphone_in,
  44. output timecode_headphone_in_state_led,
  45. input timecode_bnc_in,
  46. output timecode_bnc_in_state_led,
  47. /*******************************************************************************
  48. * TIMECODE_OUTPUT *
  49. *******************************************************************************/
  50. output timecode_out_bnc,
  51. output timecode_out_bnc_select,
  52. output timecode_out_bnc_state_led,
  53. output timecode_out_headphone,
  54. output timecode_out_headphone_select,
  55. output timecode_out_headphone_state_led,
  56. /*******************************************************************************
  57. * STM32_IF *
  58. *******************************************************************************/
  59. output stm32if_start_signal_out,
  60. output stm32if_camera_sync_out,
  61. output stm32if_timecode_sync_out,
  62. //SPI 串行总线1
  63. input wire spi1_cs_pin,
  64. input wire spi1_clk_pin,
  65. input wire spi1_rx_pin,
  66. output wire spi1_tx_pin,
  67. //SPI 串行总线2
  68. input wire spi2_cs_pin,
  69. input wire spi2_clk_pin,
  70. input wire spi2_rx_pin,
  71. output wire spi2_tx_pin,
  72. /*******************************************************************************
  73. * debug_signal_output *
  74. *******************************************************************************/
  75. output [15:0] debug_signal_output,
  76. /*******************************************************************************
  77. * CODE_BOARD *
  78. *******************************************************************************/
  79. output wire core_board_debug_led
  80. );
  81. localparam HARDWARE_TEST_MODE = 1;
  82. //STM32寄存器地址
  83. localparam REG_ADD_OFF_STM32 = 16'h0000;
  84. localparam REG_ADD_OFF_FPGA_TEST = 16'h00020;
  85. //控制中心寄存器地址
  86. localparam REG_ADD_OFF_XSYNC_INTERNAL_SIG_GENERATOR = 16'h00030; // 48
  87. //输入组件
  88. localparam REG_ADD_OFF_TTLIN1 = 16'h0100;
  89. localparam REG_ADD_OFF_TTLIN2 = 16'h0110;
  90. localparam REG_ADD_OFF_TTLIN3 = 16'h0120;
  91. localparam REG_ADD_OFF_TTLIN4 = 16'h0130;
  92. localparam REG_ADD_OFF_TIMECODE_IN = 16'h0140;
  93. localparam REG_ADD_OFF_GENLOCK_IN = 16'h0150;
  94. //输出组件
  95. localparam REG_ADD_OFF_TTLOUT1 = 16'h0200;
  96. localparam REG_ADD_OFF_TTLOUT2 = 16'h0210;
  97. localparam REG_ADD_OFF_TTLOUT3 = 16'h0220;
  98. localparam REG_ADD_OFF_TTLOUT4 = 16'h0230;
  99. localparam REG_ADD_OFF_TIMECODE_OUT = 16'h0240;
  100. localparam REG_ADD_OFF_GENLOCK_OUT = 16'h0250;
  101. localparam REG_ADD_OFF_CAMERA_SYNC_OUT = 16'h0260;
  102. //调试组件
  103. localparam REG_ADD_OFF_DEBUGER = 16'h0300;
  104. SPLL spll (
  105. .clkin1(ex_clk), // input
  106. .pll_lock(pll_lock), // output
  107. .clkout0(sys_clk_25m), // output
  108. .clkout1(sys_clk_10m), // output
  109. .clkout2(sys_clk_5m) // output
  110. );
  111. assign sys_clk = sys_clk_10m;
  112. assign sys_rst_n = ex_rst_n & pll_lock;
  113. localparam SYS_CLOCK_FREQ = 10000000;
  114. // zutils_reset_sig_gen reset_sig_gen_inst (
  115. // .clk(sys_clk),
  116. // .rst_n(rst_n),
  117. // .rst_n_out(sys_rst_n)
  118. // );
  119. /*******************************************************************************
  120. * DEBUG_LED *
  121. *******************************************************************************/
  122. // zutils_debug_led #(
  123. // .PERIOD_COUNT(10000000)
  124. // ) core_board_debug_led_inst (
  125. // .clk(sys_clk),
  126. // .rst_n(sys_rst_n),
  127. // .debug_led(core_board_debug_led)
  128. // );
  129. /*******************************************************************************
  130. * SPIREADER *
  131. *******************************************************************************/
  132. wire [31:0] reg_reader_bus_addr;
  133. wire [31:0] reg_reader_bus_wr_data;
  134. wire reg_reader_bus_wr_en;
  135. wire [31:0] reg_reader_bus_rd_data;
  136. spi_reg_reader spi_reg_reader_inst (
  137. .clk (sys_clk),
  138. .rst_n(sys_rst_n),
  139. .addr(reg_reader_bus_addr),
  140. .wr_data(reg_reader_bus_wr_data),
  141. .wr_en(reg_reader_bus_wr_en),
  142. .rd_data(reg_reader_bus_rd_data),
  143. //
  144. .spi_cs_pin(spi2_cs_pin),
  145. .spi_clk_pin(spi2_clk_pin),
  146. .spi_rx_pin(spi2_rx_pin),
  147. .spi_tx_pin(spi2_tx_pin)
  148. );
  149. wire [31:0] stm32_rd_data; //
  150. wire [31:0] fpga_test_rd_data; //
  151. wire [31:0] xsync_internal_sig_generator_rd_data;
  152. wire [31:0] ttlin1_rd_data;
  153. wire [31:0] ttlin2_rd_data;
  154. wire [31:0] ttlin3_rd_data;
  155. wire [31:0] ttlin4_rd_data;
  156. wire [31:0] timecode_in_rd_data;
  157. wire [31:0] genlock_in_rd_data;
  158. wire [31:0] ttlout1_rd_data;
  159. wire [31:0] ttlout2_rd_data;
  160. wire [31:0] ttlout3_rd_data;
  161. wire [31:0] ttlout4_rd_data;
  162. wire [31:0] timecode_out_rd_data;
  163. wire [31:0] genlock_out_rd_data;
  164. wire [31:0] camera_sync_out_rd_data;
  165. wire [31:0] debuger_rd_data;
  166. //
  167. /*******************************************************************************
  168. * TEST_SPI_REG *
  169. *******************************************************************************/
  170. zutils_register16 #(
  171. .REG_START_ADD(REG_ADD_OFF_FPGA_TEST),
  172. .REG0_INIT(31'h0000_0000_0000_0001),
  173. .REG1_INIT(31'h0000_0000_0000_0010),
  174. .REG2_INIT(31'h0000_0000_0000_0100),
  175. .REG3_INIT(31'h0000_0000_0000_1000),
  176. .REG4_INIT(31'h0000_0000_0001_0000),
  177. .REG5_INIT(31'h0000_0000_0010_0000),
  178. .REG6_INIT(31'h0000_0000_0100_0000),
  179. .REG7_INIT(31'h0000_0000_1000_0000),
  180. .REG8_INIT(31'h0000_0001_0000_0000),
  181. .REG9_INIT(31'h0000_0010_0000_0000),
  182. .REGA_INIT(31'h0000_0100_0000_0000),
  183. .REGB_INIT(31'h0000_1000_0000_0000),
  184. .REGC_INIT(31'h0001_0000_0000_0000),
  185. .REGD_INIT(31'h0010_0000_0000_0000),
  186. .REGE_INIT(31'h0100_0000_0000_0000),
  187. .REGF_INIT(31'h1000_0000_0000_0000)
  188. ) test_reg (
  189. .clk(sys_clk),
  190. .rst_n(sys_rst_n),
  191. .addr(reg_reader_bus_addr),
  192. .wr_data(reg_reader_bus_wr_data),
  193. .wr_en(reg_reader_bus_wr_en),
  194. .rd_data(fpga_test_rd_data)
  195. );
  196. /*******************************************************************************
  197. * 信号源 *
  198. *******************************************************************************/
  199. wire ISIG_logic0; // 逻辑0
  200. wire ISIG_logic1; // 逻辑1
  201. wire ISIG_ttlin1_module_ext; // ttl1输入模块原始信号
  202. wire ISIG_ttlin1_module_divide; // ttl1输入模块分频信号
  203. wire ISIG_ttlin2_module_ext; // ttl2输入模块原始信号
  204. wire ISIG_ttlin2_module_divide; // ttl2输入模块分频信号
  205. wire ISIG_ttlin3_module_ext; // ttl3输入模块原始信号
  206. wire ISIG_ttlin3_module_divide; // ttl3输入模块分频信号
  207. wire ISIG_ttlin4_module_ext; // ttl4输入模块原始信号
  208. wire ISIG_ttlin4_module_divide; // ttl4输入模块分频信号
  209. wire ISIG_internal_en_flag; // 内部使能状态信号输出
  210. wire ISIG_genlock_frame_sync_ext; // 外部genlock帧同步信号
  211. wire ISIG_genlock_frame_sync_internal; // 内部genlock帧同步信号
  212. wire ISIG_timecode_frame_sync_ext; // 外部timecode帧同步信号
  213. wire ISIG_timecode_frame_sync_internal; // 内部timecode帧同步信号
  214. wire ISIG_timecode_serial_data_ext; // 外部timecode串行数据输入
  215. wire ISIG_timecode_serial_data_internal; // 内部timecode串行数据输入
  216. wire ISIG_internal_100hz; // 100hz测试信号
  217. wire [63:0] ISIGBUS64_timecode_data_ext;
  218. wire [31:0] ISIGBUS32_timecode_format_ext;
  219. wire [63:0] ISIGBUS64_timecode_data_internal;
  220. wire [31:0] ISIGBUS32_timecode_format_internal;
  221. assign ISIG_genlock_frame_sync_ext = genlock_in_vsync;
  222. assign ISIG_logic0 = 0;
  223. assign ISIG_logic1 = 1;
  224. /*******************************************************************************
  225. * TTL输出模块信号源分配 *
  226. *******************************************************************************/
  227. wire [31:0] ttl_output_module_source_sig_af;
  228. assign ttl_output_module_source_sig_af[0] = ISIG_logic0;
  229. assign ttl_output_module_source_sig_af[1] = ISIG_logic1;
  230. assign ttl_output_module_source_sig_af[2] = ISIG_ttlin1_module_ext;
  231. assign ttl_output_module_source_sig_af[3] = ISIG_ttlin1_module_divide;
  232. assign ttl_output_module_source_sig_af[4] = ISIG_ttlin2_module_ext;
  233. assign ttl_output_module_source_sig_af[5] = ISIG_ttlin2_module_divide;
  234. assign ttl_output_module_source_sig_af[6] = ISIG_ttlin3_module_ext;
  235. assign ttl_output_module_source_sig_af[7] = ISIG_ttlin3_module_divide;
  236. assign ttl_output_module_source_sig_af[8] = ISIG_ttlin4_module_ext;
  237. assign ttl_output_module_source_sig_af[9] = ISIG_ttlin4_module_divide;
  238. assign ttl_output_module_source_sig_af[10] = ISIG_internal_en_flag;
  239. assign ttl_output_module_source_sig_af[11] = ISIG_genlock_frame_sync_ext;
  240. assign ttl_output_module_source_sig_af[12] = ISIG_genlock_frame_sync_internal;
  241. assign ttl_output_module_source_sig_af[13] = ISIG_timecode_frame_sync_ext;
  242. assign ttl_output_module_source_sig_af[14] = ISIG_timecode_frame_sync_internal;
  243. assign ttl_output_module_source_sig_af[15] = ISIG_timecode_serial_data_ext;
  244. assign ttl_output_module_source_sig_af[16] = ISIG_timecode_serial_data_internal;
  245. assign ttl_output_module_source_sig_af[31] = ISIG_internal_100hz;
  246. xsync_internal_generator #(
  247. .REG_START_ADD (REG_ADD_OFF_XSYNC_INTERNAL_SIG_GENERATOR),
  248. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  249. ) xsync_internal_generator_ins (
  250. .clk(sys_clk),
  251. .rst_n(sys_rst_n),
  252. .addr(reg_reader_bus_addr),
  253. .wr_data(reg_reader_bus_wr_data),
  254. .wr_en(reg_reader_bus_wr_en),
  255. .rd_data(xsync_internal_sig_generator_rd_data),
  256. .ext_ttlin1_module_raw_sig(ISIG_ttlin1_module_ext),
  257. .ext_ttlin2_module_raw_sig(ISIG_ttlin2_module_ext),
  258. .ext_ttlin3_module_raw_sig(ISIG_ttlin3_module_ext),
  259. .ext_ttlin4_module_raw_sig(ISIG_ttlin4_module_ext),
  260. .ext_timecode_tigger_sig(ISIG_timecode_frame_sync_ext),
  261. .ext_timecode_data(ISIGBUS64_timecode_data_ext),
  262. .ext_genlock_signal(ISIG_genlock_frame_sync_ext),
  263. .out_timecode_tirgger_sig(ISIG_timecode_frame_sync_internal), //输出时码译码有效信号
  264. .out_timecode_sig(ISIGBUS64_timecode_data_internal), //[63:0] 输出时间
  265. .out_timecode_serial_sig(ISIG_timecode_serial_data_internal), //TIMECODE串行数据输出
  266. .out_genlock_sig(ISIG_genlock_frame_sync_internal),
  267. .out_en_flag(ISIG_internal_en_flag)
  268. );
  269. /*******************************************************************************
  270. * 时码解析器 *
  271. *******************************************************************************/
  272. timecode_input_parser #(
  273. .REG_START_ADD (REG_ADD_OFF_TIMECODE_IN),
  274. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  275. ) timecode_input_parser_ins (
  276. .clk (sys_clk),
  277. .rst_n(sys_rst_n),
  278. .addr(reg_reader_bus_addr),
  279. .wr_data(reg_reader_bus_wr_data),
  280. .wr_en(reg_reader_bus_wr_en),
  281. .rd_data(timecode_in_rd_data),
  282. //input
  283. .timecode_bnc_in(timecode_bnc_in),
  284. .timecode_headphone_in(timecode_headphone_in),
  285. //output
  286. .timecode_tigger_sig(ISIG_timecode_frame_sync_ext),
  287. .timecode_format(ISIGBUS32_timecode_format_ext), //[31:0]
  288. .timecode_data(ISIGBUS64_timecode_data_ext), //[63:0]
  289. .timecode_serial_data(ISIG_timecode_serial_data_ext),
  290. .timecode_headphone_in_state_led(timecode_headphone_in_state_led),
  291. .timecode_bnc_in_state_led(timecode_bnc_in_state_led)
  292. );
  293. /*******************************************************************************
  294. * ISIG_internal_100hz信号生成 *
  295. *******************************************************************************/
  296. zutils_pwm_generator #(
  297. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  298. .OUTPUT_FREQ(100)
  299. ) pwm100hz_gen (
  300. .clk(sys_clk),
  301. .rst_n(sys_rst_n),
  302. .output_signal(ISIG_internal_100hz)
  303. );
  304. // ===========================================================================================================
  305. // 输出组件
  306. // ===========================================================================================================
  307. //
  308. camera_sync_signal_output #(
  309. .REG_START_ADD (REG_ADD_OFF_CAMERA_SYNC_OUT),
  310. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  311. ) camera_sync_signal_output_ist (
  312. .clk (sys_clk),
  313. .rst_n(sys_rst_n),
  314. .addr(reg_reader_bus_addr),
  315. .wr_data(reg_reader_bus_wr_data),
  316. .wr_en(reg_reader_bus_wr_en),
  317. .rd_data(camera_sync_out_rd_data),
  318. .internal_genlock_sig(ISIG_genlock_frame_sync_internal),
  319. .ext_genlock_sig(ISIG_genlock_frame_sync_ext),
  320. .test_100hz_sig(ISIG_internal_100hz),
  321. .stm32if_camera_sync_out(stm32if_camera_sync_out)
  322. );
  323. /*******************************************************************************
  324. * STM32_IF *
  325. *******************************************************************************/
  326. assign stm32if_start_signal_out = ISIG_internal_en_flag;
  327. /*******************************************************************************
  328. * timecode_output *
  329. *******************************************************************************/
  330. timecode_output #(
  331. .REG_START_ADD (REG_ADD_OFF_TIMECODE_OUT),
  332. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  333. ) timecode_output_inst (
  334. .clk (sys_clk),
  335. .rst_n(sys_rst_n),
  336. .addr(reg_reader_bus_addr),
  337. .wr_data(reg_reader_bus_wr_data),
  338. .wr_en(reg_reader_bus_wr_en),
  339. .rd_data(timecode_out_rd_data),
  340. .ext_timecode_data(ISIGBUS64_timecode_data_ext), //63:0
  341. .ext_timecode_format(ISIGBUS32_timecode_format_ext), //31:0
  342. .ext_timecode_tigger_sig(ISIG_timecode_frame_sync_ext),
  343. .ext_timecode_serial_data(ISIG_timecode_serial_data_ext),
  344. .internal_timecode_data(ISIGBUS64_timecode_data_internal), //63:0
  345. .internal_timecode_format(ISIGBUS32_timecode_format_internal), //31:0
  346. .internal_timecode_tigger_sig(ISIG_timecode_frame_sync_internal),
  347. .internal_timecode_serial_data(ISIG_timecode_serial_data_internal),
  348. .stm32if_timecode_tigger_sig(stm32if_timecode_sync_out),
  349. .timecode_out_bnc(timecode_out_bnc),
  350. .timecode_out_bnc_select(timecode_out_bnc_select),
  351. .timecode_out_bnc_state_led(timecode_out_bnc_state_led),
  352. .timecode_out_headphone(timecode_out_headphone),
  353. .timecode_out_headphone_select(timecode_out_headphone_select),
  354. .timecode_out_headphone_state_led(timecode_out_headphone_state_led)
  355. );
  356. /*******************************************************************************
  357. * TTL_OUTPUT *
  358. *******************************************************************************/
  359. ttl_output #(
  360. .REG_START_ADD(REG_ADD_OFF_TTLOUT1),
  361. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  362. .ID(1)
  363. ) ttl_output_1 (
  364. .clk (sys_clk),
  365. .rst_n(sys_rst_n),
  366. .addr(reg_reader_bus_addr),
  367. .wr_data(reg_reader_bus_wr_data),
  368. .wr_en(reg_reader_bus_wr_en),
  369. .rd_data(ttlout1_rd_data),
  370. .signal_in(ttl_output_module_source_sig_af),
  371. .ttloutput(sync_ttl_out1),
  372. .ttloutput_state_led(sync_ttl_out1_state_led)
  373. );
  374. ttl_output #(
  375. .REG_START_ADD(REG_ADD_OFF_TTLOUT2),
  376. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  377. .ID(2)
  378. ) ttl_output_2 (
  379. .clk (sys_clk),
  380. .rst_n(sys_rst_n),
  381. .addr(reg_reader_bus_addr),
  382. .wr_data(reg_reader_bus_wr_data),
  383. .wr_en(reg_reader_bus_wr_en),
  384. .rd_data(ttlout2_rd_data),
  385. .signal_in(ttl_output_module_source_sig_af),
  386. .ttloutput(sync_ttl_out2),
  387. .ttloutput_state_led(sync_ttl_out2_state_led)
  388. );
  389. ttl_output #(
  390. .REG_START_ADD(REG_ADD_OFF_TTLOUT3),
  391. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  392. .ID(3)
  393. ) ttl_output_3 (
  394. .clk (sys_clk),
  395. .rst_n(sys_rst_n),
  396. .addr(reg_reader_bus_addr),
  397. .wr_data(reg_reader_bus_wr_data),
  398. .wr_en(reg_reader_bus_wr_en),
  399. .rd_data(ttlout3_rd_data),
  400. .signal_in(ttl_output_module_source_sig_af),
  401. .ttloutput(sync_ttl_out3),
  402. .ttloutput_state_led(sync_ttl_out3_state_led)
  403. );
  404. ttl_output #(
  405. .REG_START_ADD(REG_ADD_OFF_TTLOUT4),
  406. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  407. .ID(4)
  408. ) ttl_output_4 (
  409. .clk (sys_clk),
  410. .rst_n(sys_rst_n),
  411. .addr(reg_reader_bus_addr),
  412. .wr_data(reg_reader_bus_wr_data),
  413. .wr_en(reg_reader_bus_wr_en),
  414. .rd_data(ttlout4_rd_data),
  415. .signal_in(ttl_output_module_source_sig_af),
  416. .ttloutput(sync_ttl_out4),
  417. .ttloutput_state_led(sync_ttl_out4_state_led)
  418. );
  419. rd_data_router #(
  420. .REG_ADD_OFF_STM32(REG_ADD_OFF_STM32),
  421. .REG_ADD_OFF_FPGA_TEST(REG_ADD_OFF_FPGA_TEST),
  422. .REG_ADD_OFF_XSYNC_INTERNAL_SIG_GENERATOR(REG_ADD_OFF_XSYNC_INTERNAL_SIG_GENERATOR),
  423. .REG_ADD_OFF_TTLIN1(REG_ADD_OFF_TTLIN1),
  424. .REG_ADD_OFF_TTLIN2(REG_ADD_OFF_TTLIN2),
  425. .REG_ADD_OFF_TTLIN3(REG_ADD_OFF_TTLIN3),
  426. .REG_ADD_OFF_TTLIN4(REG_ADD_OFF_TTLIN4),
  427. .REG_ADD_OFF_TIMECODE_IN(REG_ADD_OFF_TIMECODE_IN),
  428. .REG_ADD_OFF_GENLOCK_IN(REG_ADD_OFF_GENLOCK_IN),
  429. .REG_ADD_OFF_TTLOUT1(REG_ADD_OFF_TTLOUT1),
  430. .REG_ADD_OFF_TTLOUT2(REG_ADD_OFF_TTLOUT2),
  431. .REG_ADD_OFF_TTLOUT3(REG_ADD_OFF_TTLOUT3),
  432. .REG_ADD_OFF_TTLOUT4(REG_ADD_OFF_TTLOUT4),
  433. .REG_ADD_OFF_TIMECODE_OUT(REG_ADD_OFF_TIMECODE_OUT),
  434. .REG_ADD_OFF_GENLOCK_OUT(REG_ADD_OFF_GENLOCK_OUT),
  435. .REG_ADD_OFF_CAMERA_SYNC_OUT(REG_ADD_OFF_CAMERA_SYNC_OUT),
  436. .REG_ADD_OFF_DEBUGER(REG_ADD_OFF_DEBUGER)
  437. ) rd_data_router_inst (
  438. .addr(reg_reader_bus_addr),
  439. .stm32_rd_data(stm32_rd_data),
  440. .fpga_test_rd_data(fpga_test_rd_data),
  441. .xsync_internal_sig_generator_rd_data(xsync_internal_sig_generator_rd_data),
  442. .ttlin1_rd_data(ttlin1_rd_data),
  443. .ttlin2_rd_data(ttlin2_rd_data),
  444. .ttlin3_rd_data(ttlin3_rd_data),
  445. .ttlin4_rd_data(ttlin4_rd_data),
  446. .timecode_in_rd_data(timecode_in_rd_data),
  447. .genlock_in_rd_data(genlock_in_rd_data),
  448. .ttlout1_rd_data(ttlout1_rd_data), // ok
  449. .ttlout2_rd_data(ttlout2_rd_data), // ok
  450. .ttlout3_rd_data(ttlout3_rd_data), // ok
  451. .ttlout4_rd_data(ttlout4_rd_data), // ok
  452. .timecode_out_rd_data(timecode_out_rd_data),
  453. .genlock_out_rd_data(genlock_out_rd_data),
  454. .camera_sync_out_rd_data(camera_sync_out_rd_data),
  455. .debuger_rd_data(debuger_rd_data),
  456. .rd_data_out(reg_reader_bus_rd_data)
  457. );
  458. // assign reg_reader_bus_rd_data[31:0] = fpga_test_rd_data[31:0];
  459. // output reg stm32if_timecode_tigger_sig,
  460. // output reg timecode_out_bnc,
  461. // output reg timecode_out_bnc_select, // 电平选择 0line,1:mic
  462. // output reg timecode_out_bnc_state_led,
  463. // output reg timecode_out_headphone,
  464. // output reg timecode_out_headphone_select, // 电平选择 0line,1:mic
  465. // output reg timecode_out_headphone_state_led
  466. assign debug_signal_output[0] = sync_ttl_out1;
  467. assign debug_signal_output[1] = sync_ttl_out2;
  468. assign debug_signal_output[2] = sync_ttl_out3;
  469. assign debug_signal_output[3] = sync_ttl_out4;
  470. assign debug_signal_output[4] = stm32if_timecode_sync_out;
  471. assign debug_signal_output[5] = timecode_out_bnc;
  472. assign debug_signal_output[6] = timecode_out_headphone;
  473. assign debug_signal_output[7] = genlock_in_hsync;
  474. assign debug_signal_output[8] = genlock_in_vsync;
  475. assign debug_signal_output[9] = genlock_in_fsync;
  476. assign debug_signal_output[10] = sync_ttl_in1;
  477. assign debug_signal_output[11] = sync_ttl_in2;
  478. assign debug_signal_output[12] = sync_ttl_in3;
  479. assign debug_signal_output[13] = sync_ttl_in4;
  480. assign debug_signal_output[14] = timecode_headphone_in;
  481. assign debug_signal_output[15] = timecode_bnc_in;
  482. assign core_board_debug_led = 1;
  483. assign genlock_in_state_led = 1;
  484. endmodule