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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

343 lines
11 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
  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_in_state_led,
  13. /*******************************************************************************
  14. * GENLOCK_OUTPUT *
  15. *******************************************************************************/
  16. output [9:0] genlock_out_dac,
  17. output genlock_out_dac_clk,
  18. output genlock_out_dac_state_led,
  19. /*******************************************************************************
  20. * TTL_IN *
  21. *******************************************************************************/
  22. input sync_ttl_in1,
  23. output sync_ttl_in1_state_led,
  24. input sync_ttl_in2,
  25. output sync_ttl_in2_state_led,
  26. input sync_ttl_in3,
  27. output sync_ttl_in3_state_led,
  28. input sync_ttl_in4,
  29. output sync_ttl_in4_state_led,
  30. /*******************************************************************************
  31. * TTL_OUT *
  32. *******************************************************************************/
  33. output sync_ttl_out1,
  34. output sync_ttl_out1_state_led,
  35. output sync_ttl_out2,
  36. output sync_ttl_out2_state_led,
  37. output sync_ttl_out3,
  38. output sync_ttl_out3_state_led,
  39. output sync_ttl_out4,
  40. output sync_ttl_out4_state_led,
  41. /*******************************************************************************
  42. * TIMECODE_IN *
  43. *******************************************************************************/
  44. input timecode_headphone_in,
  45. output timecode_headphone_in_state_led,
  46. input timecode_bnc_in,
  47. output timecode_bnc_in_state_led,
  48. /*******************************************************************************
  49. * TIMECODE_OUTPUT *
  50. *******************************************************************************/
  51. output timecode_out_bnc,
  52. output timecode_out_bnc_select,
  53. output timecode_out_bnc_state_led,
  54. output timecode_out_headphone,
  55. output timecode_out_headphone_select,
  56. output timecode_out_headphone_state_led,
  57. /*******************************************************************************
  58. * STM32_IF *
  59. *******************************************************************************/
  60. output stm32if_camera_sync_out,
  61. output stm32if_timecode_sync_out,
  62. output stm32if_start_signal_out,
  63. output [3:0] stm32if_timecode_add,
  64. output [3:0] stm32if_timecode_data,
  65. //SPI 串行总线1
  66. input wire spi1_cs_pin,
  67. input wire spi1_clk_pin,
  68. input wire spi1_rx_pin,
  69. output wire spi1_tx_pin,
  70. //SPI 串行总线2
  71. input wire spi2_cs_pin,
  72. input wire spi2_clk_pin,
  73. input wire spi2_rx_pin,
  74. output wire spi2_tx_pin,
  75. /*******************************************************************************
  76. * debug_signal_output *
  77. *******************************************************************************/
  78. output [15:0] debug_signal_output,
  79. /*******************************************************************************
  80. * CODE_BOARD *
  81. *******************************************************************************/
  82. output wire core_board_debug_led
  83. );
  84. localparam HARDWARE_TEST_MODE = 1;
  85. SPLL spll (
  86. .clkin1(sys_clk), // input
  87. .pll_lock(pll_lock), // output
  88. .clkout0(sys_clk_25m), // output
  89. .clkout1(sys_clk_10m), // output
  90. .clkout2(sys_clk_5m) // output
  91. );
  92. zutils_reset_sig_gen reset_sig_gen_inst (
  93. .clk(sys_clk),
  94. .rst_n(rst_n),
  95. .rst_n_out(sys_rst_n)
  96. );
  97. /*******************************************************************************
  98. * DEBUG_LED *
  99. *******************************************************************************/
  100. // zutils_debug_led #(
  101. // .PERIOD_COUNT(10000000)
  102. // ) core_board_debug_led_inst (
  103. // .clk(sys_clk),
  104. // .rst_n(sys_rst_n),
  105. // .debug_led(core_board_debug_led)
  106. // );
  107. /*******************************************************************************
  108. * SPIREADER *
  109. *******************************************************************************/
  110. wire [31:0] reg_reader_bus_addr;
  111. wire [31:0] reg_reader_bus_wr_data;
  112. wire reg_reader_bus_wr_en;
  113. wire [31:0] reg_reader_bus_rd_data;
  114. spi_reg_reader spi_reg_reader_inst (
  115. .clk (sys_clk),
  116. .rst_n(sys_rst_n),
  117. .addr(reg_reader_bus_addr),
  118. .wr_data(reg_reader_bus_wr_data),
  119. .wr_en(reg_reader_bus_wr_en),
  120. .rd_data(reg_reader_bus_rd_data),
  121. //
  122. .spi_cs_pin(spi2_cs_pin),
  123. .spi_clk_pin(spi2_clk_pin),
  124. .spi_rx_pin(spi2_rx_pin),
  125. .spi_tx_pin(spi2_tx_pin)
  126. );
  127. wire [31:0] stm32_rd_data;
  128. wire [31:0] fpga_test_rd_data;
  129. wire [31:0] control_sensor_rd_data;
  130. wire [31:0] ttlin1_rd_data;
  131. wire [31:0] ttlin2_rd_data;
  132. wire [31:0] ttlin3_rd_data;
  133. wire [31:0] ttlin4_rd_data;
  134. wire [31:0] timecode_in_rd_data;
  135. wire [31:0] genlock_in_rd_data;
  136. wire [31:0] ttlout1_rd_data;
  137. wire [31:0] ttlout2_rd_data;
  138. wire [31:0] ttlout3_rd_data;
  139. wire [31:0] ttlout4_rd_data;
  140. wire [31:0] timecode_out_rd_data;
  141. wire [31:0] genlock_out_rd_data;
  142. wire [31:0] stm32_if_rd_data;
  143. wire [31:0] debuger_rd_data;
  144. /*******************************************************************************
  145. * TEST_SPI_REG *
  146. *******************************************************************************/
  147. zutils_register16 #(
  148. .REG_START_ADD(`REG_ADD_OFF_FPGA_TEST),
  149. .REG0_INIT(31'h0000_0000_0000_0001),
  150. .REG1_INIT(31'h0000_0000_0000_0010),
  151. .REG2_INIT(31'h0000_0000_0000_0100),
  152. .REG3_INIT(31'h0000_0000_0000_1000),
  153. .REG4_INIT(31'h0000_0000_0001_0000),
  154. .REG5_INIT(31'h0000_0000_0010_0000),
  155. .REG6_INIT(31'h0000_0000_0100_0000),
  156. .REG7_INIT(31'h0000_0000_1000_0000),
  157. .REG8_INIT(31'h0000_0001_0000_0000),
  158. .REG9_INIT(31'h0000_0010_0000_0000),
  159. .REGA_INIT(31'h0000_0100_0000_0000),
  160. .REGB_INIT(31'h0000_1000_0000_0000),
  161. .REGC_INIT(31'h0001_0000_0000_0000),
  162. .REGD_INIT(31'h0010_0000_0000_0000),
  163. .REGE_INIT(31'h0100_0000_0000_0000),
  164. .REGF_INIT(31'h1000_0000_0000_0000)
  165. ) test_reg (
  166. .clk(sys_clk),
  167. .rst_n(sys_rst_n),
  168. .addr(reg_reader_bus_addr),
  169. .wr_data(reg_reader_bus_wr_data),
  170. .wr_en(reg_reader_bus_wr_en),
  171. .rd_data(fpga_test_rd_data)
  172. );
  173. /*******************************************************************************
  174. * 输出组件 *
  175. *******************************************************************************/
  176. wire [31:0] ttl_output_module_source_sig;
  177. wire [31:0] ttl_output_module_source_sig_af;
  178. zutils_muti_debug_signal_gen ttl_sig_source (
  179. .clk(sys_clk),
  180. .rst_n(sys_rst_n),
  181. .testflag(HARDWARE_TEST_MODE),
  182. .rawsig(ttl_output_module_source_sig),
  183. .output_signal(ttl_output_module_source_sig_af)
  184. );
  185. ttl_output #(
  186. .REG_START_ADD(`REG_ADD_OFF_TTLOUT1),
  187. .TEST(HARDWARE_TEST_MODE),
  188. .ID(1)
  189. ) ttl_output_1 (
  190. .clk (sys_clk),
  191. .rst_n(sys_rst_n),
  192. .addr(reg_reader_bus_addr),
  193. .wr_data(reg_reader_bus_wr_data),
  194. .wr_en(reg_reader_bus_wr_en),
  195. .rd_data(ttlout1_rd_data),
  196. .signal_in(ttl_output_module_source_sig_af),
  197. .ttloutput(sync_ttl_out1),
  198. .ttloutput_state_led(sync_ttl_out1_state_led)
  199. );
  200. ttl_output #(
  201. .REG_START_ADD(`REG_ADD_OFF_TTLOUT2),
  202. .TEST(HARDWARE_TEST_MODE),
  203. .ID(2)
  204. ) ttl_output_2 (
  205. .clk (sys_clk),
  206. .rst_n(sys_rst_n),
  207. .addr(reg_reader_bus_addr),
  208. .wr_data(reg_reader_bus_wr_data),
  209. .wr_en(reg_reader_bus_wr_en),
  210. .rd_data(ttlout2_rd_data),
  211. .signal_in(ttl_output_module_source_sig_af),
  212. .ttloutput(sync_ttl_out2),
  213. .ttloutput_state_led(sync_ttl_out2_state_led)
  214. );
  215. ttl_output #(
  216. .REG_START_ADD(`REG_ADD_OFF_TTLOUT3),
  217. .TEST(HARDWARE_TEST_MODE),
  218. .ID(3)
  219. ) ttl_output_3 (
  220. .clk (sys_clk),
  221. .rst_n(sys_rst_n),
  222. .addr(reg_reader_bus_addr),
  223. .wr_data(reg_reader_bus_wr_data),
  224. .wr_en(reg_reader_bus_wr_en),
  225. .rd_data(ttlout3_rd_data),
  226. .signal_in(ttl_output_module_source_sig_af),
  227. .ttloutput(sync_ttl_out3),
  228. .ttloutput_state_led(sync_ttl_out3_state_led)
  229. );
  230. ttl_output #(
  231. .REG_START_ADD(`REG_ADD_OFF_TTLOUT4),
  232. .TEST(HARDWARE_TEST_MODE),
  233. .ID(4)
  234. ) ttl_output_4 (
  235. .clk (sys_clk),
  236. .rst_n(sys_rst_n),
  237. .addr(reg_reader_bus_addr),
  238. .wr_data(reg_reader_bus_wr_data),
  239. .wr_en(reg_reader_bus_wr_en),
  240. .rd_data(ttlout4_rd_data),
  241. .signal_in(ttl_output_module_source_sig_af),
  242. .ttloutput(sync_ttl_out4),
  243. .ttloutput_state_led(sync_ttl_out4_state_led)
  244. );
  245. rd_data_router rd_data_router_inst (
  246. .addr(reg_reader_bus_addr),
  247. .stm32_rd_data(stm32_rd_data),
  248. .fpga_test_rd_data(fpga_test_rd_data),
  249. .control_sensor_rd_data(control_sensor_rd_data),
  250. .ttlin1_rd_data(ttlin1_rd_data),
  251. .ttlin2_rd_data(ttlin2_rd_data),
  252. .ttlin3_rd_data(ttlin3_rd_data),
  253. .ttlin4_rd_data(ttlin4_rd_data),
  254. .timecode_in_rd_data(timecode_in_rd_data),
  255. .genlock_in_rd_data(genlock_in_rd_data),
  256. .ttlout1_rd_data(ttlout1_rd_data), // ok
  257. .ttlout2_rd_data(ttlout2_rd_data), // ok
  258. .ttlout3_rd_data(ttlout3_rd_data), // ok
  259. .ttlout4_rd_data(ttlout4_rd_data), // ok
  260. .timecode_out_rd_data(timecode_out_rd_data),
  261. .genlock_out_rd_data(genlock_out_rd_data),
  262. .stm32_if_rd_data(stm32_if_rd_data),
  263. .debuger_rd_data(debuger_rd_data),
  264. .rd_data_out(reg_reader_bus_rd_data)
  265. );
  266. // assign reg_reader_bus_rd_data[31:0] = fpga_test_rd_data[31:0];
  267. assign debug_signal_output[0] = spi2_cs_pin;
  268. assign debug_signal_output[1] = spi2_clk_pin;
  269. assign debug_signal_output[2] = spi2_rx_pin;
  270. assign debug_signal_output[3] = spi2_tx_pin;
  271. assign debug_signal_output[4] = sync_ttl_out1;
  272. assign debug_signal_output[5] = sync_ttl_out2;
  273. assign debug_signal_output[6] = sync_ttl_out3;
  274. assign debug_signal_output[7] = sync_ttl_out4;
  275. assign core_board_debug_led = 1;
  276. endmodule