CORRECTION PARKING AUTOMATIQUE

Documents pareils
PIC : COURS ASSEMBLEUR

PIC 16F84. Philippe Hoppenot

La programmation des PIC en C. Les fonctions, les interruptions.

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

ARCEAU DE PARKING MOTORISÉ VIGIPARK

Manipulations du laboratoire

Informatique Industrielle

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

2013 Nos nouveaux outils basés sur Arduino

Cours 7 : Programmation d une chaîne d acquisition

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

LISA. Manuel Utilisateur

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

Flowcode - Mode d'emploi

CONFIGURATION DE L AUTOMATE SIEMENS

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

SUR MODULE CAMÉRA C38A (OV7620)

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

ASR1 TD7 : Un microprocesseur RISC 16 bits

SIN-FPGA DESCRIPTION PAR SCHEMA

Proteus VSM. manuel_vsm.doc

GPA770 Microélectronique appliquée Exercices série A

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Ordinateurs, Structure et Applications

République Tunisienne Ministère de l'education. Sciences Techniques. Manuel d activités. Les auteurs. Ali ZITOUNI Inspecteur des lycées et collèges

Compilation (INF 564)

Atelier C TIA Portal CTIA06 : programmation des automates S7-300 Blocs d organisation

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot


COMMANDER la puissance par MODULATION COMMUNIQUER

Conception de circuits numériques et architecture des ordinateurs

Gestion mémoire et Représentation intermédiaire

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Concept de machine virtuelle

Cours d algorithmique pour la classe de 2nde

Projet # 3 Serrure à deux clés

Conversion d un entier. Méthode par soustraction

PROGRAMMATION D'UN MICROCONTRÔLEUR

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

ProCod. Manuel d utilisation. Software de programmation pour codeurs absolus TWK modèles CRF et DAF CRF DF 08 / 10

Cours Informatique Master STEP

Architecture des ordinateurs

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Prérequis. Résolution des problèmes WMI. Date 03/30/2010 Version 1.0 Référence 001 Auteur Antoine CRUE

T. BLOTIN Lycée Paul-Eluard SAINT-DENIS

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

TP: Représentation des signaux binaires. 1 Simulation d un message binaire - Codage en ligne

LES INFORMATIONS GÉNÉRALES

Transmissions série et parallèle

I00 Éléments d architecture

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Manuel de référence du langage Exemples Les aventures de Docteur R.

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Jeu d instructions NIOS II

IFT1215 Introduction aux systèmes informatiques

EXERCICES DE REVISIONS MATHEMATIQUES CM2

CM2 L architecture MIPS32

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

STAGE IREM 0- Premiers pas en Python

Encoder Encoder 1 sur 15. Codification fil par étage 15 étages max. + 2 flèches + signal de mouvement. Raccordements 0.1 mm²...

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Propagation sur réseau statique et dynamique

Programmation d un contrôleur via une liaison téléphonique Note d application

Informatique Générale

Research/activity time (hours/month) / Temps consacré à la recherche/l'activité (heures/mois)

DM 1 : Montre Autoquartz ETA

Vue d ensemble de Windows PowerShell

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Licence Sciences et Technologies Examen janvier 2010

DMX MASTER I. Notice d utilisation. Lisez soigneusement la notice d utilisation avant d utiliser l appareil! Version 1.

Corrigé des TD 1 à 5

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

JUST IN TIME. Communication. Florence Garnier Guillaume Halphen Sylvie Recoules _COMMUNICATION_00.indd 1 06/03/14 09:41

Fiche technique CPU 314SC/DPM (314-6CG13)

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Le signal GPS. Les horloges atomiques à bord des satellites GPS produisent une fréquence fondamentale f o = Mhz

Version: 1.0. Page 1/18

Commande Prédictive des. Convertisseurs Statiques

CAHIER DES CHARGES GESTION DES STOCKS

Chapitre 4 : Les mémoires

ARCHITECTURE CONSTITUTION D'UN API

2.4 Représentation graphique, tableau de Karnaugh

TP D AUTOMATISME TS2 CIRA (première partie)

Formations spécifiques

TP : STATION BLANI 2000 SIMULATION DU RESEAU INFORMATIQUE

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

2-2. Dimensions externes 113±0.2 P P R±??? 3. FONCTIONS ET TERMINOLOGIE. Sortie prédéfinie. Sortie arrêt du vérin. Type de sortie prédéfinie

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

18 Cession d un bien Nomenclatures M14 / M52 et M71

NiceLabel Guide de prise en main rapide

SOMMAIRE Equipement Instructions générales. 1.Vue générale. 1.1 Face avant. 1.2 Face arrière. 2 Mode D emploi Adressage DMX

I- Définitions des signaux.

Transcription:

ROYAUME DU MAROC MINISTERE DE L EDUCATION NATIONALE Académie de Casablanca DÉLÉGATION DE MOHAMMEDIA Lycée Technique Matière : Science de l Ingénieur A.T.C - Pr.MAHBAB Section : Sciences et Technologies Électriques Système n 5 CORRECTION Sujet : PARKING AUTOMATIQUE Exercices d application: 08 pages Fiche cours n 22 «EEPROM DU 16F84» 2 TD: 01 page TD n 8 «Partition d un GRAFCET et notion de Tâche» TD n 9 «Programmation des PLD» 09 pages Nombre de pages : 19 CLASSES : 2 STE

1 / 8 Système n 5 PARKING AUTOMATIQUE Lycée Technique A.T.C DREP 01 CORRECTION GRAFCET point de vue partie commande 0 Cp := 0 Cp=0 Cp = 50 1 H3 := 1 Cp < 50 H3 := 0 B1. (U1 + U2). (Cp<50) B2 2 KM1 5 KM1 H1 S1 3 H2 B2 4 T1 H1 S1 6 H2 B1 7 T1 Tâche 1 T1/X4/10s Cp := Cp + 1 T1/X7/10s Cp := Cp - 1 Tâche 2 8 KM2 S2 H1

2 / 8 Système n 5 PARKING AUTOMATIQUE Lycée Technique A.T.C DREP 02 CORRECTION GRAFCET point de vue partie commande codé PIC 16 F 84 0 Cp := 0 Cp=0 Cp = 50 1 RB0 := 1 Cp < 50 RB0 := 0 RB1. RB5. (Cp<50) RB2 2 RA0 5 RA0 RA2 RB3 3 RA3 RB2 4 T1 RA2 RB3 6 RA3 RB1 7 T1 Tâche 1 T1/X4/10s Cp := Cp + 1 T1/X7/10s Cp := Cp - 1 Tâche 2 8 RA1 RB4 RA2

3 / 8 Système n 5 PARKING AUTOMATIQUE Lycée Technique A.T.C DREP 03 CORRECTION Partition du GRAFCET global (P.C) GRAFCET Tâche 1 GRAFCET Tâche 2 10 X2 Ouvrir barrière et allumer vert 20 X3 11 KM1 21 KM1 H1 S1 12 H2 B2 13 T1 H1 S1 22 H2 B1 23 T1 Cp := Cp + 1 Cp := Cp - 1 14 T1/X13/10s 24 T1/X23/10s /X2 /X3 GRAFCET PRINCIPAL 0 Cp := 0 Cp=0 Cp = 50 Cp < 50 1 H3 := 1 H3 := 0 B1. (U1 + U2). (Cp<50) B2 2 X14 Tâche 1 3 Tâche 2 X24 Fermer barrière 4 KM2 H1 S2

4 / 8 Système n 5 PARKING AUTOMATIQUE Lycée Technique A.T.C DREP 04 CORRECTION Sous programme ouvrir_barrière Ouvrir_barrière Organigramme RA 0 1 RA 2 1 RB 3 = 1 RA 0 0 RA 2 0 RA 3 1 Non Programme Ouvrir_barriere BSF PORTA, 0 BSF PORTA, 2 LAB5 BTFSS PORTB, 3 GOTO LAB5 BCF PORTA, 0 BCF PORTA, 2 BSF PORTA, 3 RETURN Retour Sous programme fermer_barrière Fermer_barrière Organigramme RA 1 1 RA 2 1 RB 4 = 1 RA 1 0 Non Programme Fermer_barriere BSF PORTA, 1 BSF PORTA, 2 LAB6 BTFSS PORTB, 4 GOTO LAB6 BCF PORTA, 1 BCF PORTA, 2 RETURN RA 2 0 Retour

5 / 8 Système n 5 PARKING AUTOMATIQUE Lycée Technique A.T.C DREP 05 CORRECTION Sous programme Lecture_EEPROM Lecture_EEPROM MOVLW 0x02 ; MOVWF EEADR ; l adresse à lire BSF STATUS, RP0 ; Bank 1 BSF EECON1, RD ; lecture EPROM BCF STATUS, RP0 ; Bank 0 MOVF EEDATA, W ; EEDATA dans W MOVWF Cp ; W dans Cp RETURN ; Sous programme Ecriture_EEPROM Ecriture_EEPROM MOVLW 0x02 ; MOVWF EEADR ; définition de l adresse MOVF Cp, W ; MOVWF EEDATA ; définition de la donnée BSF STATUS, RP0 ; Bank 1 BSF EECON1, WREN ; autorisation de l écriture MOVLW 0x55 ; MOVWF EECON2 ; écriture de 0x55 MOVLW 0xAA ; MOVWF EECON2 ; écriture de 0xAA BSF EECON1, WR ; écriture dans EEPROM LAB7 BTFSS EECON, EEIF ; GOTO LAB7 ; écriture terminée BCF EECON, EEIF ; remise à zéro du témoin EEIF BCF STATUS, RP0 ; Bank 0 RETURN ; Sous programme TEMPO TEMPO MOVLW D 100 ; doit compter 156 impulsions MOVWF TMR0 ; écriture de 100 LAB8 BTFSS INTCON, TOIF ; fin de comptage GOTO LAB8 ; BCF INTCON, TOIF ; remise à zéro du témoin TOIF RETURN ;

6 / 8 Système n 5 PARKING AUTOMATIQUE Lycée Technique A.T.C DREP 06 CORRECTION Organigramme à compléter Début Configuration du PIC RB 0 0 PORTA 00 H Lecture_EEPROM RB 1 = 1 Oui Non RB 5 = 1 Non Non RB 2 = 1 Ouvrir_barrière Oui Cp = 50 Non Oui Oui RB 0 1 RB 1 = 1 Non RB 0 0 Ouvrir_barrière RA 3 0 Tempo 10 s Cp Cp - 1 RB 2 = 1 RA 3 0 Non Fermer_barrière Ecriture_EEPROM Tempo 10 s Cp Cp + 1

7 / 8 Système n 5 PARKING AUTOMATIQUE Lycée Technique A.T.C DREP 07 CORRECTION Programme à compléter Initialisation du PIC 16 F 84 BSF STATUS, 5 ; accès à la BANK 1 MOVLW B 00001000 ; MOVWF TRISA ; configuration du PORTA MOVLW B 00111110 ; MOVWF TRISB ; configuration du PORTB MOVLW B 00110101 ; MOVWF OPTION ; configuration du TIMER 0 BCF STATUS, 5 ; accès à la BANK 0 Programme principal CLRF PORTA ; moteur et voyants au repos CALL Lecture_EPROM ; nombre de véhicule dans Cp DEBUT BTFSS PORTB, 1 ; test si entrée GOTO SORTIE ; GOTO ENTRÉE ; SORTIE BTFSS PORTB, 2 ; test si sortie GOTO DEBUT ; CALL Ouvrir_barriere ; ouvrir la barrière LAB1 BTFSS PORTB, 1 ; test si véhicule est sortie GOTO LAB1 ; BCF PORTA, 3 ; éteindre vert CALL TEMPO ; Temporisation T1 DECF Cp, 1 ; décrémenter compteur GOTO LAB4 ; ENTREE BTFSS PORTB, 5 ; test si autorisation GOTO DEBUT ; MOWLW D 50 ; SUBWF Cp, W ; comparer Cp et 10 BTFSS STATUS, Z ; saut si Cp = 10 GOTO LAB2 ; parking disponible BSF PORTB, 0 ; allumer jaune GOTO DEBUT ; parking complet LAB2 BCF PORTB, 0 ; éteindre jaune CALL Ouvrir_barriere ; ouvrir la barrière LAB3 BTFSS PORTB, 2 ; test si véhicule est entré GOTO LAB3 ; BCF PORTA, 3 ; éteindre vert CALL TEMPO ; Temporisation T1 INCF Cp, 1 ; incrémenter compteur LAB4 CALL Fermer_barriere ; fermer la barrière CALL Ecriture_EPROM ; enregistrer compteur GOTO DEBUT ; END ; directive de fin de programme

8 / 8 Système n 5 PARKING AUTOMATIQUE Lycée Technique A.T.C DREP 08 CORRECTION Décodeur BCD/7 segments par le GAL 16V8 A B C D 2 3 4 5 Décodeur BCD/7 segments par le GAL 16V8 18 17 16 15 14 13 12 a b c d e f g f e a g d b c MODULE BCD TITLE Décodeur BCD 7 segments ' Programme ABEL BCD device P16V8; A, B, C, D pin 2, 3, 4, 5 ; // Variables d'entrée a, b, c, d, e, f, g pin 18, 17, 16, 15, 14, 13, 12 istype com,buffert ; // Variables sortie N = [D, C, B, A] ; S = [a, b, c, d, e, f, g] ; When N = 0 THEN S = [1, 1, 1, 1, 1, 1, 0] ELSE When N = 1 THEN S = [0, 1, 1, 0, 0, 0, 0] ELSE When N = 2 THEN S = [1, 1, 0, 1, 1, 0, 1] ELSE When N = 3 THEN S = [1, 1, 1, 1, 0, 0, 1] ELSE When N = 4 THEN S = [0, 1, 1, 0, 0, 1, 1] ELSE When N = 5 THEN S = [1, 0, 1, 1, 0, 1, 1] ELSE When N = 6 THEN S = [1, 0, 1, 1, 1, 1, 1] ELSE When N = 7 THEN S = [1, 1, 1, 0, 0, 0, 0] ELSE When N = 8 THEN S = [1, 1, 1, 1, 1, 1, 1] ELSE When N = 9 THEN S = [1, 1, 1, 1, 0, 1, 1]; TEST_VECTORS END BCD. (N -> [a, b, c, d, e, f, g]) 0 -> [1, 1, 1, 1, 1, 1, 0] ; 1 -> [0, 1, 1, 0, 0, 0, 0] ; 2 -> [1, 1, 0, 1, 1, 0, 1] ; 3 -> [1, 1, 1, 1, 0, 0, 1] ; 4 -> [0, 1, 1, 0, 0, 1, 1] ; 5 -> [1, 0, 1, 1, 0, 1, 1] ; 6 -> [1, 0, 1, 1, 1, 1, 1] ; 7 -> [1, 1, 1, 0, 0, 0, 0] ; 8 -> [1, 1, 1, 1, 1, 1, 1] ; 9 -> [1, 1, 1, 1, 0, 1, 1] ; // Définition du bus N // Définition du bus S

1 / 1 F.cours n 22 Parking Automatique EEPROM DU 16 F 84 EEPROM DU 16 F 84 Ecriture et lecture de l EEPROM : Lecture d une donnée : Placer l adresse de la donnée à lire dans EEADR. Mettre le bit RD de EECONN1 à 1. Lire le contenu du registre EEDATA. BCF STATUS, RP0 ; Bank 0 MOVLW Adresse ; MOVWF EEADR ; l adresse à lire BSF STATUS, RP0 ; Bank 1 BSF EECON1, RD ; lecture EPROM BCF STATUS, RP0 ; Bank 0 MOVF EEDATA, W ; W EEDATA Ecriture d une donnée : Placer l adresse de la donnée à écrire dans EEADR. Placer la donnée à écrire dans EEDATA. Mettre le bit WREN de EECONN1 à 1 pour autoriser l écriture. Placer 0x55 dans EECON2. Placer 0xAA dans EECON2. Mettre le bit WR de EECONN1 à 1. Attendre que le bit EEIF soit à 1. On peut utiliser l interruption produite par EEIF en la validant par le bit EEIE de INTCON. N oublier pas de remettre EEIF à 0. BCF STATUS, RP0 ; Bank 0 MOVLW Adresse ; MOVWF EEADR ; définition de l adresse MOVLW Donnée ; MOVWF EEDATA ; définition de la donnée BSF STATUS, RP0 ; Bank 1 BSF EECON1, WREN ; autorisation de l écriture MOVLW 0x55 ; MOVWF EECON2 ; écriture de 0x55 MOVLW 0xAA ; MOVWF EECON2 ; écriture de 0xAA BSF EECON1, WR ; écriture dans EEPROM Lab BTFSS EECON, EEIF ; GOTO Lab ; écriture terminée BCF STATUS, RP0 ; Bank 0

1 / 2 TD n 8 Parking Automatique PARTITION D UN GRAFCET PARTITION D UN GRAFCET Coordination Verticale asynchrone : GRAFCET n 1 : Le GRAFCET n 1 contient une séquence répétitive. On veut réécrire ce GRAFCET d une manière simplifiée en considérant la séquence répétitive comme une tâche (sous programme) intitulée SP. Compléter le GRAFCET principal et le GRAFCET de tâche SP. 0 Dcy 1 KM 1 a 2 SP X 23 20 3 KM 2 X 2 + X 5 + X 9 b 21 14 M 1 4 KM 3 L 10 5 c SP 22 L 11 12 M 1 6 X 23 14 M 2 23 X 3 + X 6 + X 10 7 L 20 12 M 2 L 21 GRAFCET de tâche SP 8 KM 4 d 9 SP X 23 10 e GRAFCET principal KM 5 GRAFCET n 2 : On veut réécrire le GRAFCET n 2 d une manière simplifiée. Compléter le GRAFCET principal et les GRAFCETS de tâche 1, 2 et 3.

2 / 2 TD n 8 Parking Automatique PARTITION D UN GRAFCET 10 20 30 0 1 2 Dcy T 1 X 15 T 2 11 12 13 X 1 a L 10 KM 1 14 M 1 12 M 1 21 22 23 X 2 L 20 L 21 L 30 14 M 2 12 M 2 14 M 3 31 32 33 X 3 d L 40 KM 4 14 M 4 KM 4 3 X 26 X 35 T 3 14 L 11 b KM 2 24 25 L 31 12 M 3 KM 3 34 e L 41 12 M 4 15 X 2 26 c 35 X 0 GRAFCET principal Tâche 1 Tâche 2 Tâche 3 X 3 Coordination Horizontale : On veut réécrire ce GRAFCET n 2 d une manière simplifiée. Compléter les GRAFCETS Tâche 1, 2 et 3. 0 10 20 1 Dcy KM 1 11 X 5 14 M 2 21 X 16 KM 4 a L 20 d 2 14 M 1 12 12 M 2 22 14 M 4 3 L 10 12 M 1 13 L 21 14 M 3 23 L 40 KM 4 L 11 L 30 e 4 KM 2 14 12 M 3 24 12 M 4 5 b X 25 15 L 31 c KM 3 25 L 41 X 0 Tâche 1 16 X 0 Tâche 2 Tâche 3

1 / 7 TD n 9 Parking Automatique PROGRAMMATION DES PLD PROGRAMMATION DES PLD 1- Comparateur binaire 4 bits : Description par équations : MODULE comparateur TITLE 'comparateur logique 4 bits' Comparateur device P16V8 ; B3, B2, B1, B0 pin 9, 8, 7, 6 ; // Variables d'entrée A3, A2, A1, A0 pin 5, 4, 3, 2 ; // Variables d'entrée A = [A3, A2, A1, A0] ; // Définition du bus A B = [B3, B2, B1, B0] ; // Définition du bus B S, I, E pin 15, 16, 17 istype 'com, buffer '; // Variables de sortie S = A > B ; Utilisation de When. Then. E = A = = B ; I = A < B ; TEST_VECTORS ([A, B] -> [S, E, I]); When A > B then S = 1 ; [5, 5] -> [0, 1, 0]; When A = = Bthen E = 1 ; [9, 12] -> [0, 0, 1]; When A < B then I =1 ; [7, 6] -> [1, 0, 0]; END comparateur 2- Multiplexeur 4 bits : Description par équations : A- Solution 1 : MODULE Multiplexeur TITLE Multiplexeur 4 bits' Multiplexeur device P16V8 ; E3, E2, E1, E0 pin 9, 8, 7, 6 ; // Variables d'entrée A1, A0 pin 5, 4; // Variables d'entrée S pin 16 istype 'com, buffer '; // Variables de sortie S = E3 & A1 & A0 # E2 & A1 &! A0 # E1 &! A1 & A0 # E0 &! A1 &! A0 ; TEST_VECTORS ([E3, E2, E1, E0, A1, A0] -> [S]); [0, 0, 0, 0, 0, 0] -> [0]; [0, 0, 0, 1, 0, 0] -> [1]; [0, 0, 0, 0, 0, 1] -> [0]; [0, 0, 1, 0, 0, 1] -> [1]; [0, 0, 0, 0, 1, 0] -> [0]; [0, 1, 0, 0, 1, 0] -> [1]; [0, 0, 0, 0, 1, 1] -> [0]; [1, 0, 0, 0, 1, 1] -> [1]; END Multiplexeur.

2 / 7 TD n 9 Parking Automatique PROGRAMMATION DES PLD B- Solution 2 : MODULE Multiplexeur TITLE Multiplexeur 4 bits' Multiplexeur device P16V8 ; E3, E2, E1, E0, A1, A0 pin 9, 8, 7, 6, 5, 4 ; // Variables d'entrée A = [A1, A0] ; // Définition du bus A E = [E3, E2, E1, E0] ; // Définition du bus E S pin 16 istype 'com, buffer '; // Variables de sortie When A = [0, 0] then S = E0; // ou When A = 0 then S = E0; When A = [0, 1] then S = E1; // ou When A = 1 then S = E1; When A = [1, 0] then S = E2; // ou When A = 2 then S = E2; When A = [1, 1] then S = E3; // ou When A = 3 then S = E3; TEST_VECTORS ([E3, E2, E1, E0, A1, A0] -> [S]); // ou ([E, A] -> [S]); [0, 0, 0, 0, 0, 0] -> [0]; // ou [0, 0] -> [0]; [0, 0, 0, 1, 0, 0] -> [1]; // ou [1, 0] -> [1]; [0, 0, 0, 0, 0, 1] -> [0]; // ou [0, 1] -> [0]; [0, 0, 1, 0, 0, 1] -> [1]; // ou [2, 1] -> [1]; [0, 0, 0, 0, 1, 0] -> [0]; // ou [0, 2] -> [0]; [0, 1, 0, 0, 1, 0] -> [1]; // ou [4, 2] -> [1]; [0, 0, 0, 0, 1, 1] -> [0]; // ou [0, 3] -> [0]; [1, 0, 0, 0, 1, 1] -> [1]; // ou [8, 3] -> [1]; END Multiplexeur. 3- Démultiplexeur 4 bits : 3.1- Description par équations : A- Solution 1 : MODULE Demultiplexeur TITLE Démultiplexeur 4 bits' Demultiplexeur device P16V8 ; E, G, A1, A0 pin 7, 6, 5, 4; // Variables d'entrée S3, S2, S1, S0 pin 12, 13, 14, 15 istype 'com, buffer '; // Variables de sortie S3 = E & A1 & A0 &! G; S2 = E & A1 &! A0 &! G; S1 = E &! A1 & A0 &! G; S0 = E &! A1 &! A0 &! G; TEST_VECTORS ([G, E, A1, A0] -> [S3, S2, S1, S0]); [1,.X.,.X.,.X.] -> [0, 0, 0, 0]; [0, 0, 0, 0] -> [0, 0, 0, 0]; [0, 1, 0, 0] -> [0, 0, 0, 1]; [0, 0, 0, 1] -> [0, 0, 0, 0]; [0, 1, 0, 1] -> [0, 0, 1, 0]; [0, 0, 1, 0] -> [0, 0, 0, 0]; [0, 1, 1, 0] -> [0, 1, 0, 0]; [0, 0, 1, 1] -> [0, 0, 0, 0];

3 / 7 TD n 9 Parking Automatique PROGRAMMATION DES PLD [0, 1, 1, 1] -> [1, 0, 0, 0]; END Demultiplexeur. B- Solution 2 : MODULE Demultiplexeur TITLE Demultiplexeur 4 bits' Demultiplexeur device P16V8 ; E, G, A1, A0 pin 7, 6, 5, 4; // Variables d'entrée S3, S2, S1, S0 pin 12, 13, 14, 15 istype 'com, buffer '; // Variables de sortie A = [A1, A0] ; // Définition du bus A S = [S3, S2, S1, S0] ; // Définition du bus S When (G == 0) & (A == 0) then S0 = E; When (G == 0) & (A == 1) then S1 = E; When (G == 0) & (A == 2) then S2 = E; When (G == 0) & (A == 3) then S3 = E; TEST_VECTORS ([G, E, A] -> [S]); [1,.X.,.X.] -> [0]; [0, 0, 0] -> [0]; [0, 1, 0] -> [1]; [0, 0, 1] -> [0]; [0, 1, 1] -> [2]; [0, 0, 2] -> [0]; [0, 1, 2] -> [4]; [0, 0, 3] -> [0]; [0, 1, 3] -> [8]; END Demultiplexeur. 3.2- Description par table de vérité : MODULE Demultiplexeur TITLE Demultiplexeur 4 bits' Demultiplexeur device P16V8 ; E, G, A1, A0 pin 7, 6, 5, 4; // Variables d'entrée S3, S2, S1, S0 pin 12, 13, 14, 15 istype 'com, buffer '; // Variables de sortie TRUTH_TABLE ([G, E, A1, A0] -> [S3, S2, S1, S0]); [1,.X.,.X.,.X.] -> [0, 0, 0, 0]; [0, 0, 0, 0] -> [0, 0, 0, 0]; [0, 0, 0, 1] -> [0, 0, 0, 0]; [0, 0, 1, 0] -> [0, 0, 0, 0]; [0, 0, 1, 1] -> [0, 0, 0, 0]; [0, 1, 0, 0] -> [0, 0, 0, 1]; [0, 1, 0, 1] -> [0, 0, 1, 0]; [0, 1, 1, 0] -> [0, 1, 0, 0]; [0, 1, 1, 1] -> [1, 0, 0, 0]; TEST_VECTORS ([G, E, A1, A0] [1,.X.,.X.,.X.] -> [0, 0, 0, 0]; [0, 0, 0, 0] -> [0, 0, 0, 0]; [0, 0, 0, 1] -> [0, 0, 0, 0]; [0, 0, 1, 0] -> [0, 0, 0, 0]; Autre solution ([G, A1, A0] -> [S3, S2, S1, S0]); [1,.X.,.X.] -> [0, 0, 0, 0]; [0, 0, 0] -> [0, 0, 0, E]; [0, 0, 1] -> [0, 0, E, 0]; [0, 1, 0] -> [0, E, 0, 0]; [0, 1, 1] -> [E, 0, 0, 0]; -> [S3, S2, S1, S0]);

4 / 7 TD n 9 Parking Automatique PROGRAMMATION DES PLD [0, 0, 1, 1] -> [0, 0, 0, 0]; [0, 1, 0, 0] -> [0, 0, 0, 1]; [0, 1, 0, 1] -> [0, 0, 1, 0]; [0, 1, 1, 0] -> [0, 1, 0, 0]; [0, 1, 1, 1] -> [1, 0, 0, 0]; END Demultiplexeur. 4- Décodeur BCD 7 segments : Description par table de vérité : MODULE BCD TITLE Décodeur BCD 7 segments ' BCD device P16V8; A, B, C, D pin 2, 3, 4, 5 ; // Variables d'entrée a, b, c, d, e, f, g pin 18, 17, 16, 15, 14, 13, 12; // Variables sortie N = [D, C, B, A] ; TRUTH_TABLE TEST_VECTORS END BCD. 5- Compteur modulo 4 : // Définition du bus N (N -> [a, b, c, d, e, f, g]) 0 -> [1, 1, 1, 1, 1, 1, 0] ; // affichage du 0 dans le cas 1 -> [0, 1, 1, 0, 0, 0, 0] ; // d un afficheur cathode commune 2 -> [1, 1, 0, 1, 1, 0, 1] ; 3 -> [1, 1, 1, 1, 0, 0, 1] ; 4 -> [0, 1, 1, 0, 0, 1, 1] ; 5 -> [1, 0, 1, 1, 0, 1, 1] ; 6 -> [1, 0, 1, 1, 1, 1, 1] ; 7 -> [1, 1, 1, 0, 0, 0, 0] ; 8 -> [1, 1, 1, 1, 1, 1, 1] ; 9 -> [1, 1, 1, 1, 0, 1, 1] ; (N -> [a, b, c, d, e, f, g]) 0 -> [1, 1, 1, 1, 1, 1, 0] ; 1 -> [0, 1, 1, 0, 0, 0, 0] ; 2 -> [1, 1, 0, 1, 1, 0, 1] ; 3 -> [1, 1, 1, 1, 0, 0, 1] ; 4 -> [0, 1, 1, 0, 0, 1, 1] ; 5 -> [1, 0, 1, 1, 0, 1, 1] ; 6 -> [1, 0, 1, 1, 1, 1, 1] ; 7 -> [1, 1, 1, 0, 0, 0, 0] ; 8 -> [1, 1, 1, 1, 1, 1, 1] ; 9 -> [1, 1, 1, 1, 0, 1, 1] ; 5.1- Description par diagramme d état : MODULE Compteur TITLE Compteur modulo 4' Compteur device P16V8 ; H, R pin 1, 2 ; // Variables d'entrée Q0, Q1 pin 15, 14 Istype 'reg, buffer '; // Variables de sortie

5 / 7 TD n 9 Parking Automatique PROGRAMMATION DES PLD [Q1, Q0].clk = H ; [Q1, Q0].AR =! R; QSTATE = [Q1, Q0] ; A = [0, 0] ; B = [0, 1] ; C = [1, 0]; D = [1, 1]; STATE_DIAGRAM QSTATE State A: GOTO B; State B: GOTO C; State C: GOTO D; State D: GOTO A; TEST_VECTORS ([R, H,] -> [Q1, Q0]) [0,.X.] -> [0, 0] ; [1,. C.] -> [0, 1] ; [1,. C.] -> [1, 0] ; [1,. C.] -> [1, 1] ; [1,. C.] -> [0, 0] ; END Compteur 5.2- Description par équation : MODULE Compteur TITLE Compteur modulo 4' Compteur device P16V8 ; H, R pin 1, 2 ; // Variables d'entrée Q0, Q1 pin 15, 14 Istype 'reg, buffer '; // Variables de sortie Q = [Q1,Q0] ; // Définition du bus Q Q.clk = H ; Q.AR =! R; When R == 0 then Q := 0 ELSE Q := Q + 1 ; TEST_VECTORS ([R, H,] -> [Q1, Q0]) [0,.X.] -> [0, 0] ; [1,. C.] -> [0, 1] ; [1,. C.] -> [1, 0] ; [1,. C.] -> [1, 1] ; [1,. C.] -> [0, 0] ; END Compteur 5.3- Description par Table de vérité : MODULE Compteur TITLE Compteur modulo 4' Compteur device P16V8 Compteur device P16V8 ; H, R pin 1, 2 ; // Variables d'entrée Q0, Q1 pin 15, 14 Istype 'reg, buffer '; // Variables de sortie [Q1, Q0].clk = H ;

6 / 7 TD n 9 Parking Automatique PROGRAMMATION DES PLD [Q1, Q0].AR =! R; TEST_VECTORS ([R, H,] :> [Q1, Q0]) [0,.X.] :> [0, 0] ; [1,. C.] :> [0, 1] ; [1,. C.] :> [1, 0] ; [1,. C.] :> [1, 1] ; [1,. C.] :> [0, 0] ; TEST_VECTORS ([R, H,] -> [Q1, Q0]) [0,.X.] -> [0, 0] ; [1,. C.] -> [0, 1] ; [1,. C.] -> [1, 0] ; [1,. C.] -> [1, 1] ; [1,. C.] -> [0, 0] ; END Compteur 6- Compteur modulo 5 réversible : 6.1- Description par diagramme d état : MODULE Compteur_reversible TITLE Compteur modulo 5' Compteur device P16V8 ; H, R, Y pin 1, 2, 3 ; // Variables d'entrée Q0, Q1, Q2 pin 14, 15, 16 Istype 'reg, buffer '; // Variables sortie [Q2, Q1, Q0].clk = H ; [Q2, Q1, Q0].AR =! R; QSTATE = [Q2, Q1, Q0]; A = [0, 0, 0]; B = [0, 0, 1]; C = [0, 1, 0]; D = [0, 1, 1]; E = [0, 1, 1]; STATE_DIAGRAM QSTATE State A: When Y = = 1 Then B Else E; State B: When Y = = 1 Then C Else A; State C: When Y = = 1 Then D Else B; State D: When Y = = 1 Then E Else C; State E: When Y = = 1 Then A Else D; TEST_VECTORS ([R, H, Y] -> [Q2, Q1, Q0]) [0,.X.,.X.] -> [0, 0, 0] ; [1,.C., 1] -> [0, 0, 1] ; [1,.C., 1] -> [0, 1, 0] ; [1,.C., 1] -> [0, 1, 1] ; [1,.C., 1] -> [1, 0, 0] ; [1,.C., 1] -> [0, 0, 0] ; [1,.C., 0] -> [1, 0, 0] ; [1,.C., 0] -> [0, 1, 1] ; [1,.C., 0] -> [0, 1, 0] ; [1,.C., 0] -> [0, 0, 1] ; [1,.C., 0] -> [0, 0, 0] ; END Compteur_reversible

7 / 7 TD n 9 Parking Automatique PROGRAMMATION DES PLD 6.2- Description par table de vérité : MODULE Compteur_reversible TITLE Compteur modulo 5' Compteur device P16V8 ; H, R, Y pin 1, 2, 3 ; // Variables d'entrée Q0, Q1, Q2 pin 14, 15, 16 Istype 'reg, buffer '; // Variables sortie [Q2, Q1, Q0].clk = H ; [Q2, Q1, Q0].AR =! R; TRUTH_TABLE ([R, Y, Q2, Q1, Q0] :> [Q2, Q1, Q0]) [0,.X.,.X.,.X.,.X.] :> [0, 0, 0] ; [1, 1, 0, 0, 0] :> [0, 0, 1] ; [1, 1, 0, 0, 1] :> [0, 1, 0] ; [1, 1, 0, 1, 0] :> [0, 1, 1] ; [1, 1, 0, 1, 1] :> [1, 0, 0] ; [1, 1, 1, 0, 0] :> [0, 0, 0] ; [1, 0, 0, 0, 0] :> [1, 0, 0] ; [1, 0, 1, 0, 0] :> [0, 1, 1] ; [1, 0, 0, 1, 1] :> [0, 1, 0] ; [1, 0, 0, 1, 0] :> [0, 0, 1] ; [1, 0, 0, 0, 1] :> [0, 0, 0] ; TEST_VECTORS ([R, H, Y] -> [Q2, Q1, Q0]) [0,.X.,.X.] -> [0, 0, 0] ; [1,. C., 1] -> [0, 0, 1] ; [1,. C., 1] -> [0, 1, 0] ; [1,. C., 1] -> [0, 1, 1] ; [1,. C., 1] -> [1, 0, 0] ; [1,. C., 1] -> [0, 0, 0] ; [1,. C., 0] -> [1, 0, 0] ; [1,. C., 0] -> [0, 1, 1] ; [1,. C., 0] -> [0, 1, 0] ; [1,. C., 0] -> [0, 0, 1] ; [1,. C., 0] -> [0, 0, 0] ; END Compteur_reversible. 6.3- Description par équation : MODULE Compteur_reversible TITLE Compteur modulo 5' Compteur device P16V8 ; H, R, Y pin 1, 2, 3 ; // Variables d'entrée Q0, Q1, Q2 pin 14, 15, 16 Istype 'reg, buffer '; // Variables sortie Q = [Q2, Q1, Q0] ; // Définition du bus Q Q.clk = H ; Q.AR =! R; When R == 0 then Q := 0 Else When H == 1 then Q := Q + 1 Else Q := Q 1 ; When Q > 4 then Q := 0 ; END Compteur_reversible.