18 | | L'architecture matérielle pour de ce second TP instancie également deux composants matériels qui possèdent des fonctionnalités identiques à celles des composants utilisés dans le premier TP, mais ces composants possèdent maintenant des ports de communication qui respectent le standard VCI/OCP. Le premier |
19 | | composant est le coprocesseur cablé (c'est à dire non programmable) |
20 | | qui calcule le PGCD (plus grand commun diviseur) de deux nombres entiers positifs A et B, codés sur 32 bits. |
21 | | Le second composant est chargé de transmettre les valeurs des opérandes A et B au coprocesseur, et de récupérer |
22 | | le résultat. Ces deux composants matériels fonctionnent en parallèle, et communiquent entre eux par des canaux de communication de type FIFO. |
| 18 | L'architecture matérielle pour de ce second TP instancie trois types de composants matériels. |
| 19 | Les deux composants ''!VciLcdCoprocessor'' et ''!VciLcdMaster'' ont des fonctionnalités identiques à celles des composants utilisés dans le premier TP, mais ces composants possèdent maintenant des ports de communication qui respectent le protocole VCI/OCP. Le troisième composant ''!VciGbs'' est un composant matériel modélisant un bus système respectant le protocole VCI/OCP, et permettant aux différents composants matériels de communiquer entre eux. |
| 20 | |
| 21 | [[Image(soclib_tp2_archi.png)]] |
| 22 | |
| 23 | Le composant ''!VciGsb'' se comporte comme un bus, car il ne traite qu'une seule transaction à la fois. |
| 24 | Si plusieurs initiateurs ... |
| 25 | |
| 26 | = 3. Protocole VCI/OCP |
| 27 | |
| 28 | Le protocol de communication VCI permet de construire des architectures matérielle multi-processeurs à memoire |
| 29 | partagée. Dans ce type de d'architecture, les différents composants matérielles utilisent des transactions pour communiquer entre eux. Une transaction est un couple (commande / réponse). |
| 30 | Une transaction est initiée par composant ''initiateur'' est chargé de |
| 31 | démarrer la transaction, et un composant cible est chargé de répondre à la commande qu'il a reçue. |
| 32 | * paquet commande un paquet commande contient principalement une adresse |
| 33 | En principe, n'importe quel initiateur est capable de communiquer avec n'importe quelle cible. |
| 34 | La cible est désignée par les bits de poids fort de l'adresse. |
| 35 | |
| 36 | L'adreentre un intitiateur et |
| 37 | utilsentUn système de ce type possède trois types de composants : |
| 38 | * des composants ''initiateurs", capable de |
| 39 | d'adressage partagé implante un protocole de communication très simple supportant le contrôle de flux. |
66 | | == 2.2 Composant ''VciLcdCoprocessor'' == |
67 | | |
68 | | Le composant ''!VciLcdCoprocessor'' se comporte comme un périphérique adressable qui doit être |
| 79 | = 4. Segmentation de l'espace adressable = |
| 80 | |
| 81 | = 5. Travail à réaliser = |
| 82 | |
| 83 | L'archive attachement:soclib_tp1.tgz contient différents fichiers dont vous aurez besoin pour ce premier TP. |
| 84 | Créez un répertoire de travail spécifique TP1 pour ce TP, recopier l'archive dans ce répertoire TP1, et décompressez-la: |
| 85 | {{{ |
| 86 | $ tar xzvf soclib_tp1.tgz |
| 87 | }}} |
| 88 | |
| 89 | Cette archive contient les fichiers suivants : |
| 90 | |
| 91 | == 4.1 Composant ''!VciLcdCoprocessor == |
| 92 | |
| 93 | Le composant ''!VciLcdCoprocessor'' se comporte comme un périphérique adressable, et doit donc être |
71 | | lus ou écrits par n'importe quel initiateur. |
72 | | du sytème. Chacun de ces registres a une largeur de 4 octets. Par conséquent, le occupé par le périphérique |
73 | | segment de |
| 96 | lus ou écrits par n'importe quel initiateur du sytème. Chacun de ces registres a une largeur de 4 octets. |
| 97 | Par conséquent, le segment occupé par ce périphérique dans l'espace adressable a une taille de 4*4 = 16octets. |
| 98 | |
| 99 | |
| 100 | Pour simplifier le décodage des adresses, on impose la contrainte que l'adresse de base de ce segment est |
| 101 | un multiple de sa longueur (on dit que le segment est ''aligné''). |
| 102 | La carte d'implantation des registres est définit comme suit : |
| 103 | |
| 104 | || '''Nom du registre''' || '''Offset''' || '''Mode''' || |
| 105 | || r_opa || 0x0 || Write Only || |
| 106 | || r_opb || 0x4 || Write Only || |
| 107 | || r_start || 0x8 || Write Only || |
| 108 | || r_res || 0xc || Read Only || |
| 109 | |
| 110 | Attention : Il n'existe pas réellement de registre ''r_start'' dans le composant matériel. |
| 111 | Lorsque le composant ''!VciLcdCoprocessor'' reçoit une commande d'écriture à l'adresse |
| 112 | correspondant à l'adresse de ''r_start'', la donnée WDATA correspondante n'est écrite nulle part, |
| 113 | mais la commande est interprêtée par le coprocesseur comme un ordre de démarrage du calcul. |
| 114 | |
| 115 | Une erreur est signalée si le coprocesseur reçoit une commande longueur supérieure à un mot, |
| 116 | ou si l'adresse reçue n'appartient pas au segment qui a été défini pour le coprocesseur, |
| 117 | ou si le mode d'accès (Read ou write) ne respecte pas les contraintes ci-dessus. |
| 118 | |
| 119 | Question : à quoi servent ces vérifications ? |
| 120 | |
| 121 | Les fichiers |
| 122 | |
| 123 | == 4.2 Composant ''VciLcdMaster'' == |
| 124 | |
| 125 | Le composant ''!VciLcdMaster'' est un initiateur VCI, qui exécute une boucle infinie dans laquelle il exécute |
| 126 | successivement les 6 actions suivantes: |
| 127 | * calcul de deux valeurs aléatoires (entiers positifs codés sur 32 bits) |
| 128 | * écriture |
| 129 | La figure ci-dessous décrit la structure de l'automate de contrôle du composant ''!VciLcdMaster''. |
| 130 | |
| 131 | Le fichier ''vci_lcd_coprocessor.h'' contient une description complête du composant ''!VciLcdMaster''. |
| 132 | Le fichier ''vci_lcd_coprocessor.cpp'' contient une description incompête des méthodes associées à ce composant. |
| 133 | Complêtez le code des méthodes ''transition()'' et ''genMoore()'', pour traiter les états de l'automate qui ne le sont pas. |
| 134 | incomp |
| 135 | |
| 136 | |
| 137 | |
| 138 | |
| 139 | |
| 140 | |
| 141 | |
| 142 | |
| 143 | |
| 144 | |