summaryrefslogtreecommitdiff
path: root/rtl
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-09-25 19:12:49 -0600
committerAlejandro Soto <alejandro@34project.org>2023-09-25 21:33:49 -0600
commited0bd705f94f6aea568ec8405534984a37770f21 (patch)
treeaf19fc67177962c14ce7ab88d75dcaa1b1e3aee3 /rtl
parentcd02f821525b8710dd37e2bc39a8a7dbc36ac4b0 (diff)
rtl/core, tb: replace bus_master with a new top-level module
Diffstat (limited to '')
-rw-r--r--rtl/core/control/mul_fu.sv (renamed from rtl/core/control/mul.sv)0
-rw-r--r--rtl/core/control/status.sv (renamed from rtl/core/control/psr.sv)0
-rw-r--r--rtl/core/core.sv (renamed from rtl/bus_master.sv)66
-rw-r--r--rtl/core/decode/branch_dec.sv (renamed from rtl/core/decode/branch.sv)0
-rw-r--r--rtl/core/decode/coproc_dec.sv (renamed from rtl/core/decode/coproc.sv)0
-rw-r--r--rtl/core/decode/data_dec.sv (renamed from rtl/core/decode/data.sv)0
-rw-r--r--rtl/core/decode/mul_dec.sv (renamed from rtl/core/decode/mul.sv)0
-rw-r--r--rtl/core/regs/reg_map.sv (renamed from rtl/core/regs/map.sv)0
-rw-r--r--rtl/top/conspiracion.sv47
9 files changed, 53 insertions, 60 deletions
diff --git a/rtl/core/control/mul.sv b/rtl/core/control/mul_fu.sv
index 8352435..8352435 100644
--- a/rtl/core/control/mul.sv
+++ b/rtl/core/control/mul_fu.sv
diff --git a/rtl/core/control/psr.sv b/rtl/core/control/status.sv
index 6616bc9..6616bc9 100644
--- a/rtl/core/control/psr.sv
+++ b/rtl/core/control/status.sv
diff --git a/rtl/bus_master.sv b/rtl/core/core.sv
index 0c6af55..8d487fa 100644
--- a/rtl/bus_master.sv
+++ b/rtl/core/core.sv
@@ -1,38 +1,56 @@
-module bus_master
+`include "core/uarch.sv"
+
+module core
(
- input logic clk,
- rst_n,
+ input logic clk,
+ rst_n,
+
+ input wire step,
+ input wire cpu_halt,
+ output wire cpu_halted,
+ output wire breakpoint,
- input logic[29:0] addr,
- input logic start,
- write,
- output logic ready,
- output logic[31:0] data_rd,
- input logic[31:0] data_wr,
- input logic[3:0] data_be,
- output logic cpu_clk,
- cpu_rst_n,
- irq,
+ output word avl_address,
+ output logic avl_read,
+ avl_write,
+ input word avl_readdata,
+ output word avl_writedata,
+ input logic avl_waitrequest,
+ output logic[3:0] avl_byteenable,
- output logic[31:0] avl_address,
- output logic avl_read,
- avl_write,
- input logic[31:0] avl_readdata,
- output logic[31:0] avl_writedata,
- input logic avl_waitrequest,
- output logic[3:0] avl_byteenable,
- input logic avl_irq
+ input logic avl_irq
);
+ logic ready, write, start;
+
+ logic[3:0] data_be;
+ logic[29:0] addr;
+ logic[31:0] data_rd, data_wr;
+
enum int unsigned
{
IDLE,
WAIT
} state;
- assign irq = avl_irq;
- assign cpu_clk = clk;
- assign cpu_rst_n = rst_n;
+ arm810 cpu
+ (
+ .irq(avl_irq),
+ .halt(cpu_halt),
+ .halted(cpu_halted),
+ .bus_addr(addr),
+ .bus_data_rd(data_rd),
+ .bus_data_wr(data_wr),
+ .bus_data_be(data_be),
+ .bus_ready(ready),
+ .bus_write(write),
+ .bus_start(start),
+`ifndef VERILATOR
+ .step(0),
+ .breakpoint(),
+`endif
+ .*
+ );
assign data_rd = avl_readdata;
diff --git a/rtl/core/decode/branch.sv b/rtl/core/decode/branch_dec.sv
index 1dbc1ad..1dbc1ad 100644
--- a/rtl/core/decode/branch.sv
+++ b/rtl/core/decode/branch_dec.sv
diff --git a/rtl/core/decode/coproc.sv b/rtl/core/decode/coproc_dec.sv
index 153cadf..153cadf 100644
--- a/rtl/core/decode/coproc.sv
+++ b/rtl/core/decode/coproc_dec.sv
diff --git a/rtl/core/decode/data.sv b/rtl/core/decode/data_dec.sv
index f744972..f744972 100644
--- a/rtl/core/decode/data.sv
+++ b/rtl/core/decode/data_dec.sv
diff --git a/rtl/core/decode/mul.sv b/rtl/core/decode/mul_dec.sv
index 114b65b..114b65b 100644
--- a/rtl/core/decode/mul.sv
+++ b/rtl/core/decode/mul_dec.sv
diff --git a/rtl/core/regs/map.sv b/rtl/core/regs/reg_map.sv
index 11085d4..11085d4 100644
--- a/rtl/core/regs/map.sv
+++ b/rtl/core/regs/reg_map.sv
diff --git a/rtl/top/conspiracion.sv b/rtl/top/conspiracion.sv
index 4d09af8..54c8b95 100644
--- a/rtl/top/conspiracion.sv
+++ b/rtl/top/conspiracion.sv
@@ -2,6 +2,7 @@ module conspiracion
(
input wire clk_clk,
input wire rst_n,
+
input wire halt,
`ifdef VERILATOR
input wire step,
@@ -48,12 +49,7 @@ module conspiracion
output wire [7:0] vga_dac_b
);
- logic button;
- logic[3:0] data_be;
- logic[29:0] addr;
- logic[31:0] data_rd, data_wr;
- logic reset_reset_n, cpu_clk, cpu_rst_n, cpu_halt,
- ready, write, start, irq;
+ logic button, cpu_halt, reset_reset_n;
`ifdef VERILATOR
assign cpu_halt = halt;
@@ -82,38 +78,17 @@ module conspiracion
);
`endif
- arm810 core
- (
- .clk(cpu_clk),
- .rst_n(cpu_rst_n),
- .halt(cpu_halt),
- .halted(cpu_halted),
- .bus_addr(addr),
- .bus_data_rd(data_rd),
- .bus_data_wr(data_wr),
- .bus_data_be(data_be),
- .bus_ready(ready),
- .bus_write(write),
- .bus_start(start),
-`ifndef VERILATOR
- .step(0),
- .breakpoint(),
-`endif
- .*
- );
-
platform plat
(
- .master_0_core_cpu_clk(cpu_clk),
- .master_0_core_cpu_rst_n(cpu_rst_n),
- .master_0_core_addr(addr),
- .master_0_core_data_rd(data_rd),
- .master_0_core_data_wr(data_wr),
- .master_0_core_data_be(data_be),
- .master_0_core_ready(ready),
- .master_0_core_write(write),
- .master_0_core_start(start),
- .master_0_core_irq(irq),
+`ifdef VERILATOR
+ .cpu_0_mp_step(step),
+ .cpu_0_mp_breakpoint(breakpoint),
+`else
+ .cpu_0_mp_step(0),
+ .cpu_0_mp_breakpoint(),
+`endif
+ .cpu_0_mp_cpu_halt(cpu_halt),
+ .cpu_0_mp_cpu_halted(cpu_halted),
.pll_0_reset_reset(0), //TODO: reset controller, algún día
.pio_0_external_connection_export(pio_leds),
.switches_external_connection_export({2'b00, pio_switches}),