2021-01-15 04:37:51 +00:00
|
|
|
///////////////////////////////////////////
|
2021-01-29 06:07:17 +00:00
|
|
|
// wally-pipelinedsoc.sv
|
2021-01-15 04:37:51 +00:00
|
|
|
//
|
|
|
|
// Written: David_Harris@hmc.edu 6 November 2020
|
|
|
|
// Modified:
|
|
|
|
//
|
2021-01-29 06:07:17 +00:00
|
|
|
// Purpose: System on chip including pipelined processor and memories
|
2021-01-15 04:37:51 +00:00
|
|
|
// Full RV32/64IC instruction set
|
|
|
|
//
|
|
|
|
// Note: the CSRs do not support the following features
|
|
|
|
//- Disabling portions of the instruction set with bits of the MISA register
|
|
|
|
//- Changing from RV64 to RV32 by writing the SXL/UXL bits of the STATUS register
|
|
|
|
// As of January 2020, virtual memory is not yet supported
|
|
|
|
//
|
|
|
|
// A component of the Wally configurable RISC-V project.
|
|
|
|
//
|
|
|
|
// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
|
|
|
|
//
|
2022-01-07 12:58:40 +00:00
|
|
|
// MIT LICENSE
|
|
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
|
|
|
// software and associated documentation files (the "Software"), to deal in the Software
|
|
|
|
// without restriction, including without limitation the rights to use, copy, modify, merge,
|
|
|
|
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
|
|
|
|
// to whom the Software is furnished to do so, subject to the following conditions:
|
2021-01-15 04:37:51 +00:00
|
|
|
//
|
2022-01-07 12:58:40 +00:00
|
|
|
// The above copyright notice and this permission notice shall be included in all copies or
|
|
|
|
// substantial portions of the Software.
|
2021-01-15 04:37:51 +00:00
|
|
|
//
|
2022-01-07 12:58:40 +00:00
|
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
|
|
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
|
|
|
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
|
|
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
|
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
|
|
|
// OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
2021-01-15 04:37:51 +00:00
|
|
|
|
2021-01-23 15:48:12 +00:00
|
|
|
`include "wally-config.vh"
|
2021-01-15 04:37:51 +00:00
|
|
|
|
2021-01-29 06:07:17 +00:00
|
|
|
module wallypipelinedsoc (
|
2021-12-08 20:33:53 +00:00
|
|
|
input logic clk, reset_ext,
|
|
|
|
output logic reset,
|
2021-01-29 06:07:17 +00:00
|
|
|
// AHB Lite Interface
|
2021-01-30 04:43:48 +00:00
|
|
|
// inputs from external memory
|
2021-12-08 20:33:53 +00:00
|
|
|
input logic [`AHBW-1:0] HRDATAEXT,
|
|
|
|
input logic HREADYEXT, HRESPEXT,
|
2021-09-09 20:08:10 +00:00
|
|
|
output logic HSELEXT,
|
2021-01-30 04:43:48 +00:00
|
|
|
// outputs to external memory, shared with uncore memory
|
2021-09-09 20:08:10 +00:00
|
|
|
output logic HCLK, HRESETn,
|
|
|
|
output logic [31:0] HADDR,
|
2021-01-29 06:07:17 +00:00
|
|
|
output logic [`AHBW-1:0] HWDATA,
|
2022-07-05 15:51:35 +00:00
|
|
|
output logic [`XLEN/8-1:0] HWSTRB,
|
2021-09-09 20:08:10 +00:00
|
|
|
output logic HWRITE,
|
|
|
|
output logic [2:0] HSIZE,
|
|
|
|
output logic [2:0] HBURST,
|
|
|
|
output logic [3:0] HPROT,
|
|
|
|
output logic [1:0] HTRANS,
|
|
|
|
output logic HMASTLOCK,
|
|
|
|
output logic HREADY,
|
2021-01-29 06:07:17 +00:00
|
|
|
// I/O Interface
|
2022-01-02 21:18:16 +00:00
|
|
|
input logic TIMECLK,
|
2021-09-30 16:23:09 +00:00
|
|
|
input logic [31:0] GPIOPinsIn,
|
|
|
|
output logic [31:0] GPIOPinsOut, GPIOPinsEn,
|
|
|
|
input logic UARTSin,
|
|
|
|
output logic UARTSout,
|
|
|
|
input logic SDCCmdIn,
|
|
|
|
output logic SDCCmdOut,
|
|
|
|
output logic SDCCmdOE,
|
|
|
|
input logic [3:0] SDCDatIn,
|
|
|
|
output logic SDCCLK
|
2021-01-15 05:25:56 +00:00
|
|
|
);
|
2021-01-15 04:37:51 +00:00
|
|
|
|
2021-01-30 04:43:48 +00:00
|
|
|
// Uncore signals
|
2021-12-08 20:33:53 +00:00
|
|
|
// logic reset;
|
2021-01-30 04:43:48 +00:00
|
|
|
logic [`AHBW-1:0] HRDATA; // from AHB mux in uncore
|
2021-11-29 16:06:53 +00:00
|
|
|
logic HRESP;
|
2022-05-11 15:08:33 +00:00
|
|
|
logic MTimerInt, MSwInt; // from CLINT
|
2021-12-31 06:40:21 +00:00
|
|
|
logic [63:0] MTIME_CLINT; // from CLINT to CSRs
|
2022-05-11 14:41:55 +00:00
|
|
|
logic MExtInt,SExtInt; // from PLIC
|
2021-02-08 04:21:55 +00:00
|
|
|
logic [2:0] HADDRD;
|
|
|
|
logic [3:0] HSIZED;
|
|
|
|
logic HWRITED;
|
2021-11-12 17:13:50 +00:00
|
|
|
|
2022-07-05 15:51:35 +00:00
|
|
|
|
2021-10-25 17:05:41 +00:00
|
|
|
// synchronize reset to SOC clock domain
|
|
|
|
synchronizer resetsync(.clk, .d(reset_ext), .q(reset));
|
2021-01-15 04:37:51 +00:00
|
|
|
|
|
|
|
// instantiate processor and memories
|
2022-01-20 16:02:08 +00:00
|
|
|
wallypipelinedcore core(.clk, .reset,
|
2022-05-11 15:08:33 +00:00
|
|
|
.MTimerInt, .MExtInt, .SExtInt, .MSwInt,
|
2021-12-31 06:40:21 +00:00
|
|
|
.MTIME_CLINT,
|
2022-07-05 15:51:35 +00:00
|
|
|
.HRDATA, .HREADY, .HRESP, .HCLK, .HRESETn, .HADDR, .HWDATA, .HWSTRB,
|
2021-10-20 20:49:18 +00:00
|
|
|
.HWRITE, .HSIZE, .HBURST, .HPROT, .HTRANS, .HMASTLOCK,
|
2021-10-23 17:29:52 +00:00
|
|
|
.HADDRD, .HSIZED, .HWRITED
|
2021-10-20 20:49:18 +00:00
|
|
|
);
|
2021-01-15 04:37:51 +00:00
|
|
|
|
2022-01-02 21:18:16 +00:00
|
|
|
uncore uncore(.HCLK, .HRESETn, .TIMECLK,
|
2022-07-05 15:51:35 +00:00
|
|
|
.HADDR, .HWDATA, .HWSTRB, .HWRITE, .HSIZE, .HBURST, .HPROT, .HTRANS, .HMASTLOCK, .HRDATAEXT,
|
2021-10-20 20:49:18 +00:00
|
|
|
.HREADYEXT, .HRESPEXT, .HRDATA, .HREADY, .HRESP, .HADDRD, .HSIZED, .HWRITED,
|
2022-05-11 15:08:33 +00:00
|
|
|
.MTimerInt, .MSwInt, .MExtInt, .SExtInt, .GPIOPinsIn, .GPIOPinsOut, .GPIOPinsEn, .UARTSin, .UARTSout, .MTIME_CLINT,
|
2021-10-25 19:51:54 +00:00
|
|
|
.HSELEXT,
|
2021-10-25 19:07:44 +00:00
|
|
|
.SDCCmdOut, .SDCCmdOE, .SDCCmdIn, .SDCDatIn, .SDCCLK
|
|
|
|
|
2021-10-20 20:49:18 +00:00
|
|
|
);
|
2021-09-09 20:08:10 +00:00
|
|
|
endmodule
|