Está en la página 1de 32

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA EMBEBIDO USANDO EL

NÚCLEO DE PROCESADOR HARDWARE ARM CORTEX-A9 Y UNA FPGA

CASTRO PERTUZ ISAAC ENRIQUE


MACHADO DE LA HOZ ERICK RICARDO

UNIVERSIDAD POPULAR DEL CESAR


FACULTAD DE INGENIERÍAS Y TECNOLÓGICAS
INGENIERÍA ELECTRÓNICA
VALLEDUPAR
2019
DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA EMBEBIDO USANDO EL
NÚCLEO DE PROCESADOR HARDWARE ARM CORTEX-A9 Y UNA FPGA

Proyecto de grado presentado como requisito para optar por el título de


Ingeniero Electrónico

Autores del proyecto:


CASTRO PERTUZ ISAAC ENRIQUE
MACHADO DE LA HOZ ERICK RICARDO

Director del proyecto:


JUAN MANUEL VILARDY ORTIZ
Asesor del proyecto:
LEONARDO DIAZ MARULANDA

UNIVERSIDAD POPULAR DEL CESAR


FACULTAD DE INGENIERÍAS Y TECNOLÓGICAS
INGENIERÍA ELECTRÓNICA
VALLEDUPAR
2019
Nota de aceptación
________________________________
________________________________
________________________________
________________________________
________________________________
________________________________
________________________________
________________________________

______________________________________________
Firma del jurado

______________________________________________
Firma del jurado

Valledupar, 24 de junio de 2019


Agradecimientos

Los autores expresan sus más sinceros agradecimientos:

A nuestro director Dr. Juan Manuel Vilardy Ortiz y asesor MSc. Leonardo
Diaz por su apoyo incondicional e interés en todo lo concerniente al desarrollo
de nuestro trabajo de grado.

A nuestras familias, maestros, compañeros y amigos, por tener en nosotros


confianza, brindarnos fortaleza y motivación en todas las etapas que se debieron
superar para en últimas hacer realidad este proyecto.
Índice general

1 Introducción 1

2 Objetivos 3

2.1 Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Systemas en chip (SoC, System-on-Chip) y sistemas embebi-


dos 5

3.1 Aplicaciones de los SoCs embebidos . . . . . . . . . . . . . . . . 7

3.2 Procesadores de los SoCs embebidos . . . . . . . . . . . . . . . . 8

3.2.1 Co-procesadores . . . . . . . . . . . . . . . . . . . . . . . 10

3.2.2 Ciclos de operación de una instrucción . . . . . . . . . . 11

3.2.3 Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3 El estándar AXI . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3.1 Interconexiones e interfaces AXI . . . . . . . . . . . . . . 13

3.4 El dispositivo Zynq . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.4.1 El PS del Zynq . . . . . . . . . . . . . . . . . . . . . . . 15

3.4.2 La PL del Zynq . . . . . . . . . . . . . . . . . . . . . . . 15

3.4.3 La ZedBoard . . . . . . . . . . . . . . . . . . . . . . . . 19

i
Índice general

4 Sistema embebido basado en el procesador hardware ARM


CORTEX-A9 e implementado sobre una FPGA 21

4.1 Diseño e implementación del sistema embebido con periféricos


estándares y personalizados usando la tarjeta de desarrollado
ZedBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.2 Depuración cruzada entre el hardware y software del sistema


embebido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5 Conclusiones 22

6 Recomendaciones 23

Bibliografía 24

ii
Resumen

Los sistemas embebidos son sistemas electrónicos diseñados para realizar pocas
funciones en tiempo real con un alto grado de desempeño. Los sistemas embebi-
dos se diseñan para cubrir necesidades específicas, al contrario de lo que ocurre
con las computadoras, ya que están diseñadas para cubrir un amplio rango
de necesidades. En este proyecto de grado, se presentan todos los pasos para
construir, configurar y verificar un sistema embebido usando el núcleo de pro-
cesador hardware ARM CORTEX-A9 y una FPGA de Xilinx. La comunicación
entre el procesador hardware y la lógica programable de la FPGA se realiza
utilizando interconexiones e interfaces AXI (Advanced eXtensible Interface de
AMBA, Advanced Microcontroller Bus Architecture). Para el correcto funcio-
namiento del sistema embebido, se detallan los pasos para la configuración y
programación de los periféricos estándares y personalizados que se encuentran
conectados al núcleo de procesador hardware ARM CORTEX-A9 a través
de las interconexiones e interfaces AXI. Las funciones del sistema embebido
son realizadas mediante la atención y servicio de las interrupciones generadas
por los periféricos; por lo tanto, los pasos necesarios para la configuración y
programación de las interrupciones del sistema embebidos son detalladas y
documentadas en este libro de proyecto de grado. Finalmente, se muestra una
guía para la depuración de hardware y software del sistema embebido desa-
rrollado con el ARM CORTEX-A9. La guía metodológica propuesta permite
desarrollar sistemas embebidos con FPGA para diferentes tipo de aplicaciones,
especialmente si se desea ejecutar una función de forma rápida y eficiente.

iii
Abstract

Embedded systems are electronics system which have been designed to perform
a few functions in real time with a higher performance. The embedded system
are designed in order to meet specific needs, contrary to what happens with
computers, since these computer are designed to cover a wide range of needs.
In this work, we present all steps to build, setup and verify an embedded
system using a hardware processor core ARM CORTEX-A9 and a FPGA
of Xilinx. The communication between the hardware processor and the logic
programmable of the FPGA is performed using the AXI (Advanced eXtensible
Interface of AMBA, Advanced Microcontroller Bus Architecture) interconnects
and interfaces. We show all steps to setup and program the standard and
custom peripherals connected to the hardware processor core ARM CORTEX-
A9 through the AXI interconnects and interfaces, in order to obtain the proper
performance of the embedded system. The functions of the embedded system
are performed through the attention and service of the interruptions generated
by the peripherals; therefore, the steps necessary for the setup and programming
of the interrupts of the embedded system are detailed and documented in this
grade project book. Finally, the hardware and software debugging for the
embedded system with an ARM CORTEX-A9 are described. The proposed
methodological guide allows to develop embedded systems with FPGA for
different types of applications, especially when you want to perform a function
quickly and efficiently.

iv
1. Introducción

La electrónica embebida permite el uso de nuevas herramientas en la imple-


mentación de procesos clásicos de diseño reduciendo tiempos, costos y espacio.
Una de las ventajas de la electrónica embebida es que permite modificar la
arquitectura programada, al reconfigurar parte de un sistema incluso si el diseño
ya ha sido terminado, reduciendo costos en las fases de prueba e implementa-
ción y optimizando los tiempos de desarrollo e implementación. Es por esto
que las FPGAs pueden cumplir un papel importante en la implementación de
sistemas de procesamiento digitales, puesto que se pueden desarrollar diferentes
tipos de sistemas de procesamiento y modificarlos aun si el sistema ya está
terminado. Esto permite dedicar más tiempo al diseño y prueba de los sistemas
de procesamiento, además, por que actualmente este tipo de dispositivos per-
miten la comunicación en tiempo real con software especializado en análisis y
procesamiento, permitiendo interactuar con interfaces gráficas que admiten un
análisis detallado del comportamiento de la respuesta del sistema. Al hablar
de este tipo de dispositivos, vale la pena mencionar que son completamente
digitales y manejan altas velocidades de procesamiento logrando además eje-
cutar distintos procesos al mismo tiempo, lo que se conoce como paralelismo,
esto supone una ventaja cuando se trata de implementar múltiples tareas para
diferentes procesos en un solo integrado. Fabricantes como Xilinx y Altera
(Intel) entre otros incluyen en sus tarjetas de desarrollo módulos de conversión
análogo-digital y digital-análogo, permitiendo la interacción con todo tipo
de sensores y actuadores, junto con módulos de comunicación UART, USB,
TCP/IP entre otros, que facilitan la interacción de las FPGAs con diferentes

1
Capítulo 1. Introducción

plataformas y sistemas de desarrollo. Por lo tanto, la implementación de los


sistemas embebidos es muy importante para los estudiantes del programa de
ingeniería electrónica, para el diseño y desarrollo de sistemas electrónicos con
un alto desempeño.

En este proyecto de grado se busca implementar una metodología de desa-


rrollo de sistemas embebidos sobre dispositivos Zynq All-Programmable (AP)
System-on-Chip (SoC), dirigida a los ingenieros electrónicos en formación, es-
pecíficamente para las áreas de diseño digital, procesamiento de la información
y electivas (líneas de profundización). El objetivo primordial es que los futu-
ros ingenieros electrónicos puedan desarrollar de manera autónoma sistemas
embebidos de alta calidad y eficiencia.

Los sistemas embebidos forman parte activa en la solución de problemas reales,


en campos como la industria, la robótica, la medicina, las telecomunicaciones,
etc. El mundo físico se basa en variables análogas las cuales se deben convertir
en forma digital para ser procesadas y poder controlar diferentes tipos de
procesos. Es importante que el Ingeniero electrónico esté familiarizado con este
tipo de tecnología ya que le abre un campo nuevo para dar soluciones en su
entorno, ya que estos sistemas se dividen en software y hardware, siendo muy
accesibles dada su formación académica. Los sistemas embebido actualmente
se encuentran en muchos lugares, ayudando a la sociedad a automatizar tareas
de una manera eficiente para la optimización de recursos como materia prima,
tiempo y dinero, lo cual hoy en día es fundamental para cualquier empresa que
quiera tener un desarrollo sostenible, uno de los principales obstáculos a los
que se enfrenta la sociedad actual, lograr un desarrollo sostenible no sólo ayuda
las empresas, también a la sociedad y al medio ambiente.

El presente proyecto de grado responde a las necesidades que tienen los


futuros ingenieros electrónicos de la Universidad Popular del Cesar de estar a
la vanguardia de la tecnología empleada en el mundo actual mediante el uso de
circuitos lógicos programables (FPGA) y la creación de sistemas embebidos;
lo que le permitirá un óptimo desarrollo de sus competencias académicas y
laborales.

2
2. Objetivos

2.1. Objetivo general

Implementar y documentar paso a paso las etapas de creación, configuración,


programación y depuración de un sistema embebido basado en el núcleo de
procesador hardware ARM CORTEX-A9 y la lógica programable de una FPGA,
usando el dispositivo Zynq 7010 All-Programmable (AP) SoC y el entorno de
desarrollo integrado Vivado 2015.2 de Xilinx.

2.2. Objetivos específicos

1. Implementar el núcleo de procesador hardware ARM CORTEX-A9 junto


con la lógica programable de una FPGA sobre un dispositivo Zynq, me-
diante la interfaz AXI (Advanced eXtensible Interface de la especificación
AMBA, Advanced Microcontroller Bus Architecture) Xilinx.

2. Crear, configurar, programar y adicionar periféricos personalizados al


sistema embebido mediante la interfaz AXI Xilinx.

3. Desarrollar las funciones para el control de las interrupciones establecidas


por los diferentes periféricos.

4. Implementar una depuración cruzada entre el hardware (lógica programa-


ble de la FPGA) y el software (ARM CORTEX-A9) del sistema embebido

3
Capítulo 2. Objetivos

usando las herramientas del entorno de desarrollo integrado Vivado 2015.2


y el depurador del Software Development Kit (SDK) 2015.2 de Xilinx.

5. Implementar una aplicación de prueba mediante una tarjeta electrónica


de desarrollo basada en FPGA, donde se demuestren las funcionalidades
del sistema embebido implementado.

4
3. Systemas en chip (SoC, System-on-Chip)
y sistemas embebidos

El concepto de SoC ha existido por un tiempo y su implicación es que se


puede usar un solo chip de silicio para implementar la funcionalidad de todo un
sistema, en lugar de que se requieran varios chips físicos diferentes. En el pasado,
el término SoC generalmente se refería a un Circuito Integrado de Aplicación
Específica (ASIC, Application Specific Integrated Circuit), que puede incluir
componentes digitales, analógicos y de radiofrecuencia, junto con bloques de
señales mixtas para implementar convertidores analógico a digital y digital a
analógico (ADCs y DACs). Al centrarse en el aspecto digital por un momento,
un SoC puede combinar todos los aspectos de un sistema digital: procesamiento,
lógica de alta velocidad, interconexión, memoria, etc. De otra forma, todas
estas funciones podrían realizarse utilizando dispositivos físicamente separados
y combinarse en un sistema al nivel de placa de circuito impreso (PCB). La
solución SoC tiene un menor costo, permite transferencias de datos más rápidas
y seguras entre los diversos elementos del sistema, tiene una mayor velocidad
general del sistema, un menor consumo de energía, un menor tamaño físico y
una mayor confiabilidad. Todas estas razones son convincentes para preferir
SoCs sobre sistemas equivalentes de componentes discretos [1].

Un sistema embebido es un sistema de cómputo especializado que está


optimizado para llevar a cabo una única o muy pocas funciones dedicadas.
Los sistemas embebidos forman parte de dispositivos más grandes, o piezas
de equipo, con el propósito de controlar una función dedicada dentro de esas

5
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

máquinas. La funcionalidad predeterminada de un sistema embebido contrasta


con la de un procesador de uso general (General Purpose Processor, GPP),
como las que se encuentran en una computadora personal (Personal Computer,
PC), donde un solo procesador realizará una gran cantidad de funciones muy
variadas. Un sistema embebido realiza una aplicación o tarea específica y como
tal, puede optimizarse con precisión para ofrecer las características elegidas de
una aplicación determinada. Esas características podrían ser proporcionar un
rendimiento muy alto en un área determinada o un bajo consumo de energía.
Es solo al hacer que la aplicación del sistema sea específica, lo que permite que
un sistema embebido logre dicho rendimiento [2].

El modelo básico de un SoC embebido incorpora un procesador, memorias y


periféricos, junto con buses que conectan los diversos elementos entre sí. Esto
representa el sistema de hardware de forma simplificada para un SoC embebido,
el cual se muestra en la Figura 3.1.

El procesador puede considerarse como el elemento central del sistema de


hardware. El sistema de software se ejecuta en el procesador y comprende
aplicaciones, generalmente basadas en un Sistema Operativo (SO), con una
capa inferior de funcionalidad de software para interactuar con el sistema de

Figura 3.1: Arquitectura hardware simplificada de un SoC embebido.

Fuente: The Zynq Book, 2014.

6
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

hardware. La comunicación entre elementos del sistema se realiza a través de


interconexiones. Estos pueden estar en el estilo de enlaces directos, punto a
punto, o buses que sirven a múltiples componentes. En este último caso, se
requiere un protocolo para gestionar el acceso al bus. Aunque en la Figura 3.1
se muestra un solo bus con periféricos conectados, un procesador puede servir
a varios buses conectados.

Los periféricos son componentes funcionales que residen fuera del procesador
y, en general, realizan una de las tres siguientes funciones: (i) co-procesadores,
elementos que complementan el procesador primario, generalmente optimizados
para una determinada tarea; (ii) núcleos de control para interactuar con inter-
faces externas, por ejemplo, conexión a LEDs e interruptores, codecs, etc.; y
(iii) elementos de memoria adicionales. Los periféricos pueden ser considerados
como bloques funcionales discretos que se pueden diseñar, probar e integrar
en un sistema, y también “empaquetar” (crear un bloque IP de propiedad
intelectual, Intellectual Property) para su posterior reutilización.

3.1. Aplicaciones de los SoCs embebidos

Los SoC embebidos se implementan en una gran cantidad de dispositivos en una


amplia gama de campos, tales como: automotriz, militar y aviónica, aeroespacial,
procesamiento de imágenes, telecomunicaciones, electrónica médica, control
industrial y muchos otros.

1. Automotriz: los Sistemas Avanzados de Asistencia al Conductor (ADAS,


Advanced Driver Assistance Systems) se refieren específicamente a la
colección de sistemas provistos en automóviles para la seguridad y co-
modidad del conductor, que pueden incluir, sistemas de advertencia de
cambio de carril, reconocimiento de señales de tráfico (por ejemplo, para
advertir al conductor cuando ingresa a una zona de límite de velocidad
inferior), asistencia de estacionamiento, seguimiento de distracciones del
conductor, sistemas de frenos antibloqueo (Anti-Lock Braking Systems,

7
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

ABS), despliegue de bolsas de aire, sistemas de entretenimiento a bordo,


GPS y sistemas de navegación por satélite.

2. Militar y aviónica: RADAR y SONAR, sistemas de misiles guiados,


estaciones satelitales y sistemas de navegación de vuelo.

3. Aeroespacial: las aplicaciones civiles aeroespaciales incluyen sistemas de


navegación y de vuelo a bordo, comunicaciones por satélite y terrestres y
sistemas de radar.

4. Procesamiento de imágenes: el procesamiento de imágenes y vídeo abar-


ca un número diferente de aplicaciones, incluyendo cámaras para uso
profesional y cotidiano, sistemas de almacenamiento y compresión de
vídeo, equipos de transmisión, tecnología de visualización, monitoreo de
procesos industriales, seguridad y vigilancia, y muchas otras aplicaciones.

5. Telecomunicaciones: teléfonos móviles, routers, radio y televisión de con-


sumo.

6. Electrónica médica: dispositivos de escaneo corporal, tales como máquinas


de resonancia magnética, estetoscopios electrónicos y marcapasos.

7. Control industrial: los procesos industriales y científicos, que van desde


la fabricación y los servicios públicos hasta los experimentos de física de
alta energía, requieren un control e instrumentación precisos. Por ejemplo,
una sala de control de plantas industriales, generación de electricidad con
aerogeneradores y aparatos para experimentos de física de alta energía
en el CERN.

3.2. Procesadores de los SoCs embebidos

Un procesador es la unidad de control principal dentro de un SoC embebido.


Controla y organiza el sistema, soporta software y coordina intercambios con
los periféricos. En los SoC embebidos donde se utiliza un sistema operativo para

8
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

el control del sistema, dicho sistema operativo se ejecuta sobre el procesador.


Los procesadores que se emplean en SoC embebidos son:

1. Microcontrolador: Es un sistema de cómputo completo implementado


sobre un solo chip (SoC). A diferencia de un microprocesador, un micro-
controlador se compone de una unidad de procesamiento central (Central
Processing Unit, CPU) con una cantidad fija de RAM/ROM y periféricos,
todo dentro de un solo circuito integrado (Integrated Circuit, IC).

2. Procesador de señal digital (Digital Signal Processor, DSP): Es un pro-


cesador que ha sido diseñado específicamente para la tarea de procesar
señales digitales. Los DSP están diseñados para realizar operaciones arit-
méticas rápidas y son capaces de realizar una operación de multiplicación
y adición en un solo ciclo de reloj. Esto hace que un DSP sea muy eficiente,
tanto en términos de rendimiento como de consumo de energía, cuando
se usa para tareas específicas de análisis y procesamiento audio/video,
pero muy ineficiente cuando se usa para otras tareas, tales cómo manejo
de sistemas operativos y redes de comunicaciones, debido al conjunto de
instrucciones restringido.

3. Procesador embebido: Es un procesador que está físicamente embebido


dentro de la FPGA. Los procesadores embebidos vienen en dos variedades:
procesadores duro (hard) y blando (soft). Los procesadores hard son
aquellos que se construyen a partir de un área de silicio dedicada dentro
de la FPGA, pero apartada del área donde se encuentran los componentes
lógicos de propósito general de la FPGA, mientras que un procesador soft
se construye utilizando los componentes lógicos de propósito general de
la FPGA. Se debe sintetizar un procesador soft para que quepa en los
componentes lógicos de propósito general disponibles en la FPGA. En
el caso de todos los procesadores embebidos, tanto hard como soft, la
memoria local, las interconexiones de bus, los controladores de memoria
y los periféricos internos deben realizarse usando los componentes lógicos
de propósito general de la FPGA.

9
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

Figura 3.2: Comparación entre un procesador embebido tipo: (a) soft (blando) y hard
(duro).

Fuente: The Zynq Book, 2014.

Para los SoC basados en procesadores embebidos siempre se tiene el


sistema del procesador (PS, Processor System) y la lógica programable
(PL, Programmable Logic) de la FPGA, tal como se muestra en la
Figura 3.2. En la parte (a) de la Figura 3.2, se muestra un procesador
embebido blando, donde el PS es la MicroBlaze de Xilinx, dicho procesador
se construye utilizando la PL de la FPGA y en la parte (b) de la Figura 3.2,
se muestra un procesador embebido duro, donde el PS puede ser un
ARM CORTEX-A9 que emplea un área de silicio dedicada dentro de
la FPGA [3]. En la imagen de la Figura 3.2(b), la MicroBlaze funciona
como un co-procesador blando.

3.2.1. Co-procesadores

Un co-procesador es un núcleo de procesamiento que complementa la funciona-


lidad del procesador principal y está optimizado para una sola tarea específica.
Al descargar los cálculos del procesador principal a una o más unidades de
co-procesamiento, se puede acelerar el rendimiento general del sistema.

Con referencia a los SoC embebidos basados en FPGA, la lógica programable


proporciona una plataforma perfecta para crear núcleos de co-procesamiento

10
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

debido a la capacidad de realizar una ejecución paralela. Esto significa que


las tareas complejas que requerirían un gran número de ciclos de reloj de
CPU secuenciales para calcularse, pueden ejecutarse mucho más rápido en un
co-procesador basado en PL de la FPGA. Estos co-procesadores son conocidos
como núcleos de co-procesador blando. Se pueden implementar otras formas de
aceleración utilizando núcleos de procesamiento duro (hard processing cores)
dedicados, que no residen dentro de la FPGA. En conjunto, este proceso de
descarga de tareas se conoce como aceleración de hardware.

3.2.2. Ciclos de operación de una instrucción

Para que un programa que está almacenado en la memoria sea ejecutado


por el procesador, debe pasar por un ciclo de operación de una instrucción.
Este es el proceso mediante el cual un sistema recupera una instrucción de
la memoria (obtención de la instrucción), determina las acciones necesarias
para esa instrucción (decodificación de la instrucción) y ejecuta esas acciones
(ejecución de la instrucción). Cada ejecución de instrucción se puede dividir en
tres etapas únicas, como se muestra en la Figura 3.3.

Figura 3.3: Etapas de los ciclos de operación de una instrucción.

Fuente: Autores.

11
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

3.2.3. Interrupciones

Una interrupción es una señal que se genera para indicar al procesador que se
requiere su atención. Las interrupciones pueden ser generadas por unidades de
procesamiento de hardware y periféricos, y también dentro del propio software.
En hardware, una señal de interrupción es una señal asíncrona generada por una
unidad de procesamiento para indicar la necesidad de atención del procesador.
En software, una interrupción es un evento síncrono que indica al procesador
que se necesita un cambio en la ejecución.

Cuando el procesador recibe una interrupción, el procesador detendrá la tarea


que se está procesando actualmente y saltará a la que haya solicitado atención.
Esto contrasta con el proceso de sondeo, el cual es un muestreo sincrónico
del estado de un dispositivo por el programa de software. En lugar de tener
el procesador constantemente sondeando los puertos de entrada/salida de un
dispositivo para ver si se necesita su atención, el dispositivo podría causar una
interrupción de hardware para requerir la atención del procesador.

3.3. El estándar AXI

AXI significa Advanced eXtensible Interface (Interfaz Extensible Avanzada), y


la versión AXI4 forma parte del estándar abierto AMBA® 3.0 de ARM [4, 5].
Muchos dispositivos y bloques de IP producidos por fabricantes y desarrolladores
externos de ARM, se basan en este estándar.

La primera versión del estándar AMBA fue desarrollado originalmente por


ARM para su uso en microcontroladores en el año de 1996. Desde entonces,
el estándar ha sido revisado y ampliado, y ahora ARM lo describe como “el
estándar de facto para comunicaciones on-chip” [5]. Actualmente, los sistemas
electrónicos se basan en SoC, incluyendo SoC basados en FPGAs. De hecho,
Xilinx contribuyó fuertemente a la definición del estándar AXI4 como una
tecnología de interconexión óptima para su uso dentro de arquitecturas FPGA.

12
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

Las interfaces AXI se pueden usar de manera flexible y, en sentido general, se


usan para conectar los procesadores y otros bloques IP en un SoC embebido. De
hecho, hay tres tipos de AXI4, cada uno de los cuales representa un protocolo
de bus diferente, como se resume a continuación. La elección del protocolo de
bus AXI para una conexión particular depende de las propiedades deseadas de
esa conexión.

• AXI4: para enlaces mapeados a memoria que requieran la mayor velocidad


y rendimiento, se proporciona una dirección seguida de una transferencia
de ráfaga de datos de hasta 256 palabras de datos.

• AXI4-Lite: es un enlace simplificado que admite solo una transferencia de


datos por conexión (sin ráfagas). AXI4-Lite también se mapea a memoria:
en este caso, se transfieren una dirección y una sola palabra de datos.

• AXI4-Stream: para transmisión de datos a alta velocidad, admite transfe-


rencias en ráfagas de tamaño ilimitado. No hay un mecanismo de dirección;
este tipo de bus es el más adecuado para dirigir el flujo de datos entre el
origen y el destino (sin mapeo a memoria).

Si un protocolo está mapeado a memoria, se especifica una dirección dentro


de la transacción emitida por el dispositivo maestro que realiza una lectura
o escritura, tal dirección corresponde a una dirección en el espacio de la
memoria del SoC embebido. En el caso del AXI4-Lite, que admite una única
transferencia de datos por transacción, el dato se escribe en o se lee desde la
dirección especificada; en el caso de ráfagas del AXI4, la dirección especificada
es para la primera palabra de datos a ser transferida, y el esclavo debe calcular
las direcciones para las palabras de datos que siguen.

3.3.1. Interconexiones e interfaces AXI

La comunicación entre el PS y la PL de la FPGA se establece a través de


un conjunto de interconexión e interfaces AXI, cada una de las cuales se

13
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

compone de múltiples canales. Estos hacen conexiones dedicadas entre la PL


e interconexiones dentro del PS. A continuación se definen los términos de
interconexión e interfaz:

• Interconexión: es efectivamente un conmutador que administra y dirige el


tráfico entre las interfaces AXI conectadas. Hay varias interconexiones
dentro del PS, algunas que están directamente conectadas a la PL y otras
que son solo para uso interno. Las conexiones entre estas interconexiones
también se forman utilizando interfaces AXI.

• Interfaz: es una conexión punto a punto para pasar datos, direcciones y


señalización de protocolos entre clientes maestros y esclavos dentro del
sistema.

Las señales y sus valores del protocolo de bus AXI para sus transacciones
(operaciones de lectura y escritura sobre periféricos) son presentados en el
siguiente capítulo del presente proyecto de grado.

3.4. El dispositivo Zynq

El dispositivo Zynq proporciona una plataforma ideal para implementar SoC em-
bebidos flexibles: Xilinx comercializa este dispositivo como un “All-Programmable
SoC” (AP SoC). La arquitectura Zynq consta de dos partes principales: un PS
dado por un procesador ARM CORTEX-A9 de doble núcleo como base y una
PL, que es equivalente a una FPGA tradicional. También cuenta con memoria
integrada, una variedad de periféricos e interfaces de comunicaciones de alta
velocidad. La sección de PL es ideal para implementar lógica de alta velocidad,
aritmética y subsistemas de flujo de datos, mientras que el PS soporta rutinas
de software y/o sistemas operativos, lo que significa que la funcionalidad gene-
ral de cualquier sistema diseñado puede ser dividido apropiadamente entre el
hardware y el software. Los enlaces entre el PL y el PS se realizan utilizando
las interconexiones e interfaces AXI.

14
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

El PS y la PL pueden usarse de forma independiente o en conjunto; los


circuitos de alimentación del PS y la PL están configurados con dominios
separados para cada uno, lo que permite que el PS o el PL se apaguen si no
están en uso. Sin embargo, el modelo de uso más conveniente para el dispositivo
Zynq es cuando ambas de sus partes constitutivas se usan en conjunto y por lo
tanto es importante apreciar la estructura de ambas secciones.

3.4.1. El PS del Zynq

Todos los dispositivos Zynq tienen la misma arquitectura básica y todos ellos
contienen como base del PS un procesador ARM Cortex-A9 de doble núcleo.
Este es un núcleo de procesador hardware (duro), que existe como un elemento
de silicio dedicado y optimizado en el dispositivo.

Es importante destacar que el PS del Zynq abarca no solo el procesador


ARM, sino un conjunto de recursos de procesamiento asociados que forman
una Unidad de procesamiento de aplicaciones (APU, Application Processing
Unit), y otras interfaces periféricas, memoria caché, interfaces de memoria,
interconexión y circuitos de generación de reloj. Un diagrama de bloques que
muestra la arquitectura del PS se muestra en la Figura 3.4.

3.4.2. La PL del Zynq

La segunda parte principal de la arquitectura Zynq es la PL. Dicha PL es basada


en las FPGAs Artix-7 y Kintex-7 de Xilinx. La parte de la PL del dispositivo
Zynq se muestra en la Figura 3.5, con varias características resaltadas. La
PL está compuesta predominantemente por lógica de fábrica (logic fabric)
de propósito general de una FPGA, que se componen de slices y bloques
lógicos configurables (CLB, Configurable Logic Blocks), y también hay bloques
de entrada/salida (IOB, Input/Output Blocks) para conectar dispositivos
periféricos.

Las características de la PL mostrada en la Figura 3.5, se pueden resumir de

15
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

Figura 3.4: Arquitectura hardware del PS del Zynq.

Fuente: The Zynq Book, 2014.

la siguiente manera:

1. Bloque lógico configurable (CLB, Configurable Logic Block): los CLB son
agrupaciones pequeñas y regulares de elementos lógicos que se presentan
en una matriz bidimensional sobre la PL y se conectan a otros recursos
similares a través de interconexiones programables. Cada CLB se coloca
al lado de una matriz de conmutación (switch matrix ) y contiene dos
slices lógicos.

2. Slice: una sub-unidad dentro de un CLB, que contiene recursos para


implementar circuitos lógicos combinacionales y secuenciales. Los slices del
Zynq se componen de 4 Lookup Tables, 8 Flip-Flops y otros componentes

16
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

Figura 3.5: Componentes lógicos que conforman la PL del Zynq.

Fuente: The Zynq Book, 2014.

digitales (tales como multiplexadores).

3. Matriz de conmutación (switch matrix ): una matriz de conmutación se


encuentra al lado de cada CLB y proporciona una facilidad de enruta-
miento flexible para realizar las siguientes conexiones: (i) entre elementos
dentro de un CLB, y (ii) de un CLB a otros recursos en la PL.

4. Bloques de entrada/salida (IOB, Input/Output Blocks): los IOB son


recursos que proporcionan una interfaz entre los recursos lógicos de la
PL y los pines del dispositivo que se utilizan para conectarse a circuitos
externos. Cada IOB puede manejar una señal de entrada o salida de 1 bit.
Las IOB se ubican generalmente alrededor del perímetro del dispositivo.

17
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

Figura 3.6: Recursos especiales de la PL del Zynq.

Fuente: The Zynq Book, 2014.

Además de los componentes lógicos de fábrica mencionados de la PL del


Zynq, la PL dispone de recursos especiales para realizar: operaciones aritméticas
a una alta velocidad (DSP48E1 slices), almacenamiento de grandes cantida-
des de datos (bloque de RAMs), conversión de señales análogas a digitales
(bloques XADC), generación y administración de relojes (clock tiles) y trans-
misión/recepción de datos a altas velocidades (bloque de PCI Express y GTX
transceivers). La Figura 3.6 muestra los recursos especiales de la PL del Zynq.

18
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

3.4.3. La ZedBoard

El ZedBoard es una tarjeta de desarrollo de bajo costo que cuenta con el


dispositivo XC7Z020 Zynq. La tarjeta fue realizada de manera conjunta por
Xilinx, Avnet (el distribuidor de la tarjeta) y Digilent (el fabricante de la tarjeta).
La ZedBoard es adecuada para desarrollos industriales y académicos. Esta
tarjeta de desarrollo cuenta con una comunidad web [6], donde se comparten
proyectos y desarrollo de código para la ZedBoard.

El dispositivo XC7Z020 Zynq de la ZedBoard es el más pequeño de los


dispositivos de la familia Zynq-7000 y su PL se basa en la lógica de fabrica de
la familia de FPGA Artix-7, con una capacidad de 13.300 slices lógicos, 220
DSP48E1 y 140 bloque de RAM. El dispositivo también contiene un bloque IP
de hardware XADC para la conversión análoga a digital de señales, aunque no
cuenta con transceptores (GTX transceivers) de alta velocidad o bloques PCI
Express [7].

Las características e interfaces de la tarjeta de desarrollo ZedBoard se mues-


tran en la Figura 3.7. Además, el dispositivo Zynq interactúa con una memoria
flash de 256 Mbit y una memoria DDR3 de 512MB, ambas se encuentran
sobre la tarjeta de desarrollo. Hay dos fuentes de reloj, una a 100 MHz y la
otra a 33.3333 MHz. El ARM CORTEX-A9 ejecuta las instrucciones con una
frecuencia de reloj de 666.666688 MHz [7].

19
Capítulo 3. Systemas en chip (SoC, System-on-Chip) y sistemas embebidos

Figura 3.7: Tarjeta de desarrollo ZedBoard.

Fuente: The Zynq Book, 2014.

20
4. Sistema embebido basado en el proce-
sador hardware ARM CORTEX-A9 e
implementado sobre una FPGA

4.1. Diseño e implementación del sistema embe-


bido con periféricos estándares y personali-
zados usando la tarjeta de desarrollado Zed-
Board

4.2. Depuración cruzada entre el hardware y soft-


ware del sistema embebido

21
5. Conclusiones

22
6. Recomendaciones

23
Bibliografía

[1] M. J. Flynn and W. Luk, Computer System Design: System-on-Chip. John


Wiley & Sons, 2011.

[2] L. Crockett, R. Elliot, M. Enderwitz, and R. Stewart, The Zynq Book.


Embedded Processing with the ARM® Cortex® -A9 on the Xilinx® Zynq® -
7000 All Programmable SoC. Strathclyde Academic Media, 2014.

[3] ARM CORTEX–A9. Enlace web: https://bit.ly/2JNOGFC.

[4] Vivado Design Suite, AXI Reference Guide. Xilinx.


Enlace web: https://bit.ly/2VzE8fM.

[5] ARM, AMBA Open Specifications. Enlace web: https://goo.gl/wftoxS.

[6] ZedBoard Community. Enlace web: http://www.zedboard.org/.

[7] ZedBoard (ZynqT M Evaluation and Development), Hardware User Guide.


Enlace web: https://bit.ly/2w7ki14.

24

También podría gustarte