Carte FPGA vers Raspberry Pi


Il y a quelque temps, la carte Raspberry Pi3 est apparue à ma disposition. Ses capacités sont vraiment impressionnantes: un processeur quad-core rapide, et des codecs / décodeurs matériels audio / vidéo / jpeg intégrés, Ethernet / WIFI, USB2, HDMI ... C'est un vrai ordinateur. C'est très cool qu'il y ait un connecteur GPIO, qui permet à différents artisans de connecter quelque chose de leur propre non standard et spécial. Il existe un grand nombre de cartes d'extension différentes qui sont installées sur ce connecteur: écrans, écrans LED, adaptateurs pour moteurs, cartes ADC ...

Je voudrais parler un peu de la carte FPGA du Mars Rover 2RPI, qui, comme d'autres cartes d'extension, se connecte à l'emplacement GPIO de la baie et ajoute des propriétés complètement nouvelles à notre micro-ordinateur.

Les frais sont assez simples. Installé dessus:

  1. FPGA Cyclone IV EP4CE6E22C8
    • éléments logiques 6272;
    • mémoire intégrée 270Kbps;
    • Multiplicateurs 15 (18x18);
    • PLL 2;
  2. Quatre LED
  3. Trois boutons
  4. Oscillateur à cristal 100 MHz;
  5. Possibilité d'installer une puce EPCS4 (au cas où la carte serait utilisée de manière autonome);
  6. Connecteur JTAG (dans le cas où la carte sera utilisée de manière autonome);
  7. Deux connecteurs 40 broches sur chacun des 28 utilisateurs GPIO - connecteurs compatibles avec Raspberry;
  8. Un connecteur à 40 broches pour la connexion à Raspbery, sur lequel vous pouvez utiliser 24 ou 20 GPIO (selon que la puce EPCS4 est installée ou non).

La carte Mars rover2RPI est installée non pas au-dessus de la carte Raspberry Pi, mais de côté, via un adaptateur spécial. Cela se fait intentionnellement. Le Raspberry Pi3 est déjà assez chaud lors du chargement de 4 cœurs; couvrir la carte par le haut ne semble pas très humain en termes de refroidissement.

Vous pouvez donc connecter la carte Raspberry Pi2 / Pi3:



Et voici Pi-zéro:



C'est possible (mais ce n'est pas précis), la même carte d'extension peut être utilisée avec OrangePi.

La toute première application de cette carte qui me vient à l'esprit est de doubler le nombre de signaux GPIO: il y avait un connecteur, et il y en avait deux. Vous avez juste besoin de créer et de télécharger le projet souhaité sur le FPGA, eh bien, vous devrez gérer les entrées et sorties d'une manière spéciale, il existe de nombreuses options: port série, SPI, GPIO, vous pouvez utiliser DMA ...

Vous pouvez télécharger le FPGA de la carte Mars rover2RPI directement depuis Raspberry via des signaux JTAG, qui, bien sûr, sont affichés dans le GPIO

  • tck → GPIO7
  • tms → GPIO0
  • tdi → GPIO11
  • tdo ← GPIO1

Il existe un tel projet open source OpenOCD, débogueur et débogueur, qui vous permet d'utiliser Raspberry comme programmeur JTAG. OpenOCD est un serveur, vous pouvez le démarrer, puis vous y connecter même à distance par telnet et en utilisant la commande "svf", vous pouvez télécharger l'image du projet compilé sur le FPGA. En savoir plus sur OpenOCD sur Raspberry Pi .

Voici juste une démonstration vidéo:



Le tout premier projet «test» de la carte Mars rover2RPI est déjà prêt, bien qu'il ne soit pas encore très impressionnant dans sa fonctionnalité. Le premier projet pour les FPGA consiste généralement à «faire clignoter une LED», une sorte de «bonjour le monde!» monde des microcontrôleurs et FPGA.
Sa source peut être prise sur github: github.com/marsohod4you/m2rpi_first

Mais ici, même dans ce cas simple, il y a déjà une interaction entre le FPGA et le micro-ordinateur. Depuis la framboise, vous pouvez envoyer des octets via le port série au FPGA qui modifient la vitesse de clignotement de la LED. De plus, le premier FPGA "projet de test" accepte les octets du port série, le modifie (en ajoute un) et le renvoie. Bien sûr, plutôt primitif, mais déjà l'interaction des deux systèmes FPGA et du processeur.

Démo vidéo:



Ceci est ma première expérience d'accès FPGA Raspberry. Je pense qu'il serait intéressant d'essayer de créer des projets vraiment complexes, comme capturer des images d'une caméra vidéo en framboise et les transférer via DMA vers le FPGA pour le traitement. Je pense qu'il peut y avoir beaucoup de projets intéressants avec cette carte d'extension.

Source: https://habr.com/ru/post/fr408645/


All Articles