Lauritabrenes / Proyecto-II-Introduccion-a-diseno-digital-en-HDL

MIT License
0 stars 0 forks source link

Simulaciones #7

Open Jsuare opened 1 year ago

Jsuare commented 1 year ago

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)

Lauritabrenes commented 1 year ago

Punto 5.2. Sobre la verificación

Siuuuuuuu07 commented 1 year ago

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'b00000000000001;

#10 bin = 14'b00000000000100;
#10 bin = 14'b00000000010101;
#10 bin = 14'b00000011111111;
#10 bin = 14'b11111111111111;

end

endmodule

Siuuuuuuu07 commented 1 year ago

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

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'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

Siuuuuuuu07 commented 1 year ago

// 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

Siuuuuuuu07 commented 1 year ago

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.

Siuuuuuuu07 commented 1 year ago

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.

Siuuuuuuu07 commented 1 year ago

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.