From 1525373c611bc3a7fef1deb1eefd34ec154ff106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20Monta=C3=B1es=20Ojados?= Date: Sun, 1 Mar 2026 01:21:07 +0100 Subject: [PATCH] add flipflop --- flip_flop/flip_flop.v | 17 +++++++++++++ flip_flop/flip_flop_tb.v | 52 ++++++++++++++++++++++++++++++++++++++++ roadmap.md | 2 +- 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 flip_flop/flip_flop.v create mode 100644 flip_flop/flip_flop_tb.v diff --git a/flip_flop/flip_flop.v b/flip_flop/flip_flop.v new file mode 100644 index 0000000..b7f7fcd --- /dev/null +++ b/flip_flop/flip_flop.v @@ -0,0 +1,17 @@ +/* + Flip-Flop D y registro +*/ + +module register #(parameter N = 8)( + input clk, + input rst, + input en, + input [N-1:0] d, + output reg [N-1:0] q +); + always @(posedge clk or posedge rst) begin + if (rst) q <= 0; + else if (en) q <= d; + end + +endmodule \ No newline at end of file diff --git a/flip_flop/flip_flop_tb.v b/flip_flop/flip_flop_tb.v new file mode 100644 index 0000000..7c69104 --- /dev/null +++ b/flip_flop/flip_flop_tb.v @@ -0,0 +1,52 @@ +/* + Flip-Flop D y registro +*/ +`include "./flip_flop/flip_flop.v" + +module register_tb; + reg clk, rst, en; + reg [7:0] d; + wire [7:0] q; + + register #(.N(8)) dut ( + .clk(clk), + .rst(rst), + .en(en), + .d(d), + .q(q) + ); + + initial clk = 0; + always #5 clk = ~clk; + + initial begin + $dumpfile("./flip_flop/flip_flop.vcd"); + $dumpvars(0, register_tb); + + rst = 1; en = 0; d = 0; + @(posedge clk); #1 + + rst = 0; + @(posedge clk); #1 + $display("rst=0, en=0, d=%0d, q=%0d (q no cambia)", d, q); + + en = 1; d = 8'd42; + @(posedge clk); #1 + $display("en=1, d=42 → q=%0d", q); + + d = 8'd99; + @(posedge clk); #1 + $display("en=1, d=99 → q=%0d", q); + + en = 0; d = 8'd7; + @(posedge clk); #1 + $display("en=0, d=7 → q=%0d (q mantiene 99)", q); + + rst = 1; + @(posedge clk); #1 + $display("rst=1 → q=%0d (q=0)", q); + + $finish; + end + +endmodule \ No newline at end of file diff --git a/roadmap.md b/roadmap.md index 5f9c2ce..57f25ac 100644 --- a/roadmap.md +++ b/roadmap.md @@ -347,7 +347,7 @@ gtkwave modulo.vcd - [x] Fase 1.3 — ALU basica - [x] Fase 1.4 — Mux / Demux - [x] Fase 1.5 — Decoder / Encoder -- [ ] Fase 2.1 — Flip-Flop D y registro +- [x] Fase 2.1 — Flip-Flop D y registro - [ ] Fase 2.2 — Contador - [ ] Fase 2.3 — Shift Register - [ ] Fase 2.4 — Register File