1
0
forked from tanchou/Verilog

Tb for fifo working fine

This commit is contained in:
Gamenight77
2025-05-06 09:14:59 +02:00
parent 1d39c68b5c
commit aaebf22d48
4 changed files with 88 additions and 5 deletions

View File

@@ -1,3 +1,3 @@
@echo off
echo === Lancement de GTKWave ===
gtkwave runs/uart.vcd
gtkwave runs/fifo.vcd

View File

@@ -6,7 +6,7 @@ setlocal enabledelayedexpansion
set OUT=runs/sim.vvp
:: Top-level testbench module
set TOP=tb_uart
set TOP=tb_fifo
:: Répertoires contenant des fichiers .v
set DIRS=src/verilog tests/verilog IP/verilog

View File

@@ -1,4 +1,4 @@
module uart_tx #(
module fifo #(
parameter DETPH = 16,
parameter WIDTH = 8
)(
@@ -9,7 +9,7 @@
output wire[WIDTH-1:0] rd_data,
output wire full,
output wire empty,
output wire empty
);
reg [WIDTH-1:0] fifo[0:DETPH-1];
@@ -21,6 +21,12 @@
assign empty = (count == 0);
assign rd_data = fifo[rd_ptr];
initial begin
wr_ptr = 0;
rd_ptr = 0;
count = 0;
end
always @(posedge clk) begin
if (wr_en && !full) begin
fifo[wr_ptr] <= wr_data;

View File

@@ -4,15 +4,92 @@ module tb_fifo;
reg clk = 0;
reg wr_en = 0;
reg rd_en = 0;
reg [7:0] wr_data = 0;
wire [7:0] rd_data;
wire full;
wire empty;
always #18.5 clk = ~clk;
fifo #(
.DETPH(16),
.WIDTH(8)
) fifo_inst (
.clk(clk),
.wr_en(wr_en),
.wr_data(wr_data),
.rd_en(rd_en),
.rd_data(rd_data),
.full(full),
.empty(empty)
);
initial begin
$dumpfile("runs/fifo.vcd");
$dumpvars(0, tb_fifo);
wr_en = 1;
wr_data = 8'hAA;
#37.0;
wr_en = 0;
#37.0;
wr_en = 1;
wr_data = 8'hBB;
#37.0;
wr_en = 0;
#37.0;
wr_en = 1;
wr_data = 8'hCC;
#37.0;
wr_en = 0;
#37.0;
$display("rd_data: %h", rd_data);
rd_en = 1;
$display("rd_data: %h", rd_data);
#37.0;
rd_en = 0;
#37.0;
rd_en = 1;
$display("rd_data: %h", rd_data);
#37.0;
rd_en = 0;
#37.0;
rd_en = 1;
$display("rd_data: %h", rd_data);
#37.0;
rd_en = 0;
#37.0;
rd_en = 1;
$display("rd_data: %h", rd_data);
#19.0;
rd_en = 0;
#37.0;
$finish;
end