0% encontró este documento útil (0 votos)
19 vistas15 páginas

Implementación de ALU en FPGA con ILA

El informe detalla la implementación de una ALU en un FPGA utilizando IP cores y la herramienta ILA para depuración. Se describe el proceso de diseño, mapeo y verificación del funcionamiento del ALU, así como la utilización de la tarjeta BASYS 3 para pruebas. Los resultados confirman que las operaciones lógicas y aritméticas funcionan correctamente, facilitando la identificación de errores internos mediante el monitoreo de señales críticas.

Cargado por

cristian
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas15 páginas

Implementación de ALU en FPGA con ILA

El informe detalla la implementación de una ALU en un FPGA utilizando IP cores y la herramienta ILA para depuración. Se describe el proceso de diseño, mapeo y verificación del funcionamiento del ALU, así como la utilización de la tarjeta BASYS 3 para pruebas. Los resultados confirman que las operaciones lógicas y aritméticas funcionan correctamente, facilitando la identificación de errores internos mediante el monitoreo de señales críticas.

Cargado por

cristian
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

SUNIVERSIDAD INDUSTRIAL DE SANTANDER

ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES


SISTEMAS DIGITALES I

INFORME PROYECTO EXTRA-CLASE

PRESENTADO POR:
CRISTIAN FELIPE ALBARRACIN RINCON – 2194244

PRESENTADO A:
[Link]. Sergio A. Abreo C.

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELAS DE INGENIERIA ELECTRICA, ELECTRONICA Y TELECOMUNICACIONES
2024
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

Introducción

En sistemas digitales, los FPGA son herramientas clave que permiten implementar arquitecturas
personalizadas para una amplia gama de aplicaciones. Uno de los componentes fundamentales
que se utilizan en estos dispositivos son los IP cores, módulos de diseño predefinidos que facilitan
la construcción de sistemas complejos al integrar bloques funcionales probados y optimizados. El
uso eficiente de los IP cores en un entorno FPGA requiere habilidades en diseño digital, mapeo de
recursos y herramientas de depuración avanzadas.

El presente trabajo tiene como propósito implementar un ALU (UNIDAD LOGICO ARITMETICA)
proporcionado por el profesor en una región específica del FPGA, aplicando metodologías de
diseño y validación. La depuración se llevará a cabo mediante la herramienta ILA (Integrated Logic
Analyzer), que permitirá monitorear señales internas del sistema en tiempo real.

Objetivo general:

• Implementar el Ipcore definido por el profesor en un espacio del FPGA previamente


definido y usar la ILA para depuración.

Objetivos específicos:

• Identificar los elementos digitales básicos que componen al Ipcore

• Comprender el funcionamiento del IPCORE.

• Mapear el IPCORE al área del FPGA definida.

• Verificar el correcto funcionamiento y desempeño del IPCORE con la ILA.


SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

METODOLOGIA

Herramientas Utilizadas:

• Software: Vivado (versión específica).

• Hardware: Modelo de FPGA utilizado (Artix-7).

• Tarjeta basys 3

Para iniciar la elaboración del proyecto, se realizaron análisis exhaustivos de los temas vistos durante el
semestre 2024- 2 como lo son elementos combinacionales, circuitos secuenciales y una habilidad previa
utilizando el software vivado y todos sus componentes.

1. DISEÑO ESCRITO ALU


Tabla 1. Descripción ALU

ALU
F A B Y
0 0 0 0011 1000 A and B 0000
0 0 1 0011 1000 A or B 1011
0 1 0 0011 1000 A+B 1011
0 1 1 1000 1000 A=B 0001
1 0 0 0011 1000 A and ~B 0011
1 0 1 0011 1000 A or ~B 0111
1 1 0 0011 1000 A–B 1011
1 1 1 1000 0011 A>B 0001
Fuente: Autor

Los colores iguales demuestran que existe una similitud de componentes, la cual se pueden asociar de tal forma
que el bit más significativo de F decida qué operación se realizara.

Las entradas A y B son suposiciones para la arquitectura del ALU en el cual al realizar las operaciones necesarias y
dependiendo de los valores de F observamos el valor de la salida Y

ELEMENTOS PARA LA ARQUITECTURA

Mux -2a1, mux -4 a 1, codificador.


SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

Se llevó a cabo el diseño lógico del sistema ALU con el propósito de obtener una visión clara y
estructurada de los cables y componentes combinacionales que lo conforman. Esta planificación
resulta fundamental para definir de manera precisa la arquitectura de la ALU y garantizar que cada
operación esté correctamente implementada en términos de hardware. Además, esta estrategia
facilita significativamente la posterior descripción del circuito en lenguaje de descripción de
hardware (HDL), asegurando un desarrollo más eficiente y ordenado en etapas posteriores.

2. DESCRIPCION DE ALU EN VIVADO


SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

Se realiza la descripción HDL de cada elemento que compone el ALU creando módulos de diseño
respectivamente, con sus respectivas cantidades de bits, para luego proceder a unir cada
componente en un solo modulo llamado ALUU.

Se agregan registros internos que contribuyen al funcionamiento de la ILA, ya que necesita una
señal de reloj para realizar esta operación. Verificamos que nuestro archivo esquemático contenga
cada componente del ALU que describimos de forma escrita, entradas y salidas etc.

3. UBICACIÓN DE RECURSOS DENTRO DE LA FPGA

La propiedad DONT_TOUCH se utiliza para indicar que


elementos no deben ser optimizados o eliminados en
sintesis o implementacion, ya que cada uno de estos
son los que conforman el ALU y podrian ser
remplazados por la ILA.

El pblock (placement block) es una region utilizada para especificar donde se deben ubicar las
celdas o instancias que componen el pblock en este caso el LAU en X1 Y1. La propiedad IS_SOFT
establecida en ‘FALSE’ impone restricciones estrictas sobre donde se debe hacer el place,
obligando a poner los bloques dentro del pblock.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

Se asignaron los switches botones y leds para cada una de las variables, este caso se utilizan
botones y switches para representar las entradas A, B, F y leds para representar la salida Y, todo
esto para la tarjeta basys 3.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

La imagen representa una vista física del FPGA, dividida en cuadrículas que corresponden a
bloques lógicos y recursos específicos del chip. Las etiquetas como X0Y0, X0Y1, etc., indican las
coordenadas físicas dentro del FPGA. La caja púrpura con la etiqueta "UBICACIÓN” resalta la region
donde se espera implementar el IP de la ALU. La agrupación azul clara dentro de esta área indica
los SLICEs recursos utilizados (bloques de lógica configurables) que Vivado ha asignado para
implementar los componentes del ALU. Esto muestra que los constraints aplicados en el archivo
XDC se han respetado, y el diseño del ALU está efectivamente localizado en las coordenadas físicas
definidas X1 Y1.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

4. IMPLEMENTACION DE ILA

Una vez tengamos el ALU ejecutamos Run synthesis que es el primer paso importante del flujo de
diseño. Este proceso convierte el código en lenguaje de descripción de hardware (HDL) en un
modelo lógico optimizado que puede entenderse y manipularse dentro del FPGA.

En este paso se puede observar que para poder implementar la ILA se necesita una señal de reloj,
que pueda asociar las entradas y salidas del circuito. por esto diseña un registro síncrono que
depende una señal de reloj el cual va a ser común para todos los cables y salidas del circuito,
además de que se inicializa en cero.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

Una vez que se implementado el run synthesis empezamos con la


implementación de "Set Up Debug" que es una herramienta que
permite integrar señales internas del diseño en el flujo de
depuración utilizando módulos de Instrumentación Lógica Integrada
(ILA). Este proceso es fundamental para monitorear, capturar y
analizar el comportamiento de señales internas del FPGA en tiempo
real, sin necesidad de agregar hardware externo.

Agregamos las redes que vamos a depurar o vamos a visualizar a la hora de conectar la tarjeta,
estas variables se declararon previamente, inicialmente declare las entradas A, B, F y salida, pero
también es necesario agregar las salidas de los demás elementos. Las señales seleccionadas en el
diseño HDL son conectadas al módulo ILA. Estas sondas que permiten capturar los valores de las
señales en tiempo real.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

Define la cantidad de muestras que el núcleo ILA


puede capturar y almacenar para las señales
monitoreadas.

Por ejemplo, si monitoreas una señal de 4 bits


con una profundidad de 1024, el ILA puede
capturar hasta 1024 valores consecutivos de esta
señal.

Una mayor profundidad permite analizar


períodos más largos de datos, pero consume más
recursos en el FPGA.

Generate Bitstream es la etapa final del flujo de diseño. Este proceso convierte todo el diseño
implementado en un archivo binario que puede cargarse y ejecutarse en el FPGA. Este archivo
binario se conoce como bitstream y contiene la información necesaria para configurar el hardware
del FPGA de acuerdo con tu diseño.

Como paso final iniciamos ¨Program Device" es el proceso mediante el cual el diseño final,
representado en un archivo bitstream (.bit), se carga físicamente en el FPGA para que este pueda
ejecutar la funcionalidad especificada en tu diseño. Este es el paso donde realmente configuras el
hardware del FPGA para que funcione según lo que definiste en tu código HDL (VHDL o Verilog).
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

El diseño final me proyecta la ILA dentro del esquematico ya estipulado del ALU, así como los
registros necesarios para cada bit de las entradas y diversos componentes necesarios para verificar
el correcto funcionamiento.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

Al terminar el proceso, la ILA edita el archivo de constraints. Este script configura el ILA para
depurar y analizar señales importantes en el diseño las entradas (A, B) y salidas (Y) de la ALU, los
Registros internos (reg_F) Para observar cómo se almacenan y procesan los datos y la relación con
el reloj (clk) para que todas las capturas estén sincronizadas con el reloj del diseño.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

RESULTADOS Y ANALISIS DE RESULTADOS

Unos de los principales objetivos de este proyecto es verificar el correcto funcionamiento del ALU
por medio del ILA. Una vez teniendo todo listo se procede a conectar la tarjeta BASYS 3

La siguiente tabla representa el valor de las entradas estipuladas por medio de los switches de la
tarjeta BASYS 3 y el valor hipotético que debería salir en W5 Y W6

A B W2 F W Y
0011 1000 1000 000 W5 (0000) 0000 (A and w2)
0011 1000 1000 000 W6 (1011) (A or w2) 0000

ANALISIS: Se seleccionaron las señales internas W5 y W6 como salidas para monitorear dentro del
módulo ALU. Estas señales son generadas de manera interna en el diseño y no están disponibles
directamente como salidas externas. Si no contáramos con la herramienta ILA, solo podríamos
observar la señal de salida final Y, lo que dificultaría la detección de posibles fallas internas.

Monitorear señales internas, como W5 y W6, es de gran importancia, ya que permite identificar
errores o fallas dentro de los procesos internos del circuito de una manera más rápida y precisa. Al
analizar estas señales, se pudo verificar que las operaciones AND y OR realizadas entre las
entradas A y W2 funcionan correctamente, comprobando que los resultados internos son
consistentes con los valores esperados para las entradas suministradas.

Esta observación es clave para garantizar la correcta funcionalidad del ALU a nivel interno y
externo, facilitando la depuración en caso de inconsistencias.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

A B W2 F W Y
0011 1000 1000 010 W7 1011 (W2+A)
3 8 8 11

En la imagen anterior nos enfocamos en la salida W7 que representa una suma lógica en binario
esta suma se da entre A Y w2 ya que la señal de selección F[2] es 0. la suma entre 0011(decimal 3)
y 1000(decimal 8) es 1011(decimal 11) que es el valor que deberíamos esperar a la hora de
ejecutar el ILA. De forma correcta nos muestra la implementación.
SUNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERIAS ELECTRICA ELECTRONICA Y TELECOMUNICACIONES
SISTEMAS DIGITALES I

Tarjeta BASYS 3 configurada para los ejemplos anteriores donde se identifican la señal de salida (Y)
por medio de los leds y entradas A B y F por medio de switches.

CONCLUSIONES

La implementación del módulo ALU en el FPGA BASYS 3 se realizó con éxito, validando que las
operaciones lógicas y aritméticas (como AND, OR y suma) funcionan correctamente en
simulaciones y pruebas prácticas. Esto confirma que el diseño cumple con los requisitos
funcionales establecido.

La integración del núcleo ILA (Integrated Logic Analyzer) permitió monitorear señales internas
críticas, como W5 y W6, las cuales no están expuestas como salidas directas del diseño. Esto
optimizó la depuración, facilitando la identificación y resolución de errores internos.

El ALU se ubicó correctamente en la región específica del FPGA, asignada en las coordenadas X1
Y1. Este posicionamiento permitió optimizar el uso de recursos lógicos y asegurar un enrutamiento
eficiente, garantizando un diseño funcional con tiempos de propagación consistentes. La
asignación precisa de las posiciones también demostró ser fundamental para simplificar la
implementación y analizar posibles problemas relacionados con el enrutamiento o congestión.

El uso de Vivado fue fundamental para la síntesis, implementación, y depuración del diseño. Las
herramientas disponibles facilitaron la asignación de recursos físicos, la generación del bitstream y
la posterior programación del dispositivo, lo que aseguró una transición fluida entre la simulación y
la implementación en hardware.

También podría gustarte