🛠 Déployer une passerelle IoT temps réel sur Sapphire RV64

Efinix Sapphire RV64 : SoC RISC-V 64 bits configurable pour FPGA · avance · Configurez le SoC VexiiRiscv pour un traitement réseau critique avec DMA et gestion de la mémoire avancée.

Objectifs

Ce tutoriel vise à configurer le cœur VexiiRiscv pour agir comme une passerelle IoT haute performance. Nous exploiterons les capacités de traitement vectoriel (extensions Zba/Zbc/Zbs) et la gestion de la mémoire pour minimiser la latence lors du transfert de paquets réseau. L'accent est mis sur l'optimisation du pipeline à 7 étages pour le traitement de flux de données en temps réel, en utilisant les interfaces AXI4 pour le DMA et les GPIO pour le signalisation matérielle.

Matériel nécessaire

Étapes

  1. Configuration du Cœur : Dans Efinity, configurez VexiiRiscv avec 1 cœur à 400 MHz. Activez les extensions Zba/Zbc/Zbs pour accélérer les opérations de décalage et de comptage de bits, cruciales pour le parsing d'en-têtes réseau. Activez la MMU SV39 si vous utilisez un OS temps réel.
  1. Gestion de la Mémoire : Configurez le cache L2 partagé à 512 Ko pour maximiser la rétention des données réseau. Allouez une zone de mémoire non-cacheable pour les buffers DMA afin d'éviter les incohérences de cache lors des transferts réseau.
  1. Implémentation du DMA : Connectez le contrôleur DMA via le bus AXI4. Configurez les descripteurs de transfert pour déplacer les paquets depuis le MAC Ethernet vers la RAM externe sans intervention CPU.
  1. Traitement des Interruptions : Configurez les interruptions pour le DMA et les GPIO. Utilisez les GPIO pour déclencher des actions physiques (LED, relais) basées sur le contenu des paquets traités.
  1. Compilation et Chargement : Compilez le firmware avec les optimisations pour RV64GC. Chargez le binaire via JTAG. Utilisez les 4 points d'arrêt matériels pour surveiller les routines de traitement critique.

Vérification

Utilisez un analyseur logique pour vérifier les signaux d'horloge et de données sur le bus AXI4. Confirmez que le CPU reste inactif pendant les transferts DMA. Vérifiez la latence de traitement par paquet via les compteurs de cycles du cœur.

Pour aller plus loin

Explorez l'utilisation de plusieurs cœurs (jusqu'à 4) pour paralléliser le traitement de flux réseau multiples. Testez les performances avec HyperRAM pour une consommation réduite.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels