Proyecto III: Multiplicador secuencial
Instituto Tecnológico de Costa Rica
EL 3307: Diseño Lógico
Grupo 20
Profesor: Ing. Kaleb Alfaro Badilla
Integrantes
- Azofeifa Jiménez Alonso
- Luna Herrera José David
- Vargas Arce Andrés
I Semestre 2023
Descripción general
El objetivo fundamental de este proyecto es introducir al estudiante a la implementación de algoritmos por medio de máquinas de estados complejas, a partir de elaborar una implementación de un diseño digital en una FPGA, construir un testbench básico para validar las especificaciones del diseño e implementar el algoritmo de Booth con una Máquina de estados con técnicas avanzadas
Representación de una Nexys 4 DDR
Circuito que implementa la ruta de datos para el algoritmo de Booth
Subsistema de lectura.
- Este bloque adquiere los operandos A y B de 8 bits cada uno para realizar la operación de multiplicación.
- Los operandos A y B se interpretarán como enteros sin signo.
- La entrada del código deberá ser capturada y sincronizada con el sistema principal por medio de un
circuito antirebote de al menos 4 etapas (4 FF en cascada) por switch.
- El circuito esperará ante el accionar de un push button.
- El circuito no iniciará otra operación hasta que el push button vuelva a su estado inicial (cero).
Antirebote del subsistema de lectura
Diagrama de bloques Subsistema de lectura.
Subsistema de cálculo de multiplicación
- Este sistema recibe los operandos A y B del subsistema de lectura.
- La operación de multiplicación se iniciará cuando el subsistema de lectura le indique a este subsistema
que los operandos son válidos por medio de una señal de inicio.
- El cálculo de multiplicación se realizará de manera iterativa por medio del Algoritmo de Booth
- El bloque indicará que el resultado es valido por medio de una señal de listo (ready)
- Debe de implementar este sistema siguiente la metodología de separar la ruta de control de la ruta de
datos.
Diagrama de subsistema cálculo de multiplicación.
Algoritmo de Booth
El algoritmo de Booth es un método para realizar la multiplicación binaria de dos números con signo. El algoritmo se basa en el uso de un registro de desplazamiento que contiene los operandos y el resultado parcial. El algoritmo se repite un número fijo de veces, dependiendo del número de bits de los operandos. En cada iteración, se realiza una operación aritmética según el valor de los dos últimos bits del registro, y luego se desplaza el registro una posición a la derecha. El algoritmo de Booth es más eficiente que el método tradicional de suma y desplazamiento, ya que puede manejar casos especiales como el cero y los números negativos.
Funcionamiento del Algoritmo de Booth
El algoritmo funciona de la siguiente manera:
- Se inicializa el registro de desplazamiento con el multiplicando, el acumulador con cero y un bit extra con cero.
- Se compara el bit extra con el bit menos significativo del registro de desplazamiento. Si son iguales, se salta al paso 4. Si son diferentes, se realiza una de las siguientes operaciones según el valor del bit extra:
- Si el bit extra es 0 y el bit menos significativo es 1, se suma el multiplicador al acumulador.
- Si el bit extra es 1 y el bit menos significativo es 0, se resta el multiplicador al acumulador.
- Se actualiza el bit extra con el valor del bit menos significativo del registro de desplazamiento.
- Se desplaza el registro de desplazamiento y el acumulador una posición a la derecha, conservando el signo del acumulador.
- Se repite los pasos 2 a 4 hasta que se hayan realizado tantos desplazamientos como bits tenga el multiplicando.
- Se devuelve el contenido del acumulador como resultado de la multiplicación.
Diagrama Multiplicador de Booth
Ejemplo Multiplicador de Booth
Subsistema de despliegue
- Al finalizar la operación, el sistema mostrará los resultados en los LEDs disponibles (16).
- Lo que se muestra en los LEDs solamente se actualiza al finalizar una operación. No se debe mostrar
ningún valor intermedio.
Imagen de la distribución de los componentes en la NEXYS 4 ddr
Diagramas de estado de las FSM diseñadas
Se realizaron dos diagramas de estados finitos (FSM) con el objetivo de factorizar el funcionamiento de los mismos, para representar gráficamente el comportamiento del sistema. Para este proyecto se utilizó el FSM de Moore en el cual las salidas dependen sólo del estado actua. Las transiciones entre estados se representan por flechas con una etiqueta que indica la condición o evento que provoca el cambio de estado. Esto con el fin de visualizar fácilmente el flujo de control y las acciones que se realizan en cada estado del sistema.
Diagramas de Estado del tiempo de espera
Diagramas de Estado del algoritmo de multiplicación
Ejemplo y análisis de una simulación funcional
Obtenención de la simulacion a nivel RTL a partir de la simulación del Testbench
Simulación de las entradas
Simulación del main
Análisis de principales problemas hallados durante el trabajo y de las soluciones aplicadas.
• Una inadecuada gestión del tiempo para desarrollar de manera eficiente el proyecto con lo cual se generó un plan de trabajo para ir trabajando mediante cumplimiento de objetivos.
• Entendimiento del correcto funcionamiento del Algoritmo de Booth con el cual se realizó una investigar de manera detallada sobre el mismo y resolviemdo ejemplos prácticos.
• No se logró la correcta implementación de las salidas en los LED´s ya que fue imposible conectar el módulo correspondiente a dichas salidas principalmente por una falta de información sobre el mismo y por custión de tiempo.
• Banco de pruebas y testbenches requeridos: Otra inconveniente que se presentó fue durante las primeras Simulaciones RTL, no se estaban generaban correctamente los resultados correctos deseados, este error generó atrasos en la realización de las pruebas necesarias.