Paso 4. Simulación funcional del diseño
6. Práctica 6:Camino de datos
Introducción 83 Objetivos 83 Desarrollo de la práctica 84 Multiplicador binario 84
Diseño de la ruta de datos del multiplicador binario de 4 bits 84 Diseño de la unidad de control del multiplicador binario de 4 bits 87 Diseño del multiplicador binario de 4 bits 90
Realización práctica 90
Implementación de la unidad de control 91 Implementación del camino de datos 91 Implementación del multiplicador de 4 bits 92 Anexo 93
Autocuestionario (a rellenar ANTES de la sesión de laboratorio) 94
Cuestionario de laboratorio (a rellenar durante la sesión de laboratorio) 94
Introducción
Los caminos datos se emplean en todas las implementaciones de procesadores estándar y de ASIC (circuitos integrados de propósito específico) para realizar cálculos numéricos complejos y manipular datos. Un camino de datos consta de elementos de memoria temporal, además de unidades aritméticas, lógicas, y de desplazamiento.
En estos caminos de datos tiene lugar la ejecución de algoritmos bajo la supervisión de la unidad de control. Una unidad de control no es más que la implementación de una máquina de estados finitos en la que, en cada estado, dependiendo de los valores de la señales provenientes del camino de datos o externas, se produce la correcta activación de las señales de control del camino de datos.
En esta práctica se diseñará una unidad de control para un camino de datos que realizará la operación de multiplicación binaria.
Objetivos
Los objetivos de esta práctica son:
2. Aprendizaje de nuevas funcionalidades de la herramienta de simulación. 3. Utilización de las técnicas de modularización y jerarquización para el diseño
de sistemas complejos. Desarrollo de la práctica
El desarrollo de esta práctica consta de dos pasos: en el primero, tras un trabajo previo de diseño personal en papel, se implementa la unidad de control; en segundo lugar, se captura el esquema del camino de datos propuesto en este guion y posteriormente ambas partes se unen para construir el multiplicador.
Multiplicador binario
Resulta complejo realizar el diseño y posterior implementación de un circuito digital que realice la operación de multiplicación binaria usando técnicas exclusivamente combinacionales. En cambio, si se utilizan técnicas secuenciales el proceso se simplifica bastante.
En general, aplicando técnicas de diseño de circuitos secuenciales es posible trasladar, la mayoría de las veces, fácilmente una especificación algorítmica a un circuito digital que la implemente.
La Figura 6-1 es un ejemplo de algoritmo de multiplicación mediante sumas iterativas. Este algoritmo dista mucho de ser óptimo según criterios de coste y velocidad, pero en cambio es muy sencillo de implementar en un circuito digital. En primer lugar vamos a examinar el algoritmo para detectar qué componentes estructurales harían falta para su implementación en un circuito digital. Este paso recibe el nombre de diseño de la “ruta o camino de datos”.
En segundo lugar diseñaremos una “unidad de control” para esa ruta de datos. La funcionalidad de la unidad de control es generar convenientemente las señales de control para esa ruta de datos de manera que la multiplicación tenga lugar correctamente. Esta unidad de control será en este caso simplemente una máquina de estados finitos tipo Moore.
Diseño de la ruta de datos del multiplicador binario de 4 bits
Examinando el algoritmo de multiplicación binaria descrito en la Figura 6-1 detectamos que necesitamos tres “lugares” o registros de 4 bits para almacenar datos. Un registro de 4 bit para la variable CX, otro para CY y uno más para P de 8 bits.
CX = X; CY=Y; P ='0'; ¿CY='0'? P = CX + P; CY = CY -1; Fin Inicio NO SÍ Un algoritmo de multiplicación: P = X x Y Estado S0 Estado S1 Estado S2
Figura 6-1 Un algoritmo de multiplicación.
Las operaciones realizadas en el algoritmo de multiplicación son sumas y decrementos. Debe ser posible realizar la suma entre el contenido del registro CX y el contenido del registro P y guardar nuevamente el resultado en P. También debe ser posible decrementar en una unidad el registro CY. Por tanto, necesitamos una ALU. Esta ALU debe ser de 8 bits ya que en general el resultado de multiplicar dos números binarios de n bits en un número binario de 2n bits.
Una posible ruta de datos implementada con componentes elementales de la biblioteca de la herramienta de captura de esquemáticos con todas esta funcionalidades puede verse en la Figura 6-2. Esta misma ruta de datos se muestra a mayor escala en la Figura 6-11.
Figura 6-2 Ruta de datos para la multiplicación binaria de números de 4 bits. El registro CX es el componente de la biblioteca “FD4RE”. Es un registro de 4 bits integrado por un bloque con 4 biestables D disparados por flanco y con el terminal de entrada síncrona R (reset) siempre inactivo.
El registro CY es el componente de la biblioteca “CB4X2”. Es un registro contador de 4 bits bidireccional, es decir, puede contar de forma ascendente o descendente. Posee funcionalidad para cargar el valor presente en las señales de entrada D[3:0] y también tiene el terminal de entrada síncrono R (reset) siempre inactivo.
El registro P es el componente de la biblioteca “FD8RE”. Es exactamente igual que el registro CX, pero con 8 bits. A diferencia del registro CX, el registro P no tiene la señal de entrada síncrona R (reset) siempre inactiva, sino que en su lugar está conectado el terminal de entrada RSP que controlará la puesta a cero de este registro. Además, esta ruta de datos utiliza la ALU de 8 bits “ADD8” para calcular la suma de los registros CX y P, almacenando el resultado en el registro P.
Nombre Tipo Funcionalidad
CLK Entrada Señal de reloj. En el flanco de subida de la señal CLK ocurren los cambios en los registros.
LDX Entrada Carga el contenido del bus X en el registro CX.
LDY Entrada Carga el contenido del bus Y en el registro contador CY. LDP Entrada Carga la salida de la ALU en el registro P.
RSP Entrada Pone a cero el registro P.
DCY Entrada Decrementa el registro contador CY.
CYZ Salida Indica cuando el registro contador CY es cero. Tabla 6-1 Funcionalidad de las señales de control del camino de datos.
En la Tabla 6-1 está descrito el comportamiento de las señales de control del camino de datos de la Figura 6-2.
Así por ejemplo, para realizar las operaciones dentro del bloque etiquetado como estado S1 en el organigrama de la Figura 6-1, es suficiente con activar las señales LDX, LDY y RSP. Para realizar las operaciones descritas en el bloque con nombre estado S2 basta con activar las señales LDP y DCY.
El comportamiento de esta ruta de datos puede abstraerse en un bloque funcional como el representado en la Figura 6-3. Este bloque funcional exporta únicamente los valores de las entradas y las salidas de la ruta de datos correspondiente al multiplicador binario de 4 bits.
Figura 6-3 Bloque funcional del camino de datos para el multiplicador binario de 4 bits.
Para completar el diseño y que se realice la operación de multiplicación, es necesario que las señales de entrada tomen los valores adecuados, en función de qué valores vayan teniendo las señales de salida.
El componente encargado de activar y desactivar las señales de control es la unidad de control y su comportamiento se especificará mediante un diagrama de estados.
Diseño de la unidad de control del multiplicador binario de 4 bits
La especificación del comportamiento de la unidad de control para el camino de datos de la Figura 6-3 puede verse en la Figura 6-4.
Figura 6-4 Máquina de estados finitos para la especificación de la unidad de control.
Consta de tres estados: S0, S1 y S2, y además de manejar las señales del camino de datos tiene otras tres señales más: RST (reset), START y DONE.
La señal de entrada RST lleva a la máquina al estado inicial. En el instante de tiempo cero el estado inicial es aleatorio, los estados de los biestables pueden ser cualesquiera y es por ello que antes de comenzar a utilizar el circuito de multiplicación es necesario un pulso en la señal de RST que lleve el circuito al estado S0.
La señal de entrada START indica a la unidad de control que debe comenzar a realizar una operación de multiplicación y que en el siguiente pulso de reloj los datos a multiplicar X e Y van a estar disponibles en los buses de entrada del camino de datos.
Finalmente, la señal DONE indica que la operación de multiplicación ha finalizado y que el resultado está en el bus de salida P. Esta señal es necesaria porque el número de ciclos que tarda en realizarse la operación de multiplicación no es constante, depende de los operandos. En ausencia de esta señal debería esperarse siempre el número máximo de ciclos.
Figura 6-5 Realización de una operación de multiplicación.
La Figura 6-5 muestra la secuencia de activación de las señales en la unidad de control del circuito de multiplicación. En primer lugar, la activación de la señal de RST, lleva a la unidad de control al estado S0. A continuación, la activación de la
señal de START indica que la operación de multiplicación tenga lugar. Tras varios ciclos de reloj la unidad de control activa la señal de DONE para indicar que la operación ha finalizado.
El diagrama de estados de la Figura 6-4 especifica todo el control necesario para la operación de multiplicación.
En esta figura, las acciones están dibujadas dentro de un recuadro fuera de los estados, a diferencia de los diagramas habituales, simplemente por razones de espacio.
El diagrama está capturado con una herramienta que soporta el lenguaje de descripción de hardware VHDL. En este lenguaje los operadores de asignación y de igualdad son los símbolos “<=” y “=”, respectivamente, y de aquí su uso para especificar las operaciones en el diagrama.
En el estado S0, que es el estado inicial o de partida de la máquina de estados finitos, todas las líneas de control están inactivas a excepción de la señal de salida DONE que indica que una operación ha terminado. La señal DONE está activa en el estado S0 porque S0, además de ser el estado inicial, es también el estado final, y en el estado final debe estar activa para indicar el fin de la operación de multiplicación. Cuando la señal de entrada START es activada ocurre una transición al estado S1. En este estado se activan las señales LDX, LDY y RSP que ocasionan la carga de los registros CX, CY y la puesta a cero del registro P. Además DONE está inactiva. Una vez en el estado S1, si el registro CY es cero la operación ha terminado, puesto que esto quiere decir que estamos multiplicando por cero. Por el contrario, si el registro CY no es cero ocurre una transición al estado S2.
En el estado S2 de manera iterativa se va acumulando en el registro P, el contenido del registro CX, tantas veces como indica el contenido del registro CY. Esto se realiza con la transición que nos hace ir una y otra vez a S2 siempre que CYZ sea igual a cero.
Al final ocurrirá una transición al estado S0 cuando tras los decrementos oportunos CY alcance el valor cero.
El símbolo indica la activación asíncrona de la señal de RST. Significa que, sin depender de la señal de CLK, la máquina secuencial debe ir al estado S0. En la implementación de la unidad de control se usarán las señales de PRESET y CLEAR de los biestables para añadir este comportamiento.
Diseño del multiplicador binario de 4 bits
Figura 6-6 Bloque funcional de la unidad de control del multiplicador binario de 4 bits.
Una vez diseñados el camino de datos y la unidad de control, para finalizar el diseño del multiplicador binario será únicamente necesario conectar los diagramas de bloques de la Figura 6-3 y de la Figura 6-6, tal y como muestra la Figura 6-7.
Figura 6-7 Unidad de control y camino de datos del multiplicador binario de 4 bits. En la Figura 6-7 el único detalle significativo es el hecho que las señales de reloj de la unidad de control y del camino de datos están invertidas una respecto de la otra. Esto es así ya que los cambios de estado ocurren en la transición positiva del reloj y por tanto el funcionamiento del camino de datos debe producirse en las transiciones negativas, lo cual es equivalente a invertir la señal de reloj conectada a la ruta de datos.
Realización práctica
La realización práctica consiste en la implementación de la unidad de control a partir de un diseño propio del alumno, la captura del esquemático del camino de datos, la simulación de ambos módulos de manera independiente y posteriormente la unión de los módulos para realizar la operación de multiplicación.
Una característica del programa, que resulta muy útil para depurar la máquina de estados, es la posibilidad de usar las letras del teclado como estímulos.
Para ello picamos es la señal en primer lugar para seleccionarla y posteriormente en la letra que deseamos asociar a la señal. Por ejemplo para asociar la señal RST con la letra r, basta con picar en la señal de RST en la ventana de simulación y luego picar con el ratón en la letra r en la ventana de estímulos. La Figura 6-8 muestra las señales RST y START asociados a las letras r y s. Para cambiar los valores de los estímulos basta pulsar en el teclado las teclas “r” o “s”. Por cada pulsación la señal cambiará su valor desde el nivel alto al nivel bajo o viceversa.
Figura 6-8 Ventana con estímulos asociados a teclas.
Implementación de la unidad de control
Para la realización de este apartado es necesario que el alumno realice una propuesta de diseño de unidad de control que implemente el control especificado en la Figura 6-4, y que la traiga en papel para la primera sesión de laboratorio de esta práctica. El tipo de biestable y la codificación de estados son arbitrarios.
Realiza la simulación que consideres oportuna cara a verificar que el diseño propuesto funciona correctamente y finalmente crea una macro para este diseño.
Implementación del camino de datos
Figura 6-9 Símbolo GND.
Captura el camino de datos de la Figura 6-2. En este esquema el símbolo etiquetado con “GND” corresponde al símbolo GND de la Figura 6-9.
Realiza la simulación que consideres oportuna cara a verificar que el diseño propuesto funciona correctamente y finalmente crea una macro para este diseño.
Implementación del multiplicador de 4 bits
En este apartado debes establecer las conexiones entre el camino de datos y la unidad de control, tal y como indica la Figura 6-7.
Realiza la simulación que consideres oportuna cara a verificar que el diseño propuesto funciona correctamente.
La Figura 6-10 muestra el resultado de la simulación para la multiplicación de los números X=6 e Y=4 con el resultado de P=24. En esta simulación también se muestra el secuenciamiento de las señales de control así como las señales de estado.
Figura 6-10 Resultado de la simulación de la multiplicación entre los números X=6 e Y=4.
Anexo
Autocuestionario (a rellenar ANTES de la sesión de laboratorio) 1. Especifica la implementación de la unidad de control. Esta pregunta pretende
que con profusión especifiques en papel antes de comenzar la realización en laboratorio el tipo de biestable que utilizarás, el circuito combinacional para realizar la transición al estado siguiente, así como el circuito combinacional que produce la salida.
Cuestionario de laboratorio (a rellenar durante la sesión de laboratorio)
1. ¿Cuántos ciclos de reloj tarda en realizarse una multiplicación?
2. ¿Qué mejoras podríamos introducir para que la multiplicación fuese más rápida?
3. ¿Qué ocurre al activar la señal de reset a mitad de una multiplicación? 4. ¿Qué números tardan más en multiplicarse?
5. ¿Qué modificaciones son necesarias para multiplicar números en complemento a dos?
6. ¿Por qué ha sido necesario utilizar un sumador de 8 bits si tanto X como Y son operandos de 4 bits?
7. ¿Funciona el circuito en una simulación con retardo unitario de 1ns y periodo de reloj de 10ns? ¿Por qué? ¿Qué debes modificar para que el circuito funcione?
Errores más frecuentes
Índice
Errores generales 95
Errores en el editor esquemático 96 Errores en el simulador 96
En este capítulo están descritos los errores más frecuentes, así como algunas guías para evitarlos.
Los errores están clasificados en tres categorías: Errores generales, Errores en el editor esquemático y Errores en el simulador. En la categoría Errores generales están los errores que tienen que ver con el uso del gestor de proyectos. En la categoría Errores en el editor esquemático están lo errores más frecuentes cuando usamos la herramienta para la captura de esquemas y en la categoría Errores en el simulador, los errores mas habituales cuando utilizamos la herramienta de simulación. Las situaciones descritas en las dos últimas categorías están muchas veces interrelacionadas y deberían aparecer en algunos casos en ambas categorías, ya que muchos errores en la simulación son consecuencia directa de un mal uso de la herramienta de captura de esquemas, aún así aparecen en una sola de ellas simplemente por mayor facilidad de búsqueda.
Errores generales
1. Para nombrar proyectos, macros, o subdirectorios no deben utilizarse identificadores con más de 8 caracteres. Esto es aplicable a todos los nombres en el camino completo, así por ejemplo, en c:\<directorio>\<nombre de proyecto> el campo <directorio> y el campo <nombre de proyecto> tienen que tener como máximo 8 caracteres de longitud.
2. Al copiar un proyecto a otro directorio no debe olvidarse copiar el fichero con extensión .pdf. Es imprescindible copiar el directorio del proyecto así como el fichero .pdf a la nueva localización. Para copiar un proyecto es preferible usar la opción FILE->COPY PROJECT en el menú principal en la ventana del gestor de proyectos a usar las herramientas del sistema operativo para copiar ficheros. Otra posibilidad también válida es usar la característica ARCHIVE, esto pondrá toda la información del proyecto en un fichero comprimido formato zip.
3. Al copiar un proyecto a un disquete utilizando la opción FILE->COPY PROJECT la herramienta avisa que el disquete no tiene espacio suficiente para guardar el proyecto. Esta situación suele ocurrir cuando intentamos guardar en un disquete proyectos en los cuales hay simulaciones con tiempos de simulación grandes. Es este caso puedes utilizar la característica ARCHIVE para guardar el proyecto de manera comprimida o bien eliminar del proyecto los ficheros de simulación que genera automáticamente el
simulador (fichero con extensión .tve). En el caso de persistir el error prueba a utilizar un disquete vacío.
Errores en el editor esquemático
1. El editor de esquemáticos muestra una hoja de diseño vacía en lugar del diseño capturado. Una forma de encontrar el diseño es picar en el botón de zoom de área completa en la barra de herramientas principal, de esta manera toda la hoja de diseño aparece en la ventana del esquemático. Es posible hacer zoom de un área particular picando en primer lugar en el botón
, luego pica con el ratón en el vértice superior izquierdo de un recuadro imaginario conteniendo la parte del esquemático que se quiere ampliar y posteriormente en la esquina inferior izquierda de ese recuadro. El recuadro marcado ocupará ahora toda la hoja del esquemático.
2. Cuando un símbolo está situado cerca de otro, ambos parecen estar interconectados, pero no es así. Los símbolos deben conectarse siempre con