e81edcb99bd2e861b1f399a10c1433a09d3da362
[freedom-sifive.git] / fpga / u500vc707devkit / src / system.v
1 // See LICENSE for license details.
2 `timescale 1ns/1ps
3 `default_nettype none
4
5 `define STRINGIFY(x) `"x`"
6 `include `STRINGIFY(`VSRC_CONSTS)
7
8 module system
9 (
10 //200Mhz differential sysclk
11 input wire sys_diff_clock_clk_n,
12 input wire sys_diff_clock_clk_p,
13 //active high reset
14 input wire reset,
15 // DDR3 SDRAM
16 output wire [13:0] ddr3_addr,
17 output wire [2:0] ddr3_ba,
18 output wire ddr3_cas_n,
19 output wire [0:0] ddr3_ck_n,
20 output wire [0:0] ddr3_ck_p,
21 output wire [0:0] ddr3_cke,
22 output wire [0:0] ddr3_cs_n,
23 output wire [7:0] ddr3_dm,
24 inout wire [63:0] ddr3_dq,
25 inout wire [7:0] ddr3_dqs_n,
26 inout wire [7:0] ddr3_dqs_p,
27 output wire [0:0] ddr3_odt,
28 output wire ddr3_ras_n,
29 output wire ddr3_reset_n,
30 output wire ddr3_we_n,
31 // LED
32 output wire [7:0] led,
33 //UART
34 output wire uart_tx,
35 input wire uart_rx,
36 output wire uart_rtsn,
37 input wire uart_ctsn,
38 //SDIO
39 output wire sdio_clk,
40 inout wire sdio_cmd,
41 inout wire [3:0] sdio_dat,
42 //JTAG
43 input wire jtag_TCK,
44 input wire jtag_TMS,
45 input wire jtag_TDI,
46 output wire jtag_TDO,
47 //PCIe
48 output wire [0:0] pci_exp_txp,
49 output wire [0:0] pci_exp_txn,
50 input wire [0:0] pci_exp_rxp,
51 input wire [0:0] pci_exp_rxn,
52 input wire pci_exp_refclk_rxp,
53 input wire pci_exp_refclk_rxn
54 );
55
56 reg [1:0] uart_rx_sync;
57 wire [3:0] sd_spi_dq_i;
58 wire [3:0] sd_spi_dq_o;
59 wire sd_spi_sck;
60 wire sd_spi_cs;
61 wire top_clock,top_reset;
62
63 U500VC707DevKitTop top
64 (
65 //UART
66 .io_uarts_0_rxd(uart_rx_sync[1]),
67 .io_uarts_0_txd(uart_tx),
68 //SPI
69 .io_spis_0_sck(sd_spi_sck),
70 .io_spis_0_dq_0_i(sd_spi_dq_i[0]),
71 .io_spis_0_dq_1_i(sd_spi_dq_i[1]),
72 .io_spis_0_dq_2_i(sd_spi_dq_i[2]),
73 .io_spis_0_dq_3_i(sd_spi_dq_i[3]),
74 .io_spis_0_dq_0_o(sd_spi_dq_o[0]),
75 .io_spis_0_dq_1_o(sd_spi_dq_o[1]),
76 .io_spis_0_dq_2_o(sd_spi_dq_o[2]),
77 .io_spis_0_dq_3_o(sd_spi_dq_o[3]),
78 .io_spis_0_dq_0_oe(),
79 .io_spis_0_dq_1_oe(),
80 .io_spis_0_dq_2_oe(),
81 .io_spis_0_dq_3_oe(),
82 .io_spis_0_cs_0(sd_spi_cs),
83 //GPIO
84 .io_gpio_pins_0_i_ival(1'b0),
85 .io_gpio_pins_1_i_ival(1'b0),
86 .io_gpio_pins_2_i_ival(1'b0),
87 .io_gpio_pins_3_i_ival(1'b0),
88 .io_gpio_pins_0_o_oval(led[0]),
89 .io_gpio_pins_1_o_oval(led[1]),
90 .io_gpio_pins_2_o_oval(led[2]),
91 .io_gpio_pins_3_o_oval(led[3]),
92 .io_gpio_pins_0_o_oe(),
93 .io_gpio_pins_1_o_oe(),
94 .io_gpio_pins_2_o_oe(),
95 .io_gpio_pins_3_o_oe(),
96 .io_gpio_pins_0_o_pue(),
97 .io_gpio_pins_1_o_pue(),
98 .io_gpio_pins_2_o_pue(),
99 .io_gpio_pins_3_o_pue(),
100 .io_gpio_pins_0_o_ds(),
101 .io_gpio_pins_1_o_ds(),
102 .io_gpio_pins_2_o_ds(),
103 .io_gpio_pins_3_o_ds(),
104 //JTAG
105 .io_jtag_TRST(1'b0),
106 .io_jtag_TCK(jtag_TCK),
107 .io_jtag_TMS(jtag_TMS),
108 .io_jtag_TDI(jtag_TDI),
109 .io_jtag_DRV_TDO(),
110 .io_jtag_TDO(jtag_TDO),
111 //MIG
112 .io_xilinxvc707mig__inout_ddr3_dq(ddr3_dq),
113 .io_xilinxvc707mig__inout_ddr3_dqs_n(ddr3_dqs_n),
114 .io_xilinxvc707mig__inout_ddr3_dqs_p(ddr3_dqs_p),
115 .io_xilinxvc707mig_ddr3_addr(ddr3_addr),
116 .io_xilinxvc707mig_ddr3_ba(ddr3_ba),
117 .io_xilinxvc707mig_ddr3_ras_n(ddr3_ras_n),
118 .io_xilinxvc707mig_ddr3_cas_n(ddr3_cas_n),
119 .io_xilinxvc707mig_ddr3_we_n(ddr3_we_n),
120 .io_xilinxvc707mig_ddr3_reset_n(ddr3_reset_n),
121 .io_xilinxvc707mig_ddr3_ck_p(ddr3_ck_p),
122 .io_xilinxvc707mig_ddr3_ck_n(ddr3_ck_n),
123 .io_xilinxvc707mig_ddr3_cke(ddr3_cke),
124 .io_xilinxvc707mig_ddr3_cs_n(ddr3_cs_n),
125 .io_xilinxvc707mig_ddr3_dm(ddr3_dm),
126 .io_xilinxvc707mig_ddr3_odt(ddr3_odt),
127 //PCIe
128 .io_xilinxvc707pcie_pci_exp_txp(pci_exp_txp),
129 .io_xilinxvc707pcie_pci_exp_txn(pci_exp_txn),
130 .io_xilinxvc707pcie_pci_exp_rxp(pci_exp_rxp),
131 .io_xilinxvc707pcie_pci_exp_rxn(pci_exp_rxn),
132 //Clock + Reset
133 .io_pcie_refclk_p(pci_exp_refclk_rxp),
134 .io_pcie_refclk_n(pci_exp_refclk_rxn),
135 .io_sys_clk_p(sys_diff_clock_clk_p),
136 .io_sys_clk_n(sys_diff_clock_clk_n),
137 .io_sys_reset(reset),
138 //Misc outputs for system.v
139 .io_core_clock(top_clock),
140 .io_core_reset(top_reset)
141 );
142
143 sdio_spi_bridge ip_sdio_spi
144 (
145 .clk(top_clock),
146 .reset(top_reset),
147 .sd_cmd(sdio_cmd),
148 .sd_dat(sdio_dat),
149 .sd_sck(sdio_clk),
150 .spi_sck(sd_spi_sck),
151 .spi_dq_o(sd_spi_dq_o),
152 .spi_dq_i(sd_spi_dq_i),
153 .spi_cs(sd_spi_cs)
154 );
155
156 //UART
157 assign uart_rtsn =1'b0;
158 always @(posedge top_clock) begin
159 if (top_reset) begin
160 uart_rx_sync <= 2'b11;
161 end else begin
162 uart_rx_sync[0] <= uart_rx;
163 uart_rx_sync[1] <= uart_rx_sync[0];
164 end
165 end
166
167 assign led[7:4] = 4'b0000;
168
169 endmodule
170
171 `default_nettype wire