Post on 16-Sep-2018
Systemes numeriques V404-02-2013
1
L’objectif de cet enseignement pratique est une initation aux systemes numeriques, mettanten œuvre les concepts de developpement sur circuits programmables de type FPGA.
L’application retenue est la commande d’un robot, fabrique a partir d’une base Rogue BlueERS de chez ROGUE ROBOTICS.
La carte de developpement FPGA utilisee est la carte d’ALTERA STATIX EP1S10.
La documentation complete de la carte et des logiciels Quartus, NIOS IDE ainsi que des com-posants utilises peuvent etre telecharges sue le site du fabriquant http ://www.altera.com/
Ce document comporte un tutorial qui permettra une prise en main rapide d’une part del’environnement de developpement materiel Quartus II et d’autre part de l’environnement dedeveloppement logiciel NIOS IDE.
Ensuite seront developpes dans une serie de manipulations, les points suivants :– Etude et definition de l’architecture du systeme robot– Implantation d’un processeur generique– Implantation de circuits d’entee-sortie– Implantation d’un logiciel de commande de l’application en langage C
2
1 Decouverte de l’environnement
1.1 Presentation de la carte de developpement Stratix
– un FPGA Stratix 1P1S10– une horloge 50 MHz– 4 interupteurs SW0..SW3, 7 LEDs : D7..D0– 2 afficheurs 7 segments– 1 port serie, 1 port JTAG– 16 Moctets de memoire RAM statique– 8 Moctets de memoire Flash– 6 ports d’extension
3
2 Tutorial pour l’implantation du processeur NIOS II
standard
Ce tutorial permet de creer un systeme bati autour d’un cœur de la famille des processeursembarques NIOS II avec de la memoire vive, un port de mise au point JTAG et d’un coupleurparallele (PIO) permettant de piloter des LEDs. Ce premier systeme sera implante et teste sur lacarte developpement Stratix.
3 Specification & Generation du systeme
Dans cette section, nous allons definir, parametrer les differents composants et generer lesysteme correspondant a la specification ci-dessus (Figure 1 : Tutorial Example Design).
1. Decompresser dans votre repertoire de travail, l’archive niosII SN stratix 1s10.zip.Ce repertoire contient les fichiers suivants :
nios2 quartus2 project.bdf BlockSchematic Filenios2 quartus2 project.qpf Quartus Project Filenios2 quartus2 project.qsfnios2 quartus2 project.qwsREADME.TXT
Le fichier BDF est une ebauche sous forme de schema du systeme a elaborer, et le fichierQPF represente le projet du logiciel de developpement QUARTUS.
2. Lancer QUARTUS IIPour ouvrir le projet nios2 quartus2 project aller dans le menu File → Open Project ...Aller dans votre repertoire de travail et selectionner le fichier nios2 quartus2 project.qpf
4
Il apparaıt alors (voir figure ci-dessous), un schema (Block Diagram File) avec :
– un commentaire decrivant le systeme
– une entree d’horloge :PLD CLOCKINPUT[1]
– une entree connectee a la tensiond’alimentation : Vcc
– et 8 sorties pour commander les LEDs :LEDG[7..0] (voir Annexe)
L’objectif a partir de cet embryon de projetest de batir le systeme complet decrit sur lafigure 1 : Tutorial Example Design.
3. A partir du menu Tools lancer SOPC Builder...
Une fenetre Create a New System s’ouvre alors.
Dans la zone System name entrer : first nios2 system
dans la zone Target HDL choisir l’option VHDL et cliquer sur OK.
(creation dans le repertoire de travail des fichiers first nios2 system.ptf et de first nios2 system.vhdL’interface SOPC Builder apparaıt alors, avec a gauche l’onglet System Content . Il necontient pour le moment aucun element constituant le systeme, il faut tout specifier.
5
4. Specifier dans Target Board → Nios Development Board, Stratix (EP1S10)et verifier que dans Clock(MHz) il y a bien 50.0 qui est la valeur par defaut pour la cartede developpement Stratix.
5. Nous allons maintenant ajouter le coeur du systeme :
Dans l’onglet System Content , selectionner NIOS II Processor Altera Corporation ,et cliquer sur Add...
Il apparait alors une fenetre qui permet de choisir le type de processeur NIOS II que l’onsouhaite implanter, on choisira ici le modele Standard
Pour cela, selectionner dans l’onglet NIOS II Core → NIOS II/s
Selectionner dans Hardware Multiply →None et verifier que la case Hardware Dividen’est pas cochee (voir figure ci-dessus).
Cliquer sur Next pour passer a l’onglet Caches & Tightly Coupled Memories
et specifiez les parametres suivants :
Instruction cache → 2kbytesInclude Coupled Instruction Master Port(s) : → Off (case non cochee)
6. A ce stade, la specification du cœur du systeme est terminee, il suffit de cliquer sur Finishpour revenir a la fenetre SOPC Builder
7. Pour faire fonctionner un processeur, il est indispensable d’y rajouter de la memoire. Ici,nous allons implanter de la memoire vive statique (SRAM) qui est incluse dans le FPGA (onChip Memory). Elle sera utilisee pour y stocker aussi bien des donnees que des programmes.
Dans la liste des composants disponibles (onglet de gauche : System Content), cliquer surMemory et selectionner On-Chip Memory (RAM or ROM) et cliquer sur Add...
6
Il faut maintenant preciser les parametres de la memoire a savoirici, une RAM de 32 bits, de taille totale 20 koctets
Dans la zone Size entrer Total Memory Size → 20
et dans la zone Memory Type selectionner Block Type →M4K
Cliquer sur Finish pour quitter la fenetre de specification desparametres de la memoire
La figure ci-dessous represente la configuration obtenue apres ajout de la RAM
Il est a noter que le SOPC Builder cree automatiquement les connexions entre le processeuret la memoire !
8. Ajout du port JTAG :
Dans la liste des composants disponibles dans l’ongletSystem Content :
selectionner dans la categorie Communications →JTAG-UART et cliquer sur Add...
Ne pas modifier les parametres par defaut et cliquer surFinish pour accepter la configuration.
On notera la connexion creee entre la sortie IRQ du portJTAG et le processeur.
9. Ajout et specification des parametres du Timer systeme
7
Dans la liste des composants disponibles :
selectionner dans la categorie Other → Intervaltimer et cliquer sur Add...
Dans la fenetre de configuration qui apparait, cliquersur Finish pour accepter la configuration par defaut
Avec le bouton droit de la souris, cliquer sur timer 0et selectionner Rename
Entrer alors le nouveau nom sys clk timer et valider.
10. Ajout et specification du numero de peripherique (ID Peripheral) Dans la liste des com-posants disponibles, selectionner dans la categorie Other → System ID Peripheral etcliquer sur Add...Il n’y a pas ici, de parametre a configurer.
11. Ajout et specification des parametres du PIO
Dans la liste des composants disponibles :
selectionner dans la categorie Other → PIO (Parallel I/O) etcliquer sur Add...
Dans la fenetre de configuration qui apparait, ne pas changer laconfiguration par defaut, verifier que le port est bien de 8 bits eten sortie seule !
Cliquer sur Finish pour revenir a la fenetre du SOPC Builer
Avec le clic droit sur le nom pio 0 , selectionner Rename et entrerle nouveau nom led pio
A ce stade, tous les composants necessaires ont ete selectionnes et parametres. Cependant,avant de generer le systeme ainsi defini, il faut encore assigner a chaque peripherique, uneadresse de base et definir les niveaux d’interrruption.
12. Specification des adresses de base
Le SOPC Builder permet de mettre en œuvre une methode d’assignation automatique,nommee Auto-Assign Base Addresses. On reste cependant libre de fixer les adresses debase “a la main”.
Dans le menu System selectionner Auto-Assign Base Addresses . L’assignation desadresses de base se fait alors de facon automatique.
Cliquer sur la valeur de l’IRQ du composant jtag uart 0 et entrer la valeur 16
Le systeme est maintenant entierement configure, il ne reste plus qu’a le generer et le chargerdans le FPGA
13. Pour generer le systeme complet :
Cliquer sur l’onglet System Generation
Ne pas cocher la case Simulation
8
Cliquer sur Generate pour lancer la compilation.
La compilation dure environ 1 minute et elle n’est pas terminee tant que le messagesuivant n’est pas affiche :
# 2005.12.27 11 :46 :35 (*) SUCCESS : SYSTEM GENERATION COMPLETED.Press ’Exit’ to exit.
14. Cliquer alors sur Exit pour retourner dans l’environnement de developpement Quartus II
9
4 Integration du systeme dans le projet
Pour instancier le module cree dans lasection precedente, double cliquer sur unezone libre du schema.
Un fenetre Symbol s’ouvre.
Dans Libraries ouvrir le dossier Projet
Selectionner le composantfirst nios2 system et cliquer sur OK
On retourne alors sur le schema, une empreinte du composant etant attachee au pointeur dela souris. Il suffit de cliquer pour placer le composant. Il ne reste plus alors qu’a connecter les 3signaux au composant. Sauvegarder le schema ! ! !
On prendra soin a ce niveau de verifier que le systeme realise est bien associe a la carte dedeveloppement Stratix. Pour cela dans le menu Assignments , selectionner Device et verifierdans la fenetre qui s’ouvre que le circuit EP1S10F780C6 est bien selectionne.
10
D’autre part, toujours dans le menu Assignments selectionner Pins et cliquer sur la case Toafin de trier les broches par leur nom.
On verifiera alors que :– le signal PLD CLOCKINPUT[1] est bien affecte a la broche K17 du FPGA– les signaux LEDG[7..0] (Led Green) sont bien affectes aux broches H27, H28, L23, L24, J25,
J26, L20, L19Pour lancer la compilation :
1. Cliquer sur l’icone Start Compilation (ou dans le menu Processing → Start Compi-lation
2. La fenetre Status indique l’etat d’avancement de la compilation, cela prend environ 2 min-utes.
3. La compilation est terminee, lorsque qu’apparait la fenetre de dialogue affichant le message“Full compilation was successful”
4. Quelques caracteristiques sont resumees dans la fenetre de droite : nombre d’elements logiquesutilises, memoire utiliee ...
5. Il est indispensable de verifier que le systeme ainsi synthetise peut fonctionner a la frequenced’horloge specifiee (50 MHz).
Pour cela, dans la fenetre Compilation Report , ouvrir Timing Analyzer et cliquer surSummary
Le contenu de la cellule Actual Time represente la frequence maximale a laquelle peutfonctionner le circuit. Cette valeur doit imperativement etre superieure a la frequenced’horloge specifiee a la conception soit 50 MHz.
Le systeme peut alors etre charge dans le FPGA.
Remarque : pour faire apparaıtre (ou supprimer) les noms des broches, aller dans le menuView et selectionner Show Pins and Location Assignments
5 Chargement & Test
Le systeme etant genere, il faut maintenant le charger dans le FPGA et developper un pro-gramme de test.
5.1 Programmation du FPGA
1. Dans le menu Tools selectionner Programmer
2. Selectionner le fichier nios2 quartus2 project.sof
3. Cocher la case Program/Configure (voir figure page suivante)
4. Avant de lancer la programmation, cliquer sur Hardware Setup ... et verifier que dans lafenetre qui s’ouvre USB-Blaster est bien selectionne. Fermer la fenetre Hardware Setupen cliquant sur Close
5. Pour lancer la programmation, cliquer sur Start . La programmation est terminee lorsquel’indicateur Progress indique 100% (voir figure page suivante)
La programmation du FPGA est terminee, nous allons maintenant ecrire un programme detest en langage C. Quitter l’application Quartus II.
11
5.2 Developpement d’un programme
Il existe un environnement independant qui permet d’ecrire et de mettre au point les logicielsa implanter sur la carte de developpement, c’est le NIOS II IDE (Integrated DevelopmentEnvironment)
1. Lancer l’application NIOS II IDE
2. Avant de creer un nouveau projet, il faut tout d’abord vous placer dans votre repertoirede travail. Pour cela, dans le menu File → Switch workspace → Browse selectionnervotre repertoire de tracail C :\altera\qdesign51 ...
3. Dans le menu File → New → Project... choisir dans la fenetre qui apparaıt C/C++Application et cliquer sur Next
12
4. Dans la fenetre qui s’ouvre, choisir un projet type dans Select Project Template . Parexemple Hello World
5. Il faut selectionner la cible sur laquelle vous voulez faire executer ce programme. Pour cela,dans Select Target Hardware → Browse... aller dans votre repertoire de travail etselectionner le systeme qui vient d’etre defini et charge dans le FPGA (fichier avec l’extension.ptf)
6. Cliquer sur Finish . Une fenetre hello world.c s’ouvrira alors. Elle contient un fonction main
7. Avant de lancer la compilation, avec le bouton droite de la souris, cliquer sur le nom duprojet dans la fenetre C/C++ Project et selectionner : System Library Properties.
8. Decocher la case Clean Exit et cocher Small C Library . Cliquer sur OK pour fermer lafenetre.
9. Avant de faire la moindre modification a ce code source, avec le bouton droite, cliquer sur lenom du projet et lancer Build Projet . Cela permet au compilateur de generer les fichiers“system.h” ... de facon a les inclure ensuite dans le code source.
10. Pour l’executer cliquer sur Run As → Nios II Hardware .
11. Dans la fenetre nommee Console, doit s’afficher Hello from Nios II !
Completer le programme ci-dessus, afin de faire afficher sur les 8 LEDs LEDG[7]..LEDG[0], lavaleur d’une variable cmpt qui sera incrementee toute les demi-secondes. La fonction qui permetde creer une temporisation s’appelle usleep(valeur du retard). Determiner experimentalement enquelle unite s’exprime ce retard.
Pour ecrire une valeur dans le registre de donnees du PIO, on utilisera la fonction definie parAltera : IOWR ALTERA AVALON PIO DATA( ). Son prototype se trouve dans le fichier alteraavalon pio regs.h
Ce fichier contient les definitions des fonctions permettant :– de lire ou decrire dans le regsitre de donnees du PIO– de lire ou d’ecrire dans le regsitre de direction des donnees du PIO– de lire ou d’ecrire dans le regsitre de masquage des interruptions du PIO– de lire ou d’ecrire dans le regsitre de capture de front du PIO
Remarque : les types suivant ont ete definis pour utiliser les fonctions developpees par Altera
alt 8 signed charalt u8 unsigned charalt 16 signed shortalt u16 unsigned shortalt 32 signed longalt u32 unsigned long
Exercices importants AVANT d’aborder la gestion des interruptions :
Ecrire une fonction main() qui contient la declaration locale d’un tableau de 5 entiers.
1. Faire une boucle qui permet d’afficher les elements du tableau a l’aide d’un pointeur, enutilisant une syntaxe de la forme : p++. On affichera les elements et leurs adresses.
2. De meme, faire une boucle qui permet d’afficher les elements du tableau, en utilisant unesyntaxe de la forme : p+i ou i est l’indice de boucle. Interpretation !
3. Ecrire une fonction qui permet d’afficher la valeur des elements du tableau, l’adresse dutableau sera passee en parametre.
4. Reprendre les points ci dessus avec un tableau de char
13
6 Gestion des interruptions
L’objectif ici, est de generer entierement un nouveau systeme qui permettra de lire l’etatdes 4 interrupteurs SW3..SW0. Le fonctionnement sera prevu dans un premier temps sans inter-ruptions, afin d’aborder le fonctionnement du registre de capture de front. Dans un deuxiemetemps, la mise en place et la gestion des interruptions seront abordees.
Pour cela on developpera un nouveau systemeintegrant les memes composants que ceuxprecedemment developpes. On y ajoutera unPIO nomme BUTTON PIO. Il devra posseder4 entrees qui doivent etre reliees aux interrup-teurs SWi (i=0..3, cf Annexes pour la syntaxeprecise de leur nom). Lors de la definition duPIO, dans l’onglet Basic Settings , specifier :PIO en entree seule.Dans l’onglet Input Option , specifier (parexemple) que le registre de detection de front(EDGE CAPTURE) doit etre sensible a unfront montant (ou descendant, au choix...) etqu’il doit generer une interruption active surfront.
Les parametres du PIO etant definis, cliquersur Finish pour revenir au SOPC Builder etpreciser que l’interruption liee a ce PIO estreliee a la ligne IRQ 2, par exemple. Attentionla ligne IRQ 0 est reservee au systeme, ne pasl’utiliser ! !
Il faut maintenant regenerer le systeme.
Avant de recompiler le projet, il faut rajouter sur le schema quatre entrees correspondant auxinterrupteurs SW0..SW3. On verifiera la syntaxe precise du noms de ces entrees dans le menuAssignement , Pins...
Pour tester la nouvelle fonctionnalite implantee, ecrire un programme en langage C qui permetd’afficher en permanence les valeurs contenues dans les registres EDGE CAPTURE et DATA duPIO. Dans ce premier programme, les interruptions ne sont pas autorisees.
Pour le tester : appuyer sur l’interrupteur SW0 par exemple, observer la valeur affichee. Ap-puyer ensuite sur SW1, observer la valeur affichee. Interpreter.
Modifier le programme precedent, de facon a remettre a zero le registre EDGE CAPTURElorsque la valeur lue est egale a (1111)2.
Remarque : pour arreter l’excution d’un programme : dans la fenetre Console, cliquer sur l’iconeTerminate .
14
Mise en place des interruptionsLa procedure suivante doit etre suivie :
– tout d’abord, effectuer une remise a zero du registre EDGE CAPTURE pour eviter touteinterruption parasite
– Mise en place du sous programme de traitement d’interruption (voir ci-apres)– Autorisation des interruptions par la mise en place du masque d’interruption.
Il existe une fonction dans la bibliotheque HAL (Hardware Abstraction Layer) fournie par Altera,qui permet de mettre en place un vecteur d’interruption correspondant a un niveau d’interruptionspcecifique : alt irq register().
Son prototype est dans le fichier sys/alt irq.h et est de la forme :
int alt irq register ( alt u32 id, void* context, void (*isr)(void*, alt u32) )
ou ses parametres sont definis comme suit :– id est le numero de l’interruption– void* context est un pointeur generique permettant de passer un (ou des) parametre(s) a
la fonction de traitement des IT– void (*isr)(void*, alt u32) est un pointeur sur la fonction de traitement des IT (nommee
ici isr). C’est en fait l’adresse de la fonction de traitement des interruptions. Elle doitrespecter le prototype defini ci-dessous.
La fonction de traitement des interruptions que vous aller ecrire doit respecter le prototype suivant :
void nom de votre fonction de traitement des IT(void* context, alt u32 id)
Modifier le programme precedent de facon a prendre en compte une interruption lors d’unappui sur SW1 (et uniquement sur SW1), par exemple.
Remarques :– le fabriquant preconise d’ecrire des fonctions d’interruption comportant peu d’instructions– il est interdit d’utiliser des fonctions d’entree-sortie standart du langage C, telles que printf(),
dans les fonctions d’interruption (cf page 6.14)Exercies sur la gestion des interruptions :
1. Lors de l’appui sur un interrupteur, incrementation d’une variable et affichage sur les LEDs
2. En reprenant le programme precedent, rajouter la decrementation de la variable lors del’appui sur un autre interrupteur
3. Soit 2 variables v1 et v2, locales a la fonction main(), on souhaite obtenir le fonction-nement suivant :
v1 v2Appui sur SW0 1 0Appui sur SW1 0 1Appui sur SW2 0 0
4. En reprenant le premier exercice du tutorial : a partir de la valeur 0, incrementation automa-tique d’une variable toutes les 0.5s, on doit maintenant lors d’un appui sur un interrupteuravoir une temporisation de 0,25s (ralentissement). Lors d’un second appui sur le meme in-terrupteur, la temporisation doit revenir a sa valeur initiale de 0,5s (acceleration).
15
7 Generation du signal de commande des LEDs emettrices IR
Au systeme precedemment defini, on souhaite rajouter un circuit temporisateur qui permettrade generer le signal de commande des LEDs emettrices infra-rouges.
1. Rajouter au systeme un Timer que l’on nommera Timer LED IR possedant une sortie“Timeout Pulse” qui generera une impulsion a une frequence de 38kHz.
Pour observer ce signal, on le connectera a une broche du port d’extension J15 , par exemplela broche LED IR. La syntaxe precise du nom de la broche sera trouvee dans le menuAssignments ⇒ Pins ... cf Tutorial page 11.
2. Ecrire un programme de test qui permet de lire et d’afficher les registres de ce circuit tem-porisateur et du Sys clk timer. Interpreter les resultats.
Le prototype des fonctions permettant d’acceder aux registres du circuit temporisateur, setrouve dans le fichier altera avalon timer regs.h.
3. Afin de detecter le signal emis par les LEDs infra-rouges, il est necessaire de generer un sig-nal carre de frequence 38kHz. Comment doit on modifier ce systeme pour generer un signalcarre ? On cherchera ici a avoir une solution materielle et non pas logicielle qui serait troplourde a mettre en place.
Realiser la modification et visualiser le signal (il sera peut-etre necessaire de modifier lelogiciel ecrit a la question 2 ci-dessus)
8 Commande des servo-moteurs
Les moteurs qui servent a piloter le robot sont realises a partir de servo-moteurs modifies pourfonctionner en moteurs a courant continu. Le robot possede pour se mouvoir 2 moteurs qui sontcommandes de facon inependante.
Ces servo-moteurs possedent un connecteur a trois broches,dont le brochage est specifie ci-dessous :
+5V
Masse
Commande
Le signal de commande est code en PWM, la periode de repetition des impulsions doit etred’environ 20ms. Selon l’allure de ce signal de commande, le fonctionnement suivant peut etreobtenu :
t
T 20msTo
#
+5V lorsque :– To ' 1,5 ms le moteur est a l’arret– To ' 1,0 ms le moteur tourne dans un sens– To ' 2,0 ms le moteur tourne dans le sens oppose
16
8.1 Generation d’un signal de commande
Le signal de commande du moteur doit etre du type PWM (Pulse Width Modulation). Il fautdonc rajouter au systeme un composant capable de generer un signal PWM. Altera fournit cetype de composant sur son site, il n’est pas integre par defaut dans la version de base du SOPCBuilder. Nous allons l’integrer en nous aidant de la documentation fournie par Altera.
REMARQUE IMPORTANTE : les fichiers fournis par le constructeur sont ecrits en Verilog.On ne peut compiler ensemble que des fichiers du meme type. Cela impose donc lors de la definitiond’un nouveau systeme devant comporter un module PWM, que celui-ci soit definit en Verilog ( cfTutorial page 5, choisir l’option Verilog).
1. En suivant les instructions fournies dans le fichier qts qii54007.pdf, inclure dans le SOPCBuilder le composant PWM Avalon Interface.
2. Realiser un programme de test et visualiser le signal
3. Le systeme doit posseder un PIO capable de gerer les boutons poussoirs SW0, SW1 et lesignal de commande d’un servomoteur. Le fonctionnement doit etre le suivant :– en absence d’action sur SW0 et SW1, le moteur doit etre a l’arret– une action sur SW0 doit faire tourner le moteur dans un sens– une action sur SW1 doit faire tourner le moteur dans le sens oppose
Pour realiser le test lorsque les moteurs seront connectes, on veillera a ce que lesvaleurs extremes de la duree To ne depassent pas ± 10% de la valeur de reference1.5 ms ! ! !
8.2 Commande des 2 moteurs
Le systeme doit pouvoir maintenant commander les 2 moteurs, afin de permettre au robot dese deplacer. La commande sera generee par une action sur un des 2 boutons poussoirs : SW0 ouSW1. Un appui sur SW0 doit provoquer la rotation du robot sur lui meme, dans le sens horaire,et un appui sur SW1 une rotation dans le sens anti-horaire. En absence d’action sur SW0 et SW1,le robot doit etre a l’arret.
Faire un nouveau systeme integrant la commande des 2 moteurs.
17
9 Detection d’obstacles & Pilotage
9.1 Detection
La detection d’obstacle sera realisee a l’aide d’un detecteur infrarouge TSOP2236 dont ladocumentation constructeur est fournie en annexe.
470 Ω
LED IR
Timer 36kHz
Vcc
1
TSO
P223
6
3
2 vers IR_PIO
1. A partir de la documentation constructeur, expliquer le fonctionnement du detecteur IR
2. Generer un nouveau systeme qui comporte un timer capable de fournir le signal d’exci-tation de la LED IR a la frequence de 36 kHz. Le systeme devra en outre comporter un PIOnomme IR PIO permettant de realiser la detection, et qui pourra eventuellement fonctionneren interruption.
3. Ecrire un programme en C permettant de tester le fonctionnement du systeme. On testeraen particulier la sensibilite de la detection : eloignement de l’obstacle, couleur de la surfacereflechissante ...
4. En faisant varier la frequence du signal d’exitation, evaluer la gamme de fonctionnement dudetecteur
9.2 Commande
On souhaite maintenant realiser un systeme qui permette au robot de se deplacer en lignedroite et de s’arreter lorsqu’un obstacle est detecte. Ce systeme devra en outre comporter uninterrupteur qui permettra d’arreter le robot a n’importe quel moment (Arret d’urgence).
Realiser le systeme qui repond a ce cahier des charges.
9.3 Capteur de temperature
Le robot est dote d’un capteur de temperature DS1620, dont la documenation est fournieen annexe. Integrer le capteur de temperature dans un nouveau systeme et le tester. Pourconnecter le capteur au FPGA, on se referera au brochage donne en Annexe.
18
10 Annexes
Brochages :
Noms des broches du FPGA
BUTTON PIO IN[0]...BUTTON PIO IN[3]
LEDG[0]...LEDG[7]
1 GND 2 +5V3 DQ(DS1620) 4 CLK(DS1620)5 RST(DS1620) 6 -7 - 8 -9 - 10 -11 Moteur1 12 Moteur213 LED IR 14 DETECT IR
(TSOP2236)
19