Changes between Initial Version and Version 1 of SoclibCourseTp1


Ignore:
Timestamp:
Aug 30, 2009, 10:41:08 AM (16 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp1

    v1 v1  
     1{{{
     2#!html
     3<h1>TP1: Modélisation CABA (Cycle Accurate Bit Accurate)</h1>
     4}}}
     5[[PageOutline]]
     6
     7
     8= 0. Objectif =
     9
     10L'objectif de ce premier TP est de vous amener à écrire vous-même, en utilisant le langage SystemC
     11quelques  modèles de composants matériels très simples, en respectant le niveau d'abstraction CABA
     12(Cycle Accuratesimula
     13
     14= 1. Architecture à modéliser =
     15
     16L'architecture matérielle à modéliser réalise Elle ne comporte que deux composants matériels: Lgénérere premier
     17composant est un coprocesseur cablé (c'est à dire non programmable)
     18qui calcule le PGCD (plus grand commun diviseur) de deux nombres entiers positifs A et B, codés sur 32 bits.
     19Le second composant est chargé de transmettre les valeurs des opérandes A et B au coprocesseur, et de récupérer
     20le résultat. Ces deux composants matériels fonctionnent en parallèle, et communiquent entre eux par des canaux de communication de type FIFO.
     21
     22Ces deux composants sont donc modélisés par deux automates cadencés par la même horloge CK, avec écriture dans les tous les registres du système sur le front montant de CK. Ils sont initialisés par le même signal  NRESET, actif à l'état bas.
     23
     24== 1.2 Composant fifo_lcd_coprocessor ==
     25
     26Le composant ''fifo_lcd_coprocessor'' est un automate cablé.
     27L'algorithme de calcul du PGCD implanté par l'automate cablé peut être décrit par le code C suivant :
     28{{{
     29uint32_t lcd( uint32_t opa, uint32_t opb)
     30{
     31    while (opa != opb )
     32        {
     33        if ( opa > opb ) opa = opa - opb; 
     34        if ( opa < opb ) opb = opb - opa
     35        }
     36    return( opa );
     37}
     38}}}
     39Le chemin de donnée permettant de réaliser ce calcul doit donc comporter deux registres r_opa et r_opb pour stocker
     40les valeurs opa et opb qui évoluent au cours du calcul, ainsi qu'un comparateur et un soustracteur sur 32 bits.
     41
     42Par ailleurs l'automate cablé reçoit les deux valeurs des opérandes OPA et OPB sur son port FIFO d'entrée, et renvoie le résultat sur son port FIFO d'entrée.
     43
     44Finalement, l'automate qui contrôle le composant "fifo_lcd_coprocesseur exécute un boucle infinie, dans laquelle il effectue successivement les 4 opérations suivantes:
     45
     46 1. lecture de l'opérande A sur son port FIFO d'entrée
     47 1. lecture de l'opérande B sur son port FIFO d'entrée
     48 1. calcul effectif du PGCD
     49 1. écriture du résultat sur son port FIFO de sortie
     50Ces quatres opérations ont des durées d'exécution variables, puisque le nombre de cycles pour effectuer le calcul
     51(étape 3) dépend de la valeur des opérandes, et que les opérations de communications (étapes 1, 2 ou 4) ont des durées
     52qui dépendent de la disponibilité du composant fifo_lcd_master.
     53
     54 * Le composant ''fifo_lcd_master'' est chargé de générer aléatoirement les deux opérandes