"Lancer de rayons"


I Introduction

L'ASIC "Lancer de rayons" est destiné a accélérer l'algorithme de lancer de rayons pour la synthèse d'image. Il devra s'interfacer avec un Transputer T800 qui lui communiquera les données nécessaires aux calculs, puis lira les résultats. Son rôle principal sera de calculer une intersection entre une sphère et un rayon lancé. Ses principales fonctions sont : interfaçage avec le T800, Unité de Traitement (Multiplieur, Additionneur, Comparaison, Racine Carrée), et Unité de Contrôle dédiée. La période d'horloge de fonctionnement ainsi que la contrainte de temps sont à déterminer.

II Environnement du circuit

  

 Fig 1. Vue extérieure de l'ASIC

et Synoptique général du circuit
  

 Fig 2. Environnement du circuit sur la carte

III Organisation générale du circuit

Interfaces externes

  • Bus de données bidirectionnel 32 bits (D0..D31)
  • Bus d'adresse pour la sélection des registres internes 3 bits (A0..A2)
  • Signal de contrôle de sélection de boîtier CS (actif bas)
  • Signal de contrôle de sélection de sens de transfert R/W (R/W = 1 lecture; R/W = 0 écriture)
  • Signal d'horloge externe
  • Signal de reset général (actif bas)

IV Fonctions réalisées

Dans le chapitre VI, l'algorithme de lancer de rayon à implanter sur l'ASIC est fourni.
Cet algorithme contient 7 *, 12 +/-, 1 racine carrée, 1 calcul de minimum.
Une étude précise de la fonction de racine carrée devra être faite.
Les données externes sont codées sur 8 bits (ou 12 bits). Le chemin de données interne sera taillé pour une minimisation de la surface de silicium sans toutefois dépasser 16 bits (ou 24 bits).

La fonction de décodage sera déduite du chapitre VI.
Le bloc RF (Register file) devra mémoriser les données d'E/S à échanger avec l'extérieur. Les autres données intermédiaires de calculs seront intégrées dans l'UT.

V Caractéristiques matérielles

Interface physique

  • Packaging : PLCC 68
  • Brochage : non encore défini
  • Technologie des E/S : CMOS

Chronogrammes et timings

  • Chronogramme de lecture/écriture de l'ASIC à spécifier.
  • Timing à respecter : les cycles de lecture/écriture des données se répètent toutes les us.

VI Interface logicielle

4 registres internes 32 bits sont accessibles de l'extérieur. Ils sont groupés par paquets de 8 bits selon le principe suivant :  
Adresse Coté 
Transputer 
Contenu 
(MSB..LSB) 
Taille réelle  Sens
@2000  Px,Py,Pz  24 bits  Écriture
@2001  Dx, Dy, Dz  24 bits  Écriture
@2002  Vx, Vy, Vz, r2 32 bits  Écriture
@2003  lambda  16 bits  Lecture
Le coeur de la boucle du programme contenu dans le processeur hôte sera le suivant :
        Écrire (0, 0, Pz, 0, 2000) ;
        Pour tous les pixels
                Pour tous les objets
                        Écrire (Dx, Dy, Dz, 0, 2001) ;
                        Écrire (Vx, Vy, Vz, r2, 2002) ;
                        Lire (lambda, 2003) ;
                Fait
        Fait
Remarques : Les lectures correspondent aux résultats du calcul précédent.
                    La deuxième écriture déclenchera le départ de l'UC.
   
ENTITY lancer_de_rayon IS
       PORT (Px,Py,Pz:IN INTEGER; -- Coordonnes de l'observation
                     Dx,Dy,Dz:IN INTEGER; -- Vecteur de rayon
                     Vx,Vy,Vz:IN INTEGER; -- Coordonnes du centre de la sphere
                     Rcarre:IN INTEGER; -- Carre du rayon de la sphere
                     lambda:OUT INTEGER ); -- Vecteur de direction calculé 
END lancer_de_rayon;

ARCHITECTURE behavioral OF lancer_de_rayon IS

               CONSTANT Tacces : TIME := 150 ns;
               CONSTANT tmp : TIME := 3 * Tacces ;
BEGIN
               PROCESS
                              VARIABLE X,Y,Z:integer;
                              VARIABLE B,C,Delta,RDelta:integer; 
                              VARIABLE l1,l2:integer; 
               BEGIN

               X := 0 - Vx;
               Y := 0 - Vy;
               Z := Pz - Vz;

               B := X * Dx + Y * Dy + Z * Dz; 
               C := X * X + Y * Y + Z * Z - Rcarre;

               Delta := B * B - C;

               RDelta := SQRINT(Delta);
               l1 := 0 - RDelta - B;
               l2 := RDelta - B;
               lambda <= MINIMUM(l1,l2);

               WAIT FOR tmp;

               END PROCESS;
END behavioral ;

VII Conduite de projet

Dans ce paragraphe, nous vous donnons quelques indications concernant le déroulement du projet.

Ce qui vous est fournis ...

Un certain nombre de fichiers vous sont fournis. Il s'agit des fichiers :
  • d'un package définissant les constantes, types et fonctions utilisables pour ce projet ;
  • une bibliothèque d'opérateurs (multiplieur, additionneur, additionneur/soustracteur, registre, etc) permettant de construire l'unité de traitement ; ;
  • un modèle d'une machine d'états ;
  • la trame d'une entite de test.

Planning et travail en équipe

Nous donnons ici le planning prévisionnel qu'il serait bon que vous suiviez afin de terminer dans les temps ce projet.

 Le projet se déroule en équipe de 3 binômes. Le découpage du travail sera réalisé de la façon suivante :

  • réalisation de l'unité de traitement (dont le composant racine et le format de codage). Il s'agit ici de réaliser une unioté de traitement de facon structurelle (spécification du schéma de l'unité de traitement) ;
  • réalisation de l'unité de contrôle. Cette unité sera réalisée selon le modèle composé de 2 logiques combinatoire et d'un registre d'états. On veillera a respecter strupuleusement ce modèle afin d'aboutir à une synthèse correcte ;
  • réalisation de l'interface. Cette interface sera réalisée à partir d'un assemblage de registres que l'on pilotera à partir d'un décodeur ;
 
TP Séance 1  Séance 2  Séance 3  Séance 4  Séance 5  Séance 6 Séance 7
Tâche 1 Tutorial, prise en main Synopsys                
Tâche 2 TD sur machine
               
Tâche 3 Description comportementale de l'ASIC
Description du TestBench
               
Tâche 4 Répartition des taches dans l'équipe
               
Tâche 5 Synthèse de chaque partie de facon indépendante                
Tâche 6 Mise en commun et synthese globale                
Tab 1 : Plannification du projet lancer de rayons
Commentaires sur le planning :
  • La tâche 3 est très importante, elle vous permettra de bien comprendre le foncionnement global du ciruit, et vous permettra d'avancer plus vite lors du développement de votre partie. De plus, cette tache vous permettra de vous familiariser avec le langage VHDL.
  • La tâche 4 ne doit pas être prise à la légère. De la décomposition du travail de chaque binome dans l'équipe découlera la cohérence globale du projet et du bon fonctionnement final. Cette partie doit notamment permettre de spécifier clairement l'ensemble des interfaces entre les différentes unités du circuit.
  • Enfin la tâche6 sera précédée par une diffusion du travail de chaque binôme vers l'équipe. Chaque binôme s'attachera ensuite à réaliser la simulation et la synthèse du système.

Notation

Les points qui seront pris en compte pour la notation du projet sont les suivants :
  • attitude en projet : 4 pts ;
  • rapport, description du projet, présentation du travail : 5 pts ;
  • spécifications VHDL cohérentes : 6 pts ;
  • simulations : 3 pts ;
  • surfaces, timing, netlist : 2 pts.