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.
 
 
 

304 lines
9.9 KiB

`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