PRÁCTICAS DE COMPUTADORES I

SEXTA SESIÓN


  1. Inclusión de ficheros fuente

    Se puede, en un punto cualquiera, incluir otro fichero que funcionará tal y como si lo hubiéramos tecleado en dicho punto. La orden es `include. Así, si queremos incluir el fichero SumadorAuxiliar.v, tecleamos:
      `include "SumadorAuxiliar.v"
    
  2. Ejercicio

    El fichero 74181.v contiene el código Verilog del ALU 74181 vista en teoría. Podéis encontrar el fichero original en la página web del profesor John P. Hayes, de la Universidad de Michigan (http://www.eecs.umich.edu/~jhayes/iscas.restore/74181.html). Escríbase un fichero Verilog con un módulo que realice las siguientes operaciones usando dicha ALU:
    1. 7+4
    2. 2+6+1
    3. 01102 AND 10102
    4. 01102 XOR 10102
    5. 01102 OR NOT (10102 XNOR 01112) (2 operaciones)
    6. 2*7
    7. 3*5+1 (2 operaciones)

    En el caso de operaciones múltiples, se deben usar registros para almacenar los valores intermedios. Recordemos el esquema y la tabla de operaciones de este circuito integrado:

    Esquema del 74181
    Tabla de operaciones del 74181
    Si observáis la definición del módulo:
      module Circuit74181 (S, A, B, M, CNb, F, X, Y, CN4b, AEB);
    
    os daréis cuenta de que las líneas de acarreo negadas son CNb y CN4b, respectivamente. Las líneas X e Y las podéis dejar sin conectar.
  3. Bucles

    En la sección de comportamiento de un módulo, Verilog tiene instrucciones para realizar la misma operación varias veces. Una de ellas ya la hemos visto (while), aquí vienen algunas más:

    La orden que se repite (el cuerpo del bucle) puede ser una única instrucción o un bloque encerrado entre las órdenes begin y end.

    El siguiente ejemplo realiza una cuenta atrás de 10 a 0 mediante tres órdenes diferentes:
    
      integer i;
      $monitor("i=%d",i);
    
      // Con while
      i=10;
      while (i>0) #5 i=i-1;
    
      // Con for
      for (i=10; i>0; i=i-1) #5;
    
      // Con repeat
      i=10;
      repeat (10) #5 i=i-1;
    
    

  4. Ejercicio

    Constrúyase un módulo semisumador y compruébese su funcionamiento correcto.
    Semisumador
  5. Ejercicio

    Basándose en el módulo construido en el ejercicio anterior, ahora hay que programar un sumador completo y verificar su funcionamiento.
    Sumador completo de 1 bit
  6. Parar la simulación

    Existen dos órdenes en Verilog para parar anticipadamente la simulación: $stop y $finish. La diferencia está en que la primera para la simulación pero pasa al modo de depuración, donde se puede comprobar el valor de los registros y las señales y la segunda para la simulación definitivamente.
  7. Ejercicio

    Tomando como base el sumador completo de un bit del ejercicio anterior, hágase un módulo sumador de cuatro bits con propagación de acarreo.
    Sumador de 4 bits con propagación de acarreo

    Para verificar su funcionamiento correcto, es necesario comprobar 512 combinaciones posibles. En lugar de generar una tabla, realizad la comprobación mediante Verilog: generad todas las combinaciones posibles y, en cada combinación, mediante ifs comprobad que las salidas son correctas. Si no son correctas, imprimid el valor de los registros y señales y parad la simulación.

  8. Retardo en las puertas

    Cuando las entradas de una puerta cambian de estado, hasta ahora hemos supuesto que la salida se adapta a la nueva situación instantáneamente. Esto está lejos de ser verdad. Hay un retardo de propagación.

    Verilog permite modelar estos retardos de un modo muy fino: se pueden establecer valores independientes para el paso de 0 a 1, de 1 a 0 y de cualquiera a alta impedancia. En una primera aproximación, aquí consideraremos el mismo valor para todas las transiciones.

    Para especificar que una puerta tiene un retardo, a continuación del nombre del tipo de puerta, se añade el símbolo '#' y las unidades de tiempo del retardo entre paréntesis. Por ejemplo:

    
      and #(7) a1(salida, entrada1, entrada2); // AND con retardo 7
    
    
  9. Ejercicio

    Añádase un retardo de dos unidades de tiempo a las puertas del sumador de cuatro bits con propagación de acarreo del ejercicio anterior. Observando el esquema, dedúzcase cuál es el retardo de seguridad (cuándo se puede garantizar que la salida contiene el valor correcto y no una transición) de este diseño. Compruébense en la práctica algunos valores de entrada y los retardos que se producen.
  10. Ejercicio

    Evalúese de un modo somero las ventajas en cuanto a rapidez y precio del sumador de cuatro bits con propagación de acarreo de los ejercicios anteriores frente al sumador con anticipación de acarreo visto en teoría y que se reproduce en la figura de abajo. ¿En qué circunstancias las diferencias serán más marcadas?

    Sumador de 4 bits con anticipación de acarreo
  11. Órdenes de la shell relacionadas.

    ls
    lista el contenido de un directorio
    cd
    cambia el directorio de trabajo
    rm
    borra un fichero
    man
    muestra la página de manual de una orden
    cat
    muestra el contenido de un fichero


  12. LPEs.


© 2010 Guillermo González Talaván.