hw/top_earlgrey/rtl/top_earlgrey_nexysvideo.sv Cov: 100%
1: // Copyright lowRISC contributors.
2: // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3: // SPDX-License-Identifier: Apache-2.0
4:
5: module top_earlgrey_nexysvideo (
6: // Clock and Reset
7: input IO_CLK,
8: input IO_RST_N,
9: // JTAG interface
10: input IO_DPS0, // IO_JTCK, IO_SDCK
11: input IO_DPS3, // IO_JTMS, IO_SDCSB
12: input IO_DPS1, // IO_JTDI, IO_SDMOSI
13: input IO_DPS4, // IO_JTRST_N,
14: input IO_DPS5, // IO_JSRST_N,
15: output IO_DPS2, // IO_JTDO, IO_MISO
16: input IO_DPS6, // JTAG=0, SPI=1
17: input IO_DPS7, // BOOTSTRAP=1
18: // UART interface
19: input IO_URX,
20: output IO_UTX,
21: // GPIO x 16 interface
22: inout IO_GP0,
23: inout IO_GP1,
24: inout IO_GP2,
25: inout IO_GP3,
26: inout IO_GP4,
27: inout IO_GP5,
28: inout IO_GP6,
29: inout IO_GP7,
30: inout IO_GP8,
31: inout IO_GP9,
32: inout IO_GP10,
33: inout IO_GP11,
34: inout IO_GP12,
35: inout IO_GP13,
36: inout IO_GP14,
37: inout IO_GP15
38: );
39:
40: logic clk_sys, rst_sys_n;
41: logic [31:0] cio_gpio_p2d, cio_gpio_d2p, cio_gpio_en_d2p;
42: logic cio_uart_rx_p2d, cio_uart_tx_d2p, cio_uart_tx_en_d2p;
43: logic cio_spi_device_sck_p2d, cio_spi_device_csb_p2d, cio_spi_device_mosi_p2d,
44: cio_spi_device_miso_d2p, cio_spi_device_miso_en_d2p;
45: logic cio_jtag_tck_p2d, cio_jtag_tms_p2d, cio_jtag_tdi_p2d, cio_jtag_tdo_d2p;
46: logic cio_jtag_trst_n_p2d, cio_jtag_srst_n_p2d;
47:
48: // Top-level design
49: top_earlgrey #(
50: .IbexPipeLine(1)
51: ) top_earlgrey (
52: .clk_i (clk_sys),
53: .rst_ni (rst_sys_n),
54:
55: .jtag_tck_i (cio_jtag_tck_p2d),
56: .jtag_tms_i (cio_jtag_tms_p2d),
57: .jtag_trst_ni (cio_jtag_trst_n_p2d),
58: .jtag_td_i (cio_jtag_tdi_p2d),
59: .jtag_td_o (cio_jtag_tdo_d2p),
60:
61: .mio_in_i (cio_gpio_p2d),
62: .mio_out_o (cio_gpio_d2p),
63: .mio_oe_o (cio_gpio_en_d2p),
64:
65: .dio_uart_rx_i (cio_uart_rx_p2d),
66: .dio_uart_tx_o (cio_uart_tx_d2p),
67: .dio_uart_tx_en_o (cio_uart_tx_en_d2p),
68:
69: .dio_spi_device_sck_i (cio_spi_device_sck_p2d),
70: .dio_spi_device_csb_i (cio_spi_device_csb_p2d),
71: .dio_spi_device_mosi_i (cio_spi_device_mosi_p2d),
72: .dio_spi_device_miso_o (cio_spi_device_miso_d2p),
73: .dio_spi_device_miso_en_o (cio_spi_device_miso_en_d2p),
74:
75: .scanmode_i (1'b0) // 1 for Scan
76: );
77:
78: clkgen_xil7series clkgen (
79: .IO_CLK(IO_CLK),
80: .IO_RST_N(IO_RST_N & cio_jtag_srst_n_p2d),
81: .clk_sys(clk_sys),
82: .rst_sys_n(rst_sys_n)
83: );
84:
85: // pad control
86: padctl padctl (
87: // UART
88: .cio_uart_rx_p2d,
89: .cio_uart_tx_d2p,
90: .cio_uart_tx_en_d2p,
91: // GPIO
92: .cio_gpio_p2d,
93: .cio_gpio_d2p,
94: .cio_gpio_en_d2p,
95: // pads
96: .IO_URX,
97: .IO_UTX,
98: .IO_GP0,
99: .IO_GP1,
100: .IO_GP2,
101: .IO_GP3,
102: .IO_GP4,
103: .IO_GP5,
104: .IO_GP6,
105: .IO_GP7,
106: .IO_GP8,
107: .IO_GP9,
108: .IO_GP10,
109: .IO_GP11,
110: .IO_GP12,
111: .IO_GP13,
112: .IO_GP14,
113: .IO_GP15,
114:
115: .cio_spi_device_sck_p2d,
116: .cio_spi_device_csb_p2d,
117: .cio_spi_device_mosi_p2d,
118: .cio_spi_device_miso_d2p,
119: .cio_spi_device_miso_en_d2p,
120: .cio_jtag_tck_p2d,
121: .cio_jtag_tms_p2d,
122: .cio_jtag_trst_n_p2d,
123: .cio_jtag_srst_n_p2d,
124: .cio_jtag_tdi_p2d,
125: .cio_jtag_tdo_d2p,
126: .IO_DPS0,
127: .IO_DPS1,
128: .IO_DPS2,
129: .IO_DPS3,
130: .IO_DPS4,
131: .IO_DPS5,
132: .IO_DPS6,
133: .IO_DPS7
134: );
135:
136: endmodule
137: