40 lines
897 B
Systemverilog
40 lines
897 B
Systemverilog
|
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
|