/* * top.v * * vim: ts=4 sw=4 * * Top-level for the e1-tracer boards. * * Note that some things here are only to maintain bitstream compatibility * with the icepick based proto setup. * * Copyright (C) 2019-2020 Sylvain Munaut * SPDX-License-Identifier: CERN-OHL-S-2.0 */ `default_nettype none module top ( // LIU data input wire e1A_rx_data, input wire e1A_rx_clk, input wire e1B_rx_data, input wire e1B_rx_clk, // LIU control inout wire liu_mosi, inout wire liu_miso, inout wire liu_clk, inout wire [1:0] liu_cs_n, // USB inout wire usb_dp, inout wire usb_dn, output wire usb_pu, // Flash inout wire flash_mosi, inout wire flash_miso, inout wire flash_clk, inout wire flash_cs_n, // VIO PDM output wire vio_pdm, // Button input wire btn, // Clock (12 MHz) input wire clk_in, // Debug UART output wire dbg_tx, // RGB LEDs output wire [2:0] rgb ); localparam integer WB_N = 2; genvar i; // Signals // ------- // Flash SPI internal signals wire flash_mosi_i, flash_miso_i, flash_clk_i; wire flash_mosi_o, flash_miso_o, flash_clk_o; wire flash_mosi_oe, flash_miso_oe, flash_clk_oe; wire flash_csn_o; // Peripheral wishbone wire [15:0] wb_addr; wire [31:0] wb_rdata [0:WB_N-1]; wire [31:0] wb_wdata; wire [ 3:0] wb_wmsk; wire wb_we; wire [WB_N-1:0] wb_cyc; wire [WB_N-1:0] wb_ack; wire [(WB_N*32)-1:0] wb_rdata_flat; // Ticks wire [7:0] tick_e1; wire tick_usb_sof; // Clocks / Reset wire rst_req; wire clk_sys; wire rst_sys; wire clk_48m; wire rst_48m; // SoC base // -------- // Instance soc_base #( .WB_N(WB_N), .E1_N(2), .E1_UNIT_HAS_RX(2'b11), .E1_UNIT_HAS_TX(2'b00), .E1_LIU(1) ) soc_I ( .e1_rx_hi_p (), .e1_rx_hi_n (), .e1_rx_lo_p (), .e1_rx_lo_n (), .e1_tx_hi (), .e1_tx_lo (), .e1_rx_data ({e1B_rx_data, e1A_rx_data}), .e1_rx_clk ({e1B_rx_clk, e1A_rx_clk }), .e1_tx_data (), .e1_tx_clk (), .usb_dp (usb_dp), .usb_dn (usb_dn), .usb_pu (usb_pu), .flash_mosi_i (flash_mosi_i), .flash_mosi_o (flash_mosi_o), .flash_mosi_oe(flash_mosi_oe), .flash_miso_i (flash_miso_i), .flash_miso_o (flash_miso_o), .flash_miso_oe(flash_miso_oe), .flash_clk_i (flash_clk_i), .flash_clk_o (flash_clk_o), .flash_clk_oe (flash_clk_oe), .flash_csn_o (flash_csn_o), .dbg_rx (1'b1), .dbg_tx (dbg_tx), .rgb (rgb), .wb_m_addr (wb_addr), .wb_m_rdata (wb_rdata_flat), .wb_m_wdata (wb_wdata), .wb_m_wmsk (wb_wmsk), .wb_m_we (wb_we), .wb_m_cyc (wb_cyc), .wb_m_ack (wb_ack), .tick_e1 (tick_e1), .tick_usb_sof (tick_usb_sof), .clk_sys (clk_sys), .rst_sys (rst_sys), .clk_48m (clk_48m), .rst_48m (rst_48m) ); // WB read data flattening for (i=0; i