This commit is contained in:
Jose Luis Montañes Ojados
2026-03-01 03:29:11 +01:00
parent cec82dc58f
commit b3d11de769
3 changed files with 79 additions and 1 deletions

24
ram/ram.v Normal file
View File

@@ -0,0 +1,24 @@
/*
Ram Sincrona
*/
module ram #(
parameter DEPTH = 256, // posiciones
parameter W = 16 // bits por posicion
) (
input clk,
input wr_en,
input [$clog2(DEPTH)-1:0] addr,
input [W-1:0] wr_data,
output reg [W-1:0] rd_data
);
reg [W-1:0] mem [0:DEPTH-1];
always @(posedge clk) begin
if (wr_en)
mem[addr] <= wr_data;
else
rd_data <= mem[addr];
end
endmodule

54
ram/ram_tb.v Normal file
View File

@@ -0,0 +1,54 @@
/*
Ram Sincrona testbench
*/
`include "ram/ram.v"
module ram_tb;
reg clk, wr_en;
reg [7:0] addr;
reg [15:0] wr_data;
wire [15:0] rd_data;
ram ram1(
.clk(clk),
.wr_en(wr_en),
.addr(addr),
.wr_data(wr_data),
.rd_data(rd_data)
);
initial clk = 0;
always #5 clk = ~clk;
initial begin
$dumpfile("ram/ram.vcd");
$dumpvars(0, ram_tb);
wr_en = 0; addr = 0; wr_data = 0;
@(posedge clk);
$display("wr_en=%b, addr=%d, wr_data=%d, rd_data=%d", wr_en, addr, wr_data, rd_data);
wr_en = 1; addr = 25; wr_data = 256;
@(posedge clk);
$display("wr_en=%b, addr=%d, wr_data=%d, rd_data=%d", wr_en, addr, wr_data, rd_data);
wr_en = 0;
@(posedge clk);
$display("wr_en=%b, addr=%d, wr_data=%d, rd_data=%d", wr_en, addr, wr_data, rd_data);
@(posedge clk);
$display("wr_en=%b, addr=%d, wr_data=%d, rd_data=%d", wr_en, addr, wr_data, rd_data);
addr = 16;
@(posedge clk);
$display("wr_en=%b, addr=%d, wr_data=%d, rd_data=%d", wr_en, addr, wr_data, rd_data);
@(posedge clk);
$display("wr_en=%b, addr=%d, wr_data=%d, rd_data=%d", wr_en, addr, wr_data, rd_data);
$finish;
end
endmodule

View File

@@ -351,7 +351,7 @@ gtkwave modulo.vcd
- [x] Fase 2.2 — Contador - [x] Fase 2.2 — Contador
- [x] Fase 2.3 — Shift Register - [x] Fase 2.3 — Shift Register
- [x] Fase 2.4 — Register File - [x] Fase 2.4 — Register File
- [ ] Fase 3.1 — RAM sincrona - [x] Fase 3.1 — RAM sincrona
- [ ] Fase 3.2 — ROM - [ ] Fase 3.2 — ROM
- [ ] Fase 3.3 — Stack - [ ] Fase 3.3 — Stack
- [ ] Fase 4.1 — FSM Semaforo - [ ] Fase 4.1 — FSM Semaforo