factorio-riscv/board/system.sv

31 lines
1.1 KiB
Systemverilog
Raw Normal View History

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
reg wire_rd;
reg wire_wr;
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;
2023-12-29 21:59:32 +00:00
reg wire_ram_rd;
reg wire_ram_wr;
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
hart core(clock, wire_rd, wire_wr, wire_addr, wire_datar, wire_dataw); // cpu thing
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-29 21:59:32 +00:00
ram#(.SIZE('h1000)) ram(clock, wire_ram_rd, wire_ram_wr, wire_ram_addr, wire_ram_datar, wire_ram_dataw);
pmmu pmmu(clock, wire_rd, wire_wr, wire_addr, wire_datar, wire_dataw, wire_rom_rd, wire_rom_addr, wire_rom_datar, wire_ram_rd, wire_ram_wr, 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;