blob: 9499aac2af499fc825d72d9419cc2212e8919a63 [file] [log] [blame]
/*
* subservient.v : Toplevel for the subservient SoC
*
* SPDX-FileCopyrightText: 2021 Olof Kindgren <olof.kindgren@gmail.com>
* SPDX-License-Identifier: Apache-2.0
*/
`default_nettype none
module subservient
#(//Memory parameters
parameter memsize = 512,
parameter aw = $clog2(memsize),
//Enable CSR + interrupts
parameter WITH_CSR = 0)
(
input wire i_clk,
input wire i_rst,
//SRAM interface
output wire [aw-1:0] o_sram_waddr,
output wire [7:0] o_sram_wdata,
output wire o_sram_wen,
output wire [aw-1:0] o_sram_raddr,
input wire [7:0] i_sram_rdata,
output wire o_sram_ren,
//Debug interface
input wire i_debug_mode,
input wire [31:0] i_wb_dbg_adr,
input wire [31:0] i_wb_dbg_dat,
input wire [3:0] i_wb_dbg_sel,
input wire i_wb_dbg_we ,
input wire i_wb_dbg_stb,
output wire [31:0] o_wb_dbg_rdt,
output wire o_wb_dbg_ack,
//External I/O
output wire o_gpio);
wire [31:0] wb_core_adr;
wire [31:0] wb_core_dat;
wire [3:0] wb_core_sel;
wire wb_core_we;
wire wb_core_stb;
wire [31:0] wb_core_rdt;
wire wb_core_ack;
wire wb_gpio_rdt;
assign wb_core_rdt = {31'd0, wb_gpio_rdt};
subservient_gpio gpio
(.i_wb_clk (i_clk),
.i_wb_rst (i_rst),
.i_wb_dat (wb_core_dat[0]),
.i_wb_we (wb_core_we),
.i_wb_stb (wb_core_stb),
.o_wb_rdt (wb_gpio_rdt),
.o_wb_ack (wb_core_ack),
.o_gpio (o_gpio));
subservient_core
#(.memsize (memsize),
.WITH_CSR (WITH_CSR))
core
(.i_clk (i_clk),
.i_rst (i_rst),
.i_timer_irq (1'b0),
//SRAM interface
.o_sram_waddr (o_sram_waddr),
.o_sram_wdata (o_sram_wdata),
.o_sram_wen (o_sram_wen),
.o_sram_raddr (o_sram_raddr),
.i_sram_rdata (i_sram_rdata),
.o_sram_ren (o_sram_ren),
//Debug interface
.i_debug_mode (i_debug_mode),
.i_wb_dbg_adr (i_wb_dbg_adr),
.i_wb_dbg_dat (i_wb_dbg_dat),
.i_wb_dbg_sel (i_wb_dbg_sel),
.i_wb_dbg_we (i_wb_dbg_we ),
.i_wb_dbg_stb (i_wb_dbg_stb),
.o_wb_dbg_rdt (o_wb_dbg_rdt),
.o_wb_dbg_ack (o_wb_dbg_ack),
//Peripheral interface
.o_wb_adr (wb_core_adr),
.o_wb_dat (wb_core_dat),
.o_wb_sel (wb_core_sel),
.o_wb_we (wb_core_we) ,
.o_wb_stb (wb_core_stb),
.i_wb_rdt (wb_core_rdt),
.i_wb_ack (wb_core_ack));
endmodule