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.

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