You are on page 1of 5

Implementacin de la Divisin en Vivado utilizando

IP- Core Divider Generator, con teclado PS2 y


UART Terminal en la Tarjeta FPGA Zybo Zynq
7000.
Chamorro Estefanny, Guillen Joselyn
Electric and Electronic Department, Universidad de las Fuerzas Armadas - ESPE
Sangolqui, Ecuador

rechamorro@espe.edu.ec, jvguillen@espe.edu.ec

AbstractLos sistemas integrados se han convertido en el Z-7010. El Z-7010 se basa en la arquitectura Xilinx
una parte integral de las sociedades actuales, su construccin All-Programmable System-on-Chip (AP SoC), que
requiere de una amplia gama de componentes, herramientas integra perfectamente un procesador ARM Cortex-A9 de
y tecnologas de hardware y software. Gracias a la aparicin
de la FPGA se han facilitado la resolucin de problemas dos ncleos con la lgica FPGA (Field Programmable
tanto sencillos como complejos y es por tal motivo que hoy Gate Array) de Xilinx de la serie 7[2].
en da el disedor tiene un mayor grado de flexibilidad para
implementar una arquitectura de un sistema, lo que permite
personalizar fcilmente la solucin requerida, ahorrando cada
componente reduciendo el costo y aumentando la fiabilidad del
sistema, optimizando as cada aplicacin especfica. El presente
trabajo prctico, radica en la activacin de un mdulo UART
con la Tarjeta Zybo Zynq 7000, para realizar comunicacin
serial enviando datos desde un teclado PS2 y visualizado en
un hyperterminal la resolucin de la operacin DIVISIN
mediante el uso del IP-core divider generator, en donde los
operandos son decimales de dos dgitos del 00 al 99 utilizando
entorno Vivado Design Suite con una programacin VHDL y
tecnologia top down RTL. La programacin realizada presenta
resultados en los que se ultilizan una catidad optima de recursos.

Palabras clave-uart, teclado ps2, serial, divisin

I. I NTRODUCIN
En el mundo de los sistemas embebidos, el xito de un FIGURE 1. Tarjeta Zybo Zynq 7000.
proyecto esta en una combinacin de requisitos y parmetros
Algunas caractersticas que ayudaron a la realizacin de
de rendimiento. Los requisitos son capacidades que el sistema
este trabajo son:
debe cumplir para ser funcional. Adems, un diseo de
sistemas embebidos esta limitado por el ambiente donde se Procesador Cortex-A9 de doble ncleo de 650Mhz
integra. Claramente, los requisitos y especificaciones guan Controlador de memoria DDR3 con 8 canales DMA
el diseo de un sistema embebido pero a menudo existen Controladores de perifricos de alto ancho de banda:
criterios adicionales (que puede o no puede ser proporcionada 1G Ethernet, USB 2.0, SDIO
de forma explcita) que determinan el xito del producto. Con Controlador perifrico de bajo ancho de banda: SPI,
el fin de tomar decisiones sensatas dada una cantidad fija de UART, CAN, I2C
recursos. [1] Velocidad de reloj interna superior a 450MHz

A. Tarjeta Zybo Zynq 7000. B. Mdulo PS2.

El ZYBO (ZYnq BOard) es una plataforma de desarrollo Para el desarrollo de la prctica es necesario utilizar
de circuitos digitales y de software incorporado, lleno de como herramienta externa el mdulo PS2, el cul es un
caractersticas, listos para usar, construidos alrededor del puerto de conexion mediante el protocolo de PS2 lo que
miembro ms pequeo de la familia Zinq-7000 de Xilinx, significa que es un serial bidireccional de datos,que al
momento de utilizar la misma trabaja con diferentes fines
y aplicaciones. Esta diseado para controlar dispositivos
perifericos como el teclado y el ratn.

FIGURE 2. Mdulo PS2.

C. Mdulo UART.

UART, son las siglas en ingls de Universal FIGURE 4. Diagrama jerarquico completo Mdulo ps2_keyboard.
Asynchronous Receiver-Transmitter, en espaol:
Transmisor-Receptor Asncrono Universal, es el
dispositivo que controla los puertos y dispositivos serie.
Se encuentra integrado en la placa base.

FIGURE 3. Mdulo UART.


FIGURE 5. Diagrama jerarquico completo Mdulo Div y UART.

A. Mdulo ps2_keyboard

II. D ESCRIPCIN DEL P ROBLEMA . En el mdulo del teclado de la figura 6 consta


fundamanetalemente de 3 entradas y una salida:
Disear un sistema con las siguientes especificaciones y clk: Es la seal de reloj del sistema
requerimientos: ps2_clk: Es la seal de reloj del teclado ps2
ps2_data: Seal del dato recibido por el teclado.
La entrada de informacin se realiza mediante un teclado
ps2_code: Contiene el codigo recibido del digito
PS2 conectado a la tarjeta FPGA.
presionado en el teclado.
El sistema realiza el cmputo mediante un IP-core divider
generator.
La salida de informacin se visualiza en la pantalla de
una computadora PC mediante una ventana de terminal
UART que recibe datos seriales provenientes de la tarjeta
FPGA.

III. D ESCRIPCIN DEL D ISEO .

Durante el desarrollo del diseo e implementacin, se


crearon 3 mdulos independientes uno del otro. FIGURA 6. Mdulo Teclado PS2.
Mdulo ps2_keyboard. Fue posible decodificar los nmeros de la parte superior
Mdulo DIV. del teclado y los nmeros del keypad ver Figura 7. Este
Mdulo UART. mdulo lee los datos sincronizadamente, se debe definir
Mdulo CODIFICADOR. la frecuencia del reloj de la tarjeta que es este caso es
SECUENCIA_PRINT 125MHz . El tamao de dato es de 8. El teclado envia los
datos como registro o buffer es decir que si se presiona B. Mdulo CODIFICADOR.
una tecla se genera un codigo hexadecimal (2 digitos de
8 bits)que se queda almacenado. El cdigo generado se
llama ps2_data y ahi se le decodifica.

FIGURA 7. Cdigo VHDl del mdulo PS2_keyboard. FIGURA 11. Modulo CODIFICADOR.
El teclado al presionar una tecla enva el scan code en 8 En este mdulo se realizan todas las decodificaciones
bits de informacin. como en la Figura 12 donde se visualiza el cambio
de nmeros hexadecimales a binarios, que ingresaran al
bloque o IP core ,

FIGURA 8. Keyboard scan codes.


B. Mdulo DIV.

FIGURA 9. Modulo DIV.


En el mdulo de la figura 9 se puede observar que una
vez obtenidos los nmeros decodificados se generan
los registros para los nmeros superiores de la parte
numerica y las teclas especiales. Luego se crea un
bloque con el ip-core divider generator para lo que hay
que tener en cuenta que este ip-core donde entran como
mnimo 8 datos, como se observa en la Figura 10.
Son 8 bits de ingreso para el dividendo y divisor por
lo cual el cociente y residuo son de 8 bits tambien, sin FIGURA 12. Cdigo de la decodificacin del divisor y
embargo estos 2 ultimos salen en una sola variable con dividendo.
16 bits. Para la divisin se necesita un pulso para que B. Mdulo SECUENCIA_PRINT.
empiece a realizar en este caso la de la tecla enter.

FIGURA 10. Cdigo del Modulo DIV.


.
FIGURA 13. Modulo SECUENCIA_PRINT.
En este bloque se crea una maquina secuencial para tambien una decodificacin a codigo assci para que pueda
la impresion de los caracteres que sern visualizados reconocer como caracter y mostrarse correctamente en
en el terminal por lo que para ello es necesario la pantalla.
transoformacin a cdigo ascci como visualizamos en La Tasa de transmision serial es 19200 baudios para
la Figura 14 . que esten sincronizados, es decir que envio 19200 bist
en un segundo, pero de todos esos bits solo 8 son mi
caracter. La frecuencia son 125MHz y con regla de 3 se
obtiene que 8 bits equivalen a 52084 y entonces se hace
un contador de los pulsos que genera el reloj interno y
cuando llega a los 52084 pulsos se envia un caracter.

IV. R ESULTADOS
Al momento de implementar el dise final se observa la
utilizacin de recursos de la FPGA ZYBO ZYNQ 7000.
Esta informacin se presenta en las siguientes Fiigura 16,17,
donde claramente de forma grfia y tabulacin podemos ob-
servar que los recursos utilizados son minimos pues apenas
se utliza 1 % para LUT Y Flip Flops, sin embargo se utiliza
para BUFG un 6 % y como el recurso mas utilizado tenemos
entradas y salidas o IO con un 9 %.
FIGURA 14. Cdigo de la separacin del cociente y residuo.
C. Mdulo UART.
El mdulo de la Figura 15 consta de 5 entradas y 1 salida:
ENTRADAS:
clk:Esta seal permite la sncronizacin del reloj del
uarta, tanto como el de la tarjeta.
reset_n: Esta seal permite resetear los datos que se FIGURE 16. Resultados.
visualizan en la pantalla.
tx_data: En seal se caracteriza por ser transmisor
de datos cuenta con un reloj de 125MHz.
SALIDA:
tx:El terminal UART funciona con 9600 baudios lo
que es necesario tener una frecuencia adecuada para
la visualizacin de los datos. FIGURE 17. Resultados.
La Figura 18 nos muestra la implementacion de la tarjeta Zybo
zynq 7000 con los respectivos modulos utilizados(ps2 y uart).

FIGURE 15. Modulo UART. FIGURE 18. Resultados.


Se realizaron 2 decodificaciones, una para encontrar si se
presiono las teclas especiales que se pide requerimien- V. C ONCLUSIONES
to(enter, backspace), si una de estas teclas es presionada La tarjeta Zybo Zynq 7000 tiene una frecuencia de reloj
se activa una bandera. Si el dato es un nmero del de 125MHz, que a comparacion de otras tarjetas(50MHz)
teclado alfanumerico asi mismo se genera una bandera es superior, esta frecuencia para que trabaje bien debe
y a su vez este dato escaneado se almacena como dato estar sincronizada para recibir datos correctos del teclado.
de numero, que se almacena en otra variable. Como ya Mediante banderas y variables determinadas se logro
esta almacenado lo que necesito ya puede decodoficar determinar que tecla es presionada, de esta forma se
a numeros decimales para operacionar los 2 digitos puede reconocer si se presion un operando o si se
(unidad y decena) y a binario para imprimirlos por el presionaron las teclas especiales como enter y el caracter
puerto serial, para poder imprimirlos por aqui se realizo de la divisin.
Se logr determinar que la comunicacin serial necesita
para la sincronizacion 19200 baudios y los datos deben
estar en binario para que se impriman.
La utilizacin del IPcore para la divisin facilitan el
trabajo y la programacin puesto que es un bloque
prediseado, proveniente del mismo Vivado.
El programa TeraTerm o putty son herramientas faciles
de manejar, que mediante su pantalla o hyperterminal
permiten la rpida demostracin de la comunicacin
serial atravez del puerto uart debido a que muestra lo
ingresado por el teclado.

VI. R ECOMENDACIONES
Se recomienda realizar calculos respectivos para poder
tener una sincornizacin correcta y de este modo los
datos enviados desde el teclado se muestren en pantalla
eficientemente, pues de no hacerlo se podria visualizar
caracteres tipo basura.
Los datos ingresados deben decodificarse a binario, ascii,
decimal de acuerdo a lo necesario para cumplir cada uno
de los requerimientos del trabajo.
El programa que se utlice para la sinconizacin debe estar
previamente configurado el valor en baudios para evitar
errores de sincronizacin.

R EFERENCIAS
[1] The xilinx.com. Website. [Online]. Available:
http://www.xilinx.com/support/documentation/university/VivadoTeaching//
/HDLDesign/2015x/Zybo/Supporting
[2] Uart VHDL Website [Online] https://eewiki.net/pages/viewpage.action
pageId=59507062
[3] PS/2 Keyboard Interface (VHDL) Website [Online]
https://eewiki.net/pages/viewpage.action?pageId=28278929
[4] Digilent- Manual Zybo Zynq 7000 Website [Online]
https://reference.digilentinc.com/reference/programmable-
logic/zybo/reference-manual
[5] Digilen Website [Online]https://forum.digilentinc.com/topic/216-uart-
and-zybo-board/