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.

753 lines
27 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
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
12 months ago
1 year ago
1 year ago
1 year ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
11 months ago
2 years ago
  1. `timescale 1ns / 1ns
  2. `include "config.v"
  3. module Top (
  4. input ex_clk,
  5. input ex_rst_n,
  6. input genlock_in_hsync,
  7. input genlock_in_vsync,
  8. input genlock_in_fsync,
  9. output genlock_in_state_led,
  10. output [9:0] genlock_out_dac,
  11. output genlock_out_dac_clk,
  12. output genlock_out_dac_state_led,
  13. input sync_ttl_in1,
  14. output sync_ttl_in1_state_led,
  15. input sync_ttl_in2,
  16. output sync_ttl_in2_state_led,
  17. input sync_ttl_in3,
  18. output sync_ttl_in3_state_led,
  19. input sync_ttl_in4,
  20. output sync_ttl_in4_state_led,
  21. output sync_ttl_out1,
  22. output sync_ttl_out1_state_led,
  23. output sync_ttl_out2,
  24. output sync_ttl_out2_state_led,
  25. output sync_ttl_out3,
  26. output sync_ttl_out3_state_led,
  27. output sync_ttl_out4,
  28. output sync_ttl_out4_state_led,
  29. input timecode_headphone_in,
  30. output timecode_headphone_in_state_led,
  31. input timecode_bnc_in,
  32. output timecode_bnc_in_state_led,
  33. output timecode_out_bnc,
  34. output timecode_out_bnc_select,
  35. output timecode_out_bnc_state_led,
  36. output timecode_out_headphone,
  37. output timecode_out_headphone_select,
  38. output timecode_out_headphone_state_led,
  39. output stm32if_start_signal_out,
  40. output stm32if_camera_sync_out,
  41. output stm32if_timecode_sync_out,
  42. //SPI 串行总线1
  43. input wire spi1_cs_pin,
  44. input wire spi1_clk_pin,
  45. input wire spi1_rx_pin,
  46. output wire spi1_tx_pin,
  47. output [15:0] debug_signal_output,
  48. output core_board_debug_led
  49. );
  50. /***********************************************************************************************************************
  51. * 时钟 *
  52. ***********************************************************************************************************************/
  53. localparam SYS_CLOCK_FREQ = 10000000;
  54. wire sys_clk; //! 系统时钟
  55. wire sys_rst_n; //! 系统复位
  56. //系统时钟源
  57. SPLL spll (
  58. .clkin1 (ex_clk),
  59. .lock (pll_lock),
  60. .clkout0(sys_clk_25m),
  61. .clkout1(sys_clk_10m),
  62. .clkout2(sys_clk_5m)
  63. );
  64. assign sys_clk = sys_clk_10m;
  65. assign sys_rst_n = pll_lock;
  66. /***********************************************************************************************************************
  67. * 调试指示灯 *
  68. ***********************************************************************************************************************/
  69. breathing_lamp breathing_lamp_ins (
  70. .clk (sys_clk),
  71. .rst_n (sys_rst_n),
  72. .lampio(core_board_debug_led)
  73. );
  74. /***********************************************************************************************************************
  75. * 其他 *
  76. ***********************************************************************************************************************/
  77. //寄存器读写总线
  78. wire [31:0] RegReaderBus_addr; //!寄存器读写-地址总线
  79. wire [31:0] RegReaderBus_wr_data; //!寄存器读写-数据总线
  80. wire RegReaderBus_wr_en; //!寄存器读写-写使能位置
  81. reg [31:0] RegReaderBus_rd_data; //!寄存器读写-读数据总线
  82. //模块寄存器读总线
  83. wire [31:0] rd_data_module_fpga_info; //! 模块寄存器数据总线读数据
  84. wire [31:0] rd_data_module_ttlin; //! 模块寄存器数据总线读数据
  85. wire [31:0] rd_data_module_timecode_in; //! 模块寄存器数据总线读数据
  86. wire [31:0] rd_data_module_genlock_in; //! 模块寄存器数据总线读数据
  87. wire [31:0] rd_data_module_internal_timecode; //! 模块寄存器数据总线读数据
  88. wire [31:0] rd_data_module_internal_genlock; //! 模块寄存器数据总线读数据
  89. wire [31:0] rd_data_module_internal_clock; //! 模块寄存器数据总线读数据
  90. wire [31:0] rd_data_module_internal_sig_en_contrler; //! 模块寄存器数据总线读数据
  91. wire [31:0] rd_data_module_ttlout1; //! 模块寄存器数据总线读数据
  92. wire [31:0] rd_data_module_ttlout2; //! 模块寄存器数据总线读数据
  93. wire [31:0] rd_data_module_ttlout3; //! 模块寄存器数据总线读数据
  94. wire [31:0] rd_data_module_ttlout4; //! 模块寄存器数据总线读数据
  95. wire [31:0] rd_data_module_timecode_out; //! 模块寄存器数据总线读数据
  96. wire [31:0] rd_data_module_genlock_out; //! 模块寄存器数据总线读数据
  97. wire [31:0] rd_data_module_camera_sync_out; //! 模块寄存器数据总线读数据
  98. wire [31:0] rd_data_module_sys_timecode; //! 模块寄存器数据总线读数据
  99. wire [31:0] rd_data_module_sys_genlock; //! 模块寄存器数据总线读数据
  100. wire [31:0] rd_data_module_sys_clock; //! 模块寄存器数据总线读数据
  101. wire [31:0] rd_data_module_record_sig_generator; //! 模块寄存器数据总线读数据
  102. wire [31:0] rd_data_module_sys_signal_delayer; //! 模块寄存器数据总线读数据
  103. //内部信号
  104. wire signal_logic0; //! 逻辑0
  105. wire signal_logic1; //! 逻辑1
  106. wire signal_ttlin1; //! TTL输入1
  107. wire signal_ttlin2; //! TTL输入2
  108. wire signal_ttlin3; //! TTL输入3
  109. wire signal_ttlin4; //! TTL输入4
  110. wire signal_ext_genlock_freq; //! 外部GENLOCK频率信号
  111. wire signal_ext_timecode_freq; //! 外部时间码频率信号
  112. wire signal_internal_timecode_freq; //! 内部时间码频率信号
  113. wire signal_internal_genlock_freq; //! 内部GENLOCK频率信号
  114. wire signal_internal_clk_sig; //! 内部频率信号
  115. wire signal_sys_clk_output; //! 系统时钟输出
  116. wire signal_sys_genlock_output; //! 系统GENLOCK输出
  117. wire signal_sys_timecode_freq_output; //! 系统时间码频率输出
  118. wire signal_business_record_en_sig; //! 业务摄影状态信号
  119. wire signal_business_record_exposure_sig; //! 业务摄影拍照曝光信号
  120. wire signal_business_record_en_rsing_edge_sig; //! 业务摄影状态信号
  121. wire signal_business_record_en_falling_edge_sig; //! 业务摄影状态信号
  122. wire signal_business_record_en_edge_sig; //! 业务摄影状态信号
  123. wire internal_timecode_tigger_sig; //!内部timecode频率信号
  124. wire [31:0] internal_timecode_format; //!内部timecode格式
  125. wire [63:0] internal_timecode_data; //!内部timecode数据
  126. wire internal_timecode_serial_data; //!内部timecode串行数据
  127. wire ext_timecode_tigger_sig; //!外部timecode频率信号
  128. wire [31:0] ext_timecode_format; //!外部timecode格式
  129. wire [63:0] ext_timecode_data; //!外部timecode数据
  130. wire ext_timecode_serial_data; //!外部timecode串行数据
  131. wire sys_timecode_tigger_sig; //!外部timecode频率信号
  132. wire [31:0] sys_timecode_format; //!外部timecode格式
  133. wire [63:0] sys_timecode_data; //!外部timecode数据
  134. wire sys_timecode_serial_data; //!外部timecode串行数据
  135. wire [31:0] sig_src; // 系统内部信号总线
  136. assign sig_src[`SIGNAL_LOGIC0] = signal_logic0;
  137. assign sig_src[`SIGNAL_LOGIC1] = signal_logic1;
  138. assign sig_src[`SIGNAL_TTLIN1] = signal_ttlin1;
  139. assign sig_src[`SIGNAL_TTLIN2] = signal_ttlin2;
  140. assign sig_src[`SIGNAL_TTLIN3] = signal_ttlin3;
  141. assign sig_src[`SIGNAL_TTLIN4] = signal_ttlin4;
  142. assign sig_src[`SIGNAL_EXT_GENLOCK_FREQ] = signal_ext_genlock_freq;
  143. assign sig_src[`SIGNAL_EXT_TIMECODE_FREQ] = signal_ext_timecode_freq;
  144. assign sig_src[`SIGNAL_INTERNAL_TIMECODE_FREQ] = signal_internal_timecode_freq;
  145. assign sig_src[`SIGNAL_INTERNAL_GENLOCK_FREQ] = signal_internal_genlock_freq;
  146. assign sig_src[`SIGNAL_INTERNAL_CLOCK_SIG] = signal_internal_clk_sig;
  147. assign sig_src[`SIGNAL_SYS_CLK_OUTPUT] = signal_sys_clk_output;
  148. assign sig_src[`SIGNAL_SYS_GENLOCK_OUTPUT] = signal_sys_genlock_output;
  149. assign sig_src[`SIGNAL_SYS_TIMECODE_FREQ_OUTPUT] = signal_sys_timecode_freq_output;
  150. assign sig_src[`SIGNAL_BUSINESS_RECORD_SIG] = signal_business_record_en_sig;
  151. assign sig_src[`SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG] = signal_business_record_exposure_sig;
  152. assign sig_src[`SIGNAL_BUSINESS_RECORD_EN_RSING_EDGE_SIG] = signal_business_record_en_rsing_edge_sig;
  153. assign sig_src[`SIGNAL_BUSINESS_RECORD_EN_FALLING_EDGE_SIG] = signal_business_record_en_falling_edge_sig;
  154. assign sig_src[`SIGNAL_BUSINESS_RECORD_EN_EDGE_SIG] = signal_business_record_en_edge_sig;
  155. assign signal_logic0 = 1'b0;
  156. assign signal_logic1 = 1'b1;
  157. assign signal_internal_timecode_freq = internal_timecode_serial_data;
  158. assign signal_sys_timecode_freq_output = sys_timecode_tigger_sig;
  159. spi_reg_bus _spi_reg_bus (
  160. .clk (sys_clk),
  161. .rst_n (sys_rst_n),
  162. .addr (RegReaderBus_addr),
  163. .wr_data (RegReaderBus_wr_data),
  164. .wr_en (RegReaderBus_wr_en),
  165. .spi_cs_pin (spi1_cs_pin),
  166. .spi_clk_pin(spi1_clk_pin),
  167. .spi_rx_pin (spi1_rx_pin),
  168. .spi_tx_pin (spi1_tx_pin),
  169. .rd_data_module_fpga_info (rd_data_module_fpga_info),
  170. .rd_data_module_ttlin (rd_data_module_ttlin),
  171. .rd_data_module_timecode_in (rd_data_module_timecode_in),
  172. .rd_data_module_genlock_in (rd_data_module_genlock_in),
  173. .rd_data_module_internal_timecode (rd_data_module_internal_timecode),
  174. .rd_data_module_internal_genlock (rd_data_module_internal_genlock),
  175. .rd_data_module_internal_clock (rd_data_module_internal_clock),
  176. .rd_data_module_internal_sig_en_contrler(rd_data_module_internal_sig_en_contrler),
  177. .rd_data_module_ttlout1 (rd_data_module_ttlout1),
  178. .rd_data_module_ttlout2 (rd_data_module_ttlout2),
  179. .rd_data_module_ttlout3 (rd_data_module_ttlout3),
  180. .rd_data_module_ttlout4 (rd_data_module_ttlout4),
  181. .rd_data_module_timecode_out (rd_data_module_timecode_out),
  182. .rd_data_module_genlock_out (rd_data_module_genlock_out),
  183. .rd_data_module_camera_sync_out (rd_data_module_camera_sync_out),
  184. .rd_data_module_sys_timecode (rd_data_module_sys_timecode),
  185. .rd_data_module_sys_genlock (rd_data_module_sys_genlock),
  186. .rd_data_module_sys_clock (rd_data_module_sys_clock),
  187. .rd_data_module_record_sig_generator (rd_data_module_record_sig_generator),
  188. .rd_data_module_sys_signal_delayer (rd_data_module_sys_signal_delayer)
  189. );
  190. zutils_register16 #(
  191. .REG_START_ADD(`REGADDOFF__FPGA_INFO),
  192. .REG0_INIT(`VERSION),
  193. .REG1_INIT(0),
  194. .REG2_INIT(0),
  195. .REG3_INIT(0),
  196. .REG4_INIT(0),
  197. .REG5_INIT(0),
  198. .REG6_INIT(0),
  199. .REG7_INIT(0),
  200. .REG8_INIT(0),
  201. .REG9_INIT(0),
  202. .REGA_INIT(0),
  203. .REGB_INIT(0),
  204. .REGC_INIT(0),
  205. .REGD_INIT(0),
  206. .REGE_INIT(0),
  207. .REGF_INIT(0)
  208. ) test_reg (
  209. .clk (sys_clk),
  210. .rst_n (sys_rst_n),
  211. .addr (RegReaderBus_addr),
  212. .wr_data(RegReaderBus_wr_data),
  213. .wr_en (RegReaderBus_wr_en),
  214. .rd_data(rd_data_module_fpga_info)
  215. );
  216. /***********************************************************************************************************************
  217. * 呼吸灯输出结束 *
  218. ***********************************************************************************************************************/
  219. assign debug_signal_output[0] = sys_clk;
  220. assign debug_signal_output[1] = spi1_cs_pin;
  221. assign debug_signal_output[2] = spi1_clk_pin;
  222. assign debug_signal_output[3] = spi1_cs_pin;
  223. assign debug_signal_output[4] = spi1_tx_pin;
  224. /*
  225. wire [15:0] sys_sig_delay_in;
  226. wire [15:0] sys_sig_delay_out;
  227. wire before_delay__sync_ttl_out1;
  228. wire before_delay__sync_ttl_out2;
  229. wire before_delay__sync_ttl_out3;
  230. wire before_delay__sync_ttl_out4;
  231. wire before_delay__stm32if_start_signal_out;
  232. wire before_delay__stm32if_camera_sync_out;
  233. wire before_delay__stm32if_timecode_sync_out;
  234. wire af_delay__sync_ttl_in1;
  235. wire af_delay__sync_ttl_in2;
  236. wire af_delay__sync_ttl_in3;
  237. wire af_delay__sync_ttl_in4;
  238. wire af_delay__timecode_headphone_in;
  239. wire af_delay__timecode_bnc_in;
  240. wire af_delay__genlock_in_hsync;
  241. wire af_delay__genlock_in_vsync;
  242. wire af_delay__genlock_in_fsync;
  243. assign sys_sig_delay_in[0] = sync_ttl_in1; //
  244. assign sys_sig_delay_in[1] = sync_ttl_in2; //
  245. assign sys_sig_delay_in[2] = sync_ttl_in3; //
  246. assign sys_sig_delay_in[3] = !sync_ttl_in4; //
  247. assign sys_sig_delay_in[4] = timecode_headphone_in; //
  248. assign sys_sig_delay_in[5] = timecode_bnc_in; //
  249. assign sys_sig_delay_in[7] = genlock_in_vsync; //
  250. assign sys_sig_delay_in[6] = genlock_in_hsync; //
  251. assign sys_sig_delay_in[8] = genlock_in_fsync; //
  252. assign sys_sig_delay_in[9] = before_delay__sync_ttl_out1; //
  253. assign sys_sig_delay_in[10] = before_delay__sync_ttl_out2; //
  254. assign sys_sig_delay_in[11] = before_delay__sync_ttl_out3; //
  255. assign sys_sig_delay_in[12] = before_delay__sync_ttl_out4; //
  256. assign sys_sig_delay_in[13] = before_delay__stm32if_start_signal_out; //
  257. assign sys_sig_delay_in[14] = before_delay__stm32if_camera_sync_out; //
  258. assign sys_sig_delay_in[15] = before_delay__stm32if_timecode_sync_out; //
  259. assign af_delay__sync_ttl_in1 = sys_sig_delay_out[0];
  260. assign af_delay__sync_ttl_in2 = sys_sig_delay_out[1];
  261. assign af_delay__sync_ttl_in3 = sys_sig_delay_out[2];
  262. assign af_delay__sync_ttl_in4 = sys_sig_delay_out[3];
  263. assign af_delay__timecode_headphone_in = sys_sig_delay_out[4];
  264. assign af_delay__timecode_bnc_in = sys_sig_delay_out[5];
  265. assign af_delay__genlock_in_vsync = sys_sig_delay_out[7];
  266. assign af_delay__genlock_in_hsync = sys_sig_delay_out[6];
  267. assign af_delay__genlock_in_fsync = sys_sig_delay_out[8];
  268. assign sync_ttl_out1 = sys_sig_delay_out[9];
  269. assign sync_ttl_out2 = sys_sig_delay_out[10];
  270. assign sync_ttl_out3 = sys_sig_delay_out[11];
  271. assign sync_ttl_out4 = sys_sig_delay_out[12];
  272. assign stm32if_start_signal_out = sys_sig_delay_out[13];
  273. assign stm32if_camera_sync_out = sys_sig_delay_out[14];
  274. assign stm32if_timecode_sync_out = sys_sig_delay_out[15];
  275. sys_signal_delayer #(
  276. .REG_START_ADD (`REGADDOFF__DELAYER),
  277. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  278. .SIG_BUS_WIDTH(15)
  279. ) sys_signal_delayer_ins (
  280. .clk (sys_clk),
  281. .rst_n(sys_rst_n),
  282. .addr (RegReaderBus_addr),
  283. .wr_data(RegReaderBus_wr_data),
  284. .wr_en (RegReaderBus_wr_en),
  285. .rd_data(rd_data_module_sys_signal_delayer),
  286. .sig_in (sys_sig_delay_in),
  287. .sig_out(sys_sig_delay_out)
  288. );
  289. internal_sig_generator_en_contrler #(
  290. .REG_START_ADD (`REGADDOFF__INTERNAL_SIG_EN_CONTRLER),
  291. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  292. ) internal_sig_generator_en_contrler0 (
  293. .clk (sys_clk),
  294. .rst_n(sys_rst_n),
  295. .addr (RegReaderBus_addr),
  296. .wr_data(RegReaderBus_wr_data),
  297. .wr_en (RegReaderBus_wr_en),
  298. .rd_data(rd_data_module_internal_sig_en_contrler),
  299. .en0(en0),
  300. .en1(en1),
  301. .en2(en2)
  302. );
  303. internal_timecode_generator #(
  304. .REG_START_ADD(`REGADDOFF__INTERNAL_TIMECODE),
  305. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  306. .ID(1)
  307. ) internal_timecode_generator0 (
  308. .clk (sys_clk),
  309. .rst_n(sys_rst_n),
  310. .addr (RegReaderBus_addr),
  311. .wr_data(RegReaderBus_wr_data),
  312. .wr_en (RegReaderBus_wr_en),
  313. .rd_data(rd_data_module_internal_timecode),
  314. .en(en0),
  315. .timecode_tigger_sig (internal_timecode_tigger_sig),
  316. .timecode_format (internal_timecode_format),
  317. .timecode_data (internal_timecode_data),
  318. .timecode_serial_data(internal_timecode_serial_data)
  319. );
  320. sys_timecode #(
  321. .REG_START_ADD (`REGADDOFF__SYS_TIMECODE),
  322. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  323. ) sys_timecode_ins (
  324. .clk (sys_clk),
  325. .rst_n(sys_rst_n),
  326. .addr (RegReaderBus_addr),
  327. .wr_data(RegReaderBus_wr_data),
  328. .wr_en (RegReaderBus_wr_en),
  329. .rd_data(rd_data_module_sys_timecode),
  330. .internal_timecode_tigger_sig (internal_timecode_tigger_sig),
  331. .internal_timecode_format (internal_timecode_format),
  332. .internal_timecode_data (internal_timecode_data),
  333. .internal_timecode_serial_data(internal_timecode_serial_data),
  334. .external_timecode_tigger_sig (ext_timecode_tigger_sig),
  335. .external_timecode_format (ext_timecode_format),
  336. .external_timecode_data (ext_timecode_data),
  337. .external_timecode_serial_data(ext_timecode_serial_data),
  338. .sys_timecode_tigger_sig (sys_timecode_tigger_sig),
  339. .sys_timecode_format (sys_timecode_format),
  340. .sys_timecode_data (sys_timecode_data),
  341. .sys_timecode_serial_data(sys_timecode_serial_data)
  342. );
  343. timecode_input_parser #(
  344. .REG_START_ADD (`REGADDOFF__TIMECODE_IN),
  345. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  346. ) timecode_input_ins (
  347. .clk (sys_clk),
  348. .rst_n(sys_rst_n),
  349. .addr (RegReaderBus_addr),
  350. .wr_data(RegReaderBus_wr_data),
  351. .wr_en (RegReaderBus_wr_en),
  352. .rd_data(rd_data_module_timecode_in),
  353. //input
  354. .timecode_bnc_in (af_delay__timecode_bnc_in),
  355. .timecode_headphone_in(af_delay__timecode_headphone_in),
  356. //output
  357. .timecode_tigger_sig (ext_timecode_tigger_sig),
  358. .timecode_format (ext_timecode_format), //[31:0]
  359. .timecode_data (ext_timecode_data), //[63:0]
  360. .timecode_serial_data (ext_timecode_serial_data),
  361. .timecode_is_detected (timecode_is_detected),
  362. .timecode_headphone_in_state_led(timecode_headphone_in_state_led),
  363. .timecode_bnc_in_state_led (timecode_bnc_in_state_led)
  364. );
  365. timecode_output #(
  366. .REG_START_ADD (`REGADDOFF__TIMECODE_OUT),
  367. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  368. ) timecode_output_inst (
  369. .clk (sys_clk),
  370. .rst_n(sys_rst_n),
  371. .addr (RegReaderBus_addr),
  372. .wr_data(RegReaderBus_wr_data),
  373. .wr_en (RegReaderBus_wr_en),
  374. .rd_data(rd_data_module_timecode_out),
  375. .in_timecode_tigger_sig (sys_timecode_tigger_sig),
  376. .in_timecode_format (sys_timecode_format),
  377. .in_timecode_data (sys_timecode_data),
  378. .in_timecode_serial_data(sys_timecode_serial_data),
  379. .timecode_out_bnc (timecode_out_bnc),
  380. .timecode_out_bnc_select (timecode_out_bnc_select),
  381. .timecode_out_bnc_state_led(timecode_out_bnc_state_led),
  382. .timecode_out_headphone (timecode_out_headphone),
  383. .timecode_out_headphone_select (timecode_out_headphone_select),
  384. .timecode_out_headphone_state_led(timecode_out_headphone_state_led)
  385. );
  386. genlock_input_module #(
  387. .REG_START_ADD (`REGADDOFF__GENLOCK_IN),
  388. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  389. ) genlock_input (
  390. .clk (sys_clk),
  391. .rst_n(sys_rst_n),
  392. .addr (RegReaderBus_addr),
  393. .wr_data(RegReaderBus_wr_data),
  394. .wr_en (RegReaderBus_wr_en),
  395. .rd_data(rd_data_module_genlock_in),
  396. .genlock_in_hsync(af_delay__genlock_in_hsync),
  397. .genlock_in_vsync(af_delay__genlock_in_vsync),
  398. .genlock_in_fsync(af_delay__genlock_in_fsync),
  399. .genlock_freq_signal (signal_ext_genlock_freq),
  400. .genlock_in_state_led(genlock_in_state_led)
  401. );
  402. internal_genlock_generator #(
  403. .REG_START_ADD (`REGADDOFF__INTERNAL_GENLOCK),
  404. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  405. ) internal_genlock_generator0 (
  406. .clk (sys_clk),
  407. .rst_n(sys_rst_n),
  408. .addr (RegReaderBus_addr),
  409. .wr_data(RegReaderBus_wr_data),
  410. .wr_en (RegReaderBus_wr_en),
  411. .rd_data(rd_data_module_internal_genlock),
  412. .en(en1),
  413. .genlock_freq_signal(signal_internal_genlock_freq)
  414. );
  415. sys_genlock #(
  416. .REG_START_ADD (`REGADDOFF__SYS_GENLOCK),
  417. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  418. ) sys_genlock0 (
  419. .clk (sys_clk),
  420. .rst_n(sys_rst_n),
  421. .addr (RegReaderBus_addr),
  422. .wr_data(RegReaderBus_wr_data),
  423. .wr_en (RegReaderBus_wr_en),
  424. .rd_data(rd_data_module_sys_genlock),
  425. .internal_genlock_sig(signal_internal_genlock_freq),
  426. .external_genlock_sig(signal_ext_genlock_freq),
  427. .sys_genlock_tigger_sig(signal_sys_genlock_output)
  428. );
  429. internal_clock_generator #(
  430. .REG_START_ADD (`REGADDOFF__INTERNAL_CLOCK),
  431. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  432. ) internal_clock_generator0 (
  433. .clk (sys_clk),
  434. .rst_n(sys_rst_n),
  435. .addr (RegReaderBus_addr),
  436. .wr_data(RegReaderBus_wr_data),
  437. .wr_en (RegReaderBus_wr_en),
  438. .rd_data(rd_data_module_internal_clock),
  439. .en(en2),
  440. .clk_output(signal_internal_clk_sig)
  441. );
  442. ttl_input #(
  443. .REG_START_ADD (`REGADDOFF__TTLIN),
  444. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  445. ) ttl_inputr_ins (
  446. .clk (sys_clk),
  447. .rst_n(sys_rst_n),
  448. .addr (RegReaderBus_addr),
  449. .wr_data(RegReaderBus_wr_data),
  450. .wr_en (RegReaderBus_wr_en),
  451. .rd_data(rd_data_module_ttlin),
  452. .ttlin1_raw(af_delay__sync_ttl_in1),
  453. .ttlin2_raw(af_delay__sync_ttl_in2),
  454. .ttlin3_raw(af_delay__sync_ttl_in3),
  455. .ttlin4_raw(!af_delay__sync_ttl_in4), //in4电路上进行了反向
  456. //指示灯
  457. .ttlin1_state_led(sync_ttl_in1_state_led),
  458. .ttlin2_state_led(sync_ttl_in2_state_led),
  459. .ttlin3_state_led(sync_ttl_in3_state_led),
  460. .ttlin4_state_led(sync_ttl_in4_state_led),
  461. //原始信号
  462. .sig_ttlin1(signal_ttlin1),
  463. .sig_ttlin2(signal_ttlin2),
  464. .sig_ttlin3(signal_ttlin3),
  465. .sig_ttlin4(signal_ttlin4)
  466. );
  467. sys_clock #(
  468. .REG_START_ADD (`REGADDOFF__SYS_CLOCK),
  469. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  470. ) sys_clock0 (
  471. .clk (sys_clk),
  472. .rst_n(sys_rst_n),
  473. .addr (RegReaderBus_addr),
  474. .wr_data(RegReaderBus_wr_data),
  475. .wr_en (RegReaderBus_wr_en),
  476. .rd_data(rd_data_module_sys_clock),
  477. .signal_in(sig_src),
  478. .sys_clock(signal_sys_clk_output)
  479. );
  480. camera_sync_signal_output #(
  481. .REG_START_ADD (`REGADDOFF__CAMERA_SYNC_OUT),
  482. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ)
  483. ) camera_sync_signal_output0 (
  484. .clk (sys_clk),
  485. .rst_n(sys_rst_n),
  486. .addr (RegReaderBus_addr),
  487. .wr_data(RegReaderBus_wr_data),
  488. .wr_en (RegReaderBus_wr_en),
  489. .rd_data(rd_data_module_camera_sync_out),
  490. .in_timecode_tigger_sig (sys_timecode_tigger_sig),
  491. .in_timecode_format (sys_timecode_format),
  492. .in_timecode_data (sys_timecode_data),
  493. .in_timecode_serial_data(sys_timecode_serial_data),
  494. .frame_sig (signal_sys_clk_output),
  495. .record_en_sig(signal_business_record_en_sig),
  496. .stm32if_camera_sync_out (before_delay__stm32if_camera_sync_out),
  497. .stm32if_record_state_change_sig(before_delay__stm32if_start_signal_out),
  498. .stm32if_timecode_tigger_sig (before_delay__stm32if_timecode_sync_out)
  499. );
  500. // /*
  501. ttl_output #(
  502. .REG_START_ADD(`REGADDOFF__TTLOUT1),
  503. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  504. .ID(1)
  505. ) ttl_output_1 (
  506. .clk (sys_clk),
  507. .rst_n(sys_rst_n),
  508. .addr (RegReaderBus_addr),
  509. .wr_data(RegReaderBus_wr_data),
  510. .wr_en (RegReaderBus_wr_en),
  511. .rd_data(rd_data_module_ttlout1),
  512. .signal_in(sig_src),
  513. .ttloutput (before_delay__sync_ttl_out1),
  514. .ttloutput_state_led(sync_ttl_out1_state_led)
  515. );
  516. ttl_output #(
  517. .REG_START_ADD(`REGADDOFF__TTLOUT2),
  518. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  519. .ID(2)
  520. ) ttl_output_2 (
  521. .clk (sys_clk),
  522. .rst_n(sys_rst_n),
  523. .addr (RegReaderBus_addr),
  524. .wr_data(RegReaderBus_wr_data),
  525. .wr_en (RegReaderBus_wr_en),
  526. .rd_data(rd_data_module_ttlout2),
  527. .signal_in(sig_src),
  528. .ttloutput (before_delay__sync_ttl_out2),
  529. .ttloutput_state_led(sync_ttl_out2_state_led)
  530. );
  531. ttl_output #(
  532. .REG_START_ADD(`REGADDOFF__TTLOUT3),
  533. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  534. .ID(3)
  535. ) ttl_output_3 (
  536. .clk (sys_clk),
  537. .rst_n(sys_rst_n),
  538. .addr (RegReaderBus_addr),
  539. .wr_data(RegReaderBus_wr_data),
  540. .wr_en (RegReaderBus_wr_en),
  541. .rd_data(rd_data_module_ttlout3),
  542. .signal_in(sig_src),
  543. .ttloutput (before_delay__sync_ttl_out3),
  544. .ttloutput_state_led(sync_ttl_out3_state_led)
  545. );
  546. ttl_output #(
  547. .REG_START_ADD(`REGADDOFF__TTLOUT4),
  548. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  549. .ID(4)
  550. ) ttl_output_4 (
  551. .clk (sys_clk),
  552. .rst_n(sys_rst_n),
  553. .addr (RegReaderBus_addr),
  554. .wr_data(RegReaderBus_wr_data),
  555. .wr_en (RegReaderBus_wr_en),
  556. .rd_data(rd_data_module_ttlout4),
  557. .signal_in(sig_src),
  558. .ttloutput (before_delay__sync_ttl_out4),
  559. .ttloutput_state_led(sync_ttl_out4_state_led)
  560. );
  561. record_sig_generator #(
  562. .REG_START_ADD(`REGADDOFF__RECORD_SIG_GENERATOR),
  563. .SYS_CLOCK_FREQ(SYS_CLOCK_FREQ),
  564. .TEST(0)
  565. ) record_sig_generator0 (
  566. .clk (sys_clk),
  567. .rst_n(sys_rst_n),
  568. .addr (RegReaderBus_addr),
  569. .wr_data(RegReaderBus_wr_data),
  570. .wr_en (RegReaderBus_wr_en),
  571. .rd_data(rd_data_module_record_sig_generator),
  572. .ttlin1_sig(signal_ttlin1),
  573. .ttlin2_sig(signal_ttlin2),
  574. .ttlin3_sig(signal_ttlin3),
  575. .ttlin4_sig(signal_ttlin4),
  576. .frame_freq_sig(signal_sys_clk_output),
  577. .out_record_en_rsing_edge_sig (signal_business_record_en_rsing_edge_sig),
  578. .out_record_en_falling_edge_sig(signal_business_record_en_falling_edge_sig),
  579. .out_record_en_edge_sig (signal_business_record_en_edge_sig),
  580. .sys_timecode_tigger_sig(sys_timecode_tigger_sig),
  581. .sys_timecode_data (sys_timecode_data),
  582. .out_record_en_sig (signal_business_record_en_sig),
  583. .out_record_exposure_sig(signal_business_record_exposure_sig)
  584. );
  585. */
  586. /*
  587. assign debug_signal_output[0] = sys_clk;
  588. assign debug_signal_output[1] = af_delay__sync_ttl_in3;
  589. assign debug_signal_output[2] = af_delay__sync_ttl_in2;
  590. assign debug_signal_output[3] = genlock_in_vsync;
  591. assign debug_signal_output[4] = af_delay__genlock_in_vsync;
  592. assign debug_signal_output[5] = !timecode_headphone_in | !timecode_bnc_in;
  593. assign debug_signal_output[6] = !af_delay__timecode_headphone_in | !af_delay__timecode_bnc_in;
  594. assign debug_signal_output[7] = sync_ttl_out1;
  595. assign debug_signal_output[8] = sync_ttl_out2;
  596. assign debug_signal_output[9] = sync_ttl_out3;
  597. assign debug_signal_output[10] = sync_ttl_out4;
  598. assign debug_signal_output[11] = sync_ttl_in1;
  599. assign debug_signal_output[12] = sync_ttl_in2;
  600. assign debug_signal_output[13] = sync_ttl_in3;
  601. assign debug_signal_output[15] = !sync_ttl_in4;
  602. */
  603. endmodule