Você está na página 1de 9

1

Activación de alarma mediante sensor de temperatura


utilizando IP Interruption Controller y XADC

Cellere Jonathan, Peña Abigail, Samaniego Daniel


Departamento de Eléctrica y Electrónica, Universidad de las Fuerzas Armadas ESPE
Sangolquí-Ecuador
jmcellere@espe.edu.ec,kapena@espe.edu.ec,dasamaniego1@espe.edu.ec


VIVADO DESIGN SUITE es un conjunto de herramientas de
Resumen— En la actualidad ha aumentado la industria para el desarrollo de System on Chip (SoC).
considerablemente el consumo de Sistemas en un chip o Vivado ofrece un entorno de desarrollo para: SoC-strength, IP-
SoC1 debido a sus prestaciones, mayor eficiencia y siendo centric y System-centric, con herramientas de última
su principal característica la de poseer todos sus generación. VIVADO DESIGNER está en la delantera de la
componentes en un solo chip integrado, pero las productividad global, facilita el uso y capacidades de
complejidades del diseño hacen que el mismo adquiera integración a nivel de sistema. VIVADO es compatible con los
cierto nivel de dificultad y a su vez sea muy costoso, sin dispositivos de las siguientes familias: UltraScale, Virtex-7,
embargo desde la aparición del FPGA 2 se ha conseguido Kintex-7, Artix-7 y Zynq-700. [1]
disminuir ésta complejidad de diseño y reducir costos, tal Basys3 de Digilent es una placa FPGA de nivel de entrada
que, hoy en día se pueden diseñar chips desde su propia diseñada exclusivamente para la Vivado Design Suite, que
casa, además técnicas como los IP Cores3 y programas cuenta con la arquitectura FPGA Xilinx Artix-7. Basys3 es la
como Vivado4 ayudan a reducir la complejidad, facilitando nueva incorporación a la popular línea de placas FPGA de
su diseño, considerando estas herramientas disponibles se inicio de Basys, incluye las características estándar que
logró obtener un sistema SoC, que permite la medición de ofrecen todas las placas Basys: hardware completo listo para
temperatura, la cual incluye 3 valores de set-point de 20°, usar, una gran colección de dispositivos de E/S en placa, todos
40° y 70° centígrados respectivamente, pero si una los circuitos de apoyo FPGA y una versión libre de
temperatura llega a superar alguno de estos valores, herramientas de desarrollo.
producirá que se encienda una alarma simulada por leds, El procesador embebido MicroBlaze, es un elemento clave de
los cuales se encenderán dependiendo del valor los productos embebidos de Xilinx ya que posee una
proporcional de la temperatura, para ello se utilizaron IP arquitectura RISC, puede leer señales analógicas y digitales y
Cores proporcionados en Vivado como el XADC, UART, tiene un set de instrucciones reducido de 32 bits lo que permite
AXI Interrupt Controller, AXI GPIO, y Microblaze, sin ser aplicado en las áreas de industria, medicina
embargo también fue necesario para lograr este diseño, automatización y consumo[1]. Es altamente configurable y
basarnos en ejemplos proporcionados por Xilinx 5 y puede ser usado en todas las familias de SoCs programables.
Atlassian6 los mismos que sirvieron para tener una idea Soporta setenta opciones de configuración y es altamente
general de cómo realizar el diseño del SoC, como parte flexible ya que un usuario puede implementarlo para cualquier
final se presentaran los recursos consumidos en el FPGA uso desde máquinas de estado, microcontroladores hasta un
para observar la eficiencia del diseño. microprocesador de alto performance.
La herramienta de diseño Vivado dispone de un catálogo de IP
Palabras Clave—Diseño, Soc, IP Cores, Vivado, cores, mediante el cual se puede incluir varios módulos en el
Microblaze, FPGA. bloque de diseño entre ellos el módulo UART que permite
visualizar la información por un terminal serial en un terminal
de PC, el módulo XADC, el cual es utilizado para
implementar un sistema de monitoreo de temperatura
I. INTRODUCCIÓN mediante la comparación de los voltajes ingresados.
Gracias al tutorial llamado” Vivado IP Integrator”, el cual se lo
realizo antes de empezar a integrar un nuevo IP Core, se logró
comprender de manera detallada los pasos a seguir en la

1
implementación del microblaze.[2]
Soc: System on Chip
2
FPGA: Field-programmable gate array
En este reporte se detallará sobre las principales
3
IP Cores: Núcleos de Propiedad Intelectual. configuraciones realizas para la implementación de la alarma
4
Vivado: es el primer juego de herramientas de la industria para el que contiene cuatro periféricos de la tarjeta de desarrollo, y un
desarrollo de System on Chip (SoC). IP-core del catálogo de IP-cores de Xilinx Vivado. Nos
5
Xilinx: Compañía de tecnología americana, reconocida por inventar los
FPGA
centramos en el uso del IP Interruption Controller, basándonos
6 en una lista de tutoriales disponibles en la página oficial, el
2

lenguaje de programación principal es C, también se deben Para lograr los pasos antes mencionados se siguió el tutorial de
instanciar los GPIO y configurar el XADC para del mismo Digilent en el cual se creó un nuevo proyecto y se eligió la
módulo obtener su valor de voltaje ingresado. El sistema tarjeta BASYS 3 posteriormente seguimos el siguiente
global cuenta con 2 entradas externas para medir voltajes y procedimiento el cual se divide en:
seleccionar las diferentes temperaturas máximas. El IP
interruption controller con el cual se genera la interrupción 1) AXI GPIO
mediante los botones, la misma que se envía tomando el valor 2) XADC
que se seleccionó en los Switches. Este valor indicara la 3) AXI Interrupt Controller.
temperatura máxima con la que se trabajará, cuando la
temperatura actual supere a la máxima se observara en los leds Se debe crear un bloque de diseño en el cual se va a realizar
que representarán como esta sigue aumentando su valor al las conexiones de todos los componentes.
superar la máxima temperatura se realiza un conteo regresivo
indicando que su temperatura supero a la máxima. A continuacion se selecciona los diferentes Ip-cores,
Por medio de la conexión UART se podrá visualizar de microblaze, axi Gpio, XADC, Ip-Inerruption controller y
manera continua los diferentes valores que son ingresados en todos los commponentes necesarios.
el CH1 del periférico XADC. [3] Al seleccionar el microblaze se debe seleccionar Run Block
automation en el cual se configura su memoria local en
128KB, pero se debe tomar en cuenta que, el tamaño de la
II. DESCRIPCIÓN DEL PROBLEMA memoria depende de la aplicaciòn.

El diseño está basado en implementar y verificar el hardware y


software de un sistema embebido en un FPGA. El sistema
realizado contiene las siguientes especificaciones en su
funcionamiento.
 Compara el valor ingresado de voltaje por medio
del XADC, el mismo convertirá en temperatura a
el voltaje ingresado, al ser igual o mayor que el
valor del set point correspondiente a uno de los
tres casos, los cuales se podrán seleccionar Fig. 1 Configuración de Microblaze
mediante los Dip-switch y si el valor excede el set
point se encenderá la alarma. 1) AXI-GPIO
 En este proceso la alarma funciona cuando se
supera la temperatura designada por el usuario,
para saber que se encendió la misma, en los leds
se empezará a realizar un conteo regresivo.
 Se debe seleccionar entre tres diferentes valores,
los cuales se observarán en el menú mostrado
mediante el puerto UART. Luego este se tomará a
como el valor máximo de temperatura, se debe
presionar el botón de interrupción para que el
programa toma el valor designado en los Switch. Fig. 2 AXI GPIO
 El sistema apagara la alarma al momento que el Para asignar que las entradas y salidas en el GPIO sean los
conteo regresivo se haya terminado, pidiendo al Dip-Switch y Led, debemos escoger en cada Interface del
usuario seleccionar otra opción. GPIO la salida que necesitamos y realizamos la conexión
III. DESCRIPCIÓN DEL DISEÑO automatica.

El diseño cuenta con varios IP-Cores, que lo detallaremos a


continuación.
A. Módulos (Interfaces en Reference manual)

Softprocesor MicroBlaze, Interruption controller, XADC,


Modulo de Debug, Uart, GPIO, reset y clocking. Mediante una
interfaz de interconexión AXI y un asistente automático,
unimos todos estos módulos permitiendo presentar en un Fig. 3 Conexión GPIO
terminal serial los valores de señales análogas entre las cuales
se encuentra voltajes externos que ingresan al XADC.
3

2) IP Interruption Controller Fig. 6 IP XADC Wizard


• Configuración XADC
Este IP Core puede recibir múltiples interrupciones a su
entrada y las combina en una salida de interrupción al - Modo de operación de XADC: en nuestro caso
procesador (Microblaze), estas interrupciones pueden ser elegimos secuenciador de canales. (Fig. 7).
configuradas por Software o Hardware, además es capaz de - Puertos de estado/control: Ninguno
controlar hasta 32 entradas.

Fig. 4 IP Core AXI Interrupt Controller.

Para el diseño del sistema utilizamos un Gpio que maneja los


botones en sus salidas y este es capaz de producir una
interrupción, el pin que produce la interrupción se conecta al Fig. 7 Configuración básica de XADC Wizard.
pin int [0: 0] del Interrupt Controller, y la salida AXI es
conectada al procesador Microblaze, de esta forma podremos - Calibración de ADC: Habilitamos ADC Offset and
configurar en el código que cada vez que se pulse un botón se Gain Calibration, Sensor Offset and Gain Calibration
pueda generar una interrupción para hacer un proceso y CALIBRATION Averaging, además escogimos 16
especifico, en nuestro caso esta interrupción llamará a una bits para la precisión del convertidor AC/DC. Se
función que permitirá enviar la elección de una de las muestra en Fig. 8.
temperaturas umbrales definidas previamente en el sistema.[4]

Fig. 5 Conexión entre Interrupt Controler, Microblaze y


GPIO Fig. 8 Configuración ADC Setup.

3) XADC En el secuenciador de canales para multiplexación:


Habilitamos VP / VN y los pines 6,7,14 y 15 que se muestran
El IP XADC Wizard trabaja como un convertidor A/D, en este en las figuras 9 y 10.
caso, por el canal 1 se ingresará un voltaje variable entre 0 [V]
y 1 [V] (entrada externa), por tanto, estos pines se usaron para
la implementación, mediante software se realiza la conversión
en valores asimilables en escalas de temperatura. En la parte
de hardware, el módulo XADC Wizard se lo configuró de la
siguiente manera para su conexión con Microblaze y con los
respectivos periféricos [5]:

Fig. 9 Configuración de Secuenciador de Canales.


4

Fig. 13 Creación del código VHDL

Finalmente exportamos el Hardware y corremos el SDK de


Xilinx.

B. Creación de programa en lenguaje C.

Para crear el programa utilizamos el SDK de Xilinx mediante


programación de alto nivel en el lenguaje C, donde se realizó
Fig. 10 Configuración de pines en secuenciador de canales. la configuración del modo y lectura de registros que contienen
información de las señales que deseamos presentar en el
 Constraints: Basys3_Master.xdc terminal UART. Por tanto, primero se importó las librerías
necesarias, estas librerías Fig.14, nos permiten imprimir en el
Incluimos en el Constraints de nuestro programa los pines de terminal serial, generar retardos, utilizar los módulos de
la tarjeta que vamos a utilizar para nuestro proyecto en la parte entrada y salida, y leer registros que almacenen los valores de
correspondiente al XADC como también los dip switch a usar las señales análogas.
en la elección de la temperatura máxima, esto se visualiza en
las figuras 11 y 12.

Fig. 14 Librerías

XADC

Una vez realizada la conexión, para el manejo del IP con el


lenguaje de C fue necesario utilizar como base uno de los
ejemplos proporcionados por Xilinx [link] para el correcto
uso del XADC la librería que se utilizó fué "xsysmon.h". El
"xsysmon.h" contiene toda la información necesaria de
direcciones para seleccionar los registros adecuados, para la
lectura de los valores ADC. Después de esto se establecieron
las variables para controlar los canales. Los objetos creados
Fig. 11. Asignación de los canales XADC fueron “con” y “miobjeto”, con este podemos instanciar
funciones de la librería “sysmon,h”, la función “XADCInit()”
es la función que permite la configuración inicial del módulo
XADC además de poseer excepciones, tal que, si ocurre un
error el programa completo no se reinicie.

Fig. 12. Asignación de los switches

4) Generación de HDL Wrapper

Luego de finalizar el bloque, se debe generar el código VHDL


mediante Create HDL Wrapper (Fig. 13).
5

Fig. 15 Inicialización XADC

Interruption Controller

Para la implementación de este módulo, se utilizó como base Fig. 17 Método Main
el ejemplo proporcionado en la página oficial de Xilinx, como
primer paso se inicializa el IP-Interrupt Controller, luego se IV. IMPLEMENTACIÓN
indica el IP con el que se realizaran las interrupciones, en
A. Diagrama de Bloques
este caso el GPIO Buttons, además se debe indicar la función
a la que se llamara luego de realizar la interrupción en nuestro En el Anexo 1 se muestra el esquema completo del sistema, se
puede apreciar con claridad como los diferentes módulos se
caso esta es “ButtonInterruptionHandler”, además se
relacionan entre si y cuáles son las entradas y salidas del mismo.
inicializan las funciones para las excepciones para asegurar
que el programa funcione bien si ocurre un error.
V. RESULTADOS

A. Simulación de los resultados

Se observa el menú principal, se puede apreciar las diferentes


temperaturas como los valores de voltajes que se recibe en el
canal van apareciendo en le terminal UART.

Fig. 18 Menú principal

Fig. 16 Inicialización Interrupt Controller


Main

Luego de todas las inicializaciones, el método main del


programa contiene la declaración de variables necesarias para
el funcionamiento, la lectura del canal XADC además de su
conversión de voltaje a temperatura, por otra parte, aquí se
define la función switch case, teniendo 3 casos que
corresponden a cada uno de los set points, de modo que,
dentro de cada caso se asigna el encendido de los leds
dependiendo el rango de voltaje, además del encendido de la Fig. 19 Opción 3
alarma.
6

B. Utilización de recursos: Se muestra que existe una mayor cantidad de energía utilizada
en la parte de los relojes, en nuestro diseño se utilizó para la
En la Fig. 20 se muestra la cantidad de recursos que se han sincronización un IP llamado Clocking Wizard, el mismo reloj
utilizado en la FPGA luego de la implementación. es usado por todos los elementos síncronos. Para no sufrir
retardos este IP contiene módulos como el MMCM (Mixed-
Mode Clock Manager) que usa conexiones especiales para
repartir la señal de reloj por toda la superficie de la FPGA.

VI. CONCLUSIONES

 Al utilizar los GPIO se debe tener en cuenta que a los


mismo se les pueden asignar hasta dos periféricos sea
de entrada o de salida.

 Se debe aumentar al menos hasta 64KB de la


memoria local ya que 32KB no es suficiente en la
implementación requerida, esto debido a que la
función “printf” requiere mucho más espacio que las
funciones normales de impresión como
“Xilinx_printf”.

 Si se requiere utilizar las conexiones AXI, antes de


elegir un IP se debe comprobar la compatibilidad con
este protocolo, ya que algunos de los IP, no son
compatibles o no requieren del mismo.

 El FPGA permite realizar un SoC, ya que gracias al


procesador “MicroBlaze” podemos implementar un
Fig. 20 Utilización de recursos de la tarjeta chip tanto en hardware como software, disminuyendo
las limitaciones solo del Hardware o del Software,
Se observa que se tiene una mayor utilización de la Block Por tanto, nos permiten crear chips mucho más
Ram, debido a la aplicación de nuestro proyecto la Block Ram
complejos.
sirve como una estructura de memoria relativamente grande,
se utiliza siempre que necesite almacenar un montón de datos
VII. RECOMENDACIONES
en un chip. En nuestro caso almacenamos datos a ser
procesados por el MicroBlaze. Luego también están los pines
de entrada y salida ya que utilizamos varios de ellos, como  Se recomienda revisar los canales que están en la
leds para mostrar alarma, dip switches para elegir temperatura librería “xsysmon.h”, debido a que proporcionan el
máxima, canales del XADC donde ingresa el voltaje a nombre del canal a monitorear, y también se puede
convertir y los push buttons para enviar interrupción. encontrar varias instrucciones que permiten leer el
valor de las señales internas.
En la Fig. 21 se muestra la potencia del chip utilizada luego
de la implementación.  Se debe conocer cómo importar y exportar archivos
como librerías antes de realizar aplicaciones en
software, debido a que muchas de ellas no vienen
incluidas.

 Se recomienda analizar cada uno de los ejemplos


proporcionados por la compañía Atlasian y Xilinx, ya
que estos son de gran ayuda para probar los IP’s.

 Se recomienda tener en cuenta que, para el llamado


de muchas funciones, se requieren parámetros, pero
el nombre de muchos de estos parámetros los
Fig. 21 On Chip Power encontraremos en la librería “parameters.h”.
7

BIBLIOGRAFÍA

[1] W. Hardt and R. Camposano, “Trade-Offs in HW/SW


Codesign,” 1996.
[2] Xilinx Inc, “MicroBlaze Processor Reference Guide.”
[3] B. Navas, “07-
VLSI_SoftProcessorSoCDesign_Navas_2018-1_v02,”
Sangolquí, 2018.
[4] Xilinx and Inc, “AXI Interrupt Controller (INTC) v4.1
LogiCORE IP Product Guide Vivado Design Suite.”
[5] D. Wimberly and S. Coss, “ARTY MICROBLAZE
SOFT PROCESSING SYSTEM IMPLEMENTATION
TUTORIAL II 1 Arty MicroBlaze Soft Processing
System Implementation Tutorial II.”

ANEXOS
8

Fig. 6 Diagrama Jerárquico

Você também pode gostar