Open Jsuare opened 1 year ago
Punto 5.2. Sobre la verificación
module test_bin2hex;
reg [13:0] bin; wire [3:0] hex_disp;
bin2hex uut( .bin(bin), .hex_disp(hex_disp) );
initial begin $monitor("bin = %b, hex_disp = %h", bin, hex_disp);
#10 bin = 14'b00000000000100;
#10 bin = 14'b00000000010101;
#10 bin = 14'b00000011111111;
#10 bin = 14'b11111111111111;
end
endmodule
module test_complemento_a_dos;
reg [13:0] num_binario; wire [3:0] siete_segmentos;
complemento_a_dos dut ( .num_binario(num_binario), .siete_segmentos(siete_segmentos) );
initial begin num_binario = 14'b01010101010101; // número positivo
$display("Número binario: %b, Complemento a dos: %b, Display de 7 segmentos: %b", num_binario, dut.complemento_dos, siete_segmentos);
num_binario = 14'b10101010101010; // número negativo
#10;
$display("Número binario: %b, Complemento a dos: %b, Display de 7 segmentos: %b", num_binario, dut.complemento_dos, siete_segmentos);
num_binario = 14'b01111111111111; // número positivo máximo
#10;
$display("Número binario: %b, Complemento a dos: %b, Display de 7 segmentos: %b", num_binario, dut.complemento_dos, siete_segmentos);
num_binario = 14'b10000000000000; // número negativo máximo
#10;
$display("Número binario: %b, Complemento a dos: %b, Display de 7 segmentos: %b", num_binario, dut.complemento_dos, siete_segmentos);
$finish;
end
endmodule
// Test bench modulo 1_01
module bin_to_bcd_double_dabble;
reg [11:0] bin1, bin2;
wire [15:0] bcd1, bcd2;
bin_to_bcd_double_dabble dut(
.bin1(bin1),
.bin2(bin2),
.bcd1(bcd1),
.bcd2(bcd2)
);
initial begin
bin1 = 6'b000011;
bin2 = 6'b001111;
#10;
$display("Bin1: %b -> BCD1: %b", bin1, bcd1);
$display("Bin2: %b -> BCD2: %b", bin2, bcd2);
#10;
bin1 = 6'b100101;
bin2 = 6'b010101;
#10;
$display("Bin1: %b -> BCD1: %b", bin1, bcd1);
$display("Bin2: %b -> BCD2: %b", bin2, bcd2);
#10;
bin1 = 6'b111111;
bin2 = 6'b000000;
#10;
$display("Bin1: %b -> BCD1: %b", bin1, bcd1);
$display("Bin2: %b -> BCD2: %b", bin2, bcd2);
#10;
$finish;
end
endmodule
Test módulo 3 Este código simula el módulo complemento_a_dos con diferentes números binarios de entrada para verificar que el complemento a dos y el display de 7 segmentos se calculan correctamente para números positivos y negativos. Puedes ajustar los valores de los números binarios para probar diferentes entradas.
Test módulo 2
ste código instanciará el módulo bin2hex
y creará una señal bin
de 14 bits que se utilizará como entrada. La señal de salida hex_disp
se monitorea utilizando la función $monitor
, que muestra el valor de bin
y hex_disp
cada vez que cambian.
En el bloque initial
, se cambia el valor de bin
a diferentes valores binarios de 14 bits. Cada cambio de valor de bin
hará que el módulo bin2hex
convierta el número binario en hexadecimal y muestre el resultado en hex_disp
.
Este código es solo un ejemplo y deberá modificarse para adaptarse a su configuración específica del display de 7 segmentos. Además, asegúrese de simular el código en un simulador de Verilog como Vivado para verificar su funcionalidad.
Test módulo 1
Este testbench prueba el módulo con cinco combinaciones diferentes de entradas de bin1
y bin2
y verifica que las salidas bcd1
y bcd2
son correctas. Simplemente ejecuta el testbench en tu simulador de Verilog para ver las salidas producidas por el módulo.
Para cada subsistema, será obligatorio presentar simulaciones tanto a nivel de RTL (pre-síntesis) como con información de temporizado (post-síntesis y post-colocación-y-ruteo)