1
0
forked from tanchou/Verilog

Refactor ultrasonic modules and testbench for improved functionality and clarity

This commit is contained in:
2025-05-20 14:24:41 +02:00
parent 436edae734
commit b3e646d854
8 changed files with 115 additions and 83 deletions

View File

@@ -13,6 +13,7 @@ module hc_sr04_tb;
// === Paramètres ===
localparam CLK_FREQ = 27_000_000; // 27 MHz
localparam CLK_PERIOD = 37; // Période en ns (~37 ns pour 27 MHz)
localparam CLK_MS = CLK_PERIOD * 100;
// Génération de l'horloge 27 MHz
always #(CLK_PERIOD/2) clk = ~clk;
@@ -46,7 +47,7 @@ module hc_sr04_tb;
begin
$display("[%0t ns] Déclenchement d'une mesure", $time);
start = 1;
#(CLK_PERIOD * 2);
#CLK_PERIOD;
start = 0;
// Attendre que la mesure soit terminée
wait(done);
@@ -77,6 +78,7 @@ module hc_sr04_tb;
// Test 1: Mesure unique
$display("=== Test 1: Mesure unique ===");
@(posedge clk); // Synchroniser avec l'horloge
trigger_measurement();
// Supposons que hc_sr04_model simule une distance fixe, par exemple 1000 (à ajuster)
check_distance(16'd1000);
@@ -84,7 +86,9 @@ module hc_sr04_tb;
// Test 2: Mesures multiples
$display("=== Test 2: Mesures multiples ===");
repeat (3) begin
#(CLK_PERIOD * 1000); // Attendre entre mesures
#(CLK_MS * 100); // Attendre entre mesures
@(posedge clk); // Synchroniser avec l'horloge
$display("[%0t ns] Déclenchement d'une nouvelle mesure", $time);
trigger_measurement();
check_distance(16'd1000);
end