Skip to content

Commit c658591

Browse files
committed
feat: update tb.v
1 parent b50e3eb commit c658591

File tree

1 file changed

+63
-24
lines changed

1 file changed

+63
-24
lines changed

test/tb.v

Lines changed: 63 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,38 @@ module tb;
44

55
reg clk;
66
reg rst_n;
7-
reg rx;
8-
wire [7:0] uo_out;
9-
10-
// UART parámetros
11-
parameter CLK_PERIOD = 40; // 25 MHz
12-
parameter BIT_PERIOD = 10417; // 9600 baud (1/9600 seconds)
13-
14-
// Instancia del módulo principal
7+
reg ena;
8+
reg [7:0] ui_in; // Dedicated inputs
9+
reg [7:0] uio_in; // IO inputs
10+
wire [7:0] uo_out; // Dedicated outputs
11+
wire [7:0] uio_out;
12+
wire [7:0] uio_oe;
13+
14+
// UART parameters
15+
parameter CLK_PERIOD = 40; // 25 MHz clock period
16+
parameter BIT_PERIOD = 10417; // 9600 baud (1/9600 seconds)
17+
18+
// Assign UART RX to ui_in[0]
19+
assign ui_in[0] = rx;
20+
reg rx; // UART RX line
21+
22+
// Instantiate the module under test (MUT)
1523
tt_um_waves uut (
1624
.clk(clk),
1725
.rst_n(rst_n),
18-
.rx(rx),
19-
.uo_out(uo_out)
26+
.ena(ena),
27+
.ui_in(ui_in),
28+
.uo_out(uo_out),
29+
.uio_in(uio_in),
30+
.uio_out(uio_out),
31+
.uio_oe(uio_oe)
2032
);
2133

22-
// Generar el reloj de 25 MHz
34+
// Clock generation (25 MHz)
2335
initial clk = 0;
2436
always #(CLK_PERIOD / 2) clk = ~clk;
2537

26-
// Procedimiento para enviar un byte por UART
38+
// UART Byte Transmission Task
2739
task send_uart_byte(input [7:0] byte);
2840
integer i;
2941
begin
@@ -44,28 +56,55 @@ module tb;
4456
endtask
4557

4658
initial begin
47-
// Inicialización
59+
// Initialize signals
4860
rst_n = 0;
49-
rx = 1; // UART idle
61+
ena = 1;
62+
ui_in = 8'b00000000; // All inputs LOW
63+
uio_in = 8'b00000000; // No external IO interaction
64+
rx = 1; // UART idle state
65+
66+
// Reset pulse
5067
#100;
5168
rst_n = 1;
5269

53-
// Enviar 'T' para onda triangular
70+
// UART Commands - Testing Waveform Selection
71+
72+
// Select TRIANGLE Wave ('T')
5473
send_uart_byte(8'h54); // ASCII 'T'
55-
#50000; // Esperar procesamiento
56-
$display("uo_out: %b", uo_out); // wave_select debería ser 000 (onda triangular)
74+
#50000;
75+
$display("Triangle wave selected, uo_out = %b", uo_out);
5776

58-
// Enviar 'N' para habilitar ruido blanco
77+
// Select SAWTOOTH Wave ('S')
78+
send_uart_byte(8'h53); // ASCII 'S'
79+
#50000;
80+
$display("Sawtooth wave selected, uo_out = %b", uo_out);
81+
82+
// Select SQUARE Wave ('Q')
83+
send_uart_byte(8'h51); // ASCII 'Q'
84+
#50000;
85+
$display("Square wave selected, uo_out = %b", uo_out);
86+
87+
// Select SINE Wave ('W')
88+
send_uart_byte(8'h57); // ASCII 'W'
89+
#50000;
90+
$display("Sine wave selected, uo_out = %b", uo_out);
91+
92+
// Enable WHITE NOISE ('N')
5993
send_uart_byte(8'h4E); // ASCII 'N'
60-
#50000; // Esperar procesamiento
61-
$display("uo_out: %b", uo_out); // white_noise_en debería ser 1
94+
#50000;
95+
$display("White noise enabled, uo_out = %b", uo_out);
6296

63-
// Enviar 'F' para deshabilitar ruido blanco
97+
// Disable WHITE NOISE ('F')
6498
send_uart_byte(8'h46); // ASCII 'F'
65-
#50000; // Esperar procesamiento
66-
$display("uo_out: %b", uo_out); // white_noise_en debería ser 0
99+
#50000;
100+
$display("White noise disabled, uo_out = %b", uo_out);
101+
102+
// Select Frequency 'A' (First test frequency)
103+
send_uart_byte(8'h41); // ASCII 'A'
104+
#50000;
105+
$display("Frequency A selected, uo_out = %b", uo_out);
67106

68-
// Fin de simulación
107+
// Finish simulation
69108
$finish;
70109
end
71110
endmodule

0 commit comments

Comments
 (0)