CONCEPTION & SIMULATION D'UN PIA







http://rzr.online.fr/pia.htm







MODULE TER
MAI 1998
Maitrise d'Informatique, UPS Toulouse

Projet assuré par :

  • LUCCHESE, Eric : Organisation, Prise en charge & développement
  • COVAL, Philippe : Rédaction / suivi du projet & développement
  • SABATIER, Laurent : Concept & Développement
  • SARAHOUI, Laurent
  • Enseignant encadrant : Mr Mzoughi

Sommaire

SPECIFICATIONS

PLAN QUALITE

-I- Présentation

-II- Décomposition

-III- Organisation

-IV- Planification

-V- Méthodologie

PRESENTATION DE CADENCE / VALID

REVUES

MODULES

SPECIFICATIONS

PLAN QUALITE

-I- Présentation

Le thème du projet est de concevoir un PIA sous CADENCE/VALID .

Un PIA (Parallel Interface Adapter / Adaptateur pour interface parallèle) est un périphérique (hardware) construit pour une architecture classique (1 Microprocesseur, 1 bus de données, adresse, et contrôle).
Par un PIA on peut lire ou écrire sur 2 ports de 8 bits. Egalement le PIA possède deux signaux de contrôle programmables par port ; c'est a dire qu'ils peuvent délivrer et "écouter" des impulsions sous front montant ou descendant et de la sorte attendre ou déclencher des Interruptions (IRQ).

CADENCE/VALID est un logiciel sous UNIX (AIX) permettant de concevoir et de simuler des circuits numériques & Analogiques Nous n'utiliserons que la partie Numérique.

Conception

A partir d'un schéma logique, nous devons le transposer en schéma électrique en recherchant les différents circuits intégrés élémentaires associés (Portes logiques, bascules).
Comme contraintes nous ne devons pas utiliser de C.I. complexes mais les refaire entièrement afin de constituer notre propre "librairie".

Validation

Une fois le circuit implémenté dans le logiciel nous devons le compiler et lui faire subir plusieurs jeux de test pour vérifier si le résultat est bien celui prévu.

-II- Décomposition

Dans un premier temps on "éclate" le projet en modules, plus ou moins indépendants.
Cette opération est nécessaire, pour la répartition des tâches

Légende :

  • ( ) : Element concret (qui doit être dessiné sous VALID)
  • [ ] : Element abstrait (qui réutilise des éléments concréts & abstraits prédéfinis)
  • A -> B : A est composé de B

-III- Organisation

Selon les compétences et disponibilité des différents intervenants,
Nous avons mis en place l'équipe suivante :

LUCCHESE, Eric Organisation, Prise en charge & développement
COVAL, Philippe Rédaction / suivi du projet & développement
SABATIER, Laurent Concept & Développement
SARAHOUI, Laurent .

Enseignant encadrant : Mr Mzoughi

Les différents membres sont informés régulièrement du travail en cours à l'aide de réunions ou d'E-mails.
Les documents sont a la diposition de chacun sur un site internet : http://bibinsa5.insa-tlse.fr/~rzr/articles/

Planning :

semaine 1 = 27 Avril -  10 Mai 
Semaine 2 = 11 - 17 Mai
Semaine 3 = 18 - 24 Mai
Semaine 4 = 25 - 31 Mai
semaine 5 = 1 - 7 Juin
Semaine 6 = 8 - 14 Juin
Semaine 7 = 15 - 17 Juin

-IV- Planification

Pour chaque organe du PIA on appliquera le cycle de vie suivant
  • Spécification
  • Compréhension
  • Réalisation
    • Dessin du schéma
    • Test
    • Mise en boite

L'ordre de réalisation est le suivant

  1. Port d'Entré/sortie A
  2. Ligne de contrôle CA1
  3. Ligne de contrôle CA2

  4. Ligne de controle CB (avec une légère modification dans les lignes de contrôle)
  5. Puis le Port B déduit du port A

Le projet se divise en étapes

  • Spécification de chaque organe
  • Développement : dessin, simulation, mise en boite
  • Intégration : simulation
  • Présentation : Rapport final, grille de tests.

-V- Méthodologie

Cycle de vie

 Notre méthode de travail s'apparente au cycle de vie en V :
Spécification                   ---->               Validation

  Conception préliminaire       ---->          Intégration
  
        Conception détaillée    ---->    Test unitaire

                                Codage		

Adapté à notre projet où la concepption remplace le codage , cela devient :

Spécification                   ---->               Validation

  Compréhension du              ---->          Intégration & Test Global
  Schémas d'ensemble                
  
        Conception détaillée    ---->    Test unitaire

                             Développement
                              sous VALID

Fiche d'anomalie

A chaque module on lui associe une fiche, qui suivra le module durant le projet. On y notera :

Nom du module Description Développeurs Periodes de réalisation Anomalies Solutions Notes diverses
             

L'indice de qualité sera calculé en fonction du nombre d'anomalies rencontrées et du temps consacré.

Validation du projet

La validation du projet, se fera avec l'enseignant encadrant (Mr Mzoughi), nous lui présenterons sur une machine unix les simulations effectuée en temp réel.
Une autre serie arbitraire de test pourra etre soumise au simulateur.
Un rapport du travail et du fonctionement sera présenté ce jour là.
http://rzr.online.fr/pia.htm

ENVIRONNEMENT
DE REALISATION

Présentation du logiciel CADENCE / VALID

Présentation du logiciel CADENCE / VALID

Le logiciel est composé de plusieurs modules , conception, simulation , routage ...
On peut travailler en mode analogique ou numérique.





On travaillera en mode numérique et on n'utilisera que :
  • L'editeur
  • Le compilateur ( SETUP )
  • Le simulateur ( DISPLAY + RAPIDSIM )

Editeur

Il possêde une Interface de type wysiwyg.
A l'aide de cet éditeur on positionne des circuits integrés (préalablement conçus ou extraits d'une librarie ) et on câble les fils ou bus en dessinant à la souris.
Editer un schéma éléctrique se fait en 2 parties :
  • Dessin de l'interieur du CI (logique)
  • Dessin de l'exterieur (brochage boitier)

Compilateur


Simulateur

Par exemple un démultiplexeur 1 vers 2 :

SelectEntréeS*S
0000
0101
1000
1110



On affecte des valeurs (booléenes) aux signaux par tranches de temps.




On peut effectuer la manipulation en mode ligne de commandes ou en scripts (fichier).
Exemple de script de simulation d'un demultiplexeur 1 vers 2 :

logic_init 0
open 'entreé
open 'select'
open 's'
open '*s'
s 200
deposit 'entreé,1
s 200
deposit 'select',1
logic_init: Command not found.
s 200
deposit 'entreé,0
s 200


REALISATION

  • Revues
  • Port d'entrées Sortie
  • Ligne de controle CX1
  • Ligne de controle CX2
  • Décodeur d'adresse
  • Multiplexeur 2 vers 1
  • Démultiplexeur 1 vers 2

REVUES

Nom du module Description Déve - lop - peurs Se - mai - nes Anomalies Solutions Notes diverses
Global_PIA Intégration des différents modules E.L. 6 Mauvais noms de signaux
Omission du chip select
Renommage
Ajout du CS
 
Port_ES Port 8 bits bidirectionnel (programmable) P.C. 2+3 Nommage des signaux sortant du décodeur Renommage Englobe le DEMUX1x2
DEMUX1x2 Démultiplexeur 1 vers 2 P.C. 3 RAS RAS Composé uniquement de ET + NON
MUX1x2 multiplexeur 2 vers 1 P.C. 3 RAS RAS Composé uniquement de ET + NON
Control_Cx1 Ligne de contrôle qui, a` partir d'un type de signal reçu, délivre des ITs P.C. + E.L. 4 Signal manquant lors du développement de la ligne CX2 Rajout du signal manquant .
Control_Cx2 Deuxieme ligne de controle programmable
celle-ci fonctionne en entree ou en sortie
E.L. 5 Pb de signaux arrivant dans le désordre Ajout de 2 couche logique pour odronner les signaux .
Décodeur d'Adresse Decod_3x8 P.C. 4 Omission du chip Select Changement porte ET 4 Entrées On aurait pu garder les portes 3 entrées & Rajouter une ET deux entrées ... mais plus lent

PORT d'ENTREES/SORTIES

Utilité :

Ce port d'E/S est l'organe par lequel circulent les données.
exemple d'une imprimante : les caractère à imprimer.
Il est bidirectionnel, c'est a dire que suivant le périphérique branché sur le port on peut programmer indépendamment chacune des 8 lignes soit en
  • Données en entrée
  • données en sortie

Schéma logique

Chronogrammes

Script de simulation
/*initialisation*/
logic_init 0
open 'write_data'
open 'read_data'
open '*reset'
open 'write_crx'
open 'write_crx'
open 'port'
open 'd'
s 200
deposit '*reset',1      /*on enleve le reset*/
s 200
/*test du port en entree port <=01010101*/
deposit 'port',$x55
s 200
deposit 'read_data',1   
s 200
deposit 'read_data',0
s 200
/*test du port en sortie : d <= 01010101*/
deposit 'd',$x55        
s 200
deposit 'write_data',1  /* DDRA <= FF : tout en sortie!*/
s 200
deposit 'write_data',0
s 200
/* CRA2 <= 1 : ORA selectionne */
deposit 'write_crx',1  
s 200
deposit 'write_crx',0
s 200
deposit 'write_data',1  /* ORA <= 1*/
s 200
deposit 'write_data',0
s 200

Chronogrammes

LIGNE DE CONTROLE CX1 : Schéma Logique

Utilité :

Les deux lignes de contrôle qui composent l'autre partie de ce PIA ont pour but de contrôle le périphérique (dialogue)
exemple de l'imprimante :
  • Signal entrant de manque de papier
  • Signal sortant "réquisition de l'imprimante"
Donc 2 type de signaux possibles : Entrée/sortie suivant le type de signal, on utilisera
  • CA1 / CB1 : fonctionnent exclusivement en entrée
  • CA2 / CB2 : fontionnent indifferamment en entrée OU sortie

Fonctionement / composition

  • 3 Bascules dont CRA0 / CRA1 pour la programmation & CRA7 pour concserver l'état de la ligne (bit d'état)
  • et toujours des portes 3 états pour permettre la lecture et l'écriture sur la même ligne .

LIGNE DE CONTROLE CX1 : Chronogrammes

LIGNE DE CONTROLE CX1 : Script de simulation


/*initialisation*/
logic_init 0
/* entrees */
open 'Cx1'
open 'd<0>'
open 'd<1>'
open 'd<7>'
open 'read_data'
open 'write_crx'
open 'read_crx'
open '*reset'
/* sorties */
open '*IRQx'
open 'o_crx7'
s 200

deposit '*reset',1      /*on enleve le reset*/
s 200

/* premier test : crx1 = 0, crx0 = 0 */
deposit 'd',0
s 200
deposit 'write_crx',1
s 200
deposit 'write_crx',0
s 200
deposit 'CX1',1
s 200
/* CX1 :front descendant ,pas d'IT*/
deposit 'CX1',0
s 200
deposit 'read_crx',1    /* petit test de lecture */
s 200
deposit 'read_crx',0
s 200
/* en principe, remontee de o_crx7 */
deposit 'read_data',1   
s 200
deposit 'read_data',0
s 200

/* deuxieme test : crx1 = 0, crx0 = 1 */
deposit 'd',1
s 200
deposit 'write_crx',1
s 200
deposit 'write_crx',0
s 200
deposit 'CX1',1
s 200
deposit 'CX1',0         /* CX1 :front descendant */
s 200
deposit 'read_crx',1    /* petit test de lecture */
s 200
deposit 'read_crx',0
s 200
/* en principe, remontee de o_crx7 */
deposit 'read_data',1   
s 200
deposit 'read_data',0
s 200
deposit 'read_crx',1    /* petit test de lecture */
s 500
deposit 'read_crx',0
s 200

/* troisieme test : crx1 = 1, crx0 = 0 */
deposit 'd',2
s 200
deposit 'write_crx',1
s 200
deposit 'write_crx',0
s 200
/* CX1 :front montant ,pas d'IT*/
deposit 'CX1',1         
s 200
deposit 'CX1',0
s 200
deposit 'read_crx',1    /* petit test de lecture */
s 200
deposit 'read_crx',0
s 200
/* en principe, remontee de o_crx7 */
deposit 'read_data',1  
s 200
deposit 'read_data',0
s 200

/* quatrieme test : crx1 = 1, crx0 = 1 */
deposit 'd',3
s 200
deposit 'write_crx',1
s 200
deposit 'write_crx',0
s 200
deposit 'CX1',1         /* CX1 :front montant */
s 200
deposit 'CX1',0
s 200
deposit 'read_crx',1    /* petit test de lecture */
s 200
deposit 'read_crx',0
s 200
/* en principe, remontee de o_crx7 */
deposit 'read_data',1   
s 200
deposit 'read_data',0
s 200

MULTIPLEXEUR 1x2

DEMULTIPLEXEUR 2x1

DECODEUR D'ADRESSE


Le décodeur d'adresse permet d'adresser les registres internes du PIA comme des zones mémoires.
On a donc dans le partitionnage de la mémoire une plage réservée aux périphériques (dont le PIA).
Pour selectionner le bon boitier (Mémoire ou périphérique) on calcule à partir de la table de partition l'expression du chip select en font des bits du bus d'adresse (ie: CSpia= /a21 . a20 . /a19 . /a18 )

P.I.A.

7
A1 A0 R/*W Signal à 1 PORT
0 0 0 Write Data A
0 0 1 Read Data A
0 1 0 Write CRX A
0 1 1 Read CRX A
1 0 0 Write Data B
1 0 1 Read Data B
1 1 0 Write CRX B
1 1 1 Read CRX B
Le PIA final regroupe tous les éléments déja vus en 2 explaire :
  • 1 pour le PORT A
  • 1 pour le PORT B
Tous sont reliés à un organe qui est trés similaire à un décodeur 3 vers 8 et dont la table logique est : Si le signal CS=0 : aucune ligne n'est à 1
Si le signal CS=1 : une seule ligne est à 1




ANNEXES