La idea de este blog es presentar los pasos necesarios para llevar a cabo la Co-Simulación en Hardware (CSH) de un sistema construido en Simulink usando los bloques del Xilinx Blockset. La teoría detrás de todo esto está bastante detallada en los documentos provistos por Xilinx, así es que no abarcaré la misma.
Qué es CSH?
Es una herramienta disponible en el ambiente de desarrollo Simulink/System Generator que permite co-simular en hardware lo que se simula en software. Veamos que significa esto: En primer lugar cuando uno trabaja en el entorno Simulink/System Generator los sistemas que se construyen son simulados en ese mismo entorno, es decir TODO se realiza en software. Sin embargo se puede fácilmente construir el hardware equivalente de ese sistema (construido en software), configurar el FPGA respectivo, y simular en hardware lo mismo que se simular en software e incluso al mismo tiempo. Por eso, este proceso es justamente llamado 'Co-Simulación', porque se simulan ambos sistemas, hardware y software, al mismo tiempo.
Pasos a seguir:
Paso 1:
Sigue los pasos que normalmente ejecutas para construir tu sistema en Simulink. A modo de ejemplo, supongamos que ya he construido el siguiente sistema y lo quiero co-simular.
Paso 2:
Compilar el sistema para CSH: abrir el bloque 'System Generator', y en 'Compilation' seleccioná 'Hardware Co-Simulation'. Aparecerá un menú de los boards que por defecto trae instalado System Generator, tal como se muestra en la siguiente figura.
En este paso debes, cuidadosamente, seleccionar el board que va ser usado para la co-simulación, y a su vez que tipo de conexión usarás para comunicar el board (JTAG o Ethernet) con la PC. En caso de que el board no aparezca dentro del listado de los boards que vienen por defecto, deberás seguir todo un procedimiento para agregar el board a la lista de boards disponibles. Este procedimiento ya lo expliqué en un blog anterior "Como agregar el XUPV5 board para Co-Simulación en Hardware".
Como voy a usar el XUPV5 para la Co-Simulación, y además como ya seguí los pasos del blog mencionado anteriormente (que buen blog !!! :) ), selecciono XUPV5 JTAG para la compilación del sistema.
Paso 3:
Presionar 'Generate' para comenzar la 'Compilación del Sistema'. Qué genera 'Generate'?
- El hardware asociado con el sistema en Simulink
- La interface física para la comunicación entre la PC y el board XUPV5.
Si una presiona la opción 'Show Details' de la ventana de compilación, se puede ver los diferentes pasos que se ejecutan durante 'Generate'. En sí lo que se ejecuta es un script que invoca todas las herramientas del ISE necesarias para llegar finalmente al archivo de configuración del FPGA. Es decir herramientas como XST, Translate, MAP, P&R, TRACE, y BitGen.
Paso 4:
Terminada la compilación System Generator crea un nuevo bloque. Este bloque es la versión 'hardware' del sistema en Simulink (versión software).
Este bloque hardware se usará en el sistema que se desea co-simular. Debes copiar y pegar este bloque tal como muestra la siguiente figura.
Este bloque se usa igual que cualquier otro bloque del sistema, es decir se pueden excitar sus entradas y leer sus salidas. Durante la co-simulación el bloque CSH interactúa con el board para:
- Configurar el FPGA
- Control del reloj del board.
- Transmisión y Recepción de datos a y desde el FPGA por medio del cable JTAG
Este bloque tiene unos parámetros de configuración que es conveniente modificarlos tal como se detalla en el siguiente paso.
Paso 5:
Abrí el bloque CSH, comúnmente llamado 'JTAG Cosim', presionando dos veces el mouse sobre el bloque. La ventana de configuración del bloque aparecerá tal como se muestra a continuación.
Dejar las opciones que por defectos son mostradas.
En la opción de 'Cable' usá la siguiente configuración:
- Type: Xilinx Platform USB (o el tipo de cable que usa para la conexión PC-Board).
- Speed: 1.5MHz
Si durante este paso el board está conectado, puedes usar la opción 'Blink Cable LED' para comprobar si la conexión PC-Board es correcta.
Paso 6:
Volviendo al sistema en Simulink, conectá la(s) entrada(s) del bloque CSH o JTAG Cosim, a lo(s) mismo(s) estímulos usados para los otros bloques. La salida conéctela a un 'Sink' similar al usado para el sistema, facilitando así la comparación. Debajo puede observar el sistema que he completado en este paso.
Paso 7:
Verificá que el board esté conectado a la PC por medio del cable oportunamente seleccionado en la configuración del bloque JTAG Cosim (Paso 5), y que el board esté encendido.
Ejecutá la simulación como siempre lo haces.
Ejecutá la simulación como siempre lo haces.
Los dos sistemas son simulados al mismo tiempo, y como 'teóricamente' son los mismos sistemas, uno en software y otro en hardware, las formas de ondas vistas en los bloques 'Sink' deberían ser las mismas tal como se muestra en la siguiente figura.
Si has llegado a este punto solo leyéndo,.... bueno es hora de 'meterle manos' al hardware y animarte a hacer una Co-Simulación... eso sí, me contas como salió todo ! :) ...
genial gracias pero no tienes un filtro o aplicaciona filtro te lo agradeceria mucho :s ?
ResponderEliminar