Sie sind auf Seite 1von 5

Laboratorio 3.

Re-uso de diseño FPGA y unidad de control FSM


Usando teclado USB, terminal UART, ADC y Vivado

Bryan Lagua. Santiago Remache


Departamento de Eléctrica y Electrónica.
Universidad de las Fuerzas Armadas ESPE
bblagua@espe.edu.ec esremache@espe.edu.ec

Resumen- El re-uso de diseños FPGA es muy común cuando


se trata de implementar aplicaciones que por su complejidad
II. PLANTEMIENTO DEL PROBLEMA
necesitan de funcionalidades ya probadas, para que al
implementarlas juntas tengan un óptimo funcionamiento. En
este documento se presentan los resultados y simulación del En este laboratorio se encuentra la descripción de un sistema
diseño de un sistema electrónico digital en VHDL con un FSM con dos modos de funcionamiento; el primero en donde
(máquina de estados finitos) como unidad de control, solamente se muestra en la ventana de terminal el carácter
reutilizando módulos proporcionados por el soporte digital de correspondiente a la tecla presionada (al menos caracteres
la tarjeta de desarrollo Basys 3 que se centran en el uso de IP
cores, interfaces y puertos descritos en VHDL/Verilog, este
alfanuméricos) en el teclado USB (PS/2) y donde el resto de
diseño trabaja en base a dos distintos modos centrados en el funciones están deshabilitadas; en el segundo modo se
ingreso de caracteres a un terminal y el uso de una contraseña implementa con ayuda de un canal XADC una alarma
de desactivación para un sistema de alarma. También se simulada con LED, en donde el ingreso de una clave
encuentra la descripción de como el re-uso de módulos e secuencial por teclado PS/2 y visualizada en una ventana de
integración jerárquica en VHDL de los mismos, dan óptimos terminal en una PC, desactivará la alarma. El código de la
resultados al ser implementados en una FPGA, dándonos una tecla presionada de tres caracteres secuenciales (solo
idea de los beneficios que esto pueda conllevar en futuros
proyectos. números) es transmitido a la PC mediante interface serial
UART. La ventana de terminal muestra el caracter
correspondiente a la tecla presionada.
I. INTRODUCCIÓN
III. DESCRIPCIÓN ESTRUCTURAL
El re-uso de módulos en un FPGA hace que un diseño con
varias funcionalidades no sea tan complejo puesto que estas A. Partición del diseño
se solventan de manera efectiva al integrarse dichos módulos Para realizar la implementación es necesario definir los
correctamente al diseño. Existen ejemplos que son módulos que conforman el bloque general, la jerarquía y las
proporcionados en su mayoría por los mismos fabricantes de entradas, salidas y señales que se requieren para el diseño del
las tarjetas de desarrollo centrándose en el uso IP cores, sistema descrito.
interfaces y puertos con la singularidad de que muchos de
estos se encuentran descritas en VERILOG, este lenguaje a
pesar de tener similitudes con VHDL posee marcadas
diferencias y es importante conocer de su uso en el
desarrollo de los ejemplos mencionados.
Al tener un diseño muy grande también se debe mencionar
el cómo controlarlo, en esta ocasión nos centraremos en la
utilización de un FSM, la cual proporcionará un control
como su nombre lo indica de los estados de operación de un
sistema, el diseño de la misma debe estar centrada en ser el
eje de control de todos los módulos integrados y de la
operación de los mismos, sin recaer en ambigüedades, entrar
en estados desconocidos o que no estén enmarcados en las
funcionalidades de lo que se desee implementar.
También cabe recalcar lo importante que es la utilización de
módulos y su integración jerárquica, cuyo uso hace una
conjunción de todo lo que se ha mencionado como base para
Figura 1. Diagrama Jerárquico
una correcta implementación del diseño en una FPGA. En el
siguiente informe se detallará cada uno de los aspectos que
Anexo 1. Diagrama jerárquico completo.
componen un sistema que reutiliza módulos ya probados y
así en base a los resultados obtenidos considerar su uso en
futuros proyectos.
B. Interfaces y Puertos

PS/2
Utilizando la tarjeta de desarrollo Basys 3 se puede controlar
un teclado a través del puerto USB HID HOST, a diferencia
de otras familias de FPGA que poseen un puerto PS2, la
comunicación de datos a través del puerto USB HOST emula
el funcionamiento del puerto PS2 por medio de un
microcontrolador PIC24FJ128, un terminal en la PC nos
permite visualizar los caracteres correspondientes a las teclas
presionadas en en teclado conectado [2].
Figura 5. Asignación de pines PMOD en el FPGA [2].
UART
La tarjeta Basys 3 incluye un Puente USB-UART que
permite utilizar comandos COM para comunicar la tarjeta
con la computadora. Esto se hace posible al convertir los
paquetes USB a UART/puerto serie. Donde estos datos serie
se intercambian con el FPGA usando un puerto en serie de 2
Figura 2. Conexiones - Basys 3 PIC24FJ28 [2]. hilos (TXD / RXD) con comandos COM desde la PC se
genera tráfico de datos en serie en los pines B18 y A18 de la
El microcontrolador después de recibir estos datos los FPGA [2].
convierte en dos señales que son procesadas por el FPGA, en
donde PS2_CLK es una señal de reloj y PS2_DAT una línea
de datos trasmitidos en serie en donde se envían 11 bits de
los cuales: el primero corresponde al bit de inicio, los
siguientes 8 bits que indican el dato de la tecla, dos bits
siguientes de paridad y parada, este último cuando no se
ingresa ningún dato. El módulo PS2 codifica los datos
obtenidos y realiza los sincronismos correspondientes entre Figura 6. Conexiones - Basys 3 FT2232HQ.[2]
el clock de teclado ps2 y reloj del sistema. Estas Los controladores para establecer la comunicación
características se observan en la siguiente figura. TXD/RXD de trasmisión y recepción, reciben el dato serie a
mostrar así como una señal de inicio y el reloj del sistema
para establecer la sincronización y comunicación con la PC.

Figura 3. Secuencia de datos en la interfaz PS2 [2].

XADC
En la Basys3, el conector del XADC Pmod alberga 4 pares
analógicos diferenciales. Los canales XADC
correspondientes son 6, 7, 14 y 15. Los puertos Pmod están Figura 7. 1) Terminal micro-usb, 2) Terminal usb Host [2].
dispuestos en un ángulo recto de 2x6, y son conectores
hembra que se acoplan con el estándar. Cada puerto Pmod de
12 pines proporciona dos señales VCC de 3,3 V (pines 6 y C. IP cores
12), dos señales de tierra (pines 5 y 11) y ocho señales
lógicas. Las clavijas VCC y de tierra pueden entregar hasta 1 XADC Wizard
A de corriente. A continuación se muestran a los pines del El XADC core dentro del Artix-7 es un convertidor
Pmod y su asignación de pines para la E / S conectada al analógico a digital de doble canal de 12 bits capaz de
FPGA. También hay que tener presente la configuración del funcionar a 1 MSPS. Cualquiera de los canales puede ser
FPGA para los canales mencionados. controlado por cualquiera de los pares de entrada analógica
auxiliar conectados al encabezado JXADC [5].

Anexo 3. Diagrama XADC Core [5]

IV. IMPLEMENTACIÓN
MODO 1
Figura 4. Pines del PMOD [3]. Para este modo se utiliza en específico los módulos que
Anexo 2. Diagrama del XC7A35T con distribución de controlan el teclado de esta forma se codifica los datos
canales del FPGA [5]. obtenidos del mismo y realiza los sincronismos
correspondientes entre el reloj de teclado ps2 y el del
sistema. Como salida de este módulo se obtiene una señal
correspondiente al Scan-Code de las teclas presionadas (alfa-
numéricas).

Figura 8. Scan-Codes [4]. Figura 12. Código para el módulo uart buf

Decodificador Binario-ASCII
Este módulo contenido en el demo de keyboard permite la MODO 2
conversión de los datos obtenidos del módulo que ingresa los En este modo nos valdremos tanto del conversor ADC como
datos scan del teclado a su equivalente en código ASCII el de todos los recursos usados en el modo 1, el primero para
esquema general se presenta en la figura 8 y el código de activar la alarma en un voltaje predeterminado que va de 0 a
conversión descrito en verilog en la figura 9. 1 voltio y el segundo para el ingreso de la contraseña que
desactive esa alarma, cabe recalcar que dicha alarma no debe
desactivarse aunque la diferencia de potencial sea cero y que
la contraseña debe constar de tres caracteres numéricos.

XADX Demo
De este módulo que posee un IP Core se extrae solo la
activación de la alarma representada en un led, este solo se
encenderá en un voltaje de aproximadamente 0.5 Voltios,
dicha señal nos advertirá el encendido de la alarma, el
Figura 9. Módulo Conversor Binario-ASCII.
esquema general se presenta en la figura 13 y el código de
conversión descrito en verilog en la figura 14.

Figura 10. Código para la conversión Binario-ASCII.

Módulos Uart buf y Uart tx


Estos módulos se encargan de discriminación de los datos Figura 13. Esquema del módulo XADC Demo.
venidos del decoasccii que solo sean las teclas presionadas y
su posterior muestra en el terminal virtual por medio del Uart
tx. En la figura 11 se muestra su conexión y en la figura 12 la
toma de la porción de bits correspondientes a la tecla descrita
en verilog.

Figura 14. Código para la activación del led.


Figura 11. Conexión de los módulos uart buf y uart tx.
MÓDULOS DE CONTROL Y HABILITACIÓN
Módulo Clave
En este módulo se procede a crear la máquina de estados que
controla a la clave de activación, la confirmación de que es
correcta solo es representada por una señal de activación,
esta máquina de estados se sincroniza con el reloj de todo el
sistema donde se está trabajando. En la figura 15 se muestra
su conexión y en la figura 16 el diagrama de estados del
control de la contraseña donde “m” corresponde a la señal de
selección de modo (mode), “r” a la señal de reset y “des” a la
señal de desactivación de la alarma (desac).

Figura 18. Diagrama de estados del módulo estclave.

Módulos habXADC, MUXSEG y muxled


Estos módulos controlan la salida y habilitación de los
Figura 15. Conexión del módulo clave.
modos vistos anteriormente, el selector es la señal que nos
dará a escoger entre un modo uno y dos, que controla las
salidas de todo el sistema. El habXADC controla la salida de
encendido de la alarma que solo estará activa cuando se
seleccione el modo dos y por obvias razones la alarma este
encendida. MUXADC habilita las salidas de los 7 segmentos
solo en el modo 2. Muxled habilita la salida de la alarma solo
si el modo dos es seleccionado y la salida de estclave que
mantiene encendida la alarma esta activada.

Figura 19. Conexión del módulo HabXADC.

Figura 16. Diagrama de estados del módulo clave.

Módulo estclave
Este módulo controla que la activación de la alarma siga
aunque el voltaje de entrada del módulo ADC baje, a menos
que la señal de desactivación de la alarma dada por el Figura 20. Conexión del módulo MUXSEG.
modulo clave del teclado este encendida. En la figura 17 se
muestra su conexión y en la figura 18 el diagrama de estados
de estclave donde “l” corresponde a la señal de activación de
la alarma (led), “r” a la señal de reset, “a” la señal de
activación de la alarma y “lo” al encendido de la misma hasta
ingresar la clave (ledout).

Figura 21. Conexión del módulo muxled.

Creación del TOP


Para que el sistema en su totalidad tenga funcionalidad, se
procede unir cada uno de los módulos tanto los creados
como los reutilizados, para esto creamos un TOP general,
que se representó inicialmente en el diagrama jerárquico.

Figura 17. Conexión del módulo estclave.


responde a las funcionalidades propuestas en este
laboratorio.
- La creación del archivo Test Bench permite simular
y verificar que las operaciones que realiza el
circuito sean correctas y en cuestión a las máquinas
de estado es fundamental como trabaja cada uno de
esos módulos.

VII. RECOMENDACIONES

- Al trabajar tanto en VHDL como en Verilog en el


mismo proyecto se debe tener conocimientos y
Figura 22. Creación del top general. fundamentos o al menos una noción de la
descripción en cada uno de estos lenguajes, para así
aprovechar en buena medida sus ventajas en el
diseño e implementación de sistemas complejos
como los aparecidos en este proyecto.
- La instanciación de los módulos en verilog tiene
otro esquema que se debe tener muy claro al unir los
módulos existentes y creados puesto que al hacerlo
de forma incorrecta nos puede dar varios errores.
- Se debe tomar en cuenta la notación hexadecimal y
Figura 23. Añadido del IP core del XADC. binaria tanto en VHDL como en verilog puesto que
su uso es frecuente para representar y usar cadenas
V. RESULTADOS de información generadas por cada uno de los
módulos descritos.
A. Esquema.
- Los pines en constraints se deben colocar de manera
En la figura se muestra el esquema del sistema realizado, en
adecuada de acuerdo a la FPGA que se ocupe de
este punto del diseño se puede apreciar como los diferentes
manera que no se designen pines inexistentes u
módulos se relacionan entre sí y cuáles son las entradas y
ocupados, además los nombres de las variables de
salidas del sistema.
entradas sean iguales a los indicados en el proyecto.
- Se debe tomar muy en cuenta lo escrito en los
Anexo 4. Esquema final del TOP.
manuales de cada uno de los ejemplos
proporcionados por el soporte de la tarjeta de
B. Simulación
desarrollo, esto para que la conexión realiza sea la
En la simulacion se muestra el cambio de estados tanto de
correcta y proceder así a utilizar cada recurso.
clave, para la desactivacion de la señal de la alarma (módulo
clave) como del encendido permanente de la misma a menos
que la clave sea ingresada (estclave).
VIII. REFERENCIAS
Anexo 5. Test bench de la máquina de estados clave. [1] Pedroni. V. A. (2004). Circuit Design with VHDL. Londres. Inglaterra.
Anexo 6. Test bench de la máquina de estados estclave. MIT press.
[2] Digilent. (2016). Basys 3 FPGA Board Reference Manual.
Anexo 7. Recursos utilizados por la Tarjeta de desarrollo. [3] Diligent (2016). Basys 3 XADC Demo.
https://reference.digilentinc.com/basys3/xadcdemo
[4] Diligent (2016). Basys 3 Keyboard Demo.
https://reference.digilentinc.com/learn/programmable-
logic/tutorials/basys-3-keyboard-demo/start
VI. CONCLUSIONES [5] Xilinx. (2015). XADC Wizard.
- El lenguaje VHDL y VERILOG nos permite https://www.xilinx.com/support/documentation/ip_documentation/xad
c_wiz/v3_0/pg091-xadc-wiz.pdf
reutilizar módulos que ya han sido desarrollados,
depurados y probados así como del uso de módulos
creados para fines específicos de un proyecto.
- Al reutilizar módulos el sistema a utilizar llega a ser
menos complejo, puesto que las funcionalidades
como en este caso del uso del teclado, UART y
ADC sean accesibles para utilizarlas como se
requiera con solo adjuntarlas al proyecto.
- La utilización de máquinas de estado para el control
del sistema nos permite en el caso de nuestro
proyecto controlar de manera efectiva aspectos que
de otro modo no dieran los resultados esperados, de
esta forma hacemos al sistema compacto y que

Das könnte Ihnen auch gefallen