Вы находитесь на странице: 1из 19

Systemes numeriques V4

04-02-2013

1
Lobjectif de cet enseignement pratique est une initation aux systemes numeriques, mettant
en uvre les concepts de developpement sur circuits programmables de type FPGA.

Lapplication retenue est la commande dun robot, fabrique a partir dune base Rogue Blue
ERS de chez ROGUE ROBOTICS.

La carte de developpement FPGA utilisee est la carte dALTERA 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 dune part de
lenvironnement de developpement materiel Quartus II et dautre part de lenvironnement de
developpement logiciel NIOS IDE.

Ensuite seront developpes dans une serie de manipulations, les points suivants :
Etude et definition de larchitecture du systeme robot
Implantation dun processeur generique
Implantation de circuits dentee-sortie
Implantation dun logiciel de commande de lapplication en langage C

2
1 Decouverte de lenvironnement
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 dextension

3
2 Tutorial pour limplantation du processeur NIOS II
standard
Ce tutorial permet de creer un systeme bati autour dun cur de la famille des processeurs
embarques NIOS II avec de la memoire vive, un port de mise au point JTAG et dun coupleur
parallele (PIO) permettant de piloter des LEDs. Ce premier systeme sera implante et teste sur la
carte developpement Stratix.

3 Specification & Generation du systeme


Dans cette section, nous allons definir, parametrer les differents composants et generer le
systeme correspondant a la specification ci-dessus (Figure 1 : Tutorial Example Design).
1. Decompresser dans votre repertoire de travail, larchive niosII SN stratix 1s10.zip.
Ce repertoire contient les fichiers suivants :
nios2 quartus2 project.bdf BlockSchematic File
nios2 quartus2 project.qpf Quartus Project File
nios2 quartus2 project.qsf
nios2 quartus2 project.qws
README.TXT
Le fichier BDF est une ebauche sous forme de schema du systeme a elaborer, et le fichier
QPF represente le projet du logiciel de developpement QUARTUS.
2. Lancer QUARTUS II
Pour 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 apparat alors (voir figure ci-dessous), un schema (Block Diagram File) avec :

un commentaire decrivant le systeme

une entree dhorloge :


PLD CLOCKINPUT[1]

une entree connectee a la tension


dalimentation : Vcc

et 8 sorties pour commander les LEDs :


LEDG[7..0] (voir Annexe)
Lobjectif a partir de cet embryon de projet
est de batir le systeme complet decrit sur la
figure 1 : Tutorial Example Design.

3. A partir du menu Tools lancer SOPC Builder...

Une fenetre Create a New System souvre alors.

Dans la zone System name entrer : first nios2 system

dans la zone Target HDL choisir loption VHDL et cliquer sur OK.

(creation dans le repertoire de travail des fichiers first nios2 system.ptf et de first nios2 system.vhd
Linterface SOPC Builder apparat alors, avec a gauche longlet System Content. Il ne
contient 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 carte
de developpement Stratix.
5. Nous allons maintenant ajouter le coeur du systeme :
Dans longlet 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 lon
souhaite implanter, on choisira ici le modele Standard

Pour cela, selectionner dans longlet NIOS II Core NIOS II/s


Selectionner dans Hardware Multiply None et verifier que la case Hardware Divide
nest pas cochee (voir figure ci-dessus).
Cliquer sur Next pour passer a longlet Caches & Tightly Coupled Memories
et specifiez les parametres suivants :
Instruction cache 2kbytes
Include Coupled Instruction Master Port(s) : Off (case non cochee)
6. A ce stade, la specification du cur du systeme est terminee, il suffit de cliquer sur Finish
pour revenir a la fenetre SOPC Builder
7. Pour faire fonctionner un processeur, il est indispensable dy rajouter de la memoire. Ici,
nous allons implanter de la memoire vive statique (SRAM) qui est incluse dans le FPGA (on
Chip 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 sur
Memory et selectionner On-Chip Memory (RAM or ROM) et cliquer sur Add...

6
Il faut maintenant preciser les parametres de la memoire a savoir
ici, 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 des


parametres 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 processeur
et la memoire !
8. Ajout du port JTAG :

Dans la liste des composants disponibles dans longlet


System Content :

selectionner dans la categorie Communications


JTAG-UART et cliquer sur Add...

Ne pas modifier les parametres par defaut et cliquer sur


Finish pour accepter la configuration.

On notera la connexion creee entre la sortie IRQ du port


JTAG et le processeur.

9. Ajout et specification des parametres du Timer systeme

7
Dans la liste des composants disponibles :

selectionner dans la categorie Other Interval


timer et cliquer sur Add...

Dans la fenetre de configuration qui apparait, cliquer


sur Finish pour accepter la configuration par defaut

Avec le bouton droit de la souris, cliquer sur timer 0


et 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 et
cliquer sur Add...
Il ny 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) et


cliquer sur Add...

Dans la fenetre de configuration qui apparait, ne pas changer la


configuration par defaut, verifier que le port est bien de 8 bits et
en 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 entrer


le 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, une
adresse de base et definir les niveaux dinterrruption.

12. Specification des adresses de base


Le SOPC Builder permet de mettre en uvre une methode dassignation automatique,
nommee Auto-Assign Base Addresses. On reste cependant libre de fixer les adresses de
base a la main.

Dans le menu System selectionner Auto-Assign Base Addresses. Lassignation des


adresses de base se fait alors de facon automatique.
Cliquer sur la valeur de lIRQ du composant jtag uart 0 et entrer la valeur 16

Le systeme est maintenant entierement configure, il ne reste plus qua le generer et le charger
dans le FPGA
13. Pour generer le systeme complet :
Cliquer sur longlet System Generation
Ne pas cocher la case Simulation

8
Cliquer sur Generate pour lancer la compilation.
La compilation dure environ 1 minute et elle nest pas terminee tant que le message
suivant nest pas affiche :
# 2005.12.27 11 :46 :35 (*) SUCCESS : SYSTEM GENERATION COMPLETED.
Press Exit to exit.
14. Cliquer alors sur Exit pour retourner dans lenvironnement de developpement Quartus II

9
4 Integration du systeme dans le projet

Pour instancier le module cree dans la


section precedente, double cliquer sur une
zone libre du schema.

Un fenetre Symbol souvre.

Dans Libraries ouvrir le dossier Projet

Selectionner le composant
first nios2 system et cliquer sur OK

On retourne alors sur le schema, une empreinte du composant etant attachee au pointeur de
la souris. Il suffit de cliquer pour placer le composant. Il ne reste plus alors qua connecter les 3
signaux au composant. Sauvegarder le schema ! ! !

On prendra soin a ce niveau de verifier que le systeme realise est bien associe a la carte de
developpement Stratix. Pour cela dans le menu Assignments, selectionner Device et verifier
dans la fenetre qui souvre que le circuit EP1S10F780C6 est bien selectionne.

10
Dautre part, toujours dans le menu Assignments selectionner Pins et cliquer sur la case To
afin 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, L19
Pour lancer la compilation :
1. Cliquer sur licone Start Compilation (ou dans le menu Processing Start Compi-
lation
2. La fenetre Status indique letat davancement de la compilation, cela prend environ 2 min-
utes.
3. La compilation est terminee, lorsque quapparait la fenetre de dialogue affichant le message
Full compilation was successful
4. Quelques caracteristiques sont resumees dans la fenetre de droite : nombre delements logiques
utilises, memoire utiliee ...
5. Il est indispensable de verifier que le systeme ainsi synthetise peut fonctionner a la frequence
dhorloge specifiee (50 MHz).

Pour cela, dans la fenetre Compilation Report, ouvrir Timing Analyzer et cliquer sur
Summary

Le contenu de la cellule Actual Time represente la frequence maximale a laquelle peut


fonctionner le circuit. Cette valeur doit imperativement etre superieure a la frequence
dhorloge specifiee a la conception soit 50 MHz.

Le systeme peut alors etre charge dans le FPGA.

Remarque : pour faire apparatre (ou supprimer) les noms des broches, aller dans le menu
View 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 la
fenetre qui souvre USB-Blaster est bien selectionne. Fermer la fenetre Hardware Setup
en cliquant sur Close
5. Pour lancer la programmation, cliquer sur Start. La programmation est terminee lorsque
lindicateur Progress indique 100% (voir figure page suivante)
La programmation du FPGA est terminee, nous allons maintenant ecrire un programme de
test en langage C. Quitter lapplication Quartus II.

11
5.2 Developpement dun programme
Il existe un environnement independant qui permet decrire et de mettre au point les logiciels
a implanter sur la carte de developpement, cest le NIOS II IDE (Integrated Development
Environment)
1. Lancer lapplication NIOS II IDE
2. Avant de creer un nouveau projet, il faut tout dabord vous placer dans votre repertoire
de travail. Pour cela, dans le menu File Switch workspace Browse selectionner
votre repertoire de tracail C :\altera\qdesign51 ...
3. Dans le menu File New Project... choisir dans la fenetre qui apparat C/C++
Application et cliquer sur Next

12
4. Dans la fenetre qui souvre, choisir un projet type dans Select Project Template. Par
exemple 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 et
selectionner le systeme qui vient detre defini et charge dans le FPGA (fichier avec lextension
.ptf)
6. Cliquer sur Finish. Une fenetre hello world.c souvrira alors. Elle contient un fonction main
7. Avant de lancer la compilation, avec le bouton droite de la souris, cliquer sur le nom du
projet 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 la
fenetre.
9. Avant de faire la moindre modification a ce code source, avec le bouton droite, cliquer sur le
nom 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 lexecuter cliquer sur Run As Nios II Hardware.
11. Dans la fenetre nommee Console, doit safficher Hello from Nios II !
Completer le programme ci-dessus, afin de faire afficher sur les 8 LEDs LEDG[7]..LEDG[0], la
valeur dune variable cmpt qui sera incrementee toute les demi-secondes. La fonction qui permet
de creer une temporisation sappelle usleep(valeur du retard). Determiner experimentalement en
quelle unite sexprime ce retard.

Pour ecrire une valeur dans le registre de donnees du PIO, on utilisera la fonction definie par
Altera : IOWR ALTERA AVALON PIO DATA( ). Son prototype se trouve dans le fichier altera
avalon 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 decrire dans le regsitre de direction des donnees du PIO
de lire ou decrire dans le regsitre de masquage des interruptions du PIO
de lire ou decrire 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 char
alt u8 unsigned char
alt 16 signed short
alt u16 unsigned short
alt 32 signed long
alt u32 unsigned long

Exercices importants AVANT daborder la gestion des interruptions :

Ecrire une fonction main() qui contient la declaration locale dun tableau de 5 entiers.
1. Faire une boucle qui permet dafficher les elements du tableau a laide dun pointeur, en
utilisant une syntaxe de la forme : p++. On affichera les elements et leurs adresses.
2. De meme, faire une boucle qui permet dafficher les elements du tableau, en utilisant une
syntaxe de la forme : p+i ou i est lindice de boucle. Interpretation !
3. Ecrire une fonction qui permet dafficher la valeur des elements du tableau, ladresse du
tableau sera passee en parametre.
4. Reprendre les points ci dessus avec un tableau de char

13
6 Gestion des interruptions
Lobjectif ici, est de generer entierement un nouveau systeme qui permettra de lire letat
des 4 interrupteurs SW3..SW0. Le fonctionnement sera prevu dans un premier temps sans inter-
ruptions, afin daborder le fonctionnement du registre de capture de front. Dans un deuxieme
temps, la mise en place et la gestion des interruptions seront abordees.

Pour cela on developpera un nouveau systeme


integrant les memes composants que ceux
precedemment developpes. On y ajoutera un
PIO nomme BUTTON PIO. Il devra posseder
4 entrees qui doivent etre reliees aux interrup-
teurs SWi (i=0..3, cf Annexes pour la syntaxe
precise de leur nom). Lors de la definition du
PIO, dans longlet Basic Settings, specifier :
PIO en entree seule.
Dans longlet Input Option, specifier (par
exemple) que le registre de detection de front
(EDGE CAPTURE) doit etre sensible a un
front montant (ou descendant, au choix...) et
quil doit generer une interruption active sur
front.

Les parametres du PIO etant definis, cliquer


sur Finish pour revenir au SOPC Builder et
preciser que linterruption liee a ce PIO est
reliee a la ligne IRQ 2, par exemple. Attention
la ligne IRQ 0 est reservee au systeme, ne pas
lutiliser ! !

Il faut maintenant regenerer le systeme.

Avant de recompiler le projet, il faut rajouter sur le schema quatre entrees correspondant aux
interrupteurs SW0..SW3. On verifiera la syntaxe precise du noms de ces entrees dans le menu
Assignement, Pins...

Pour tester la nouvelle fonctionnalite implantee, ecrire un programme en langage C qui permet
dafficher en permanence les valeurs contenues dans les registres EDGE CAPTURE et DATA du
PIO. Dans ce premier programme, les interruptions ne sont pas autorisees.

Pour le tester : appuyer sur linterrupteur 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 CAPTURE


lorsque la valeur lue est egale a (1111)2 .

Remarque : pour arreter lexcution dun programme : dans la fenetre Console, cliquer sur licone
Terminate.

14
Mise en place des interruptions
La procedure suivante doit etre suivie :
tout dabord, effectuer une remise a zero du registre EDGE CAPTURE pour eviter toute
interruption parasite
Mise en place du sous programme de traitement dinterruption (voir ci-apres)
Autorisation des interruptions par la mise en place du masque dinterruption.
Il existe une fonction dans la bibliotheque HAL (Hardware Abstraction Layer) fournie par Altera,
qui permet de mettre en place un vecteur dinterruption correspondant a un niveau dinterruption
spcecifique : 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 linterruption
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 ). Cest en fait ladresse de la fonction de traitement des interruptions. Elle doit
respecter 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 dun
appui sur SW1 (et uniquement sur SW1), par exemple.

Remarques :
le fabriquant preconise decrire des fonctions dinterruption comportant peu dinstructions
il est interdit dutiliser des fonctions dentree-sortie standart du langage C, telles que printf(),
dans les fonctions dinterruption (cf page 6.14)
Exercies sur la gestion des interruptions :
1. Lors de lappui sur un interrupteur, incrementation dune variable et affichage sur les LEDs
2. En reprenant le programme precedent, rajouter la decrementation de la variable lors de
lappui sur un autre interrupteur
3. Soit 2 variables v1 et v2, locales a la fonction main(), on souhaite obtenir le fonction-
nement suivant :
v1 v2
Appui sur SW0 1 0
Appui sur SW1 0 1
Appui sur SW2 0 0
4. En reprenant le premier exercice du tutorial : a partir de la valeur 0, incrementation automa-
tique dune variable toutes les 0.5s, on doit maintenant lors dun appui sur un interrupteur
avoir une temporisation de 0,25s (ralentissement). Lors dun 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 permettra
de generer le signal de commande des LEDs emettrices infra-rouges.
1. Rajouter au systeme un Timer que lon 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 dextension J15 , par exemple
la broche LED IR. La syntaxe precise du nom de la broche sera trouvee dans le menu
Assignments Pins ... cf Tutorial page 11.
2. Ecrire un programme de test qui permet de lire et dafficher les registres de ce circuit tem-
porisateur et du Sys clk timer. Interpreter les resultats.

Le prototype des fonctions permettant dacceder aux registres du circuit temporisateur, se


trouve 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 signal
carre ? On cherchera ici a avoir une solution materielle et non pas logicielle qui serait trop
lourde a mettre en place.

Realiser la modification et visualiser le signal (il sera peut-etre necessaire de modifier le


logiciel 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 pour
fonctionner en moteurs a courant continu. Le robot possede pour se mouvoir 2 moteurs qui sont
commandes de facon inependante.

Ces servo-moteurs possedent un connecteur a trois broches,


dont le brochage est specifie ci-dessous :

Masse

+5V

Commande

Le signal de commande est code en PWM, la periode de repetition des impulsions doit etre
denviron 20ms. Selon lallure de ce signal de commande, le fonctionnement suivant peut etre
obtenu :

+5V
lorsque :
t To ' 1,5 ms le moteur est a larret
To To ' 1,0 ms le moteur tourne dans un sens
T # 20ms To ' 2,0 ms le moteur tourne dans le sens oppose

16
8.1 Generation dun signal de commande
Le signal de commande du moteur doit etre du type PWM (Pulse Width Modulation). Il faut
donc rajouter au systeme un composant capable de generer un signal PWM. Altera fournit ce
type de composant sur son site, il nest pas integre par defaut dans la version de base du SOPC
Builder. Nous allons lintegrer 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 definition
dun nouveau systeme devant comporter un module PWM, que celui-ci soit definit en Verilog ( cf
Tutorial page 5, choisir loption Verilog).
1. En suivant les instructions fournies dans le fichier qts qii54007.pdf, inclure dans le SOPC
Builder 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 le
signal de commande dun servomoteur. Le fonctionnement doit etre le suivant :
en absence daction sur SW0 et SW1, le moteur doit etre a larret
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 les
valeurs extremes de la duree To ne depassent pas 10% de la valeur de reference
1.5 ms ! ! !

8.2 Commande des 2 moteurs


Le systeme doit pouvoir maintenant commander les 2 moteurs, afin de permettre au robot de
se deplacer. La commande sera generee par une action sur un des 2 boutons poussoirs : SW0 ou
SW1. 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 daction sur SW0 et SW1,
le robot doit etre a larret.

Faire un nouveau systeme integrant la commande des 2 moteurs.

17
9 Detection dobstacles & Pilotage
9.1 Detection
La detection dobstacle sera realisee a laide dun detecteur infrarouge TSOP2236 dont la
documentation constructeur est fournie en annexe.
Timer 36kHz

Vcc

470
1
LED IR

TSOP2236
vers IR_PIO
2

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 dexci-
tation de la LED IR a la frequence de 36 kHz. Le systeme devra en outre comporter un PIO
nomme IR PIO permettant de realiser la detection, et qui pourra eventuellement fonctionner
en interruption.
3. Ecrire un programme en C permettant de tester le fonctionnement du systeme. On testera
en particulier la sensibilite de la detection : eloignement de lobstacle, couleur de la surface
reflechissante ...
4. En faisant varier la frequence du signal dexitation, evaluer la gamme de fonctionnement du
detecteur

9.2 Commande
On souhaite maintenant realiser un systeme qui permette au robot de se deplacer en ligne
droite et de sarreter lorsquun obstacle est detecte. Ce systeme devra en outre comporter un
interrupteur qui permettra darreter le robot a nimporte quel moment (Arret durgence).

Realiser le systeme qui repond a ce cahier des charges.

9.3 Capteur de temperature


Le robot est dote dun capteur de temperature DS1620, dont la documenation est fournie
en annexe. Integrer le capteur de temperature dans un nouveau systeme et le tester. Pour
connecter 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 +5V
3 DQ(DS1620) 4 CLK(DS1620)
5 RST(DS1620) 6 -
7 - 8 -
9 - 10 -
11 Moteur1 12 Moteur2
13 LED IR 14 DETECT IR
(TSOP2236)

19

Вам также может понравиться