Images

Simulación del código en VHDL (LEDA_blog) en SIMULINK (I): Introducción.

Introducción:

Ya simulamos en la entrada anterior el código en VHDL LEDA_blog con el software de XILINX, esta vez lo haremos en la aplicación gráfica de Matlab llamada SIMULINK. 

Recordemos que el programa LEDA_blog implementa un algoritmo que da como resultado que se vaya iluminando cada led -de una fila de 4 leds- secuencialmente (como en el coche fantástico, aquella serie  antigua):





Para ello haremos trabajar en equipo al software de XILINX con el de Matlab. 


XILINX -> Matlab -> SIMULINK

Matlab -y su aplicación gráfica SIMULINK- son herramientas muy útiles en cualquier área de la ingeniería, incluida la electrónica. 

Basta con decir que los FPGAs se usan mucho en procesamiento digital de señales (señales de televisión, audio, radio, de radar... etc), y que para trabajar con señales y control de procesos, Matlab es ideal. 

Sin embargo también tengo que decir que usar el SIMULINK en este caso es "matar moscas a cañonazos", el único sentido que tiene es introducir al lector (de género desconocido por mí) en el uso del SIMULINK  en la electrónica y más concretamente en la electrónica digital. Máxime cuando ya hemos visto que en este caso particular con XILINX sólo nos sobra.

De hecho aquí el uso de Matlab-SIMULINK puede ser más un engorro que una solución, ¿porqué?, pues porque la simulación es muy lenta, no en vano el 90% del tiempo que he empleado en hacer este ejercicio para este post ha sido tratando de disminuir el tiempo de simulación (no en desarrollar el modelo), con tan poco progreso que verás que finalmente he optado por una solución poco ortodoxa. 

Esto no es raro si analizamos un poco el protocolo que se sigue para simular así:

- Primero Matlab "traduce" la información que le viene del software de XILINX (en este caso usé la versión más moderna, Vivado).

- Luego Matlab pasa esa información a SIMULINK, y en realidad ambos estarán pasándose información y trabajando en conjunto continuamente.

- Y por último (y probablemente el mayor hándicap), la mayor parte del tiempo se va a trabajar de forma recursiva con millones de periodos de 20 nanosegundos. 

Para acortar el tiempo de simulación, SIMULINK tiene distintas alternativas (modo normal, accelerator y rapid accelerator), y ni siquiera cuando he conseguido hacer funcionar el modo accelerator y rapid accelerator he tenido progresos significativos. No en vano la decisión de trabajar con versiones modernas de las dos aplicaciones (XILINX  y Matlab), ha venido motivada por ver si había mejoras en esa cuestión, siendo estas mejoras obtenidas insuficientes.

A pesar de todo he dado con una solución que consigue simular el comportamiento del programa en un tiempo razonable y que pienso puede ser suficiente para que el lector -no experimentado en estas cuestiones-, pueda empezar sin que esto resulte una "tortura china". 

Seguro que hay una alternativa mejor para estos casos, pero siendo fiel a la idea "pasar del código a la simulación lo más directamente posible", esta es la que yo he obtenido. 

Algún día he pasado cerca de una hora esperando a que acabara la dichosa simulación para que finalmente el ordenador se quedara "colgado", voy a procurar evitarte la experiencia.

Y ahora, let´s go!. 

0 comentarios: