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.

304 lines
9.9 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
  1. `include "config.v"
  2. `timescale 1ns / 1ns
  3. module Top (
  4. input sys_clk,
  5. input rst_n,
  6. /*******************************************************************************
  7. * genlock *
  8. *******************************************************************************/
  9. input genlock_in_hsync,
  10. input genlock_in_vsync,
  11. input genlock_in_fsync,
  12. output genlock_state_led,
  13. /*******************************************************************************
  14. * GENLOCK_OUTPUT *
  15. *******************************************************************************/
  16. output [12:0] genlock_out_dac,
  17. output genlock_out_dac_state_led,
  18. /*******************************************************************************
  19. * TTL_IN *
  20. *******************************************************************************/
  21. input sync_ttl_in1,
  22. output sync_ttl_state_led1,
  23. input sync_ttl_in2,
  24. output sync_ttl_state_led2,
  25. input sync_ttl_in3,
  26. output sync_ttl_state_led3,
  27. input sync_ttl_in4,
  28. output sync_ttl_state_led4,
  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. input timecode_headphone_in_state_led,
  45. input timecode_bnc_in,
  46. input timecode_bnc_in_state_led,
  47. /*******************************************************************************
  48. * TIMECODE_OUTPUT *
  49. *******************************************************************************/
  50. output timecode_bnc_out,
  51. output timecode_bnc_output_select,
  52. output timecode_bnc_out_state_led,
  53. output timecode_headphone_out,
  54. output timecode_headphone_output_select,
  55. output timecode_headphone_out_state_led,
  56. /*******************************************************************************
  57. * STM32_IF *
  58. *******************************************************************************/
  59. output stm32if_camera_sync_out,
  60. output stm32if_timecode_sync_out,
  61. output stm32if_start_signal_out,
  62. output [3:0] stm32if_timecode_add,
  63. output [3:0] stm32if_timecode_data,
  64. //SPI 串行总线1
  65. input wire spi1_cs_pin,
  66. input wire spi1_clk_pin,
  67. input wire spi1_rx_pin,
  68. output wire spi1_tx_pin,
  69. //SPI 串行总线2
  70. input wire spi2_cs_pin,
  71. input wire spi2_clk_pin,
  72. input wire spi2_rx_pin,
  73. output wire spi2_tx_pin,
  74. /*******************************************************************************
  75. * debug_signal_output *
  76. *******************************************************************************/
  77. output [15:0] debug_signal_output,
  78. /*******************************************************************************
  79. * CODE_BOARD *
  80. *******************************************************************************/
  81. output wire core_board_debug_led
  82. );
  83. localparam HARDWARE_TEST_MODE = 1;
  84. SPLL spll (
  85. .clkin1(sys_clk), // input
  86. .pll_lock(pll_lock), // output
  87. .clkout0(sys_clk_25m), // output
  88. .clkout1(sys_clk_10m), // output
  89. .clkout2(sys_clk_5m) // output
  90. );
  91. /*******************************************************************************
  92. * 调试器 *
  93. *******************************************************************************/
  94. // wire [6:0] trig0_i;
  95. // JtagHubIst jtag_hub_ist (
  96. // .resetn_i(rst_n), // input
  97. // .drck_o (drck_o), // output
  98. // .hub_tdi (hub_tdi), // output
  99. // .capt_o (capt_o), // output
  100. // .shift_o (shift_o), // output
  101. // .conf_sel(conf_sel), // output [14:0]
  102. // .id_o (id_o), // output [4:0]
  103. // .hub_tdo (hub_tdo) // input [14:0]
  104. // );
  105. // DebugCoreIst debug_core_ist (
  106. // .hub_tdi (hub_tdi), // input
  107. // .hub_tdo (hub_tdo[0]), // output
  108. // .id_i (id_o), // input [4:0]
  109. // .capt_i (capt_o), // input
  110. // .shift_i (shift_o), // input
  111. // .conf_sel(conf_sel[0]), // input
  112. // .drck_in (drck_o), // input
  113. // .clk (sys_clk), // input
  114. // .resetn_i(rst_n), // input
  115. // .trig0_i (trig0_i)
  116. // );
  117. /*******************************************************************************
  118. * DEBUG_LED *
  119. *******************************************************************************/
  120. zutils_debug_led #(
  121. .PERIOD_COUNT(10000000)
  122. ) core_board_debug_led_inst (
  123. .clk(sys_clk),
  124. .rst_n(rst_n),
  125. .debug_led(core_board_debug_led)
  126. );
  127. /*******************************************************************************
  128. * SPIREADER *
  129. *******************************************************************************/
  130. wire [31:0] reg_reader_bus_addr;
  131. wire [31:0] reg_reader_bus_wr_data;
  132. wire reg_reader_bus_wr_en;
  133. wire [31:0] reg_reader_bus_rd_data;
  134. spi_reg_reader spi1_reg_reader_inst (
  135. .clk (sys_clk),
  136. .rst_n(rst_n),
  137. .addr(reg_reader_bus_addr),
  138. .wr_data(reg_reader_bus_wr_data),
  139. .wr_en(reg_reader_bus_wr_en),
  140. .rd_data(reg_reader_bus_rd_data),
  141. //
  142. .spi_cs_pin(spi1_cs_pin),
  143. .spi_clk_pin(spi1_clk_pin),
  144. .spi_rx_pin(spi1_rx_pin),
  145. .spi_tx_pin(spi1_tx_pin)
  146. );
  147. rd_data_router rd_data_router_inst (
  148. .addr(reg_reader_bus_addr),
  149. .stm32_rd_data(0),
  150. .fpga_test_rd_data(fpga_test_rd_data),
  151. .control_sensor_rd_data(control_sensor_rd_data),
  152. .ttlin1_rd_data(ttlin1_rd_data),
  153. .ttlin2_rd_data(ttlin2_rd_data),
  154. .ttlin3_rd_data(ttlin3_rd_data),
  155. .ttlin4_rd_data(ttlin4_rd_data),
  156. .timecode_in_rd_data(timecode_in_rd_data),
  157. .genlock_in_rd_data(genlock_in_rd_data),
  158. .ttlout1_rd_data(ttlout1_rd_data), // ok
  159. .ttlout2_rd_data(ttlout2_rd_data), // ok
  160. .ttlout3_rd_data(ttlout3_rd_data), // ok
  161. .ttlout4_rd_data(ttlout4_rd_data), // ok
  162. .timecode_out_rd_data(timecode_out_rd_data),
  163. .genlock_out_rd_data(genlock_out_rd_data),
  164. .stm32_if_rd_data(stm32_if_rd_data),
  165. .debuger_rd_data(debuger_rd_data),
  166. .rd_data_out(reg_reader_bus_rd_data)
  167. );
  168. /*******************************************************************************
  169. * TEST_SPI_REG *
  170. *******************************************************************************/
  171. zutils_register16 #(
  172. .REG_START_ADD(`REG_ADD_OFF_FPGA_TEST)
  173. ) core_board_debug_led_reg (
  174. .clk(sys_clk),
  175. .rst_n(rst_n),
  176. .addr(reg_reader_bus_addr),
  177. .wr_data(reg_reader_bus_wr_data),
  178. .wr_en(reg_reader_bus_wr_en),
  179. .rd_data(fpga_test_rd_data)
  180. );
  181. /*******************************************************************************
  182. * 输出组件 *
  183. *******************************************************************************/
  184. wire [7:0] ttl_output_signal_in;
  185. ttl_output #(
  186. .REG_START_ADD(`REG_ADD_OFF_TTLIN1),
  187. .TEST(HARDWARE_TEST_MODE)
  188. ) ttl_output_1 (
  189. .clk (sys_clk),
  190. .rst_n(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(ttlout1_rd_data),
  195. .signal_in(ttl_output_signal_in),
  196. .ttloutput(sync_ttl_out1),
  197. .ttloutput_state_led(sync_ttl_out1_state_led)
  198. );
  199. ttl_output #(
  200. .REG_START_ADD(`REG_ADD_OFF_TTLIN2),
  201. .TEST(HARDWARE_TEST_MODE)
  202. ) ttl_output_2 (
  203. .clk (sys_clk),
  204. .rst_n(rst_n),
  205. .addr(reg_reader_bus_addr),
  206. .wr_data(reg_reader_bus_wr_data),
  207. .wr_en(reg_reader_bus_wr_en),
  208. .rd_data(ttlout2_rd_data),
  209. .signal_in(ttl_output_signal_in),
  210. .ttloutput(sync_ttl_out2),
  211. .ttloutput_state_led(sync_ttl_out2_state_led)
  212. );
  213. ttl_output #(
  214. .REG_START_ADD(`REG_ADD_OFF_TTLIN3),
  215. .TEST(HARDWARE_TEST_MODE)
  216. ) ttl_output_3 (
  217. .clk (sys_clk),
  218. .rst_n(rst_n),
  219. .addr(reg_reader_bus_addr),
  220. .wr_data(reg_reader_bus_wr_data),
  221. .wr_en(reg_reader_bus_wr_en),
  222. .rd_data(ttlout3_rd_data),
  223. .signal_in(ttl_output_signal_in),
  224. .ttloutput(sync_ttl_out3),
  225. .ttloutput_state_led(sync_ttl_out3_state_led)
  226. );
  227. ttl_output #(
  228. .REG_START_ADD(`REG_ADD_OFF_TTLIN4),
  229. .TEST(HARDWARE_TEST_MODE)
  230. ) ttl_output_4 (
  231. .clk (sys_clk),
  232. .rst_n(rst_n),
  233. .addr(reg_reader_bus_addr),
  234. .wr_data(reg_reader_bus_wr_data),
  235. .wr_en(reg_reader_bus_wr_en),
  236. .rd_data(ttlout4_rd_data),
  237. .signal_in(ttl_output_signal_in),
  238. .ttloutput(sync_ttl_out4),
  239. .ttloutput_state_led(sync_ttl_out4_state_led)
  240. );
  241. endmodule