Documents
Croc v2 | New version of the note - not released yet |
LHCb 2004-008 |
Calorimeter ReadOut Card (CROC) design |
Modifier l'adaptation point à point : remplacer les 14 ohms par des 30 ohms
Implantation des 'delatcher' sur l'alimentation des 'deserialisers'
Les registres du CROC doivent être programmés enTriple Voting (TVR)
Faut-il prévoir une 18 entrées de contrôle de l'alimentation des cartes de Front-end depuis le Spy ? Nous pensons en fait avoir un connecteur avec 4 entrees et 4 sorties ... à confirmer.
Capacité pour lissage des signaux de retour SPECS ECS
Documents CROC v3 :
Definition des entrees-sorties face avant:
Mettre le trigger externe sur une sortie face avant
Liste des I/Os
FE PGA :
Data FEB (4x21)
Specs ( 8(add) + 16(data) + 2(Rd/Wr) + 1(interrupt) ) (27)
Data Optical Fiber (4x21(data) + 4x2(control word) (92)
header detect (1)
Spy Add (13)
Spy Rd (1)
SPY PGA :
Documents CROC v2 :
Problèmes
si nL0reg>0 on génère bien des L0, mais nL0 générés est nL0reg+1
Permettre le fonctionnement du croc en mode nDump = 0. Dans ce mode, l'écriture dans la ram des données de spy n'est jamais autorisée. La valeur du nombre de Dump est nDump charge + 1. Si nDump=0, la fin de séquence de dump n'est jamais déclenchée et aucun événement n'est stocké en RAM de spy. Origine du problème : dans l'evtCpt Block la génération du end_seq_dump par l'intermédiaire du dump=0 n'est pas correcte.
Lorsqu'un seul L0 est requis (affichage = 0), le trigger ne fonctionne pas
si nL0reg=0 et nFreqL0=0 pas de L0. si nL0reg=0 et nFreqL0>0, 1 L0 est généré.
si nL0reg>0 et nFreqL0=0, on a bien (nL0+1) L0 générés. Puis, si nFreqL0>0, le premier trigger externe conduit à nL0reg+2 (!!!) et non pas (nL0reg+1) comme habituellement. Mais, au coup suivant, on retrouve bien le nombre habituel de L0, c'est-à-dire (nL0reg+1).
Archives
Ajout des 4 RAM pour chacun des quatre FePGA.
Envoie des données FePGA vers la FIFO du SpyPGA en fonction des requêtes du Spy (adresses de Spy)
test du signal end_of_transfer lorsque le compteur de nSpy atteint 0 (fin du compte)
Reset des Compteur
Il serait utile qu'un registre au niveau des FEPGA permette de sélectionner/masquer des cartes. 4 bits par FEPGA sont suffisants (puisqu'ils gèrent chacun 4 cartes). On ne sait pas vraiment ce que sortent les serialiseurs du CROC quand aucune carte n'est connectée. Ce registre permettrait de masquer certaines cartes en input et de ne pas avoir des détections de header intempestifs.
La recharge du tableau d'adresse doit actuellement se faire manuellement par un ordre software envoyé avant chaque acquisition. Ceci devrait pouvoir être fait automatiquement par l'ordre Enable L0 qui autorise l'acquisition d'une nouvelle séquence. De même pour le nettoyage de la Fifo.
CR
12 avril 2005
Ce à quoi doit correspondre l'acquisition de données avec le croc:
chargement des adresses à espionner et de la taille du tableau correspondant
boucles permettant l'acquisition d'une séquence de plusieurs L0: (bleu: action soft, rouge: action croc)
signal Initialize_transfer envoyé par le SPY par écriture d'un registre (ordre Enable L0 de CAT)
recharge la taille du tableau d'adresses
identifie les 'headers' et si nécessaire stocke dans les FEPGA (CROC) en comptant nDump + nSpy evts (nSpy evt stockés)
signal End_of_Transfer envoyé si le compteur atteint nSpy
commence à remplir la Fifo jusqu'à 128 mots puis attend
lit le status register donnant la taille de la fifo. Si non nul, le transfert des data par specs commence
la fifo se vidant le croc la remplit au fur et à mesure et si des données sont en attente
la fifo est complètement vidée
L'ordre Enable L0 du CROC correspond pour le Croc à Init_transfer qui effectue
initialisation des compteurs nDump et nSpy à leur valeur de configuration
vide la FIFO
recharge la taille du tableau d'adresse
reset le compteur de la RAM du tableau d'adresses.
Remarques :
les points deux à quatre ne sont pas encore exécutés automatiquement, mais il est souhaitable qu'un unique Enable L0 conduise à ces opérations par le croc.
Frédéric Machefert
Last Modification : 06/10/2007