Table des matières:
- Étape 1: Configuration d'un projet dans Vivado pour Ernie
- Étape 2: Création du PWM d'Ernie dans Vivado
- Étape 3: Création du TDOA d'Ernie dans Vivado
- Étape 4: Emballage et exportation d'Ernie
- Étape 5: Construire Ernie
- Étape 6: le premier BSP d'Ernie
- Étape 7: FreeRTOS's Ernie
- Étape 8: Importation du code C d'Ernie
- Étape 9: Déboguer Ernie
- Étape 10: Rendre Ernie autonome
- Étape 11: Rendre Ernie mignon
Vidéo: Comment faire Ernie : 11 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Ceci est un tutoriel sur la façon de construire Ernie, votre robot autonome de suivi du son, à l'aide d'une carte Zybo. Il couvrira comment: créer un projet dans Vivado, créer des pilotes de servomoteur de type PWM dans le FPGA, s'interfacer avec deux capteurs sonores, créer une différence de temps d'arrivée IP, utiliser freeRTOS et exécuter le zybo sur une batterie. C'était notre projet final pour une classe de systèmes d'exploitation en temps réel (CPE 439) à Cal Poly SLO.
Liste d'équipement:
- 1 - Carte de développement ZYBO Zynq 7000
- 2 - Servomoteur à rotation continue de parallaxe
- 2 - Capteur de son (détecteur de son SparkFun)
- 1 - Batterie USB Lithium Ion 5v (pour carte)
- 4 - Piles AA (pour servos)
- 1 - Bloc-piles AA (avec 4 emplacements pour piles)
- 1 - Câble micro USB
- 1 - Planche à pain
- nombreux - Fils mâles à mâles
- 1 - Châssis servo
Logiciels requis:
- Xilinx Vivado Design Suite 2016.2
- Adepte de Digilent 2.16.1
Étape 1: Configuration d'un projet dans Vivado pour Ernie
- Un assistant apparaîtra
- Cliquez sur Suivant
-
Nommer ensuite le projet
- N'utilisez jamais un nom de projet ou un chemin de répertoire contenant des espaces !!!!!
- Ce sera un projet RTL.
- Nous ne voulons pas spécifier les sources
-
En cliquant sur Suivant, nous arrivons à la page Pièce. Nous utilisons un ZYNQ XC7Z010-1CLG400C.
- Vivado n'a pas le Zybo répertorié comme l'un de ses conseils prédéfinis. Sélectionnez: « pièces » puis recherchez xc7z010clg400-1.
- Si vous choisissez la mauvaise pièce par erreur, vous pouvez facilement changer de puce: Outils -> Paramètres du projet -> Général et cliquez sur les points à droite de « Périphérique de projet »
-
Cliquez sur Créer une conception de bloc.
Nommez-le design_1 pour l'instant
- Vous verrez une barre verte indiquant Ajouter une adresse IP, cliquez dessus.
-
Recherchez Zynq.
- Double-cliquez sur le système de traitement ZYNQ7,
- Ce bloc apparaîtra dans notre conception de bloc.
- Vous verrez une barre verte indiquant Exécuter l'automatisation des blocs, cliquez dessus.
- Téléchargez zybo_zynq_def.xml ci-dessous.
-
Dans Vivado, cliquez sur « Importer les paramètres XPS » et sélectionnez « zybo_zynq_def.xml »
Cela pré-remplit la configuration du bloc Vivado avec tous les périphériques intégrés et les affectations de broches de la carte Zybo
-
Double-cliquez sur le bloc ZYNQ.
-
Configuration MIO
- Activer la minuterie 0 (sous Application Processor Unit - img 1)
- Activer le chien de garde (sous Application Processor Unit-img 1)
- Activer GPIO->GPIO MIO (sous Application Processor Unit - img 2)
- Activer GPIO->ENET Reset (sous I/O Peripherals-img 2)
-
Configuration de l'horloge
Désactiver FCLK0 (sous PL Fabric Clocks - img 3)
-
- Cliquez sur OK.
-
« Exécuter l'automatisation des blocs » maintenant.
Il y aura des questions sur les signaux, dites OK
-
Cliquez sur « Générer un wrapper HDL ».
Nous voudrons copier le wrapper généré pour permettre les modifications par l'utilisateur
- Cliquez sur OK.
Étape 2: Création du PWM d'Ernie dans Vivado
Cette étape va générer une IP PWM avec des entrées envoyées via la bibliothèque AXI.
-
Créez un bloc AXI GPIO en cliquant avec le bouton droit sur l'arrière-plan et en cliquant sur "ajouter une IP"
tapez "AXI_GPIO" dans la barre de recherche et sélectionnez ce package
-
Re-personnaliser l'IP en double-cliquant sur le nouveau bloc axi_gpio_0
- sous GPIO, définissez la largeur GPIO sur 2. Ces bits seront le signal PWM_ON pour piloter chaque instance de module PWM.
- cliquez sur "activer le double canal"
- sous GPIO 2, définissez la largeur GPIO sur 2. Ces bits seront le signal PWM_FW pour définir la direction de chaque instance de module PWM.
-
Faites un clic droit sur le port de sortie axi_gpio_0 étiqueté GPIO et sélectionnez "Make External"
- Cliquez sur la nouvelle sortie intitulée GPIO, accédez à l'onglet "Propriétés" dans la barre d'outils de gauche et modifiez le nom en PWM_ON
- Cliquez sur la nouvelle sortie intitulée GPIO2, et accédez à l'onglet "Propriétés" dans la barre d'outils de gauche, et changez le nom en PWM_FW
-
Sélectionnez Exécuter l'automatisation des connexions dans la bannière verte au-dessus du diagramme.
Si vous connectez manuellement les ports, les adresses AXI peuvent ne pas être configurées, ce qui entraînera des problèmes de communication plus tard
-
Dans le volet du navigateur de flux, sélectionnez le gestionnaire de projet -> Ajouter des sources pour créer un nouveau bloc IP personnalisé
- choisissez "ajouter ou créer des sources de conception", et cliquez sur suivant
- cliquez sur "créer un fichier", changez le type de fichier en "SystemVerilog", et tapez "pwm" dans le champ du nom de fichier, puis cliquez sur OK
- cliquez sur Terminer
-
ignorez la fenêtre Définir le module en appuyant sur OK (nous les écraserons plus tard)
s'il vous demande si vous êtes sûr, cliquez sur Oui
-
Dans l'onglet sources, double-cliquez sur le fichier pwm.sv (situé dans "Design Sources/design_1_wrapper")
Copiez/collez l'intégralité du code SystemVerilog à partir du fichier pwm.txt joint ci-dessous
Étape 3: Création du TDOA d'Ernie dans Vivado
Cette étape va générer une IP TDOA dont la sortie pourra être lue via la librairie AXI
-
Créez un bloc AXI GPIO en cliquant avec le bouton droit sur l'arrière-plan et en cliquant sur "ajouter une IP"
tapez "AXI_GPIO" dans la barre de recherche et sélectionnez ce package
-
Re-personnaliser l'IP en double-cliquant sur le nouveau bloc axi_gpio_1
- sous GPIO, cochez la case "All Inputs", et réglez la largeur GPIO sur 32. Ce bus sera la différence de temps d'arrivée entre les deux capteurs.
- à l'intérieur du bloc axi_gpio_1, cliquez sur le + à côté du port GPIO pour afficher gpio_io_i[31:0].
-
Faites un clic droit sur le port de sortie axi_gpio_1 étiqueté gpio_io_i[31:0], et sélectionnez "Make External"
Cliquez sur la nouvelle entrée intitulée gpio_io_i[31:0] et accédez à l'onglet « propriétés » dans la barre d'outils de gauche et remplacez le nom par TDOA_val
-
Sélectionnez Exécuter l'automatisation des connexions dans la bannière verte au-dessus du diagramme.
Si vous connectez manuellement les ports, les adresses AXI peuvent ne pas être configurées, ce qui entraînera des problèmes de communication plus tard
-
Dans le volet du navigateur de flux, sélectionnez le gestionnaire de projet -> Ajouter des sources pour créer un nouveau bloc IP personnalisé
- choisissez "ajouter ou créer des sources de conception", et cliquez sur suivant
- cliquez sur "créer un fichier", changez le type de fichier en "SystemVerilog", et tapez "tdoa" dans le champ du nom de fichier, puis cliquez sur OK
- cliquez sur Terminer
-
ignorez la fenêtre Définir le module en appuyant sur OK (nous les écraserons plus tard)
s'il vous demande si vous êtes sûr, cliquez sur Oui
-
Dans l'onglet sources, double-cliquez sur le fichier tdoa.sv (situé dans "Design Sources/design_1_wrapper")
Copiez/collez l'intégralité du code SystemVerilog à partir du fichier tdoa.txt joint ci-dessous
Étape 4: Emballage et exportation d'Ernie
- Vérifiez que le diagramme ressemble à la capture d'écran jointe
-
Dans l'onglet sources, faites un clic droit sur design_1.bd et sélectionnez "Créer un wrapper HDL…"
- Sélectionnez « Copier la sortie générée pour autoriser les modifications par l'utilisateur », puis appuyez sur « OK »
- Copiez le code de design_1_wrapper.txt joint ci-dessous et collez-le à la place du code design_1_wrapper.v généré
- enregistrer design_1_wrapper.v
-
Dans l'onglet sources, double-cliquez sur le fichier ZYBO_Master.xdc sous Constraints/constrs1
- Copiez le code de ZYBO_Master.txt joint ci-dessous et collez-le à la place du code ZYBO_Master.xdc existant
-
Notez les broches d'entrée/sortie suivantes:
- L15: Signal PWM pour le moteur gauche (Pmod JA2 sur le Zybo)
- L14: Signal PWM pour le moteur droit (Pmod JA8 sur le Zybo)
- V12: entrée gate du capteur de son 1 (Pmod JE1 sur le Zybo)
- K16: entrée gate du capteur de son 2 (Pmod JE2 sur le Zybo)
-
Dans le volet du navigateur de flux, cliquez sur "Générer le flux de bits" sous Programmer et déboguer
si vous pensez que c'est fait tout de suite, ce n'est probablement pas le cas. sérieusement, fais du thé
-
Cliquez sur Fichier->Exporter->Générer le matériel
Cochez "Inclure Bitstream" et appuyez sur OK
- Cliquez sur Fichier-> Lancer le SDK
Étape 5: Construire Ernie
- Montez les servos sur le châssis du servo.
-
En suivant la fiche technique des servos, procédez comme suit:
- connectez la masse des servos aux broches de masse sur le JA Pmod du Zybo (voir l'image de brochage ci-jointe)
- connectez la broche d'alimentation des servos à la batterie AA
Nous avons constaté que lorsque les servos sont connectés au Vdd du Zybo, la carte consomme trop de courant, ce qui entraîne la réinitialisation continue de la carte
- connectez les broches du signal d'entrée aux broches de sortie appropriées du Zybo (gauche: JA2, droite: JA8)
- monter les capteurs de son à l'avant du châssis, face vers l'avant, en les gardant aussi proches que possible
-
utilisez le guide de connexion du capteur de son pour intégrer les capteurs de son
- câblez la masse et les broches Vdd de chaque capteur de son à la masse et aux broches Vdd du JE Pmod du Zybo (voir l'image de brochage ci-jointe)
- câbler la broche Gate du capteur de son gauche à JE1
- câbler la broche Gate du capteur de son droit à JE2
Étape 6: le premier BSP d'Ernie
-
Créez un BSP pour terminer la plate-forme que nous venons de créer.
Vous pouvez l'obtenir via Fichier -> Nouveau -> Pack de support de carte
-
Un assistant apparaîtra pour vous aider à créer le BSP.
- Nous voulons lier ce BSP à notre plateforme que nous venons de créer, donc
- La plate-forme matérielle devrait s'aligner sur celle que nous venons de créer (voir img 1)
- Notre CPU sera le CPU _0.
- Cliquez sur Terminer
- Assurez-vous de cocher lwip141 pour l'inclusion avec votre bsp dans la fenêtre qui apparaît (voir img 2)
Étape 7: FreeRTOS's Ernie
-
Téléchargez la dernière version de FreeRTOS depuis Sourceforge.
Si le téléchargement est un exécutable, exécutez-le pour extraire les fichiers FreeRTOS dans votre répertoire de projet
- Gardez ce SDK ouvert et cliquez sur Fichier -> Importer.
- Nous voulons cliquer sur Général-> À partir d'un espace de travail existant, puis nous voudrons naviguer jusqu'à l'endroit où nous avons téléchargé FreeRTOS.
-
Notre démo sera située dans FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. En sélectionnant ce dossier, nous devrions voir apparaître trois projets (notre code (OS), c'est BSP et la plate-forme matérielle).
Importez UNIQUEMENT RTOSDemo dans votre espace de travail actuel
-
Sur tous les projets de dossier "bleu" changez le BSP référencé
- Faites un clic droit et sélectionnez "Modifier le BSP référencé".
- Sélectionnez le BSP que vous venez de créer pour votre Zybo
- L'édition de code dans les dossiers SDK Blue de Xilinx sont les projets de code réels.
Étape 8: Importation du code C d'Ernie
- Dans le répertoire RTOSDemo/src, remplacez le fichier main.c existant par le fichier main.c joint ici.
- Copiez le fichier main_sound.c dans le répertoire RTOSDemo/src.
Étape 9: Déboguer Ernie
- Sélectionnez Exécuter -> Configurations de débogage
- Dans le volet de gauche, créez une nouvelle exécution du débogueur système
-
Dans l'onglet Configuration cible,
sélectionnez "Réinitialiser le système entier" pour que cela et ps7_init soient sélectionnés
-
Sélectionnez maintenant l'onglet Application.
- Sélectionnez « télécharger l'application »
- Réglez le noyau cortexa9_0 sur « arrêter à l'entrée du programme »
- Cliquez sur Appliquer et déboguer.
- Vérifiez qu'il n'y a pas d'erreurs dans le processus de débogage
- En surveillant de près le robot, appuyez sur le bouton Reprendre jusqu'à ce que le programme s'exécute sans atteindre aucun point d'arrêt
- Le robot doit maintenant tourner et se déplacer vers des bruits forts. Yay!
Étape 10: Rendre Ernie autonome
- Une fois que votre projet est prêt à démarrer (vous pouvez l'exécuter sans problème via le débogueur), vous êtes prêt à le charger dans la mémoire flash de votre carte.
-
Créez ce que l'on appelle le projet "First Stage Boot Loader" (FSBL) et contient toutes les instructions dont votre carte aura besoin pour charger vos fichiers de projet (le flux de bits et le système d'exploitation) au démarrage.
- Sélectionnez: Fichier->Nouveau->Projet d'application et la fenêtre suivante devrait apparaître.
- Nommez-le comme vous voulez (c'est-à-dire « FSBL »)
- Assurez-vous que la plate-forme matérielle est celle avec laquelle vous travaillez
- Appuyez sur suivant (n'appuyez pas sur Terminer)
- Sélectionnez le modèle Zynq FSBL
- Cliquez sur Terminer.
- Une fois le processus de création terminé, vous saurez si tout a fonctionné si vous voyez les deux nouveaux dossiers suivants dans la fenêtre de l'Explorateur de projet.
-
Créer une image de démarrage Vous devez maintenant créer l'image de démarrage.
- Faites un clic droit sur votre dossier de projet (dans ce cas le mien s'appelle "RTOSDemo")
- Cliquez sur "Créer une image de démarrage" dans le menu déroulant
-
Si tout est correctement lié, le projet saura de quels fichiers il a besoin et la fenêtre suivante ressemblera à ce que vous voyez ci-dessous (la clé étant que vous avez 3 partitions sous la section Boot image, le bootloader, votre fichier bit et votre fichier.elf de projets).
Si ce n'est pas le cas, il y a peut-être un problème avec la liaison de votre projet. S'assurer que les dossiers du projet sont liés à leurs BSP respectifs
- Cliquez sur le bouton « Créer une image »
-
La dernière étape à effectuer dans le logiciel consiste maintenant à flasher votre image précédemment créée dans la mémoire de la carte
- Sélectionnez dans la barre d'outils principale du SDK, sélectionnez Xilinx Tools->Program Flash Memory
- Assurez-vous que la plate-forme matérielle correcte est sélectionnée et que le chemin du fichier image pointe correctement vers le fichier. BIN créé à l'étape précédente.
- Sélectionnez « qspi single » dans le type Flash
- Cochez la case "Vérifier après flash" pour assurer l'intégrité mais ce n'est pas nécessaire
- Configurez votre carte Enfin, vous devez vous assurer que le cavalier du mode de programmation de la carte (JP5) est correctement configuré pour sélectionner le démarrage à partir du qspi (qui contient ce que vous venez de flasher) lorsque la BootROM est exécutée.
- Maintenant, redémarrez simplement l'appareil et assurez-vous que la « LED de configuration logique terminée » (LED 10) est allumée en vert.
Étape 11: Rendre Ernie mignon
- Fourrure
- Beaucoup de fourrure
- Gros yeux!
- … haut-de-forme
Conseillé:
DIY Comment faire une montre cool - StickC - Facile à faire : 8 étapes
DIY Comment faire une montre cool - StickC - Facile à faire: Dans ce tutoriel, nous allons apprendre à programmer ESP32 M5Stack StickC avec Arduino IDE et Visuino pour afficher une heure sur l'écran LCD et également régler l'heure à l'aide des boutons StickC
COMMENT FAIRE UN ARDUINO NANO/MINI - Comment graver le bootloader : 5 étapes
COMMENT FAIRE ARDUINO NANO/MINI | Comment graver le chargeur de démarrage : dans ces instructions, je vais vous montrer comment créer un Arduino MINI à partir de zéro
Comment faire une vidéo en écran partagé en quatre étapes : 4 étapes (avec photos)
Comment faire une vidéo en écran partagé en quatre étapes : Nous voyons souvent une même personne dans une scène deux fois dans une pièce de théâtre. Et à notre connaissance, l'acteur n'a pas de frère jumeau. Nous avons également observé que deux vidéos de chant sont affichées sur un même écran pour comparer leurs compétences en chant. C'est le pouvoir de spl
Faire pivoter ou faire pivoter le moniteur LCD : 6 étapes
Faire pivoter ou pivoter le moniteur Lcd : ce luminaire est très utile pour faire pivoter de 90 degrés le moniteur afin de voir ou de lire des documents en mode portrait, il existe des pilotes pour carte vidéo qui prennent en charge ces modes, dans mon cas je l'utilise pour lire des pdf
Comment faire un calendrier des grands-parents & Scrapbook (même si vous ne savez pas comment faire un scrapbook) : 8 étapes (avec photos)
Comment faire un calendrier des grands-parents & Scrapbook (même si vous ne savez pas comment faire du scrapbooking) : c'est un cadeau de vacances très économique (et très apprécié !) pour les grands-parents. J'ai fait 5 calendriers cette année pour moins de 7 $ chacun.Matériel :12 superbes photos de votre enfant, enfants, nièces, neveux, chiens, chats ou autres parents12 pièces différentes