SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques...

21

Transcript of SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques...

Page 1: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés
Page 2: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

SSOOMMMMAAIIRREE

I)introduction et présentation du cahier des

charges

II)Analyse et découpage fonctionnel

III)Analyse et présentation de la

programmation du CPLD

1. Analyse et Diagramme à bulles

2. Listing du code

IV) Conclusion

V) Annexe technique

1.Schéma structurel

2.Nomenclature

Page 3: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

I)introduction et présentation et présentation du cahier des charges :

Le but de ce projet consiste en la réalisation du jeu de l’anneau à l’aide d’un

composant programmable « CPLD ». Le principe est simple : le joueur après avoir

appuyé sur le bouton de départ, doit suivre un fil avec un anneau le plus

rapidement possible.

A chaque fois qu'il touchera le fil , il subira une pénalité de temps. Son temps est

affiché sur trois afficheurs 7 segments. Le premier affichera les minutes, le

deuxième affichera la partie des dizaines de seconde, enfin le dernier afficheur

correspond aux unités de seconde.

Pour finir, nous utiliserons bien sur un bouton pour terminer le jeu et observer

son score.

Présentation du cahier des charges :

Liaison parallèle

Utilisation d’une horloge(NE555)

Afficheurs à anode commune

Utilisation du composant 74hct573

Utilisation du composant hc244 (interface port parallèle/CPLD)

Fil de cuivre

Régulateur

Page 4: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

II )Analyse et découpage fonctionnel : « FP1 » Jeu d’anneau : Structure filaire avec des interrupteurs pour lancer et arrêter le jeu « FP2 » Anti-rebonds : Cette fonction permet de supprimer les rebonds lorsque le joueur touche le fil plusieurs fois et sur un laps de temps faible (main qui tremble trop). Ce système permet de donner une pénalité une seule fois. « FP3 » Horloge : l’horloge permet de « cadencer » le chronomètre . « FP4 » circuit programmable composant CPLD, programmé en fonction du diagramme à bulle « FP5 » mémorisation elle sert d’interface entre les données en sortie du CPLD et les afficheurs. Elle mémorise la donnée. « FP6 » affichage Affichage des digits (LED) de l’afficheur en fonction des infos du CPLD

Jeu d’anneau (structure filaire) FP1

Anti-rebond

FP2

Horloge FP3

FP4

FP5

FP6

Circuit programmable

mémorisation Affichage

Page 5: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

FP1 Jeu d’anneau Les boutons et les fils sont représentés par des entrées du CPLD. Ils marchent tous de la même manière que ce soit un bouton ou un fil. On souhaite qu'ils soient actifs à l'état bas , on utilise donc un fil provenant de la masse pour les actionner. Néanmoins on ne peut pas laisser l'entrée en l'air car on ne saurait pas dans quel état elle est . Il faut donc rajouter une résistance de tirage entre l'entrée et le 5V, on placera un fil entre ces derniers pour servir de bouton. La valeur de cette résistance a été déterminée à la louche (en testant).

Page 6: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

« FP2 » Anti-rebonds En visualisant la tension de l’anneau sur l’oscilloscope, nous pouvons observer des rebonds dus à la maladresse du joueur et aux défauts mécaniques des bouton poussoirs. Pour remédier à ce problème, nous utiliserons un filtre passe bas. Relevé d’oscilloscope des signaux avec rebond et avec suppression de rebond Montage passe bas et ses caractéristiques. D’après les caractéristiques du condensateur, il ne doit pas y avoir de variations brutales de tension.

Page 7: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

« FP3 » Horloge Cette horloge va être fixé par un montage avec un NE555. Les calculs des résistances et condensateurs ont été menés afin d’obtenir une horloge de fréquence 100Hz qui est la fréquence du temps réel. Ce système permettra, à l'aide d'un compteur des centièmes de secondes , de pouvoir facilement calculer les secondes sans avoir une horloge trop basse (qui pourrait empêcher de détecter des états par exemple). Voici les formules utilisées : Thigh=0.693(R1+R2)*C Tlow=0.693R2*C T=0.693*(R1+2*R2)*C Le rapport cyclique doit être différent mais proche de 0.5 pour que les formules employées restent valides. Nous allons donc, prendre une période de 10 ms avec un rapport cyclique de 0.6 Nous imposons C=10uF(car c’est la série la plus restreinte). Calcul : Tlow= 0.693*R2*C R2= Tlow/0.693*C = 4ms/(0.693*10uF)=577 ohms Thigh= 0.693*(R1+R2)*C R1= (Thigh/0.693*C)-R2 = 6ms/(0.693*10uF)-577=289 ohms Pour pouvoir rester proche de T=10 ms:Nous prenons da la série E24 le calibre en dessous pour R2 et pour R1 le calibre au dessus, ce qui permet de compenser. Ainsi dans la série E24 : R1=300 ohms et R2=560 ohms Vérification T= 0.693(300+2*560)*10 uF = 9.9 uF Thigh= 6ms Tlow= 3.9ms Nous pouvons donc valider les valeurs des composants.

Page 8: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

« FP4 »circuit programmable Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés pour remplacer l’association de plusieurs boîtiers logiques. Ces produits de faible encombrement, faciles à mettre en œuvre, répondent à une large étendue de besoins. Le terme PLD regroupe 4 familles de composants : PLD PAL GAL CPLD FPGA Nous allons utiliser le CPLD car il offre une densité d’intégration et de possibilités de configuration très nettement supérieures à celles proposées par les GAL. Il est programmable et effaçable électriquement. Carte d’identité du CY37064P44 : Nature du composant :CPLD Technologie :TTL Nombre de cellule logique : entre 32 et 512 Nombre de broches : 44 Nombre de possibilité d’horloge : 4

Page 9: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

« FP5 »mémorisation lorsque nous relions directement les sorties du CPLD sur lesquelles se trouvent les données et les afficheurs, nous ne voyons aucune valeur s’afficher. En effet la donnée est bien trop rapide ; il nous faut trouver un moyen de conserver cette donnée, mais aussi de figer les digits de l’afficheur. Pour cela nous utiliserons des bascules D-Latch. Table de vérité LE :latch Enable D0-D7 :Données Q0-Q7 :Sorties

74HCT573

/OE LE D output 0 1 1 1 0 1 0 0 0 0 1 Qn-1 1 x x Z

La bascule fait prolonger la valeur précédente de Qn lorsque LE passe à O. Il y a donc conservation de la valeur ; c’est l’effet mémoire.

Page 10: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

« FP6 » Affichage

Un afficheur 7 segments : permet de visualiser les chiffres de 0 à 9 :

Schéma interne d’un afficheur à anode commune

Choix technologique : Courant absorbé par le composant lorsque celui-ci Génère des « 0 » logiques. Pour notre projet du jeu de l’anneau, nous avons opté pour des afficheurs à anodes communes(car nous les avons utilisé durant les précédents projets). Nous en avons câblé trois: minute, dizaine de seconde, unité de seconde. Afficheur à anode commune : toutes les anodes sont reliées et connectées au potentiel haut. La commande du segment se fait par sa cathode mise au potentiel bas. Dans le montage ci dessus , les interrupteurs représentent les ports du CPLD.Dans ce montage, l'afficheur est à anode commune, reliée à +Vcc. Des résistances en série avec chaque segment sont indispensables pour limiter le courant à une valeur admissible. L'allumage d'un segment se fait par la mise au potentiel bas de sa cathode, lorsque l'interrupteur correspondant est fermé. Par exemple, pour afficher "1" il faut fermer les interrupteurs b et c.

Page 11: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

On peu aussi le présenter sous forme de table de transcodage ce qui est plus utile pour la partie programmation. Table de transcodage

Les broches 3 et 8 sont reliés au +VCC(5V).

Page 12: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

III)Analyse et présentation de la programmation du CPLD

Mise en œuvre d’un CPLD OOrrggaanniiggrraammmmee

oui Comment programmer le CPLD ? On ouvre le fichier que nous avons programmé dans « galaxy » qui va générer un fichier JEDEC. JEDEC implémente notre programme dans le CPLD grâce à la machine. Le fichier JEDEC est un ensemble de données binaires indiquant au programmateur les fusibles à « griller ». Le programmateur permet de « griller » les fusibles du CPLD en fonction des données du fichier JEDEC.

Description de l’application

Compilation

Simulation

Simulation ok ?

Programmation

DEBUT

Page 13: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

1°Analyse et diagramme à bulles Il est nécessaire avant de commencer le code, de définir les différents états qu’auront notre système, états indispensables à ce type de langage. Nous aurons donc 3 états : -le premier est celui où le compteur est à l’arrête. - le deuxième est celui où le jeu tourne. - le deuxième est celui où on subit une pénalité en touchant le fil. Une fois cette étape réalisée, on établit un diagramme à bulles représentant le fonctionnement du système. On rappelle que A est la touche pour commencer, C pour terminer et B est le fait que l’on touche le fil , de plus ils sont actifs à l’état bas. Une fois cela fait, on peut commencer à réfléchir au code, mais le plus dur est fait : il suffit maintenant de déclarer les variables, de définir nos états et d’y mettre ce que le système doit faire : Dans les variables , il nous faut bien entendu nos entrées A,B,C , une horloge , mais aussi un compteur de centièmes de secondes (l’horloge étant à100Hz) , de secondes et de minutes pour savoir où on en est, et les sorties des afficheurs. A l’état 0, le système attend que l’on appuie sur A , dès que le départ est lancé , il remet les afficheurs à zéro. A l’état 1, le compteur compte normalement (tous les 100 centièmes il incrémente le compteur de secondes, tous les 60 secondes etc. …) A l’état 2, le compteur de secondes subit une pénalité pour pénaliser la maladresse du joueur. On utilise des tableaux qui convertissent les valeurs des compteurs minutes et secondes pour renvoyer des signaux corrects sur les sorties des afficheurs. Après avoir compiler le programme, et l’avoir simuler on le télécharge dans le CPLD. On observe bien le résultat souhaité.

Page 14: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

2°Listing du code: library ieee; use ieee.std_logic_1164.all; use work.std_arith.all; entity Anneau is port( clk :in bit; --horloge A :in bit; --touche pour commencer B :in bit; --fil qui fait contact C :in bit; --touche pour finir aff1 :out std_logic_vector(6 downto 0);--afficheur des unites de secondes aff2 :out std_logic_vector(6 downto 0);--afficheur des dizaines de secondes affmin :out std_logic_vector(6 downto 0));--afficheur des minutes Attribute PIN_NUMBERS of Anneau :entity is "affmin(2):2 affmin(5):6 affmin 0):7 affmin(4):8 aff2(0):9 clk:10 aff1(2):24 aff1(0):25 affmin(6):26 aff1 4):27 aff2(2):28 affmin(1):29 aff2(5):30 affmin(3):31 aff1(5):36 aff1(6): 37 aff2(1):38 aff2(4):39 aff1(3):40 aff2(3):41 aff2(6):42 aff1(1):43"; end Anneau; Architecture descript of Anneau is signal etat :std_logic_vector(0 to 1); signal cpt :integer(0 to 100); signal sec :integer(0 to 60); signal min :integer(0 to 9); begin process(clk) begin if(clk'event and clk = '1')then case etat is when "00" => if(A='1') then etat <= "01"; --min <= 4; --sec <= 44; --etat <= "01";--cas0: jeu off else etat <= "00"; --min <= 2; --sec<= 22; end if; --A<= '0'; -- B<='0'; -- C<='0'; when "01" =>if(C='1') then etat <= "00"; else if(B='1') then cpt <= cpt +1;--cas 1 if(cpt = 100)then sec<=sec+ 1; cpt <= 0; if(sec > 59)then sec <=0; min <= min +1; if(min>9)then min<=0; end if; end if; end if; etat <= "10"; else etat <= "01"; end if; end if;

Page 15: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

--A<= '0'; --B<='0'; --C<='0'; when others => etat <= "01"; -- min <= 5 ; --sec <= 55; -- A<= '0'; --B<='0'; --C<='0'; --min <= min +2;--cas3 : penalitée --if(min >= 8) then min <= min - 9; --end if; end case; end if; end process; with min select

affmin<= "1000000" when 0, "1111001" when 1, "0100100" when 2, "0110000" when 3, "0011001" when 4, "0010010" when 5, "0000010" when 6, "1111000" when 7, "0000000" when 8, "0010000" when others;

with sec select aff1 <="1000000" when 0, "1111001" when 1, "0100100" when 2, "0110000" when 3, "0110011" when 4, "0010010" when 5, "0000010" when 6, "1111000" when 7, "0000000" when 8, "0010000" when 9, "1000000" when 10, "1111001" when 11, "0100100" when 12, "0110000" when 13, "0011001" when 14, "0010010" when 15, "0000010" when 16, "1111000" when 17, "0000000" when 18, "0010000" when 19, "1000000" when 20, "1111001" when 21, "0100100" when 22, "0110000" when 23, "0011001" when 24, "0010010" when 25, "0000010" when 26, "1111000" when 27, "0000000" when 28, "0010000" when 29, "1000000" when 30, "1111001" when 31, "0100100" when 32,

Page 16: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

"0110000" when 33, "0011001" when 34, "0010010" when 35, "0000010" when 36, "1111000" when 37, "0000000" when 38, "0010000" when 39, "1000000" when 40, "1111001" when 41, "0100100" when 42, "0110000" when 43, "0011001" when 44, "0010010" when 45, "0000010" when 46, "1111000" when 47, "0000000" when 48, "0010000" when 49, "1000000" when 50, "1111001" when 51, "0100100" when 52, "0110000" when 53, "0011001" when 54, "0010010" when 55, "0000010" when 56, "1111000" when 57, "0000000" when 58, "0010000" when others;

with sec select aff2 <="1000000" when 0, "1000000" when 1, "1000000" when 2, "1000000" when 3, "1000000" when 4, "1000000" when 5, "1000000" when 6, "1000000" when 7, "1000000" when 8, "1000000" when 9, "1111001" when 10, "1111001" when 11, "1111001" when 12, "1111001" when 13, "1111001" when 14, "1111001" when 15, "1111001" when 16, "1111001" when 17, "1111001" when 18, "1111001" when 19, "0100100" when 20, "0100100" when 21, "0100100" when 22, "0100100" when 23, "0100100" when 24, "0100100" when 25, "0100100" when 26, "0100100" when 27, "0100100" when 28, "0100100" when 29, "0110000" when 30, "0110000" when 31,

Page 17: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

"0110000" when 32, "0110000" when 33, "0110000" when 34, "0110000" when 35, "0110000" when 36, "0110000" when 37, "0110000" when 38, "0110000" when 39, "0011001" when 40, "0011001" when 41, "0011001" when 42, "0011001" when 43, "0011001" when 44, "0011001" when 45, "0011001" when 46, "0011001" when 47, "0011001" when 48, "0011001" when 49, "0010010" when 50, "0010010" when 51, "0010010" when 52, "0010010" when 53, "0010010" when 54, "0010010" when 55, "0010010" when 56, "0010010" when 57, "0010010" when 58, "0010010" when others;

end descript;

Page 18: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

IV)Conclusions Ce projet a été assez intéressant même si nous n'avons pas eu le choix du sujet. En plus du côté attractif du jeu nous avons rencontré des difficultés , tel que le câblage de l’interface port parallèle/CPLD qui a nuit au chargement du programme sur le CPLD. Cependant après avoir testé chaque organe fonctionnel, nous avons vérifié le bon fonctionnement de l’horloge , des afficheurs ainsi que le programme (par le biais d’une simulation avec chronogramme).

Page 19: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

Annexes

Page 20: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés
Page 21: SOMMAIRE - gary.lagin.free.frgary.lagin.free.fr/Files/jeu_de_l_anneau.pdf · Les circuits logiques programmables, appelés également PLD (programmable Logic Device), sont utilisés

Nomenclature