Paste
Copy
Cut
Options
  • Pregunta: Necesito diseñar un multiplicador binario 2x2 en Verilog usando solo medios sumadores. Aquí está mi código de medio sumador y código multiplicador: `escala de tiempo 1ns / 1ps ////////////////////////////////////////////////// ///////////////////////////////// // Compañía: // Ingeniero: // // Fecha de creación: 14:05:34 04/05/2016 // Nombre del diseño: //

    Necesito diseñar un multiplicador binario 2x2 en Verilog usando solo medios sumadores. Aquí está mi código de medio sumador y código multiplicador:

    `escala de tiempo 1ns / 1ps
    ////////////////////////////////////////////////// /////////////////////////////////
    // Compañía:
    // Ingeniero:
    //
    // Fecha de creación: 14:05:34 04/05/2016
    // Nombre del diseño:
    // Nombre del módulo: Multiplicador
    // Nombre del proyecto:
    // Dispositivos de destino:
    // Versiones de herramientas:
    // Descripción:
    //
    // Dependencias:
    //
    // Revisión:
    // Revisión 0.01 - Archivo creado
    // Comentarios adicionales:
    //
    ////////////////////////////////////////////////// /////////////////////////////////
    módulo HalfAdder(
    entrada X,
    entrada Y,
    salida S,
    salida C
    );

    asignar S = X^Y;
    asignar C = X&Y;


    módulo final

    multiplicador del módulo(
    entrada [1:0] A,
    entrada [1:0] B,
    salida [6:0] seg,
    salida [3:0] un,
    salida dp,
    cable [3:0] C
    );

    cable c1,c2,c3,c4,c5,c6,c7,c8;
    //x,y,s,c
    asignar un[0]= (A[0]&B[0]);
    HalfAdder HA1((A[1]&B[0]),(A[0]&B[1]),an[1],c1);
    HalfAdder HA2((A[1]&B[1]),c1,an[2],c2);
    asignar un[3] = c2;

    módulo final

    Estoy seriamente confundido. ¿Cómo puedo escribir la función de prueba? No puedo encontrar nada en línea que me ayude en absoluto. Por favor ayuda.

    Mi código para el módulo de prueba que no funciona:

    `escala de tiempo 1ns / 1ps

    ////////////////////////////////////////////////// ///////////////////////////////
    // Compañía:
    // Ingeniero:
    //
    // Fecha de creación: 15:41:06 04/05/2016
    // Nombre del diseño: Multiplicador
    // Nombre del módulo: C:/Xilinx/Lab6/test.v
    // Nombre del proyecto: Lab6
    // Dispositivo de destino:
    // Versiones de herramientas:
    // Descripción:
    //
    // Dispositivo de prueba Verilog creado por ISE para el módulo: Multiplicador
    //
    // Dependencias:
    //
    // Revisión:
    // Revisión 0.01 - Archivo creado
    // Comentarios adicionales:
    //
    ////////////////////////////////////////////////// ///////////////////////////////

    prueba de módulo;

    // Entradas
    registro [1:0] A;
    registro [1:0] B;
    reg i;
    // Salidas
    cable [6:0] seg;
    cable [3:0] un;
    alambre dp;
    cable [3:0] C;

    // Crear una instancia de la unidad bajo prueba (UUT)
    Multiplicador uut (
    .AUTOMÓVIL CLUB BRITÁNICO),
    .CAMA Y DESAYUNO),
    .seg(seg),
    .un(un),
    .dp(dp),
    .C(C)
    );

    comienzo inicial
    // Inicializar entradas
    Una = 0;
    B = 0;

    // Espere 100 ns para que finalice el reinicio global
    #100;

    // Añade estímulo aquí

    fin

    siempre @ (A,B)
    comenzar
    // Espere 100 ns para que finalice el reinicio global
    para (yo = 0; yo < 16; yo = yo + 1)
    comenzar
    #10 {A} = yo;
    $monitor("tiempo=%d,\t A =%d, \t B =%d,\t operación = %d, \t resultado =%d",$tiempo, A, B, uut.C, an );
    A=0;B=0;
    #10A=0;B=1;
    fin
    #150 $parada;
    fin

    módulo final

    Solo obtengo z por cada operación y el resultado no es correcto.

  • Chegg Logo
    Esta pregunta aún no se resolvió!
    ¿No es lo que buscas?
    Envía tu pregunta a un experto en la materia.