Hace algún tiempo, la placa Raspberry Pi3 apareció a mi disposición. Sus capacidades son realmente impresionantes: un rápido procesador de cuatro núcleos y códecs de hardware / decodificadores integrados de audio / video / jpeg, Ethernet / WIFI, USB2, HDMI ... Es una computadora real. Es genial que haya un conector GPIO, que permite a diferentes artesanos conectar algo propio, no estándar y especial. Hay una gran cantidad de placas de expansión diferentes que se instalan en este conector: pantallas, pantallas LED, adaptadores para motores, placas ADC ...
Me gustaría hablar un poco sobre la placa FPGA del Mars Rover 2RPI, que, como otras tarjetas de expansión, se conecta a la ranura GPIO de la baya y agrega propiedades completamente nuevas a nuestro microordenador.
La tarifa es bastante simple. Instalado en él:
- FPGA Cyclone IV EP4CE6E22C8
- elementos lógicos 6272;
- memoria incorporada 270 Kbps;
- Multiplicadores 15 (18x18);
- PLL 2;
- Cuatro LEDs
- Tres botones
- Oscilador de cristal de 100MHz;
- Posibilidad de instalar un chip EPCS4 (en caso de que la placa se use de forma autónoma);
- Conector JTAG (en caso de que la placa se use de forma autónoma);
- Dos conectores de 40 pines en cada uno de los 28 GPIO de usuario: conectores compatibles con Raspberry;
- Un conector de 40 pines para conectarse a Raspbery, en el que puede usar 24 o 20 GPIO (dependiendo de si el chip EPCS4 está instalado o no).
La placa Mars rover2RPI se instala no encima de la placa Raspberry Pi, sino desde un lado, a través de un adaptador especial. Esto se hace intencionalmente. Raspberry Pi3 ya está bastante caliente cuando se cargan 4 núcleos; cubrir el tablero desde arriba no parece muy humano en términos de enfriamiento.
Para que pueda conectar la placa Raspberry Pi2 / Pi3:

Y aquí está Pi-zero:

Es posible (pero esto no es exacto), la misma tarjeta de expansión se puede usar con OrangePi.
La primera aplicación de esta placa que viene a la mente es duplicar la cantidad de señales GPIO: había un conector y había dos. Solo necesita crear y cargar el proyecto deseado en el FPGA, bueno, tendrá que administrar las entradas y salidas de alguna manera especial, hay muchas opciones: puerto serie, SPI, GPIO, puede usar DMA ...
Puede descargar el FPGA de la placa Mars rover2RPI directamente desde Raspberry a través de señales JTAG, que, por supuesto, se muestran en el GPIO
- tck → GPIO7
- tms → GPIO0
- tdi → GPIO11
- tdo ← GPIO1
Existe un proyecto de código abierto como OpenOCD, depurador y depurador, que le permite utilizar Raspberry como programador JTAG. OpenOCD es un servidor, puede iniciarlo y luego conectarse a él de forma remota por telnet y con el comando "svf", puede cargar la imagen del proyecto compilado en la FPGA.
Obtenga más información sobre OpenOCD en raspberry pi .
Aquí hay solo una demostración en video:
El primer proyecto de "prueba" para la placa Mars rover2RPI ya está listo, aunque todavía no es muy impresionante en su funcionalidad. El primer proyecto para FPGAs suele ser siempre "parpadear un LED", una especie de "¡Hola Mundo!" mundo de microcontroladores y FPGA.
Su fuente se puede tomar en github:
github.com/marsohod4you/m2rpi_firstPero aquí, incluso en este caso simple, ya existe una interacción entre el FPGA y el microordenador. Desde la frambuesa, puede enviar bytes a través del puerto serie al FPGA que cambian la velocidad de parpadeo del LED. Además, el primer "proyecto de prueba" FPGA acepta bytes del puerto serie, lo modifica (agrega uno) y lo devuelve. Por supuesto, bastante primitivo, pero ya la interacción de los dos sistemas FPGA y el procesador.
Video de demostración:
Esta es mi primera experiencia de acceso a Raspberry FPGA. Creo que sería interesante intentar hacer proyectos realmente complejos, como capturar fotogramas de una cámara de video en frambuesa y transferirlos a través de DMA al FPGA para su procesamiento. Creo que puede haber muchos proyectos interesantes con esta placa de expansión.