Option Architecture et traitement des signaux – 2016 Séance 3 : CAN et Interface SPI Nios2 L’objectif de cette séance est de réaliser la conversion analogique numérique des signaux issus du capteur OPT101. Pour cela, deux parties sont nécessaires ; le développement matériel (connexion analogique du CAN à l’étage d’amplification et au FPGA, intégration de l’IP SPI sous QSYS) et la programmation des registres de l’IP SPI via le Nios2 pour la récupération des échantillons puis leur traitement. Le synopsis ci-dessous résume les deux dernières séances et montre l’objectif de la séance 3. Figure 1. synopsis séance 3 I. Convertisseur Analogique Numérique – AD7810 L’AD7810 de chez Analog Device, est un convertisseur analogique numérique de type SAR – à approximations successives. Le convertisseur sera alimenté entre 0 et 5v. La tension de référence sera positionnée à 5v. L’entrée Vin- sera positionnée à 0v. Figure 2. AD7810 schéma fonctionnel L’AD7810 comprend une interface SPI (Serial Protocol Interface) sur 3 fils, CONVST – début de conversion actif en passant de 0 à 1, DOUT – MISO (Master Input Slave Output) et SCLK – l’horloge du protocole de transfert (100kHz). Ces trois signaux sont produits par la uC (NIOS2) à l’intérieur du FPGA. Pr. Olivier ROMAIN 1 Option Architecture et traitement des signaux – 2016 Figure 3. Diagramme de connexion AD7810 - FPGA / uC Travail à réaliser 1.1.1 A l’aide du datasheet donné en annexe, déterminer le nombre de bits du CAN. 1.1.2 Régler la résistance R1 de l’étage de gain de manière à avoir une amplitude du signal cardiaque de l’ordre de 3V. 1.1.3 Déterminer théoriquement la valeur du Quantum. 1.1.4 Quelle sera la précision sur le signal quantifié ? Consigner les résultats dans votre CR. 1.1.5 Déterminer la plage théorique du signal cardiaque numérisé en sortie du CAN. 1.1.6 Compte tenu des caractéristiques de l’étage d’amplification, quelle doit être la fréquence d’échantillonnage minimale à respecter ? 1.1.7 Identifier à partir du datasheet, le signal permettant l’échantillonnage. 1.1.8 Câbler comme sur la figure 3, le CAN. Vin+ sera relié à la sortie de l’étage d’amplification. Les signaux SCLK, MOSI (DOUT) et CONVST seront respectivement les broches du JP1 de la carte DE1, comme suit : SCLK : PIN_H13 MISO - DOUT : PIN_G15 CONVST : PIN_E15 Masse : broche 10 Figure 4. Définition des broches du GPIO1 1.1.9 Relier avec des fils, les broches du FPGA à la carte Labdec. 1.1.10 Faites contrôler par l’enseignant. Pr. Olivier ROMAIN 2 Option Architecture et traitement des signaux – 2016 II. Développement HW sous Qsys : intégration de l’IP bus SPI Le convertisseur AD7810 est contrôlé par le Nios2 via un bus SPI. Ce bus permet de programmer les registres de l’AD7810, d’initier une conversion analogique numérique et de récupérer l’échantillon acquis. Nous allons modifier le design du Nios2 de la séance 1 pour y intégrer un bus SPI via un IP (megacore) fournit par ALTERA. Travail à réaliser 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 Lancer Quartus et ouvrir sous Qsys votre processeur de la séance 1. Intégrer l’IP SPI et mettre les paramètres suivants : Connecter sous Qsys l’IP suivant la figure5 Faites contrôler par l’enseignant. Générer sous Qsys le design. Affecter sous Quartus les broches de sorties de l’IP. Nous prendrons pour MOSI la broche PIN_G16. 1.1.18 Compiler le programmer la carte FPGA. 1.1.19 Faites vérifier par l’enseignant. 1.1.20 Consigner vos développements dans votre compte-rendu. III. Développement logiciel sous Eclipse : acquisition du signal cardiaque Cette partie est consacrée à la programmation en C du Nios2 sous Eclipse. Le programme à réaliser permettra de récupérer les échantillons à intervalles fixes (période d’échantillonnage) afin de pouvoir les traiter (extraction de la fréquence cardiaque, dynamique, mesure de SP02, etc.). Travail à réaliser 1.1.21 Lancer Quartus et ouvrir Eclipse (menu tools – Nios II Software Build Tools for Eclipse). Vous utiliserez le projet logiciel de la séance 1. 1.1.22 Avec le clique droit de la souris, dans la fenêtre « Project Explorer », cliquer sur votre projet_BSP, menu Nios2, Generate BSP. Votre design ayant été modifié sous Qsys vous devez remettre à jour les drivers de votre Nios2. Ces drivers permettront d’accéder aux périphériques comme le bus SPI. 1.1.23 Les deux instructions IOWR et IORD permettent respectivement d’écrire à l’adresse d’un périphérique et de lire. Modifier le programme ci-dessous afin de pouvoir réaliser une acquisition à 100Hz. int main() { int valeur=0; alt_putstr("Seance 3: acquisition du signal\n"); Pr. Olivier ROMAIN 3 Option Architecture et traitement des signaux – 2016 while(1) { //délais de 5000us = 5ms <=> 200Hz usleep(5000); //génère les signaux d'horloge et convst IOWR_ALTERA_AVALON_SPI_TXDATA(A MODIFIER, 128); //récupère la valeur acquise valeur = IORD_ALTERA_AVALON_SPI_RXDATA(A MODIFIER_BASE); //Affichage de la valeur + enregistrement dans un fichier à compléter } 1.1.24 Compiler le programme et faites vérifier par l’enseignant. 1.1.25 Programmer le Nios2 et vérifier à l’oscilloscope sur la broche CONVST que votre acquisition est réalisée à 100Hz. 1.1.26 Déconnecter la sortie de l’étage d’amplification sur l’entre V+ de l’AD7810. Injecter en entrée de l’AD7810, une rampe de tension entre 0 et 5V avec une fréquence de 1Hz. Afficher sur le console avec la fonction printf les valeurs acquises et vérifier la linéarité du convertisseur. 1.1.27 Faites contrôler par l’enseignant. 1.1.28 Consigner vos développements dans votre compte-rendu. 1.1.29 Reconnecter la sortie de l’étage d’amplification à l’entrée de l’AD7810 et faites l’acquisition du signal cardiaque. Enregistrer les valeurs dans un fichier pour pouvoir les traiter sous Matlab. 1.1.30 Ajouter sous Qsys un timer programmable au Nios2 avec une IRQ. Regénérer sous Qsys et recompiler sous Quartus. Modifier le programme en programmant une interruption à 100Hz permettant de faire l’acquisition du signal. 1.1.31 Vérifier avec un oscilloscope sur la broche CONVST que le signal est acquis à la fréquence programmée (100Hz). 1.1.32 Faites vérifier par l’enseignant. 1.1.33 Consigner les développements dans le compte-rendu. IV. Compte rendu Consigner dans votre compte rendu, les résultats que vous avez obtenus pour cette partie. Vous mettrez en annexe de votre compte rendu les différents programmes que vous avez développés ainsi que la méthodologie que vous avez adopté pour développer cette IP. Fin Séance 3 Pr. Olivier ROMAIN 4