Fixed video, kbd and buzzer
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
//--------------------------------------------------------------
|
||||
// Implements RAM Model for simulation
|
||||
// Loads in a file "ram.hexdump" before execution.
|
||||
//--------------------------------------------------------------
|
||||
module ram (Address, Data, CS, WE, OE);
|
||||
|
||||
// Set this to 1 if you want debug printout on each RAM access
|
||||
int debug = 0;
|
||||
|
||||
input [15:0] Address;
|
||||
inout [7:0] Data;
|
||||
input CS, WE, OE;
|
||||
|
||||
reg [7:0] Mem [0:1<<16];
|
||||
|
||||
// Return data at the specified memory address; return 0x76 for non-initialized memory
|
||||
assign Data = (!CS && !OE) ? (Mem[Address]===8'hxx) ? 8'h76 : Mem[Address] : {8{1'bz}};
|
||||
|
||||
// Read the initial content of the RAM memory from a file
|
||||
initial begin : init
|
||||
// Read the CPU code (address 0) to simulate
|
||||
$readmemh("ram.hexdump", Mem, 0);
|
||||
end : init
|
||||
|
||||
always @(!CS && !OE) begin
|
||||
if (debug)
|
||||
$strobe("[ram] RD A=%H, D=%H", Address, Data);
|
||||
end
|
||||
|
||||
always @(CS or WE)
|
||||
if (!CS && !WE) begin
|
||||
if (debug)
|
||||
$strobe("[ram] WR A=%H, D=%H", Address, Data);
|
||||
Mem[Address] = Data;
|
||||
end
|
||||
|
||||
always @(WE or OE)
|
||||
if (!WE && !OE)
|
||||
$display("[ram] error: OE and WE both active!");
|
||||
|
||||
endmodule
|
||||
Reference in New Issue
Block a user