factorio-riscv/board/system.sv

33 lines
1.1 KiB
Systemverilog

`include "parts/hart.sv";
`include "parts/pmmu.sv";
`include "parts/rom.sv";
`include "parts/ram.sv";
module system();
reg clock = 0; // its the clock
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;
hart core(clock, wire_rd, wire_wr, wire_size, wire_addr, wire_datar, wire_dataw); // cpu thing
rom#(.FILE("./build/kernel.mem")) rom(clock, wire_rom_rd, wire_rom_addr, wire_rom_datar);
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);
// run the clock
always #5 clock = ~clock;
endmodule;