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: