PRÁCTICAS DE COMPUTADORES I

OCTAVA SESIÓN


  1. Ejercicio

    Construid un biestable D con cualquiera de los métodos que hemos visto hasta ahora o de los vistos en teoría.
    Biestable D
    Soluciones y comentarios
  2. Ejercicio

    Con el módulo construido en el ejercicio anterior, debéis construir un registro SISO.
    Registro SISO
    Limpiad mediante CLR el contenido de los biestables. Aplicad una señal de reloj y unas entradas al azar y observad que la salida es la esperada.

    Soluciones y comentarios
  3. Depuración de señales en Verilog

    Es posible generar un cronograma de las señales de un diseño en Verilog. Para ello, se han de usar las órdenes que veremos en este apartado. La primera de ellas sirve para especificar cuál será el fichero de salida. Debe incluirse al principio del programa:
          $dumpfile("nombre_del_fichero.dmp");
    
    Hay que indicar, también, qué señales son la que queremos seguir:
          $dumpvars(profundidad,nombre_del_objeto);
    
    Esto también se hará al inicio de la simulación. El nombre del objeto es el del módulo o variable que se quiere seguir. En el caso de que sea un módulo, una profundidad mayor que 1 significa cuántos niveles se desea profundizar en la jerarquía de objetos. Si el registro SISO del ejercicio anterior se llama pepe y queremos seguir todas sus señales y no la de los objetos que incluya, la orden sería:
          $dumpvars(1,pepe);
    
    Solamente falta arrancar o parar el volcado, a voluntad. A continuación de escribir $dumpvars, comienza el volcado. Cada vez que queramos pararlo, ponemos la orden $dumpoff; y cada vez que queramos reanudarlo, ponemos $dumpon.

    La salida que se vuelca en el fichero no es para consumo humano. Debe analizarse con un programa gráfico. Uno de ellos disponible para Linux se llama GTKwave. Observemos la salida que se produce para el ejemplo anterior:

    Salida de GTKwave para el ejemplo anterior

    Para lograr esta salida, invocamos el programa desde la línea de órdenes mediante gtkwave nombre_del_fichero_de_volcado. Para que funcione, debe estar instalado el programa en vuestro Linux. Una vez dentro, podéis examinar las señales navegando por la ventana superior izquierda. Para que las señales aparezcan en el cronograma, arrastradlas desde la ventana inferior izquierda hasta la ventana larga inmediatamente situada a su derecha.

  4. Ejercicio

    Modificad ligeramente el código del ejercicio anterior para obtener el siguiente registro SIPO:
    Registro SIPO
    Probadlo. Usad para los cables O una única variable de cuatro bits, en lugar de cuatro variables de 1 bit.
  5. Ejercicio

    Construid y probad el siguiente registro de cuatro bits:
    Registro PISISO
    ¿Sois capaces de diseñarlo de modo modular? Cargad un valor por la entrada paralela e idla desplazando hacia la salida serie.
  6. Ejercicio (más difícil)

    Debido a restricciones de espacio se debe diseñar un sistema sumador de cuatro bits a partir de un único sumador completo de un bit. Se usarán, además dos registros PISO como los del ejercicio anterior, uno SIPO y algún biestable adicional. El funcionamiento ha de ser el siguiente:
    1. En el primer flanco de reloj se cargan los dos sumandos en los registros PISO
    2. En los cuatro siguientes se van desplazando los sumandos un bit. Esos bits se ofrecen al circuito sumador completo de un bit, junto con el acarreo anterior (usad un biestable para retener el acarreo anterior un pulso de reloj). La salida del sumador va al registro SIPO
    3. Al final, transcurrido un número adecuado de pulsos de reloj, dispondremos de la suma efectuada en las salidas del registro SIPO


    No se os da un esquema del diseño, pues el ejercicio también consiste en que lo hagáis. No obstante, aquí van algunas pistas o un camino para hacerlo:
    1. Cread los dos registros PISO. Usad dos variables a y b de tipo reg para alimentar los sumandos a los registros PISO
    2. Activad CLR y la carga paralela de los registros. Ejecutad y comprobad que los valores cargados salen, al cabo del tiempo, por las salidas serie de los registros PISO
    3. Cread un sumador completo. En la entrada de los sumandos conectad las salidas de los registros PISO anteriores. Dejad el acarreo de entrada a 0. Ejecutad y observad que se suma bien, salvo los acarreos
    4. Mediante un biestable, almacenad el acarreo de salida del sumador para en el siguiente ciclo realimentarlo en el acarreo de entrada del sumador. Si lo hacéis bien, al ejecutar, notaréis que ahora la suma se realiza correctamente
    5. Finalmente, construid un registro SIPO, a cuya entrada serie debéis conectar la salida del sumador. Si lo habéis hecho bien, al ejecutar, la suma de los dos números introducidos al principio debe aparecer en la salida paralela del registro SIPO, tal y como se pedía
  7. Ó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


  8. LPEs.


© 2010 Guillermo González Talaván.