El programa por defecto para configurar FPGA de Xilinx es el programa ISE, pero su funcionamiento principalmente desarrollando esquemas es muy inestable y mejorable.

Altium Designer es un versatil, potente e intuitivo programa de diseño y simulacion de circuitos electronicos analogicos que integra entre sus potencialidades la programacion de FPGAs. Altium Designer es mucho mas potente, eficaz y facil de usar que Xilinx ISE, sin embargo realizar su configuracion para ello puede ser complicado.

Altium facilita el trabajo de la configuracion de FPGA ofreciendo una mejor compatibilidad y librerias adaptadas para sus placas de desarrollo de FPGA (NanoBoard), sin embargo, tambien podemos usar otras placas de desarrollo de FPGA o incluso no usar placas de desarrollo.

\r\n','\r\n


En esta ocasion, se va a usar la placa Papilio Pro [1], que integra un FPGA Xilinx Spartan 6. Para ello, se creara el proyecto FPGA en Altium Designer, el esquema correspondiente, y por ultimo se creara el archivo de definiciones (constraint file) donde seran enlazados los puertos de salida o entrada del esquema con los pines fisicos de la placa Papilio Pro.

\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n\r\n
\"\"
Imagen 1
\r\n

Para empezar, vamos a crear un proyecto de FPGA (File, New, Project, FPGA Project), posteriormente un esquema (File, New, Schematic), y por ultimo diseñamos el FPGA (imagen 1). En el esquema de la imagen a los lados de los puertos aparece su correspondencia fisica segun hemos especificado en el archivo constraints. Por tanto, estos numeros apareceran  despues de compilar el proyecto con el constraint file finalizado.

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\"\"
Imagen 2
\r\n

Ahora creamos el constraint file (File, New, Other, Constraint file) y lo rellenamos con los datos que necesitemos (imagen 2).
El formato del constraint file es ligeramente diferente al archivo que crea Xilinx ISE, por ejemplo, ISE usa \'#\' para indicar que el texto siguiente son comentarios, mientras que Altium Designer usa \';\'.
Si introducimos comandos y no son reconocidos nos avisara cuando realicemos la etapa de Synthesize.
Ademas de definir los puertos que vamos a usar, tambien tenemos que indicar el chip correspondiente a nuestro FPGA, en este caso \"Record=Constraint | TargetKind=Part | TargetId=XC6SLX9-2TQG144C \", como se puede ver en la imagen.
Tambien podemos importar un constrainst file, como el que viene con Papilio Pro u otro que tengamos. Para ello, estando con el archivo constraint abierto seleccionamos \"Select file\" del menu \"Design, Import pin file\".

\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\"\"
Imagen 3
\r\n

Posteriormente abrimos la vista de dispositivos (View, Devices View) y deseleccionamos la opcion \"Live\" y seleccionamos \"Settings\", ambos situados en la esquina superior derecha.
Dentro de la carpeta \"FPGA\", seleccionamos la opcion \"Synthesis\" y por ultimo \" Change Device\".
A continuacion seleccionamos \"Xilinx\" en \"Vendors\" y \"Spartan 6\" en \"Families\".
Si aparece \"Click to download and install Spartan6 Plugin(s)...\" seleccionarlo y realizar los pasos requeridos.

En esta ventana (imagen 3) se muestran los chips soportados de la familia Spartan 6. A la derecha del todo, tenemos el chip \"XC6SLX9\", que es el que esta presente el la placa Papilio Pro, y a la izquierda aparecen los distintos encapsulados. En este caso el apropiado es el ultimo \"TQ144\".
Si seguimos la tabla, tendriamos que seleccionar en el cuadro \"Speed Grades\" \"Standard Performance\" y en \"Temperature Grades\" \"Comercial Grade\" (si no seleccionamos esto correctamente el el siguiente paso puede aparecer \'-\' en vez de un numero y no podremos finalizar), a continuacion seleccionar la celda donde confluyen \"TQ144\" y \"XC6SLX9\" y  cerrar la ventana pulsando el boton \"Ok\" y nuevamente \"Ok\".

Ahora vamos a editar algunas opciones de nuestro proyecto para configurarlo como lo haciamos con Xilinx ISE.
Pulsando con el boton derecho sobre nuestro proyecto, seleccionamos \"Project Options...\".
-Seleccionamos \"Verilog\" en la pestaña \"Options\"
\"\" -Seleccionamos \"XST Synthesizer\" del combobox que aparece en la pestaña \"Synthesis\". En esta pestaña podemos modificar tambien opciones como añadir buffers en cada puerto de IO (activado por defecto) o seleccionar la velocidad del diseño.
Pulsamos \"Ok\".

\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n
\"\"
Imagen 4
\r\n


El siguiente paso consiste en editar la configuracion del proyecto para incluir nuestro constraint file. Para ello, pulsamos con el boton derecho en nuestro proyecto y seleccionamos \"Configuration Manager\". Seleccionamos \"Add New Configuration\" y escribimos un nombre. Debajo en \"Used Constraints\" pulsamos sobre \"No Constraints Selected\" y seleccionamos el checkbox debajo de \"Included in Configuration\" (Imagen 4).
Pulsamos en \"Ok\" y nuevamentee en \"Ok\".

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n
\"\"
Imagen 5
\r\n

Ahora, volvemos a la vista de dispositivos (devices), y, si no se muestra ya el icono de nuestro FPGA y aparece la pantalla vacia, pulsamos con el boton derecho en medio de la pantalla y seleccionamos \"Add\", \"XC6SLX9...\" o el modelo de FPGA que tengamos (Imagen 5).


Ahora aparecera la siguiente pantalla: Imagen 6.

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\"\"
Imagen 6
\r\n

Si seleccionamos \"Build\" realiza tambien los pasos anteriores (\"Synthesize\" y \"Compile\").
Si todo se ha realizado correctamente tendriamos que obtener el archivo .bit necesario para programarlo con el loader de Papilio en la carpeta \"Outputs\" correspondiente al proyecto.

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\"\"
Imagen 7
\r\n

Error de versión de Xilinx ISE

\r\n

Si altium Designer nos avisa de un error de version de Xilinx ISE porque usamos una version de ISE que no existia cuando se lanzo la version de Altium Designer (como con Altium designer 13 y  ISE 14.6, que es la ultima version a dia de hoy), la solucion es tan facil como añadir la version en el archivo \"XilinxVersions.txt\", que se encuentra en la raiz del directorio donde tengamos instalado Altium Designer (imagen 7).

\r\n

 Windows 8 fix

\r\n

Xilinx ISE no soporta oficielmente Windows 8, para evitar errores y que el programa se cierre forzosamente hacer lo siguiente:

\r\n

Ir a C:\\Xilinx\\14.6\\ISE_DS\\ISE\\lib\\nt64y buscar \"libPortability\". La busqueda devolverá 2 resultados:
libPortability.dll
libPortabilityNOSH.dll
Renombrar \"libPortability.dll\" a \"libPortability.dll.orig\". 
Duplicar el archivo \"libPortabilityNOSH.dll\" en el mismo directorio y reombrar la copia a \"libPortability.dll\"

\r\n

wbtc.exe has stopped working

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\"\"
Imagen 8
\r\n

En Windows 8 x64 puede ocurrir este error despues de realizar el proceso de \"Compile\". Segun he leido no afecta al resultado final, sin embargo para solucionarlo solo hay que buscar en el directorio donde tengamos instalado Xilinx ISE y buscar \"wbtc.exe\" (imagen 8). A continuacion otorgar derechos de administrador a cada uno de los archivos.

\r\n

Bibliografía:

\r\n

[1] http://papilio.gadgetfactory.net/index.php?n=Papilio.PapilioPro
http://forum.gadgetfactory.net/index.php?/files/file/4-papilio-pro-generic-ucf/
http://www.altium.com/files/training/module5fpgadesign.pdf
http://wiki.altium.com/display/ADOH/Desktop+NanoBoard+NB2DSK01
http://altium.com/files/nanoboard/nb2_datasheet_en.pdf
http://wiki.altium.com/display/ADOH/Tutorial+-+Getting+Started+with+FPGA+Design
http://forums.xilinx.com/t5/New-Users-Forum/wbtc-exe-has-stopped-working/td-p/266062
http://www.edaboard.com/thread56748.html
http://www.youtube.com/watch?v=T9WcjF8h_S8
http://www.youtube.com/watch?v=KzWaMb0K4cI

\r\n

http://binarykoala.blogspot.com.es/2013/10/get-xilinx-ise-146-webpack-to-work-on.html

\r\n
 

danirebollo.es