2023-12-29 14:10:10 +00:00
|
|
|
`include "parts/hart.sv";
|
|
|
|
`include "parts/pmmu.sv";
|
|
|
|
`include "parts/rom.sv";
|
2023-12-29 21:59:32 +00:00
|
|
|
`include "parts/ram.sv";
|
2023-12-29 14:10:10 +00:00
|
|
|
|
|
|
|
module system();
|
|
|
|
reg clock = 0; // its the clock
|
|
|
|
|
2023-12-30 18:04:40 +00:00
|
|
|
reg wire_rd;
|
|
|
|
reg wire_wr;
|
|
|
|
reg[1:0] wire_size;
|
|
|
|
reg[31:0] wire_addr;
|
|
|
|
reg[31:0] wire_datar;
|
|
|
|
reg[31:0] wire_dataw;
|
|
|
|
reg wire_rom_rd;
|
|
|
|
reg[31:0] wire_rom_addr;
|
|
|
|
reg[31:0] wire_rom_datar;
|
|
|
|
reg wire_ram_rd;
|
|
|
|
reg wire_ram_wr;
|
|
|
|
reg[1:0] wire_ram_size;
|
|
|
|
reg[31:0] wire_ram_addr;
|
|
|
|
reg[31:0] wire_ram_datar;
|
|
|
|
reg[31:0] wire_ram_dataw;
|
2023-12-29 14:10:10 +00:00
|
|
|
|
2023-12-30 18:04:40 +00:00
|
|
|
hart core(clock, wire_rd, wire_wr, wire_size, wire_addr, wire_datar, wire_dataw); // cpu thing
|
2023-12-29 14:10:10 +00:00
|
|
|
|
2023-12-29 18:45:02 +00:00
|
|
|
rom#(.FILE("./build/kernel.mem")) rom(clock, wire_rom_rd, wire_rom_addr, wire_rom_datar);
|
2023-12-30 18:04:40 +00:00
|
|
|
ram#(.SIZE('h1000)) ram(clock, wire_ram_rd, wire_ram_wr, wire_ram_size, wire_ram_addr, wire_ram_datar, wire_ram_dataw);
|
|
|
|
pmmu pmmu(clock, wire_rd, wire_wr, wire_size, wire_addr, wire_datar, wire_dataw, wire_rom_rd, wire_rom_addr, wire_rom_datar, wire_ram_rd, wire_ram_wr, wire_ram_size, wire_ram_addr, wire_ram_datar, wire_ram_dataw);
|
2023-12-29 14:10:10 +00:00
|
|
|
|
|
|
|
// run the clock
|
|
|
|
always #5 clock = ~clock;
|
|
|
|
endmodule;
|