Kéfir (Kit Educativo con FPGA, Inclusivo y Reciclable) es un kit de desarrollo económico
basado en la FPGA Lattice iCE40HX4K-TQ144.
¿Qué es Kéfir?:
Kéfir es un proyecto para realizar kits de desarrollo educativos basados en FPGAs. Se proponen como objetivos del proyectos los siguientes pilares:
- Inclusivo: buscando un costo que lo haga accesible, y que al menos una
versión del mismo pueda ser construida utilizando las tecnologías de soldadura
disponibles en la región.
- Reciclable: buscando que el kit propiamente dicho, y el cable de configuración,
puedan ser reusados para fines diferentes al de difundir la tecnología FPGA.
El primer resultado de este proyecto es la placa Kéfir I. Esta placa se basa en una
FPGA iCE40HX4K-TQ144 de Lattice. Las características principales de esta familia de FPGAs
se dicuten aquí.
A los fines de reducir los costos de fabricación, y complejidad del PCB, se optó por
una placa básica, con la menor cantidad de componentes posibles. Al mismo tiempo se
separó la funcionalidad de configuración (y parte de la fuente de alimentación) en
una placa separada. Esta placa puede usarse para configurar otras FPGAs, realizar depuración
con CPUs AVR y ARM y otras tareas similares. La placa que contiene dicha funcionalidad
se denomina MILK.
Con el objetivo de permitir expandir las funcionalidades de Kéfir I, reutilizando placas
ya existentes, se decidió que tuviera conectores compatibles con Arduino y conectores
PMOD. Esto no sólo permite reutilizar shields de Arduino sino que abre otra posibilidad
interesante: reciclar Kéfir I como una placa compatible con Arduino. Para mayor información
visitar Lattuino.
Características técnicas:
- FPGA:
- Lattice iCE40HX4K-TQ144 (3520 LUT4s, FFs y carry; 2 PLLs; 80 kib SRAM; 107 GPIOs)
- Memoria de configuración: Winbond W25X40CL (SPI, 4 Mib, quedan casi 3 Mib libres)
- Reloj: zócalo para colocar un oscilador tipo DIP-8/14. (evitando usar 1 PLL todo el tiempo)
- PCB: (FR4 1,6 mm de espesor)
- Capas: 2
- Separación mínima: 8 mils
- Ancho mínimo de pistas: 10 mils
- Diámetro vías: 40 mils
- Agujero vías: 0,51 mm
- Nota I: la FPGA tiene un paso de 0,5 mm
- Nota II: todos los componentes pueden soldarse con soldador (no QFN, no BGA, etc.)
- Conectores: (GPIO 3,3 V)
- Tiene los conectores de ChipKit, que son los de Arduino UNO, pero con el doble de I/Os.
Un total de 42 GPIOs.
- 2 PMOD de 12 pines (8 I/Os + 2 GND + 2 Vcc c/u)
- 2 conectores de 20 pines para configuración y comunicación con la PC. Estos conectores
están pensados para conectar con MILK.
- Interfaz de usuario:
- Botones: ninguno físico, tiene 4 CapSense.
- LEDs: 4 LEDs de uso general (+ power + DONE).
- Entradas analógicas: (MCP3008)
- 8 canales de 10 bits
- Frecuencia máxima de sampleo 100 ks/s
- USB:
- Conector tipo B
- Driver TUSB1106 (LS/FS)
- Adicionalmente MILK provee comunicación con la PC (SPI, I2C, RS-232, etc.)
- Alimentación:
- Desde el USB a través de MILK
- Opcionalmente puede alimentarse con 3,3 V
Comparación con proyectos similares:
La siguiente tabla resume las principales diferencias entre Kéfir I y otros proyectos similares, resaltando sus ventajas y desventajas:
Placa |
Ice Blink |
Alhambra I |
Kéfir I |
Alhambra II |
CIAA EDU-FPGA |
Publicada |
2012 |
2016 |
2017 |
2018 |
2020 |
Libre |
No |
Si |
Si |
Si |
Si |
EDA libre (KiCad) |
No (No disponible) |
Si (3) |
Si |
No (Altium) |
Si |
FPGA |
Modelo |
HX1K |
HX1K |
HX4K |
HX4K |
HX4K |
LUTs/FF |
1280 |
1280 |
7680 |
7680 |
7680 |
BRAM |
64K |
64K |
128K |
128K |
128K |
PLLs |
1 |
1 |
2 |
2 |
2 |
Reloj |
333 kHz
3,33 Mhz
33,33 MHz |
12 MHz |
24 MHz Intercambiable (6) |
12 MHz |
12 MHz |
Configuración |
Circuito separable |
No |
No |
Si |
No |
No |
Estándar (5) |
No |
Si |
Si |
Si |
Si |
Chip |
AT90USB2 |
FT2232H |
FT2232H |
FT2232H |
FT2232H |
Otros usos |
No |
No |
Debug ARM y AVR (Arduino).
Cable RS-232, JTAG y SPI.
Config. Xilinx |
No |
No |
Flash |
M25P10 |
N25Q032A |
W25X40CL |
N25Q032A |
W25X40CL |
Capacidad |
1M |
32M |
4M |
32M |
4M |
PCB |
Capas |
4 |
4 |
2 |
4 |
2 |
Tamaño pasivos más pequeños |
0402 |
0402 |
0603 |
0402 |
0805 |
Componentes QFN/BGA |
Si |
Si |
No |
Si |
No (1) |
Conectores Arduino |
IOL |
Si |
Si |
Si |
Si |
Si |
IOH |
Si |
Si |
Si |
Si |
Si |
Power |
Si |
Si |
Si |
Si |
Si |
AD |
Sólo digital |
Sólo digital |
Si |
Sólo digital |
No |
ICSP |
No |
No |
Si |
No |
No |
I/O tolerante 5 V |
No |
Si (20 I/Os) |
No |
Si (20 I/Os) |
No |
Conectores Chipkit UNO32 |
IOL UNO32 |
Si |
No |
Si |
No |
Si |
IOH UNO32 |
Si |
No |
Si |
No |
Si |
AD UNO32 |
Si |
No |
Si |
No |
Si |
Otros conectores |
PMOD |
3 (2) |
- |
2 |
- |
2 |
Otros |
1 SPI y 1 Power
(similar Power Arduino) |
4xAnalog In, 8 I/Os |
16 I/Os y 1 SPI |
4xAnalog In, 8 I/Os |
- |
Total I/O dig. |
68 |
30 |
52+20 (4) |
30 |
48 |
Entradas analógicas |
Canales |
- |
4 |
8 |
4 |
- |
Resolución |
- |
12 bits |
10 bits |
12 bits |
- |
S.R. |
- |
100 ks/s |
100 ks/s |
100 ks/s |
- |
Interfaz |
- |
I2C |
SPI |
I2C |
- |
Interfaz Humana |
Botones |
4 Capsense |
2 |
4 Capsense |
2 |
4 |
LEDs |
4 |
8 |
4 |
8 |
4 |
Otras interfaces |
USB directa |
No |
No |
Si |
No |
No |
Máxima transferencia PC a FPGA |
- |
12 Mb/s (UART) |
>320 Mb/s (async FIFO) |
12 Mb/s (UART) |
30 Mb/s (MPSSE) |
Notas:
- El cristal tiene 4 PADs que podrían equipararse a un QFN.
- Uno compartido con el conector AD UNO32.
- La versión KiCad fue migrada desde el original en Altium.
- 20 líneas conectan la Kéfir I con Milk, removiendo Milk se accede a estas líneas adicionales.
- Se refiere a si la configuración se hace con herramientas estándares (libres y propietarias) y no con herramientas específicas de esa placa.
- El oscilador va montado en un zócalo permitiendo cambiarlo por otro de la frecuencia que se desee.
¿Se verificó su funcionamiento?:
La placa Kéfir I fue fabricada en Argentina y luego los componentes soldados manualmente (utilizando un soldador PACE con punta fina y un videoscopio). Se probaron las siguientes descripciones de hardware:
- Destello de un LED a 1 Hz a partir de reloj de 24 MHz (46 celdas)
- Funcionamiento de los 4 CapSense señalizando en los LEDs (39/50 celdas)
- Adquisición del A/D a 55 ks/s representando los 4 LSB/MSB en los LEDs (45 celdas)
- CPU compatible con el AVR ATtiny22 enviando "Hello world!" por RS-232 a 115.200 b/s (1012 celdas)
- USB device que se reporta como joystick, los CapSense son los botone del joystick, Low Speed (978 celdas)
- USB device que se reporta como joystick, los CapSense son los botone del joystick, Full Speed (970 celdas)
- USB device que permite leer los CapSense y encender los LEDs usando WISHBONE, Full Speed (1046 celdas)
- Aplicación compatible con Arduino UNO usando shield con TFT y touchscreen (ver Lattuino)
Todas las implementaciones funcionaron satisfactoriamente. Se detectaron niveles inusuales
de ruido en las aplicaciones que utilizaban los CapSense. Por estas razones se hizo una
revisión del diseño que elimina dicho problema (r1.14).
¿Donde puedo conseguir Kéfir I?:
Kéfir I es un proyecto de hardware abierto, por lo que toda la información de diseño puede descargarse de este sitio. En la actualidad no hay ningún proveedor que ofrezca versiones de Kéfir I ya armadas. Es nuestra intención fomentar la existencia de fabricantes ya que entendemos que no es eficiente pretender que cada usuario fabrique su propio circuito. Por esta razón alentamos a potenciales fabricantes a ponerse en contacto con nosotros. Es completamente legal que una Universidad o equipo de entusiastas forme un grupo a los fines de realizar una pequeña tanda de fabricación, bajando así los costos. A tales fines invitamos a los interesados a coordinarse utilizando la lista de correo de Kéfir. En el caso de voluntarios que puedan comprometerse a colaborar con el proyecto tenemos algunos circuitos impresos y/o componentes disponibles para que puedan armar su propia placa. En el caso de estudiantes universitarios que deban realizar su PPS (Práctica Profesional Supervisada) es posible realizarla en el INTI trabajando en este proyecto. En cualquiera de estos casos por favor contactarse con nosotros.
Niveles de tensión soportados:
Es muy importante tener en cuenta que los pines de entrada salida de la placa funcionan con 3,3 V y no toleran 5 V. Se decidió dejar la protección de estos pines fuera de la placa principal, ya que el tipo y grado de protección dependen del uso que se le de. En caso de utilizar la placa en un ambiente educativo hostil se recomienda utilizar shields de Arduino que incluyan protecciones adecuadas. El diseño de los mismos es muy simple.
Licenciamiento:
Kéfir I es un proyecto de hardware abierto, por lo que toda la información de diseño puede descargarse de este sitio. La licencia actual del proyecto es Licencia Creative Commons Atribución - Compartir Igual 4.0 Internacional. Esto permite el uso comercial, pero si se realizan cambios deberán compartirse con la misma licencia.
Circuito:
Kéfir I fue desarrollado usando KiCad.
KiCad:
KiCad es una herramienta de software libre para el diseño de circuitos electrónicos. Los últimos esquemáticos y PCBs de Kéfir I fueron realizados utilizando KiCad "4.0.5+dfsg1-4" que es la versión incluida en Debian GNU/Linux 9. La revisión fabricada (1.12) fue realizada utilizando KiCad "Build: (22-Jun-2014 BZR 4027)-stable" que es la versión incluida en Debian GNU/Linux 8.
¿Con qué software se puede usar?:
Basicamente hay dos conjuntos de herramientas que pueden usarse:
- Las herramientas gratuitas (pero privativas) del fabricante, que soportan VHDL y Verilog
(Más información).
- Herramientas de Software Libre, que soportan Verilog y un entorno de desarrollo visual
(Más información).
Kéfir I está soportada por ambos conjuntos de herramientas.
Ejemplos de uso:
Esta sección contiene diferentes ejemplos de como usar la funcionalidad de la placa:
- Botones capacitivos: este ejemplo muestra como utilizarlos en VHDL
y Verilog. Los ejemplos muestran el uso con diferentes herramientas (iCEcube2/Diamond Programmer, IceStorm,
Xil Tools, APIO, APIO IDE y icestudio). Se puede navegar on-line
o descargar.
Documentación relacionada:
Estos son algunos trabajos relacionados con Kéfir:
Contacto:
Para preguntas generales puede usar la lista de correo de Kéfir. Para preguntas específicas puede contactar a Salvador E. Tropea o por teléfono al +54-11-4724-6300 interno 6919.
Entidades adherentes:
Las siguientes entidades han declarado a este proyecto de interés:
- Universidad Tecnológica Nacional - Facultad Regional Haedo
- Universidad Tecnológica Nacional - Facultad Regional Córdoba
- Universidad Nacional de Tierra del Fuego
- Universidad Nacional de Catamarca
|