Skip to content

Capítulo 13: Procesador simplez en FPGA

Juan Gonzalez-Gomez edited this page Jan 24, 2016 · 13 revisions

VideoBlog 13

VER VIDEO:

Click to see the youtube video

Descripción

En las FPGAs podemos implementar cualquier circuito digital, como por ejemplo un microprocesador. Yo he implementado el procesador educacional Símplez, creado por el profesor Gregorio Fernández. Simplez tiene 8 instrucciones y 512 palabras de memoria. Se ha implementado en lenguaje verilog y sintetizado con las herramientas libres del proyecto icestorm. En este videoblog se muestra cómo configurar la FPGA para tener Simplez, y ejemplos de ejecución de programas en él

ACCESO A LA DOCUMENTACION DEL PROYECTO

Sintetizando a Simplez

  • Lo primero que hacemos es clonarlos el repositorio de github (o hacer un fork y luego clonarlo):

    $ git clone https://github.com/Obijuan/simplez-fpga.git

  • Nos metemos en el directorio simplez-fpga/verilog

    $ cd simplez-fpga/verilog

  • Ensamblamos el programa bootloader para sintetizar un simplez con ese programa metido en la memoria. Podríamos usar cualquier otro, pero el bootloader nos permite que usemos la herramienta sboot para descargar programas fácilmente en simplez:

$ ./sasm.py asm/boot.asm Assembler for the SIMPLEZ microprocessor (Version: v1.2) Released under the GPL license

OK! Machine code for SIMPLEZ generated

File: prog.list Size: 60 words Code: 50 words data: 10 words


Esto genera el fichero **prog.list** con el **código máquina del bootloader**, que se cargará en la memoria RAM al realizarse la síntesis

* Realizamos la **síntesis**:

```$ make sint```

Nos genera el fichero **simplez.bin** con el **bitstream** para configurar la FPGA

* **Configuramos la FPGA**:

```$ make prog```

Ahora la **placa icestick tiene un simplez dentro**, con un bootloader en su RAM. Es como si hubiésemos comprado una placa con Simplez en una tienda. Si la desconectamos y la volvemos a conectar, simplez con su bootloader seguirán ahí. Es como nuestro propio arduino pero simplificado

* Hacemos un **test de carga**, para comprobar que está todo ok:

$ ./sboot.py -t 1 Test! Bootloader ready!!!! EXECUTING!!!


Esto carga un programa de ejemplo que está dentro de la **herramienta sboot**. Hará que los leds roten en sentido horario. Nos sirve para comprobar que está todo ok

# Cargando ejemplos en Simplez

* **Ensamblamos un programa nuestro**:

$ ./sasm.py asm/boot_02_sec1.asm -o sec1.list Assembler for the SIMPLEZ microprocessor (Version: v1.2) Released under the GPL license

OK! Machine code for SIMPLEZ generated

File: sec1.list Size: 9 words Code: 7 words data: 2 words


Se crea el fichero **sec1.list** con el código máquina de nuestro programa

* **Cargamos sec1.list en la memoria de simplez**, para que se ejecute:

$ ./sboot.py sec1.list File: sec1.list Size: 9 words Initial address: H'040 Bootloader ready!!!! EXECUTING!!!

Podemos ver la secuencia en los leds

# Probando el modo interactivo

* **Ensamblamos el ejemplo del eco**:

$ ./sasm.py asm/boot_06_echo.asm -o eco.list Assembler for the SIMPLEZ microprocessor (Version: v1.2) Released under the GPL license

OK! Machine code for SIMPLEZ generated

File: eco.list Size: 17 words Code: 15 words data: 2 words

* Lo **cargamos con sboot**, en **modo interactivo**:

$ ./sboot.py -i eco.list File: eco.list Size: 17 words Initial address: H'040 Bootloader ready!!!! EXECUTING!!! Entering the interactive mode... Press CTRL-D to exit

Hola como estas... :-)

El modo interactivo funciona como un terminal de comunicaciones. Las teclas que pulsamos se envían por el puerto serie a Simplez. Y todo lo que nos envía simplez se muestra por la pantalla. En este ejemplo, simplez nos devuelve todas las teclas que pulsamos (hace eco)

Salimos de este modo pulsando la tecla **Control-D**

# Enlaces

* [Diseño Digital para FPGAs, con herramientas libres](https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki): Tutorial para aprender verilog y diseño digital usando sólo herramientas libres.

* [Comunidad FPGA-wars: explorando el lado libre](https://groups.google.com/forum/#!forum/fpga-wars-explorando-el-lado-libre). Grupo donde compartir información, preguntar, hacer compras conjuntas sobre todo lo relacionado con las FPGAs libres

* [Documentación de Simplez F](https://github.com/Obijuan/simplez-fpga/wiki/Procesador-SIMPLEZ-F)

Inicio
(Capítulos 1-11)

VideoBlogs

  1. Proyecto Icestorm: Herramientas libres para sintetizar diseños en FPGAs
  2. Procesador simplez en FPGA
  3. Platformio + FPGA
  4. Icestudio: programación visual de hardware en FPGA
  5. Platformio + Símplez
  6. Tarjeta IceZUM Alhambra. FPGA para todos
  7. Diseño paramétrico de piezas en FreeCAD
  8. Ubuntu Phone y FPGAs
  9. Esquema de la Icezum Alhambra migrado a Kicad
  10. Modelos 3D en Freecad para Kicad
  11. Icezum Alhambra V1.0K
  12. ACC: Apollo CPU Core
  13. Teselación de Penrose (P2)
  14. ACC1: Apollo CPU Core 1
  15. Probando el analizador lógico compatible Saleae con la FPGA
  16. FPGA: La placa Alhambra-II
  17. Etiquetas en Icestudio
  18. FPGAs: Control de LEDs
  19. FPGAs: SPI esclavo (1/2)
  20. FPGAs: SPI esclavo (2/2)
  21. FPGAs: SPI maestro (1/2)
  22. FPGAs: SPI maestro (2/2)
  23. FPGAs: Display SPI de 4 dígitos de 7 segmentos
  24. FPGAs: Máquina de contar. Controlador para Display SPI
  25. FPGAs: Edición de submódulos en Icestudio 0.5-dev
  26. Webserial y FPGAs
  27. Componentes virtuales y FPGA
  28. FPGAs y Memoria (I): Del biestable D al registro
  29. FPGAs y Memoria (II): Banco de registros
  30. FPGAs y Memoria (III): Memorias síncronas
  31. FPGAs y Memoria (VI): Aplicación: Secuencia programable en los LEDs
  32. FPGAs y Memoria (V): Aplicación: Volcado de memoria al PC
  33. FPGAs y Memorias (VI): Mapeo de recursos en memoria
  34. FPGAs y Pulsadores (I). Etapas de procesamiento de las entradas
  35. FPGAs y Pulsadores (II). La etapa física: pulsadores y placas
  36. FPGAs y Pulsadores (III). Etapas 1 y 2: Pull-ups y pull-downs
  37. FPGAs y Pulsadores (IV). Etapa 3: Sincronización
  38. FPGAs y Pulsadores (V). Etapa 4: Normalización
  39. FPGAs y Pulsadores (VI). Etapa 5: Antirrebotes
  40. FPGAs y Pulsadores (VII). Ejemplos de uso
  41. (-54). Colección iceK. FPGAs y contantes
Clone this wiki locally