Herramientas Personales

Clase del lunes 3 de marzo de 2014

por Martín Guillén, Sergio Última modificación 06/03/2014 15:06

(Los deberes para la siguiente clase son "seguir practicando con Verilog" y preguntándome dudas. Como hoy hemos empezado el tema 2, Sistemas Digitales, debéis avanzar por vuestra cuenta en la lectura del PDF con las diapositivas de este tema. También es bueno pegarle un buen vistazo a las primeras páginas [hasta la 47, no más, excluyendo el apartado 1.5.6] de otro PDF titulado "Apuntes de Sistemas Digitales", disponible en el apartado de "Material complementario" dentro de la carpeta de "Temas" en la web de la asignatura.)

 

 

  • Lo primero que hice fue recordaros que el tema de Verilog ya lo terminamos y que si no se trabaja y se practica con él, cuando lleguen los exámenes vendrán los problemas. Os dije que en la web hay un PDF donde he descrito en Verilog algunos elementos que vamos a ver en la clase de hoy. El enlace directo al PDF es Descripción de registros y RAM síncrona en Verilog pero también podéis encontrarlo en el apartado de Documentos presente en la página de nuestro grupo. Es muy recomendable verlo pues sirve para relacionar el tema anterior (Verilog) con éste que empieza hoy (Sistemas Digitales).
  • Despues de eso, en esta sexta clase, nuestro objetivo principal es empezar con el tema 2, Sistemas Digitales. Nos va a dar tiempo aver las primeras 20 diapositivas del PDF de Sistemas Digitales.
  • En CED, en el primer cuatrimestre se han visto circuitos secuenciales muy sencillos capaces de realizar tareas simples. Ahora, en EdC, vamos a estudiar unos circuitos secuenciales mucho más complejos, los cuales vamos a denominar, en general Sistemas Digitales.
  • Si abordásemos el diseño de un Sistema Digital complejo con las técnicas vistas en CED nos encontraríamos con que la tarea se torna imposible. Por ejemplo, intentar modelar un sistema digital típico con un diagrama de estados para luego implementarlo con un circuito secuencial basado en biestables y circuitos combinacionales sería una tarea imposible de gestionar debido al enorme número de estados que nos aparecerías.
  • Surge la necesidad de dar un salto de nivel y emplear técnicas diferentes para enfrentarnos a Sistemas Digitales complejos. La transparencia 3 nos pone de manifiesto las técnicas empleadas en CED para resolver circuitos complejos y las que vamos a usar en EdC para resolver Sistemas Digitales complejos. Por citar algunas diferencias:
  1. Pasamos a utilizar un nuevo "lenguaje" para expresar el funcionamiento de los sistemas. Trabajamos a "nivel RT" (Register Tranfer) expresando las transferencias de datos entre los registros del Sistema Digital.
  2. Trabajamos con palabras de datos en lugar de con bits individuales.
  3. La estructura del Sistema Digital es siempre Unidad de Control más Unidad de Datos.
  4. Usamos componentes de "mayor tamaño" (registros, ALUs, MUXs, etc.) y lo interconectamos con BUSES en lugar de con simples cables individuales.
  5. La funcionalidad del Sistema Digital se expresa indicando qué "Instrucciones" u "Operaciones" es capaz de realizar.en tñerminos de
  • Un hecho destacable de los Sistemas Digitales que vamos a ver es que todos los elementos "secuenciales" del mismo estarán gobernados por la misma señal de reloj, activa en el mismo tipo de flanco (o el de subida o el de bajada). Por comodidad es habitual que no representemos la señal de reloj, pero no debemos olvidar que todo elemento "secuecial" la necesita para que las modificaciones en el estado de estos elemento se sincronicen con el flanco activo del reloj.
  • En la transparencia 4 vemos la forma correcta de describir formalmente un registro, que es la unidad básica de almacenamiento de información en un Sistema Digital. Los contadores, registros de desplazamiento, etc. no son más que registros con operaciones "especiales" que se desciben de la misma manera que cualquier otro registro.
  1. La representación estructural del registro debe dejar claros los nombres y el tamaño en bits de todas las entradas y salidas del registro, así como el nombre del propio registro y el tamaño del mismo (en bits).
  2. La representación funcional la solemos hacer mediante una tabla. En ella debe quedar claro las operaciones a "Nivel RT" ("Register Transfer") es capaz de realizar el registro y qué valores deben tomar las señales señales de control del registro para realizar cada una de las operaciones.
  • La diapositiva 5 muestra que las operaciones sobre los registros se suelen dividir en dos grupos. Operaciones de lectura y operaciones de escritura. Lo normal es que el registro permita ambos tipos de operaciones y a veces incluso simultáneamente.
  1. Las operaciones de lectura decimos que son "combinacionales" porque en cuanto se activan las señales de control asociadas a esas operaciones, la salida es "inmediata", es decir, podemos "leer" el dato de manera "inmediata", salvo el pequeño retraso propio puertas lógicas del circuito combinacional que regula la operación de lectura.
  2. Las operaciones de escritura en los registros de los Sistemas Digitales que vamos a estudiar decimos que son secuenciales porque son como la escritura en cualquier circuito secuencial síncrono. La orden de escritura en el registro, es decir, la activación de las señales de control que indican que queremos escribir en el registro, debe ser siempre anterior a la llegada del flanco activo del reloj y permacnecer activas hasta la llegada del mismo, pero la escritura no se lleva a cabo en el instante en el que activamos las señales de contro. La escritura se lleva a cabo solo cuando llega el flanco activo y solo si en ese instante siguen activas las señales de control corresponientes.
  • La transparencia 6 muestra como ejemplo la forma corracta de describir un registro con entrada y salida de datos separadas. Destacar que se trata de un registro con salida incondicional. Es decir, no es necesario dar una "orden de lectura" para leer el contenido del registro. Siempre estamos "viendo" el valor del registro en su BUS de salida. Nótese el uso de la flecha <- para expresar las escrituras y el uso del igual = para expresar las lecturas.
  • La transparencia 7 muestra otro ejemplo, más complejo. Se trata de una RAM, que conceptualmente podría considerarse como un conjunto de registros con la limitación de que solo podemos acceder a uno de ellos en cada momento, dependiendo del valor del bus de direcciones (Address Bus), denominado A en este ejemplo. Por eso las escrituras de un dato se expresan como RAM[A] <- D, ya que no se escribe en la RAM entera el valor del bus de datos D, sino que se escribe en la posición especificada por el bus de direcciones (A). Otro aspecto "delicado" en la descripción de la RAM es el hecho de que el bus de datos (D) es bidireccional y sirve para escribir en la RAM pero también para leer de la misma, pero no a la vez. La forma de describir todo esto es la mostrada en la tranparencia. Es importante fijarse bien en ella, estidiarla, comprenderla y sabérsela.
  • La transparencia 8 nos muestra la forma de describir a nivel RT transferencias entre varios registros interconectados junto con subsistemas combinacionales mediante buses. Por ejemplo, el gráfico de la derecha muestra un circuito capaz de escribir en A el resultado de hacer la operación XOR, bit a bit, entre los registros B y C, siempre y cuando la señal de contro X2 esté activada. Esto se describe a nivel RT con la expresión X2:A<-B xor C
  • La transparencia 9 nos muestra algo muy importante. La estructura de un Sistema Digital organizado en Unidad de Control y Unidad de Datos.
  1. En un sistema digital la unidad de datos hace lo obvio, recibir "órdenes" y ejecutarlas al ritmo del reloj. La clave está en entender quién da esas órdenes.
  2. Es la unidad de control la que, en función de la operación que deba realizar el sistema digital, irá suministrando la secuencia de ordenes adecuada a la unidad de control para que, en general, al cabo de unos ciclos de reloj, se haya ejecutado la instrución deseada.
  3. f(x) : A <- G( B, C, ... ) es la forma de expresar que si f(x) es cierto se mete en A el resultado de la operación G sobre B, C... siendo A, B, C... registros y G una operación combinacional entre registros.
  • La diapositiva 10 nos explica la diferencia entre macro-operaciones y micro-operaciones.
  1. El Sistema Digital se diseña para que sea capaz de ejecutar una serie de macro-operaciones o, simplemente, instrucciones. La ejecución de las mismas puede ser una tarea que dure varios ciclos de reloj y en ocasiones la duración de las operaciones no se conoce de antemano, sino que dependerá de diversos factores. Es la unidad de control la que, sin necesidad de intervención del usuario del sistema digital, se encarga de supervisar la ejecución de la macro-operación.
  2. Una micro-operación constan de una o varias transferencias entre registros. Una micro-operación siempre se ejecuta en un único cilco de reloj.
  3. Ejecutar una macro-operación no es más que ejecutar, una tras otra, varias micro-operaciones que, globalmente, consiguen el objetivo perseguido por la macro-operación.
  • La diapositiva 11 nos detalla lo que hace un sistema digital en un ciclo de reloj genérico, llamado K.
  1. Se evalúa la condición f(x) y hasta que f(x) no vale 1 no se hace nada. Cuando vale 1 se dan las "órdenes" adecuadas a la unidad de datos, activando las señales correspondientes.
  2. Las órdenes de "lectura" son ejecutadas de forma inmediata por la unidade de datos, nada más se reciben las señales de control adecuadas.
  3. La órdenes de "escritura" no se ejecutan por la unidad de datos en el momento de recibirlas. Hasta la llegada del flanco activo del reloj no son ejecutadas las "escrituras" en los registros.
  • Una vez hecha esta introducción en la que se ha esbozado lo que es un Sistema Digital, su estructura y la forma que en trabaja la unidad de control y la unidad de datos, pasamos a ver, en líneas generales, los pasos a seguir para diseñar un sistema digital. Esto es lo que muestra la diapositiva 12. Muchos de los pasos son ahora mismo difíciles de comprender, como es lógico, pues los iremos detallando más adelante. No obstante es bueno no perder de vista este esquema de cinco pasos y volver a él y estudiarlo cuando tengamos las cosas más claras. Un término a recordar es el de "registros visibles", que son aquellos que aparecen en las especificaciones del comportamiento del Sistema Digital. La unidad de datos por fuerza debe incluir a los registros "visibles". Un registro "no visible" sería cualquier otro registro que necesitemos inlcuir en la unidad de datos, diferente a los "visibles".
  • Con la transparencia 13 empezamos a tratar el paso 2 del esquema de la transparencia 12. Es decir, la estructura de la unidad de datos, también llamada, como sabemos, unidad de procesado.
  1. La unidad de datos se componde de registros (visibles y no visibles), que son la forma que tenemos de almacenar la información.
  2. También tendremos en la unidad de datos diversos subsistemas combinacionales que nos permitirán procesar la información y hacer operaciones con ella. Estamos hablando de distintos tipos de unidades funcionales como comparadores, ALUs, decodificadores, multiplexores, puertas lógicas de todo tipo, etc.
  3. Todo lo anterior necesita ser interconectado de alguna manera. Es lo que en la transparencia aparece como "bloque de interconexión". Gracias a la adecuada conexión de los distintos elementos, la unidad de procesado es capaz de recibir entradas y devolver las salidas correspondientes. Ya sean datos o señales de control.
  • En la diapositivas 14 y 15 se detalla un poco en qué consiste el "bloque de interconexión", que no es otra cosa que utilizar BUSES (agrupaciones de líneas que transportan bits individuales) para poder mover de un sitio a otro datos mayores (palabras de varios bits). Los buses se BUSES se pueden clasificar de varias formas atendiendo a diversos criterios.
  1. Si nos fijamos en la dirección en la que fluye la información, pueden ser unidireccionales o bidireccionales.
  2. Si prestamos atención al número de "usuarios" del bus, pueden ser dedicados (dos usuarios) o compartidos (más de dos usuarios).
  3. Si tenemos en cuenta el tipo de salida que tienen los elementos conectados al bus, podemos distinguir entre buses "normales" (las salidas de los elementos conectados son "0" o "1") o buses "tri-estado" (las salidas de los elementos conectados al bus pueden tomar el valor "0", el "1" y HI (alta impedancia).
  • En la diapositiva 16 se muestran las especificaciones exactas de una unidad de datos que nos servira como ejemplo concreto ara ilustrar debidamente el uso de los distintos tipos de buses para interconectar los elementos de una unidad de datos de forma que se puedan ejecutar las transferencias requeridas en dichas especificaciones.
  • Las especificaciones de la unidad de datos son simples. Hay 4 registros visibles en la unidad de datos, A0, A1, A2 y A3. La unidad de datos recibe como entrada dios datos de dos bits, D y F, que indican el número del registro que va a ser escrito y el número del registro a ser leido durante la transferencia. Si, por ejemplo, D=2 y A=1, la transferencia a realizar es A2 <- A1. En definitva, el dato F indica el numero del registo fuente y el D indica el número del registro destino.
  • Como no nos dicen el tipo de registro a utilizar, plantearemos el problema tres veces. Una vez por cada tipo de registro, como indica la diapositiva 17. Es muy importante fijarse en esto cada vez que tengamos la necesidad de diseñar una unidad de datos. Cada tipo de registro tiene sus ventajas y sus inconvenientes.
  1. En la diapositiva 18 vemos el primer caso, en el que vamos a usar registros con entradas y salidas separadas, siendo sus salidas de tipo "normal", es decir, no son salidas "tri-estado", son registros con señal de control de escritura pero que no tienen señal de lectura. Al no tener salida "tri-estado", el valor del registro está permamentemente en su bus de salida. Esto requiere el uso de un bus dedicado a la salida de cada registro. Como necesitamos tener la capacidad de conducir a un único sitio la salida de cada uno de los registros, nos vemos obligados a usar un multiplexor. En la salida del multiplexor, cuya señal de selección hemos conectado al dato F, tenemos el valor del dato contenido en el registro fuente. Ese dato se coloca en un bus compartido que conectamos a la entrada de los 4 registros. Tenemos que conseguir que el dato D, de dos bits, sirva para activar la señal de escritura de un único registro. Esto es precisamente lo que hace un decodificador 2 a 4. Recibe el número D y solo actica una de sus 4 salidas, dejando a 0 las tres restantes. A esta solución la llamamos "multiplexada", por razones obvias. El multiplexor es un dispositivos costoso, por lo menos comparativamente, respecto a las soluciones que vamos a ver ahora, que presciden de él y necesitan de menos buses dedicados.
  2. El segundo caso (transparencia 19) hace uso de registros con entradas y salidas separadas, siendo sus salidas de tipo "tri-estado". Esto nos permite unir las saldas de los 4 registros en un único bus compartido. Hay que tener la precacución de que nunca estemos "leyendo" más de un registro, porque de lo contrario más de u registro estaría volcando su valor al bus, generándose un "conflicto", pues no podemos poner a la vez un bus a dos valores distintos. Esto se consigue muy facil con un decodificador 2 a 4 cuya entrada sea el dato F. De las 4 salidas del DEC, solo una se activará. Esas salidas están conectadas a la señal de lectura de cada registro, de forma que está garantizado que nunca se leen dos registros a la vez. El problema de llevar el dato al registro destino correcto se resuelve igual que antes, conectando el bus a la entrada de los 4 registros y usando un DEC con entrada D y salidas conectadas a las señales de escritura de los registros. Hemos usado un único bus compartido y no hemos necesitado multiplexores.
  3. En el tercer caso (transparencia 20) trabajaremos con registros que tienen un único bus bidireccional de entrada y salida, por lo que obviamente se trata de un bus "tri-estado". La solución se parece mucho a la anterior. Se usan dos decodificadores y un único bus, que en este caso es bidireccional. Nótese que físicamente un bus unidireccional es igual que uno bidireccional. Lo que los diferencia es que los elementos conectados al bus unas veces actúan como "fuente" de datos y otras como "destino" de los datos. Aunque este ejemplo aparenta lo contrario, en general los registros con entrada y salida a través de un único bus bidireccional dan lugar a unidades de datos que tardan más ciclos de reloj y requieren de más registros "extra" que las unidades de datos que usan registros con entradas y salidas separadas (sean o no "tri-estado"). Esto es obvio si pensamos que los de enradas y salidas separadas pueden ser leídos y escritos en un único ciclo de reloj, mientras que los primeros no pueden ser escritos y leídos en el mismo ciclo puesto que tienen un solo bus que "saca" información del registro o la "mete", pero no las dos cosas a la vez.

 

Acciones de Documento