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.

353 lines
12 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
  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. /*******************************************************************************
  93. * 调试器 *
  94. *******************************************************************************/
  95. // wire [6:0] trig0_i;
  96. // JtagHubIst jtag_hub_ist (
  97. // .resetn_i(rst_n), // input
  98. // .drck_o (drck_o), // output
  99. // .hub_tdi (hub_tdi), // output
  100. // .capt_o (capt_o), // output
  101. // .shift_o (shift_o), // output
  102. // .conf_sel(conf_sel), // output [14:0]
  103. // .id_o (id_o), // output [4:0]
  104. // .hub_tdo (hub_tdo) // input [14:0]
  105. // );
  106. // DebugCoreIst debug_core_ist (
  107. // .hub_tdi (hub_tdi), // input
  108. // .hub_tdo (hub_tdo[0]), // output
  109. // .id_i (id_o), // input [4:0]
  110. // .capt_i (capt_o), // input
  111. // .shift_i (shift_o), // input
  112. // .conf_sel(conf_sel[0]), // input
  113. // .drck_in (drck_o), // input
  114. // .clk (sys_clk), // input
  115. // .resetn_i(rst_n), // input
  116. // .trig0_i (trig0_i)
  117. // );
  118. /*******************************************************************************
  119. * DEBUG_LED *
  120. *******************************************************************************/
  121. // zutils_debug_led #(
  122. // .PERIOD_COUNT(10000000)
  123. // ) core_board_debug_led_inst (
  124. // .clk(sys_clk),
  125. // .rst_n(rst_n),
  126. // .debug_led(core_board_debug_led)
  127. // );
  128. /*******************************************************************************
  129. * SPIREADER *
  130. *******************************************************************************/
  131. wire [31:0] reg_reader_bus_addr;
  132. wire [31:0] reg_reader_bus_wr_data;
  133. wire reg_reader_bus_wr_en;
  134. wire [31:0] reg_reader_bus_rd_data;
  135. spi_reg_reader spi_reg_reader_inst (
  136. .clk (sys_clk),
  137. .rst_n(rst_n),
  138. .addr(reg_reader_bus_addr),
  139. .wr_data(reg_reader_bus_wr_data),
  140. .wr_en(reg_reader_bus_wr_en),
  141. .rd_data(reg_reader_bus_rd_data),
  142. //
  143. .spi_cs_pin(spi2_cs_pin),
  144. .spi_clk_pin(spi2_clk_pin),
  145. .spi_rx_pin(spi2_rx_pin),
  146. .spi_tx_pin(spi2_tx_pin)
  147. );
  148. wire [31:0] stm32_rd_data;
  149. wire [31:0] fpga_test_rd_data;
  150. wire [31:0] control_sensor_rd_data;
  151. wire [31:0] ttlin1_rd_data;
  152. wire [31:0] ttlin2_rd_data;
  153. wire [31:0] ttlin3_rd_data;
  154. wire [31:0] ttlin4_rd_data;
  155. wire [31:0] timecode_in_rd_data;
  156. wire [31:0] genlock_in_rd_data;
  157. wire [31:0] ttlout1_rd_data;
  158. wire [31:0] ttlout2_rd_data;
  159. wire [31:0] ttlout3_rd_data;
  160. wire [31:0] ttlout4_rd_data;
  161. wire [31:0] timecode_out_rd_data;
  162. wire [31:0] genlock_out_rd_data;
  163. wire [31:0] stm32_if_rd_data;
  164. wire [31:0] debuger_rd_data;
  165. /*******************************************************************************
  166. * TEST_SPI_REG *
  167. *******************************************************************************/
  168. zutils_register16 #(
  169. .REG_START_ADD(`REG_ADD_OFF_FPGA_TEST),
  170. .REG0_INIT(31'h0000_0000),
  171. .REG1_INIT(31'h1111_1111),
  172. .REG2_INIT(31'h2222_2222),
  173. .REG3_INIT(31'h3333_3333),
  174. .REG4_INIT(31'h4444_4444),
  175. .REG5_INIT(31'h5555_5555),
  176. .REG6_INIT(31'h6666_6666),
  177. .REG7_INIT(31'h7777_7777),
  178. .REG8_INIT(31'h8888_8888),
  179. .REG9_INIT(31'h9999_9999),
  180. .REGA_INIT(31'haaaa_aaaa),
  181. .REGB_INIT(31'hbbbb_bbbb),
  182. .REGC_INIT(31'hcccc_cccc),
  183. .REGD_INIT(31'hdddd_dddd),
  184. .REGE_INIT(31'heeee_eeee),
  185. .REGF_INIT(31'hffff_ffff)
  186. ) test_reg (
  187. .clk(sys_clk),
  188. .rst_n(rst_n),
  189. .addr(reg_reader_bus_addr),
  190. .wr_data(reg_reader_bus_wr_data),
  191. .wr_en(reg_reader_bus_wr_en),
  192. .rd_data(fpga_test_rd_data)
  193. );
  194. /*******************************************************************************
  195. * 输出组件 *
  196. *******************************************************************************/
  197. wire [7:0] ttl_output_signal_in;
  198. // ttl_output #(
  199. // .REG_START_ADD(`REG_ADD_OFF_TTLIN1),
  200. // .TEST(HARDWARE_TEST_MODE),
  201. // .ID(1)
  202. // ) ttl_output_1 (
  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(ttlout1_rd_data),
  209. // .signal_in(ttl_output_signal_in),
  210. // .ttloutput(sync_ttl_out1),
  211. // .ttloutput_state_led(sync_ttl_out1_state_led)
  212. // );
  213. // ttl_output #(
  214. // .REG_START_ADD(`REG_ADD_OFF_TTLIN2),
  215. // .TEST(HARDWARE_TEST_MODE),
  216. // .ID(2)
  217. // ) ttl_output_2 (
  218. // .clk (sys_clk),
  219. // .rst_n(rst_n),
  220. // .addr(reg_reader_bus_addr),
  221. // .wr_data(reg_reader_bus_wr_data),
  222. // .wr_en(reg_reader_bus_wr_en),
  223. // .rd_data(ttlout2_rd_data),
  224. // .signal_in(ttl_output_signal_in),
  225. // .ttloutput(sync_ttl_out2),
  226. // .ttloutput_state_led(sync_ttl_out2_state_led)
  227. // );
  228. // ttl_output #(
  229. // .REG_START_ADD(`REG_ADD_OFF_TTLIN3),
  230. // .TEST(HARDWARE_TEST_MODE),
  231. // .ID(3)
  232. // ) ttl_output_3 (
  233. // .clk (sys_clk),
  234. // .rst_n(rst_n),
  235. // .addr(reg_reader_bus_addr),
  236. // .wr_data(reg_reader_bus_wr_data),
  237. // .wr_en(reg_reader_bus_wr_en),
  238. // .rd_data(ttlout3_rd_data),
  239. // .signal_in(ttl_output_signal_in),
  240. // .ttloutput(sync_ttl_out3),
  241. // .ttloutput_state_led(sync_ttl_out3_state_led)
  242. // );
  243. // ttl_output #(
  244. // .REG_START_ADD(`REG_ADD_OFF_TTLIN4),
  245. // .TEST(HARDWARE_TEST_MODE),
  246. // .ID(4)
  247. // ) ttl_output_4 (
  248. // .clk (sys_clk),
  249. // .rst_n(rst_n),
  250. // .addr(reg_reader_bus_addr),
  251. // .wr_data(reg_reader_bus_wr_data),
  252. // .wr_en(reg_reader_bus_wr_en),
  253. // .rd_data(ttlout4_rd_data),
  254. // .signal_in(ttl_output_signal_in),
  255. // .ttloutput(sync_ttl_out4),
  256. // .ttloutput_state_led(sync_ttl_out4_state_led)
  257. // );
  258. // rd_data_router rd_data_router_inst (
  259. // .addr(reg_reader_bus_addr),
  260. // .stm32_rd_data(stm32_rd_data),
  261. // .fpga_test_rd_data(fpga_test_rd_data),
  262. // .control_sensor_rd_data(control_sensor_rd_data),
  263. // .ttlin1_rd_data(ttlin1_rd_data),
  264. // .ttlin2_rd_data(ttlin2_rd_data),
  265. // .ttlin3_rd_data(ttlin3_rd_data),
  266. // .ttlin4_rd_data(ttlin4_rd_data),
  267. // .timecode_in_rd_data(timecode_in_rd_data),
  268. // .genlock_in_rd_data(genlock_in_rd_data),
  269. // .ttlout1_rd_data(ttlout1_rd_data), // ok
  270. // .ttlout2_rd_data(ttlout2_rd_data), // ok
  271. // .ttlout3_rd_data(ttlout3_rd_data), // ok
  272. // .ttlout4_rd_data(ttlout4_rd_data), // ok
  273. // .timecode_out_rd_data(timecode_out_rd_data),
  274. // .genlock_out_rd_data(genlock_out_rd_data),
  275. // .stm32_if_rd_data(stm32_if_rd_data),
  276. // .debuger_rd_data(debuger_rd_data),
  277. // .rd_data_out(reg_reader_bus_rd_data)
  278. // );
  279. assign reg_reader_bus_rd_data[31:0] = fpga_test_rd_data[31:0];
  280. assign debug_signal_output[0] = spi2_cs_pin;
  281. assign debug_signal_output[1] = spi2_clk_pin;
  282. assign debug_signal_output[2] = spi2_rx_pin;
  283. assign debug_signal_output[3] = spi2_tx_pin;
  284. assign core_board_debug_led = 1;
  285. endmodule