Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Open source
Business
Explore
Pricing
Blog
Support
Obijuan / open-fpga-verilog-tutorial
Code
Issues 0
Pull requests 0
Search
This repository
Watch
Wiki
Pulse
Sign in
13
Star
31
Sign up
Fork
15
Graphs
Pages 40
Inicio (EN)
Captulos
You are leaving the privative sector ... y ests entrando en el sector LIBRE! Bienvenido! De aqu en
adelante slo usaremos herramientas del patrimonio tecnolgico de la humanidad
Introduccin
Las FPGAs son unos chips "en blanco" que nos permiten configurarlos para crear dentro de ellos
nuestros propios circuitos digitales. Si! Con las FPGAs estamos creando hardware!
Todos los circuitos digitales se descomponen en sus elementos bsicos: puertas lgicas para
hacer operaciones booleanas con los bits y biestables para almacenarlos. Como primera
aproximacin, podemos pensar en una FPGA como una chip que tiene en su interior arrays de estos
elementos, sin conectar. Al configurarla, establecemos estas uniones y obtenemos nuestro circuito.
https://github.com/Obijuan/open-fpga-verilog-tutor
Clone in Desktop
La magia de las FPGAs est en las herramientas software que permiten generar el bitstream a
partir de la descripcin del circuito en un lenguaje HDL
Los circuitos se disean utilizando un lenguaje de descripcin hardware (HDL), como Verilog o
VHDL. Son los ficheros fuentes. La generacin del bitstream se hace en dos fases, a partir de las
fuentes:
2 Emplazado y rutado. Los componentes del netlist se hacen corresponder con los elementos
fsicos de la FPGA, se determina su colocacin y se realiza el rutado. Toda la informacin de
configuracin de la FPGA se condensa en el bitstream. Esta fase s depende del modelo concreto
de FPGA que se disponga
NOTA SOBRE TERMINOLOGA: Aunque tcnicamente la fase de sntesis en slo una parte de la
generacin del bitstream, coloquialmente cuando se habla de sntesis nos solemos referir al
proceso completo. As, si decimos que "hemos sintetizado este circuito en la FPGA", nos estamos
refiriendo a que se han realizado todas las fase: sntesis, emplazado y rutado, generacin del
bitstream y carga en la FPGA
gustos. Con las herramientas libres nos independizamos. Los diseadores decidimos qu
sistema operativo utilizar. O qu entorno usar. Ya no estamos obligados a hacer lo que nos diga
el fabricante.
Acceso al conocimiento: Estas herramientas las podemos usar normalmente, igual que las
privativas. Sin embargo, si tenemos curiosidad, tenemos acceso al conocimiento de cmo estn
programadas, qu algoritmos se usan, cmo se implementa la sntesis... Esto fomenta el espritu
cientfico de comprender cmo funcionan las cosas... para luego mejorarlas. Ahora es posible
que investigadores de cualquier parte del mundo analicen los algoritmos, los comprendan y los
mejoren. Antes slo los fabricantes lo podan hacer
Nuevas aplicaciones: Se abre el camino a probar nuevos usos de la FPGA no previstos por
los fabricantes. Desde el comienzo de las FPGAs han surgido las ideas de usar hardware bajo
demanda, de codiseo hw/hw, sistemas operativos que usen tareas hw, etc. Aunque se han
escrito muchsimas tesis sobre ello, las implementaciones reales eran muy especficas para un
fabricante concreto. Y poco reproducibles por la comunidad. Ahora ya es viable hacer
implementaciones que corran por ejemplo en una raspberry pi, y que se sintetice el hardware
bajo demanda. Con las herramientas privativas era imposible, porque no estaba previsto por los
fabricantes
Limitaciones
Ninguna herramientas recin nacida tiene todo lo que deseamos. Pero al ser libre, potencialmente
cualquier caracterstica se puede implementar. Por eso todos los sistemas de software/hardware
libres, evolucionan y maduran con el tiempo. Einstein tambin fue beb, y con esa edad no poda
crear sus teoras. Lo importante es el potencial.
Las herramientas del proyecto icestorm acaban de nacer. Y tienen todava que madurar y
desarrollarse. Algunas limitaciones son:
Slo sirven para las FPGAs de Lattice, modelos: HX1K-TQ144 y HX8K-CT256
Las herramientas slo cubren el bajo nivel: se usan en la lnea de comandos. No hay un
entorno grfico que permita gestionar proyectos. Hay que hacerlo a base de makefiles
El soporte a puertas triestado todava es muy limitado
No hay soporte para anlisis de tiempo post-rutado
Sintetizador: Yosys (Repo en github) Place & route: Arachne-pnr (en github) Utilidades y
descarga en FPGA: Proyecto icestorm
En la siguiente figura se muestran las diferentes herramientas usadas en las etapas, y las
extensiones de los archivos que se van generando:
converted by Web2PDFConvert.com
Se parte de los ficheros fuente en verilog (.v). Usando el sintetizador Yosys, se generan los
ficheros netlist (.blif). El emplazado y rutado se realiza con arachne-pnr, generndose el bitstream
en formato ascii (.txt). Con icepack se crea el bitstream binario (.bin) que finalmente se enva a la
FPGA con iceprog
En la linea de comandos, los pasos a seguir para llevar el fichero test.v hasta la FPGA seran:
$ yosys -p "synth_ice40 -blif test.blif" test.v
$ arachne-pnr -d 1k -p test.pcf test.blif -o test.txt
$ icepack test.txt test.bin
$ iceprog test.bin
Instalacin
Ubuntu 14.04, 15.10
Instalacin automtica, con instalador
David Cuartielles ha creado este instalador que realiza todo el proceso automticamente: se baja
todas las herramientas del github, las compila y las instalada, asi como todas las dependencias
necesarias. La forma de usarlo es:
git clone https://github.com/dcuartielles/open-fpga-install.git
cd open-fpga-install
sudo bash install.sh
converted by Web2PDFConvert.com
Instalacin Manual
Instalacin de dependencias:
sudo apt-get install build-essential clang bison flex libreadline-dev gawk tcl-dev libffi-dev git mercurial graphviz xdot pkg-config python python3 libftdi-dev
Fedora 22
Instalacin de dependencias:
sudo dnf install libftdi-devel tcl-devel readline-devel flex clang bison gawk libffi-devel git mercurial graphviz python python3
NOTA: si aparecen errores relacionados con "ftdi.h" puede ser necesario enlazar la librera FTDI de
este modo:
sudo ln -s /usr/lib64/libftdi1.so /usr/local/lib/libftdi.so
sudo ln -s /usr/include/libftdi1/ftdi.h /usr/local/include/ftdi.h
converted by Web2PDFConvert.com
Si lo que quieres es actualizar las herramientas, puedes re-utilizar los repositorios que clonaste
durante la instalacin, usando el comando "git reset --hard & git pull" (revertir cambios locales y
descargar la ltima versin):
cd icestorm
git reset --hard & git pull
make -j$(nproc)
sudo make install
cd ../arachne-pnr
git reset --hard & git pull
make -j$(nproc)
sudo make install
cd ../yosys
git reset --hard & git pull
make -j$(nproc)
sudo make install
Placa ICEStick
La placa que usaremos en estos tutoriales es la IceStrick Si no dispones de ella (o de otra similar),
No problem! Tambin simularemos todos los diseos con icarus verilog y gtkwave
Configuracin
La descarga del bitstream a la placa icestick se hace directamente por USB, usndose la
biblioteca libftdi. Para ello es necesario tener permisos de acceso.
Si intentamos cargar en la icestick sin permisos, obtendremos el siguiente mensaje de error:
converted by Web2PDFConvert.com
$ iceprog scicad1.bin
init..
Can't find iCE FTDI USB device (vedor_id 0x0403, device_id 0x6010).
ABORT.
Una manera de solucionarlo es utilizar sudo al ejecutar iceprog, descargando con el comando:
$ sudo icprog bitstream.com
Esto tiene el inconveniente de que hay que estar metiendo la clave cada cierto tiempo.
La otra forma es configurar el sistema udev para que al conectar la icestick al USB el usuario
tenga permisos. Para ello hay que hacer lo siguiente:
Crear el archivo /etc/udev/rules.d/80-icestick.rules con el siguiente contenido
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0403",
ATTRS{idProduct}=="6010", OWNER="user", GROUP="dialout",
MODE="0777"
Ejecutar este comando para relanzar el administrador de udev y cargue la nueva regla:
$ sudo udevadm control --reload-rules && sudo udevadm trigger
2. Entra en el directorio de trabajo del tutorial que toca. Por ejemplo, para el 1 sera:
$ cd open-fpga-verilog-tutorial/tutorial/ICESTICK/T01-setbit/
3. Simula y sintetiza
En cada tutorial se irn indicando los comandos a ejecutar. En el caso del primero, para realizar la
simulacin hay que ejecutar:
make sim
Para sintetizar:
make sint
$ iceprog setbit.bin
Documentacin
Manual de la ICEstick(PDF)
Hoja de datos FPGA iCE40LPHXF(PDF)
Pinout de la Icestick
Enlaces
converted by Web2PDFConvert.com
Crditos
"AND ANSI" by jjbeard - Own Drawing, made in Inkscape 0.43. Licensed under Public Domain
via Commons https://commons.wikimedia.org/wiki/File:AND_ANSI.svg#/media/File:AND_ANSI.svg
"OR ANSI" by jjbeard - Own Drawing, made in Inkscape 0.43. Licensed under Public Domain via
Commons - https://commons.wikimedia.org/wiki/File:OR_ANSI.svg#/media/File:OR_ANSI.svg
"NOT ANSI" by jjbeard - Own Drawing, made in Inkscape 0.43. Licensed under Public Domain
via Commons https://commons.wikimedia.org/wiki/File:NOT_ANSI.svg#/media/File:NOT_ANSI.svg
"XOR ANSI" by jjbeard - Own Drawing, made in Inkscape 0.43. Licensed under Public Domain
via Commons https://commons.wikimedia.org/wiki/File:XOR_ANSI.svg#/media/File:XOR_ANSI.svg
"D-Type Flip-flop" by Inductiveload - Own Drawing in Inkscape 0.43. Licensed under Public
Domain via Commons - https://commons.wikimedia.org/wiki/File:D-Type_Flipflop.svg#/media/File:D-Type_Flip-flop.svg
converted by Web2PDFConvert.com