factorio-riscv/board/parts/pmmu.sv

40 lines
897 B
Systemverilog
Raw Normal View History

2023-12-29 14:10:10 +00:00
module pmmu(
clk,
rd, wr,
addr, datar, dataw,
rom_rd, rom_wr,
rom_addr, rom_datar, rom_dataw
);
// INPUT SHIT
input clk;
input reg rd;
input reg wr;
input reg [31:0] addr;
input reg [31:0] dataw;
output reg [31:0] datar;
// ROM
output reg rom_rd;
output reg rom_wr;
output reg [31:0] rom_addr;
output reg [31:0] rom_dataw;
input reg [31:0] rom_datar;
always @(posedge clk) begin
rom_rd = 0;
rom_wr = 0;
if ((addr == 0 || addr > 0) && addr < 'h10000) begin
rom_addr = addr;
rom_wr = wr;
rom_rd = rd;
if (wr) rom_dataw = dataw;
#1;
if (rd) datar = rom_datar;
end else begin
$error("THIS IS BAD");
end
end
endmodule