`include "config.v" `timescale 1ns / 1ns module Top ( input sys_clk, input rst_n, /******************************************************************************* * genlock * *******************************************************************************/ input genlock_in_hsync, input genlock_in_vsync, input genlock_in_fsync, output genlock_state_led, /******************************************************************************* * GENLOCK_OUTPUT * *******************************************************************************/ output [12:0] genlock_out_dac, output genlock_out_dac_state_led, /******************************************************************************* * TTL_IN * *******************************************************************************/ input sync_ttl_in1, output sync_ttl_state_led1, input sync_ttl_in2, output sync_ttl_state_led2, input sync_ttl_in3, output sync_ttl_state_led3, input sync_ttl_in4, output sync_ttl_state_led4, /******************************************************************************* * TTL_OUT * *******************************************************************************/ output sync_ttl_out1, output sync_ttl_out1_state_led, output sync_ttl_out2, output sync_ttl_out2_state_led, output sync_ttl_out3, output sync_ttl_out3_state_led, output sync_ttl_out4, output sync_ttl_out4_state_led, /******************************************************************************* * TIMECODE_IN * *******************************************************************************/ input timecode_headphone_in, input timecode_headphone_in_state_led, input timecode_bnc_in, input timecode_bnc_in_state_led, /******************************************************************************* * TIMECODE_OUTPUT * *******************************************************************************/ output timecode_bnc_out, output timecode_bnc_output_select, output timecode_bnc_out_state_led, output timecode_headphone_out, output timecode_headphone_output_select, output timecode_headphone_out_state_led, /******************************************************************************* * STM32_IF * *******************************************************************************/ output stm32if_camera_sync_out, output stm32if_timecode_sync_out, output stm32if_start_signal_out, output [3:0] stm32if_timecode_add, output [3:0] stm32if_timecode_data, //SPI 串行总线1 input wire spi1_cs_pin, input wire spi1_clk_pin, input wire spi1_rx_pin, output wire spi1_tx_pin, //SPI 串行总线2 input wire spi2_cs_pin, input wire spi2_clk_pin, input wire spi2_rx_pin, output wire spi2_tx_pin, /******************************************************************************* * debug_signal_output * *******************************************************************************/ output [15:0] debug_signal_output, /******************************************************************************* * CODE_BOARD * *******************************************************************************/ output wire core_board_debug_led ); localparam HARDWARE_TEST_MODE = 1; SPLL spll ( .clkin1(sys_clk), // input .pll_lock(pll_lock), // output .clkout0(sys_clk_25m), // output .clkout1(sys_clk_10m), // output .clkout2(sys_clk_5m) // output ); /******************************************************************************* * 调试器 * *******************************************************************************/ // wire [6:0] trig0_i; // JtagHubIst jtag_hub_ist ( // .resetn_i(rst_n), // input // .drck_o (drck_o), // output // .hub_tdi (hub_tdi), // output // .capt_o (capt_o), // output // .shift_o (shift_o), // output // .conf_sel(conf_sel), // output [14:0] // .id_o (id_o), // output [4:0] // .hub_tdo (hub_tdo) // input [14:0] // ); // DebugCoreIst debug_core_ist ( // .hub_tdi (hub_tdi), // input // .hub_tdo (hub_tdo[0]), // output // .id_i (id_o), // input [4:0] // .capt_i (capt_o), // input // .shift_i (shift_o), // input // .conf_sel(conf_sel[0]), // input // .drck_in (drck_o), // input // .clk (sys_clk), // input // .resetn_i(rst_n), // input // .trig0_i (trig0_i) // ); /******************************************************************************* * DEBUG_LED * *******************************************************************************/ zutils_debug_led #( .PERIOD_COUNT(10000000) ) core_board_debug_led_inst ( .clk(sys_clk), .rst_n(rst_n), .debug_led(core_board_debug_led) ); /******************************************************************************* * SPIREADER * *******************************************************************************/ wire [31:0] reg_reader_bus_addr; wire [31:0] reg_reader_bus_wr_data; wire reg_reader_bus_wr_en; wire [31:0] reg_reader_bus_rd_data; spi_reg_reader spi1_reg_reader_inst ( .clk (sys_clk), .rst_n(rst_n), .addr(reg_reader_bus_addr), .wr_data(reg_reader_bus_wr_data), .wr_en(reg_reader_bus_wr_en), .rd_data(reg_reader_bus_rd_data), // .spi_cs_pin(spi1_cs_pin), .spi_clk_pin(spi1_clk_pin), .spi_rx_pin(spi1_rx_pin), .spi_tx_pin(spi1_tx_pin) ); rd_data_router rd_data_router_inst ( .addr(reg_reader_bus_addr), .stm32_rd_data(0), .fpga_test_rd_data(fpga_test_rd_data), .control_sensor_rd_data(control_sensor_rd_data), .ttlin1_rd_data(ttlin1_rd_data), .ttlin2_rd_data(ttlin2_rd_data), .ttlin3_rd_data(ttlin3_rd_data), .ttlin4_rd_data(ttlin4_rd_data), .timecode_in_rd_data(timecode_in_rd_data), .genlock_in_rd_data(genlock_in_rd_data), .ttlout1_rd_data(ttlout1_rd_data), // ok .ttlout2_rd_data(ttlout2_rd_data), // ok .ttlout3_rd_data(ttlout3_rd_data), // ok .ttlout4_rd_data(ttlout4_rd_data), // ok .timecode_out_rd_data(timecode_out_rd_data), .genlock_out_rd_data(genlock_out_rd_data), .stm32_if_rd_data(stm32_if_rd_data), .debuger_rd_data(debuger_rd_data), .rd_data_out(reg_reader_bus_rd_data) ); /******************************************************************************* * TEST_SPI_REG * *******************************************************************************/ zutils_register16 #( .REG_START_ADD(`REG_ADD_OFF_FPGA_TEST) ) core_board_debug_led_reg ( .clk(sys_clk), .rst_n(rst_n), .addr(reg_reader_bus_addr), .wr_data(reg_reader_bus_wr_data), .wr_en(reg_reader_bus_wr_en), .rd_data(fpga_test_rd_data) ); /******************************************************************************* * 输出组件 * *******************************************************************************/ wire [7:0] ttl_output_signal_in; ttl_output #( .REG_START_ADD(`REG_ADD_OFF_TTLIN1), .TEST(HARDWARE_TEST_MODE) ) ttl_output_1 ( .clk (sys_clk), .rst_n(rst_n), .addr(reg_reader_bus_addr), .wr_data(reg_reader_bus_wr_data), .wr_en(reg_reader_bus_wr_en), .rd_data(ttlout1_rd_data), .signal_in(ttl_output_signal_in), .ttloutput(sync_ttl_out1), .ttloutput_state_led(sync_ttl_out1_state_led) ); ttl_output #( .REG_START_ADD(`REG_ADD_OFF_TTLIN2), .TEST(HARDWARE_TEST_MODE) ) ttl_output_2 ( .clk (sys_clk), .rst_n(rst_n), .addr(reg_reader_bus_addr), .wr_data(reg_reader_bus_wr_data), .wr_en(reg_reader_bus_wr_en), .rd_data(ttlout2_rd_data), .signal_in(ttl_output_signal_in), .ttloutput(sync_ttl_out2), .ttloutput_state_led(sync_ttl_out2_state_led) ); ttl_output #( .REG_START_ADD(`REG_ADD_OFF_TTLIN3), .TEST(HARDWARE_TEST_MODE) ) ttl_output_3 ( .clk (sys_clk), .rst_n(rst_n), .addr(reg_reader_bus_addr), .wr_data(reg_reader_bus_wr_data), .wr_en(reg_reader_bus_wr_en), .rd_data(ttlout3_rd_data), .signal_in(ttl_output_signal_in), .ttloutput(sync_ttl_out3), .ttloutput_state_led(sync_ttl_out3_state_led) ); ttl_output #( .REG_START_ADD(`REG_ADD_OFF_TTLIN4), .TEST(HARDWARE_TEST_MODE) ) ttl_output_4 ( .clk (sys_clk), .rst_n(rst_n), .addr(reg_reader_bus_addr), .wr_data(reg_reader_bus_wr_data), .wr_en(reg_reader_bus_wr_en), .rd_data(ttlout4_rd_data), .signal_in(ttl_output_signal_in), .ttloutput(sync_ttl_out4), .ttloutput_state_led(sync_ttl_out4_state_led) ); endmodule