• Aucun résultat trouvé

LA CARTE D’ÉLECTRONIQUE DHCAL1 59 Voici la structure en terme de transferts d’octets adoptée pour ces deux types d’accès :

Électronique du calorimètre hadronique semi–digital

2.3 LA CARTE D’ÉLECTRONIQUE DHCAL1 59 Voici la structure en terme de transferts d’octets adoptée pour ces deux types d’accès :

le premier octet envoyé permet au FPGA de différencier un « accès registre » d’un « accès commande ». Dans le premier cas, il permet également de connaître sa direction et de transférer le début de l’adresse qui sera complétée dans le second mot de la même trame.

Dans le deuxième cas, trois types d’« accès commande » sont implémentés :

– des commandes générant un flux de données entrant : l’octet de commande est suivi d’un nombre prédéfini de mots de données.

– des commandes générant un flux de données sortant : en réponse à l’octet de com- mande, le FPGA envoie un bloc données dont le nombre aura été défini à l’avance, soit fixé, soit stocké dans un registre.

– la même structure de trame est réutilisée afin d’agir de manière ponctuelle sur le fonctionnement du FPGA, par exemple en ayant pour effet de générer un signal de durée finie.

Le tableau 2.6 résume la structure des différents accès du protocole d’échange entre le FPGA et un ordinateur.

mot no 1 2 3 4 5 6

bit no 7 6 5 4 3 2 1 0 [. . .]

accès registre 0

lecture 1

écriture 0 Add[9–8] Add[7–0] Reg[7–0] Reg[15–8] Reg[23–16] Reg[31–24]

accès commande 1 Commande Selon la commande

Table 2.6 – Détail de le la structure des trames du protocole d’échange entre le FPGA et l’ordinateur : Add représente les bits d’adresse et Reg les bits de données du registre accédé. Dans le cas d’une écriture, le FPGA les reçoit, et il les envoie dans le cas d’une lecture.

Dans les deux premiers cas, le temps d’exécution vis à vis de la réactivité de l’interface est négligeable au vu des quantités de données à transférer (les données transitent à une fréquence d’environ 1 MHz alors que le temps d’accès est de l’ordre la milliseconde). Une fois les transferts de données terminés, certaines commandes ont un temps d’exécution local non négligeable, comme le chargement ou la vérification des paramètres. L’autorisation de faire fonctionner plusieurs tâches en parallèle nécessiterait une gestion trop complexe de l’interface. De plus, les tâches pourraient interférer entre elles ; il ne faut par exemple pas charger la configuration en même temps qu’effectuer la lecture. Le parti pris a donc été de ne pas accepter d’autre commande tant que la première n’est pas terminée. Afin d’éviter le blocage de l’interface, deux précautions ont été prises : premièrement, les « accès registre » sont autorisés. De cette manière, le déroulement de l’exécution de la commande peut être contrôlé et une nouvelle commande peut être lancée dès qu’elle est terminée, au délai de réaction de l’interface près. Deuxièmement, des compteurs mesurent le temps écoulé depuis le début de l’exécution d’une commande et il est possible de fixer un délai au bout duquel la tâche se termine automatiquement. Il est décrit par la suite la gestion de cette interface au niveau signal.

La machine d’état de gestion de l’interface avec l’ordinateur utilise un système de relais : lors de l’arrivée de la commande, un décodeur envoie une impulsion à la machine d’état qui prend en charge la réalisation de la tâche correspondante. Le canal de transfert de données de USB lui est alors attribué. Une fois la partie transfert par l’USB de sa tâche terminée,

elle envoie un acquittement à la machine d’état de gestion de l’interface qui se débloque et revient à son état initial. Pendant son exécution, un drapeau « occupé » est levé signalant à la machine d’état de gestion de l’interface avec l’ordinateur qu’elle ne doit accepter que des « accès registre ».

Dans un premier temps, une version d’acquisition a été développée où les commandes sont envoyées pas à pas correspondant à la « Single Slab DAQ ».

Le composant USB prend en charge la transmission des données mais il n’est pas fait mention dans sa notice qu’il gère le contrôle de leur intégrité, ce qui est un élément impor- tant dans un environnement potentiellement bruyant. J’ai donc implémenté un contrôle de redondance cyclique, un algorithme de traitement de données permettant d’effectuer de la détection et, selon sa taille, de la correction d’erreurs. La version choisie est le CRC–1648

du CCITT (un ancien office de normalisation pour les réseaux téléphoniques). Ce code ajoute 16 bits à la trame, soit deux périodes supplémentaires pour l’envoi des données.

Voyons maintenant le détail de la machine d’état qui gère les accès de type registre. Gestion des registres

Un « accès registre » se déroule en deux étapes : d’abord la récupération de l’adresse et son décodage. Dans le cas d’une lecture registre, la valeur du registre est ensuite récupérée et transmises à l’ordinateur octet par octet. Dans le cas d’une écriture registre, les octets suivants sont récupérés puis combinés pour former le mot à stocker dans le registre. La cadence de la réception ou de l’envoi des mots est maîtrisée par le biais des signaux de statut de l’interface USB. Les transferts commencent avec les octets de la partie basse du registre

Contrairement au cas d’un « accès commande », la machine d’état de gestion de l’inter- face avec l’ordinateur prend en charge dans le cas d’un « accès registre » les autorisations de lecture ou d’écriture par l’USB. Cela amène une certaine redondance entre les états des machines d’état de gestion de l’interface avec l’ordinateur et de gestion des « accès registre ».

L’interface de gestion des registres est placée au plus haut niveau dans la hiérarchie du code VHDL afin d’éviter qu’une entité qui la contiendrait possède un nombre de signaux d’entrée/sortie trop important.

Les sous–sections suivantes décrivent les différentes machines d’état de gestion des commandes.

2.3.4.5 Paramétrage des ASICs

La configuration des ASICs est nommée « contrôle lent » pour l’ensemble des ASICs de CALICE49.

Les paramètres des ASICs sont stockés localement dans un registre à décalage parti- culier situé dans la partie analogique du circuit. Chacune des bascules de ces registres a un impact sur le fonctionnement du circuit en agissant sur des interrupteurs qui peuvent relier certains composants optionnels. Cela permet par exemple de choisir le gain des pré- amplificateurs ou de choisir entre remise à zéro des latchs interne ou externe. Le registre à décalage ne possède pas pour le moment de signal de chargement comme c’est prévu dans

48. Circle Redundancy Check : contrôle de redondance cyclique.

49. bien que ce terme soit impropre puisqu’il fait référence au contrôle régulier de paramètres d’un détecteur en cours de fonctionnement alors que la configuration s’effectue en dehors du fonctionnement.

2.3 LA CARTE D’ÉLECTRONIQUE DHCAL1 61

Outline

Documents relatifs