Hardware Hello World/es

From Qi-Hardware
Jump to: navigation, search

Prioritybox

NOTE, SAKC has been renamed SIE. So, some places SAKC is referred to as SAKC.


Contents

[edit] Aplicación Hola mundo Hardware

La FPGA de SIE no posee conexiones con un dispositivo de visualización como una pantalla de cristal líquido, por lo que nuestra aplicación básica será un blink, esto es, un led que se encenderá y apagará periódicamente, este es suficiente para comprobar el correcto funcionamiento de la FPGA y del canal de configuración del procesador.

La forma más rápida de implementar este blink es utilizando un contador; cada bit de salida de este contador realiza la división en potencias de 2 de la señal de reloj. El siguiente código asigna a la señal led el valor de counter[24], la que proporciona la señal de reloj dividida por 2^25 (33554432).


`timescale 1ns / 1ps
  module blink(clk, reset, led);
  parameter     B = (7);
 
  input            clk, reset;
  output           led;
 
  reg [24:0] counter;
  always @(posedge clk) begin
    if (reset)
      counter <= {25{1'b0}};
    else
      counter <= counter + 1;
  end
  assign led = counter[24];


Aquí usted puede descargar el código fuente de esta aplicación. Para poder generar el archivo de configuración de la FPGA es necesario:


[edit] Instalación de las herramientas de síntesis de Xilinx

Xilinx proporciona una versión gratuita de sus herramientas de diseño y pueden ser descargadas de acá

Una vez instalado es necesario que el directorio donde se encuentran los ejecutables sea adicionado a la variable de entorno PATH, para esto se debe agregar la siguiente línea al directorio de configuración del shell .bashrc (localizado en la raiz de la cuenta del usuario):

  export PATH=$PATH:''path_to_xilinx_dir''/bin/lin/
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:'path_to_xilinx_dir''bin/lin/

La variable LD_LIBRARY_PATH incluye la ruta de las liberías de xilinx, esto es necesario ya que estas no se encuentran en los sitios tradicionales (/lib, /usr/lib, /usr/local/lib)

Con estos cambios cada vez que se abra una nueva terminal se actualizarán estas variables de entorno y los programas de diseño de Xilinx podrán ser utilizados. Si desea que estos cambios se efectúen en una terminal ya abierta debe ejecutar el comando:

  source /home/your_user/.bashrc

Para compilar las librerías de Xilinx, con el objetivo de usar una herramienta de simulación, debemos ejecutar el siguiente comando en una terminal, una vez se hayan terminado los pasos anteriores:

  cd ''path_to_xilinx_dir''/bin/lin/
  sudo ./compxlib

Se abrirá entonces la herramienta de compilación de librerías de Xilinx. Deberá seleccionar entonces el simulador que tenga instalado y seleccionar la localización del archivo ejecutable del simulador. Siga los pasos del asistente para proseguir con la compilación. Tenga en cuenta que la herramienta compxlib de las últimas versiones de Xilinx puede no ser compatible con versiones antiguas de los simuladores. Las versiones recomendadas se listan en la ventana del compilador, aunque algunas versiones un poco anteriores a las señaladas pueden funcionar bien (en caso de que la compilación falle, la herramienta le indicará la versión más antigua del simulador para la cual es compatible).

[edit] Compilación de las librerías UNISIM y SIMPRIM con GHDL

Inicialmente debemos definir la variable de entorno XILINX que debe apuntar al directorio de instalación de las herramientas de Xilinx:

$export XILINX=/opt/Xilinx/10.1/ISE/

Debe asegurarse que los directorios tengan permiso de escritura:

$sudo chown -R  your_user /opt/Xilinx/10.1/ISE/


Los fuentes de las librerías se pueden encontrar en $XILINX/vhdl/src/unisims y $XILINX/vhdl/src/simprims, sin embargo en la version 11 y 12 de ISE estas librerías no estén presentes así que también las podemos encontrar aquí Librerias. Para compilarlas, Walter F.J. Mueller escribió tres scripts en perl (para mayor información ver mail):

Copie xilinx_vhdl_chop en el directorio /usr/local/bin y asegurese que /usr/local/bin este en su variable de entorno $PATH.

$ chmod +x xilinx_vhdl_chop
 
$ sudo cp xilinx_vhdl_chop /usr/local/bin

Copie xilinx_ghdl_unisim y xilinx_ghdl_simprim en un directorio temporal tmp_dir y asignele permisos de ejecución

$ mkdir ''tmp_dir''
 
 
$ cp xilinx_ghdl_unisim xilinx_ghdl_simprim tmp_dir
$ cd tmp_dir
$ chmod +x *
$./xilinx_ghdl_unisim
...
$./xilinx_ghdl_simprim
...


Alguno de los archivos pueden generar errores de compilación, esto es normal, al finalizar el proceso las librerías se pueden encontrar en: $XILINX/ghdl/unisims/ y $XILINX/ghdl/simprims/.

[edit] Instalación de las herramientas de desarrollo de Qi-Hardware

Es necesario tener la cadena de herramientas GNU para compilar las aplicaciones que se ejecutaran en SIE, para esto debe seguir estas instrucciones.

Adicionalmente debe incluir en la variable de entorno el directorio donde se encuentran los ejecutables de la cadena de herramientas

  export PATH=$PATH:path_to_xilinx_dir/bin/lin/:/path_to_openwrt/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:path_to_xilinx_dir/bin/lin/


[edit] Compilación de la herramienta xc3sprog

La herramienta xc3sprog, permite programar FPGAs Spartan 3 de Xilinx. SIE utiliza una versión antigua, la que es suficiente para nuestra aplicación. El código fuente de xc3sprog portada a SIE puede descargarse de acá.

usted puede descargar el proyecto completo de SIE, incluyendo los archivos de diseño y ejemplos del servidor git:

$ git clone git://projects.qi-hardware.com/nn-usb-fpga.git # clone the git repository

Cambiarse al directorio donde se encuentra el código fuente de xc3sprog

$  cd nn-usb-fpga/Software/xc3sprog/ 

Compilar xc3sprog

$ make

si no ocurre ningún error, obtendrá el mensaje:

$ mipsel-openwrt-linux-g++  -Wall -lstdc++ xc3sprog.o jtag.o iobase.o sakcXCProgrammer.o iodebug.o bitfile.o
  devicedb.o progalgxcf.o progalgxc3s.o jz47xx_gpio.o -o xc3sprog

Ahora debe copiar el ejecutable xc3sprog a la carpeta /usb/bin de SIE. Para esto puede utilizar el cable usb para establecer una interfaz de red.


[edit] Configuración de una interfaz de red usb con el Nano

Debe conectar SIE a su computador utilizando el cable USB proporcionado, con el comando dmesg usted obtendrá este mensaje:

$ dmesg
   .....
   usb0: register 'cdc_subset' at usb-0000:00:1d.0-1.3, Linux Device, ee:a9:fe:4d:b6:54

Ahora debe configurar la interfaz de red usb0:

$ sudo ifconfig usb0 192.168.254.200 up

Inicialmente SIE no tiene asignado un password para el usuario root, lo que es necesario para la transferencia de archivos, para asignar un password al root de SIE establecemos una sesión telnet

$ telnet 192.168.254.101

Lo cual nos proporcionará una consola donde podemos ejecutar el comando:

$ passwd

Adicionalmente, debemos crear un directorio deonde se almacenará un archivo de configuración:

$ mkdir /usr/share/xc3sprog'


[edit] Transferencia de archivos a SACK

Una vez establecida la conexión y asignado un password al usuario root podemos establecer una sesión scp para transferir los archivos a SIE

$  scp xc3sprog root@192.168.254.101:/usr/bin # copy xc3sprog to /usr/bin
$  scp devlist.txt root@192.168.254.101:/usr/share/xc3sprog # copy devlist.txt to /usr/share/xc3sprog
$  scp blink.bit root@192.168.254.101:        # copy blink.bit to /root   


[edit] Configuración de la FPGA

Finalmente configuramos la FPGA con el archivo blink.bit:

$ xc3sprog blink.bit

A lo que el programa debe responder:

 Release 0.5
 Device with ID=11c1a093 found
 ID=11c1a093
 Programming..
 Done

Después de esto el led D5 debe encenderse y apagarse periódicamente.

Personal tools
Namespaces
Variants
Actions
Navigation
interactive
Toolbox
Print/export