Files
eb001/src/main/resources/FPGATop_MP.v
2025-08-05 17:11:09 +08:00

236 lines
5.5 KiB
Verilog

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2025/05/13 11:43:33
// Design Name:
// Module Name: FPGATop
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module FPGATop(
input clkin,
input resetIn,
input dDatIn_p,
input dDatIn_n,
output dDatOut_p,
output dDatOut_n,
input uDatIn_p,
input uDatIn_n,
output uDatOut_p,
output uDatOut_n,
input sck,
input mosi,
output miso,
input csn,
input io_iqspi_sck,
inout [3:0] io_iqspi_data,
input io_iqspi_csn,
output interrupt,
output [3:0] io_led
);
wire [15:0] multiCLK;
wire reset;
wire dDatIn;
wire dDatOut;
wire uDatIn;
wire uDatOut;
wire clkin_bufg;
BUFG BUFG_inst (
.O(clkin_bufg), // 1-bit output: Clock output
.I(clkin) // 1-bit input: Clock input
);
clk_wiz_0 i_clk_0
(
.clk_out1(multiCLK[0]),
.clk_out2(multiCLK[1]),
.clk_out3(multiCLK[2]),
.clk_out4(multiCLK[3]),
.clk_out5(multiCLK[4]),
.clk_in1(clkin_bufg)
);
clk_wiz_1 i_clk_1
(
.clk_out1(multiCLK[5]),
.clk_out2(multiCLK[6]),
.clk_out3(multiCLK[7]),
.clk_out4(multiCLK[8]),
.clk_out5(multiCLK[9]),
.clk_in1(clkin_bufg)
);
clk_wiz_2 i_clk_2
(
.clk_out1(multiCLK[10]),
.clk_out2(multiCLK[11]),
.clk_out3(multiCLK[12]),
.clk_out4(multiCLK[13]),
.clk_out5(multiCLK[14]),
.clk_out6(multiCLK[15]),
.clk_in1(clkin_bufg)
);
// proc_sys_reset_0 i_proc_sys_reset(
// .slowest_sync_clk(clk50M),
// .ext_reset_in(resetIn),
// .aux_reset_in(1'b0),
// .mb_debug_sys_rst(1'b0),
// .dcm_locked(1'b1),
// .mb_reset(),
// .bus_struct_reset(),
// .peripheral_reset(reset),
// .interconnect_aresetn(),
// .peripheral_aresetn()
// );
assign reset = resetIn;
wire [3:0] iqspi_mosi;
wire [3:0] iqspi_miso;
wire iqspi_isDirIn;
wire isSoftReset;
wire [7:0] led;
ShinTop i_ShinTop(
.clock(multiCLK[0]),
.reset(reset | isSoftReset),
.io_dDatIn(dDatIn),
.io_dDatOut(dDatOut),
.io_uDatIn(uDatIn),
.io_uDatOut(uDatOut),
.io_multiCLK_0(multiCLK[0]),
.io_multiCLK_1(multiCLK[1]),
.io_multiCLK_2(multiCLK[2]),
.io_multiCLK_3(multiCLK[3]),
.io_multiCLK_4(multiCLK[4]),
.io_multiCLK_5(multiCLK[5]),
.io_multiCLK_6(multiCLK[6]),
.io_multiCLK_7(multiCLK[7]),
.io_multiCLK_8(multiCLK[8]),
.io_multiCLK_9(multiCLK[9]),
.io_multiCLK_10(multiCLK[10]),
.io_multiCLK_11(multiCLK[11]),
.io_multiCLK_12(multiCLK[12]),
.io_multiCLK_13(multiCLK[13]),
.io_multiCLK_14(multiCLK[14]),
.io_multiCLK_15(multiCLK[15]),
.io_iqspi_sck(io_iqspi_sck),
.io_iqspi_mosi(iqspi_mosi),
.io_iqspi_miso(iqspi_miso),
.io_iqspi_isDirIn(iqspi_isDirIn),
.io_iqspi_csn(io_iqspi_csn),
.io_ospi_sck(sck),
.io_ospi_mosi(mosi),
.io_ospi_miso(miso),
.io_ospi_csn(csn),
.io_oqspi_sck(1'b0),
.io_oqspi_mosi(4'b0),
.io_oqspi_miso(),
.io_oqspi_isDirIn(),
.io_oqspi_csn(1'b1),
.io_iSync_0(),
.io_iSync_1(),
.io_iSync_2(),
.io_iSync_3(),
.io_oSync_0(),
.io_oSync_1(),
.io_oSync_2(),
.io_oSync_3(),
.io_isSoftReset(isSoftReset),
.io_ledTest(led),
.io_interrupt(interrupt),
.io_latchPin_0(1'b0),
.io_latchPin_1(1'b0)
);
assign io_led = led[5:2];
IOBUF QSPI_D0_inst (
.O(iqspi_mosi[0]), // Buffer output
.IO(io_iqspi_data[0]), // Buffer inout port (connect directly to top-level port)
.I(iqspi_miso[0]), // Buffer input
.T(iqspi_isDirIn) // 3-state enable input, high=input, low=output
);
IOBUF QSPI_D1_inst (
.O(iqspi_mosi[1]), // Buffer output
.IO(io_iqspi_data[1]), // Buffer inout port (connect directly to top-level port)
.I(iqspi_miso[1]), // Buffer input
.T(iqspi_isDirIn) // 3-state enable input, high=input, low=output
);
IOBUF QSPI_D2_inst (
.O(iqspi_mosi[2]), // Buffer output
.IO(io_iqspi_data[2]), // Buffer inout port (connect directly to top-level port)
.I(iqspi_miso[2]), // Buffer input
.T(iqspi_isDirIn) // 3-state enable input, high=input, low=output
);
IOBUF QSPI_D3_inst (
.O(iqspi_mosi[3]), // Buffer output
.IO(io_iqspi_data[3]), // Buffer inout port (connect directly to top-level port)
.I(iqspi_miso[3]), // Buffer input
.T(iqspi_isDirIn) // 3-state enable input, high=input, low=output
);
IBUFDS i_dDatIn (
.O(dDatIn), // Buffer output
.I(dDatIn_p), // Diff_p buffer input (connect directly to top-level port)
.IB(dDatIn_n) // Diff_n buffer input (connect directly to top-level port)
);
IBUFDS i_uDatIn (
.O(uDatIn), // Buffer output
.I(uDatIn_p), // Diff_p buffer input (connect directly to top-level port)
.IB(uDatIn_n) // Diff_n buffer input (connect directly to top-level port)
);
OBUFDS i_dDatOut (
.O(dDatOut_p), // Diff_p output (connect directly to top-level port)
.OB(dDatOut_n), // Diff_n output (connect directly to top-level port)
.I(dDatOut) // Buffer input
);
OBUFDS i_uDatOut (
.O(uDatOut_p), // Diff_p output (connect directly to top-level port)
.OB(uDatOut_n), // Diff_n output (connect directly to top-level port)
.I(uDatOut) // Buffer input
);
endmodule