430 likes | 609 Views
Evaluation d’un cœur IP TDC. Shu ZHANG. Evaluation du « TDC CORE ». Étude et analyse du projet « TDC CORE » Intégration du projet sur une plateforme du commerce Premiers t ests et mesures Adaptations du projet au besoin Evaluation. Étude et analyse du projet « TDC CORE ». Architectures
E N D
Evaluation d’un cœur IP TDC Shu ZHANG INF-ECA-PST-3013
Evaluation du « TDC CORE » Étude et analyse du projet « TDC CORE » Intégration du projet sur une plateforme du commerce Premiers tests et mesures Adaptations du projet au besoin Evaluation INF-ECA-PST-3013
Étude et analyse du projet « TDC CORE » Architectures Principe de mesure utilisé Réalisation de mesure Spécifications du cœur IP TDC INF-ECA-PST-3013
1. Étude et analyse du projet « TDC CORE » LatticeSemiconductor Corporation Milkymist SoC Architectures Spartan 6 FPGA Design architecture Interpréteur ligne de commande pour communication avec l’UART CPU LM32 Maîtres WISHBONE • Architecture globale du projet de démonstration • Un SoC (system on chip) • Il fait appel à un cœur LM32 microprocesseur et un cœur bus de communication wishbone tous deux open source Arbitrage du bus partagé WISHBONE bus BRAM CSRBridge TDC SRAM Esclaves WISHBONE CSR (Control Status Registre) bus UART GPIO Timer0 Timer1 Esclaves CSR Bridge UART USB PC INF-ECA-PST-3013
1. Étude et analyse du projet « TDC CORE » • Architecture de la périphérique TDC Architecture du top TDC Host interface pour le cœur TDC WISHBONE bus TDC WB TDC CORE Hostif_tdc .vhd INF-ECA-PST-3013
1. Étude et analyse du projet « TDC CORE » Principe de mesure utilisé t0 : TDC armé t1 t2 Tclk t1 = N1*Tclk – T1 t2 = N2*Tclk – T2 N1 : Mesure grossière de t1 N2 : Mesure grossière de t2 T1 : Mesure fine de t1 T2 : Mesure fine de t2 INF-ECA-PST-3013
1. Étude et analyse du projet « TDC CORE » Principe de mesure utilisé Architecture du cœur TDC • Mesure grossière : • Partie entière du résultat (nb. de périodes de l’horloge système) • Partagée • Mesure fine : • Partie fraction du résultat (fraction de période de l’horloge système) • Pour chaque canal TDC CORE INF-ECA-PST-3013
1. Étude et analyse du projet « TDC CORE » Mesure fine Signal d’entrée Bin N-1 Bin 3 Bin 2 Bin 1 Bin 0 Architecture de CARRY 4 Horloge Système N-1 4 3 2 1 0 Architecture de la ligne à retard INF-ECA-PST-3013
1. Étude et analyse du projet « TDC CORE » Mesure fine • Auto-calibration • Startup calibration (histogramme) et online calibration (LUT) Codage de temps Signal Calib Tclk horloge système Nbin Compensation température Nbin0 Nbin1 Nbin2 hits Codage de temps LUT finale LUT brut histogramme Tclk Tclk Nbin Nbin Nbin1 Nbin2 Nbin0 INF-ECA-PST-3013
1. Étude et analyse du projet « TDC CORE » Réalisation de mesure « TDC CORE » Architecture du cœur TDC Mise sous tension Signal de calibration startup calibration LUT mis à jour LUT online calibration mesure INF-ECA-PST-3013
1. Étude et analyse du projet « TDC CORE » Spécifications du cœur IP TDC • Précision attendue: 50-100ps (pic à pic) • Sortie en point fixé : • Partie entière est le nombre d’horloge master FPGA (« coarsecounter ») • 13-bit partie fractionnelle (configurable avec un VHDL « generic ») • Avec une horloge master 125MHz, LSB correspond à 0.98ps • Dynamique typique : 268ms (en utilisant une valeur de 12bits ([15:13]-bit) à 125MHz) • nombre des bits du « coarsecounter » configurable avec un VHDL « generic » • Latence : 6 cycles, soit 48ns à 125MHz (host interface module non incluant) • Multiple canaux : • Configurable avec un VHDL « generic », configuré actuellement à 2 canaux • Logique calibration partagée entre canaux • Rapports des deux fronts montant et descendant du signal d’entrée INF-ECA-PST-3013
Intégration du projet sur une plateforme du commerce Choix de la plateforme d’évaluation Installation de l’environnement Mise en œuvre du projet sur la plateforme INF-ECA-PST-3013
2. Intégration du projet sur une plateforme du commerce Choix de la plateforme hardware d’évaluation • Etude des cartes SPEC et FMC DIO CH5 (développées sur l’OHWR) • Définition des critères de choix puis pré sélection de cartes d’évaluation du marché • Comparaisons critiques des cartes à choisir • Décision finale et commande INF-ECA-PST-3013
2. Intégration du projet sur une plateforme du commerce Etude des cartes SPEC et FMC DIO CH5 • Ce cœur a été implémenté et testé par S. Bourdeauducq sur la carte SPEC (carte mère PCIe) équipée d’une carte fille FMC (FPGA Mezzanine Carrier: standard VITA 57) DIO 5-channel (carte fille). Ces cartes étant également issus de projets de l’OHWR. • Carte SPEC : • Format PCIe (x4 Lane PCI Express to Local Bridge : GN4124) non utilisé pour TDC Core • FPGA Spartan-6 (XC6SLX45T-FGG484-3) • Synthétiseur d’horloge de précision (CDCM61004RHBT, +/-10ppm) • Port USB (Virtual COM Port (VCP) driver : communication série via une interface type HyperTerminal) • Un capteur 1-wire placé sur la carte SPEC pour mesurer la température du FPGA (DS18B20U: Programmable Resolution 1-Wire Digital Thermometer ) • Filtre d’alimentation sur le 3,3V pour les oscillateurs et le synthétiseur d’horloge • La FMC DIO dispose 5 canaux TTL bidirectionnels (connecteurs LEMO). Elle à pour fonction de réaliser une passerelle entre le format TTL et les formats compatibles FPGA (LVDS, LVCMOS) INF-ECA-PST-3013
2. Intégration du projet sur une plateforme du commerce Définition des critères de choix • Cartes ayant la même référence de FPGA que SPEC • Stabilité de l’horloge du FPGA • +/- 10 ppm sur SPEC • Le nombre d'entrées/sorties • 2 CLKs+ 22 I/Os • Connecteurs • Ethernet, FMC, USB etc… • Format électrique des IOs • TTL, LVTTL, LVCMOS, LVPECL, LVDS etc. • La mesure de température • Une puce avec un fil combiné au FPGA sur SPEC • Stabilité des alimentations • Propre alim P3V3_CLEAN (isolée avec les autres alims) pour le générateur d’horloge sur SPEC • Prix, délais etc… INF-ECA-PST-3013
2. Intégration du projet sur une plateforme du commerce Cartes candidats SPEC FMC DIO 5CH Atlys SP605 INF-ECA-PST-3013
2. Intégration du projet sur une plateforme du commerce Etude comparative de ces cartes puis décision finale • Xilinx SP605 INF-ECA-PST-3013
2. Intégration du projet sur une plateforme du commerce Installation de l’environnement • Instruments • OS et logiciels • Linux Ubuntu-vbox 2.6.38 (ubuntu 11.04) • ToolChain lm32, ToolChain GNU etc. • Windows • Xilinx ISE 13.2, Python 2.7, HyperTerminal etc. INF-ECA-PST-3013
.a, .o • 2. Intégration du projet sur une plateforme du commerce .bit Préparation des fichiers .ngc .bin .c, .h, makefile ToolChain GNU, lm32 Compilations des sources software ToolChain lm32 Génération des fichiers binaires exécutables .vhd, .v Xilinx ISE 13.2 Synthèse .ucf Xilinx ISE 13.2 Implémentation du design Xilinx ISE 13.2 (iMPACT) Programmation FPGA Mise en œuvre du projet sur la plateforme INF-ECA-PST-3013
Premiers tests et mesures Qualification de l’horloge Auto-calibration à 125MHz Linéarité de la calibration Stabilité de la startup calibration Compensation température – online calibration Plage de la fréquence d’horloge master Temps mort host Précision du système de mesure Première évaluation INF-ECA-PST-3013
3. Premiers tests et mesures Qualification de l’horloge INF-ECA-PST-3013
3. Premiers tests et mesures Qualification de l’horloge • Histogramme générée par l’oscilloscope • Horloge Système : 125 MHz • Population de mesures : 262197 • Résolution (Nb de BIN) : pleine échelle 10ns, 20ps/BIN Mesure de skew Ring osc Oscilloscope ch0 125MHz ch1 125MHz LVDS_25 T125MHz = 8 ns AWG5004B Tmin Tmax SP605 Histogramme générée par l’oscilloscope INF-ECA-PST-3013
3. Premiers tests et mesures • Linéarité de la calibration • Population de mesures : 218 soit 262144 • Résolution (Nb de BIN) : pleine échelle 8ns, 18ps/BIN en moyen • NLD & NLI(rappeler les formules de calcul de ces 2 grandeurs) • La NLD (non linéarité différentielle) est directement obtenue par : • La NLI (non linéarité intégrale) est calculée en intégrant la NLD : Auto-calibration à 125MHz Nb de hits Discontinuités de mesure (1 BIN sur 2 environ) • Toujours même endroits à 0 N° du BIN Rappel de la mesure effectué à l’oscilloscope horloge système : 125 MHz NLD TDC NLI TDC NLD TDC NLI TDC T125MHz = 8 ns INF-ECA-PST-3013
3. Premiers tests et mesures Auto-calibration à 125MHz • Stabilité de la start up calibration • Avec le FPGA en équilibre thermique après quelques minutes de pré chauffage suivant le téléchargement du bitstream, la startup calibration a étélancé deux fois INF-ECA-PST-3013
3. Premiers tests et mesures Auto-calibration à 125MHz • Compensation température – online calibration • FPGA travail dans une température vers 40°C Température du FPGA Température de la plateforme INF-ECA-PST-3013
3. Premiers tests et mesures Auto-calibration à 125MHz • Compensation température – online calibration • Variation de LUT par rapport à la température • 30°C -> 45 °C : ~1% différence (15°C chauffé) Variation de LUT LUT généré (clk : 125MHz) Variation de LUT (125MHz, 30°C -> 45 °C ) INF-ECA-PST-3013
3. Premiers tests et mesures Plage de la fréquence d’horloge master Plan d’occupation (floor plan) des cellules logiques élémentaires sur le FPGA (en jaune les 2 lignes à retard) • 108Mhz (LAR : 496) ~ 138,946MHz (synthétiseur) Rapport de synthèse INF-ECA-PST-3013
3. Premiers tests et mesures Temps mort host • Temps mort initial très élevé • Lié à la méthode de collecte des données: 1 mesure 1 transmission vers l’UART. • Temps mort vers 3ms • D’où la nécessité d’optimiser : • n (100) mesures transmission vers l’UART • Temps mort optimisé à vers 3us, soit 1000 fois plus rapide INF-ECA-PST-3013
3. Premiers tests et mesures Précision du système de mesure Résultats de la mesure différentielle par l’oscilloscope • Inter-channels • Polarity: falling edge • Samples: 15000 • Mean: 1935ps • P-p: 210ps • Std. dev.: 25ps • Precision: ±50ps • Single channel • Suppose jitter/ch independent, Gaussian distribution • Std. dev.: 18ps. • Precision: ±36ps Résultats de la mesure différentielle Différence du temps (ps) CH0 Générateur d’impulsions TTL CH1 Câbles de différentlongueur Principe de mesure : le même signal injecté sur les 2 voies CH0 et CH1, le TDC mesure l’écart entre les 2 fronts descendants de CH0 et CH1 INF-ECA-PST-3013
3. Premiers tests et mesures Première évaluation • Avantages : • Portabilité, flexibilité • Temps de développement réduit • Moins couteux sur des projet de petite série (sinon ASIC moins cher, plus les coûts de développement de l’architecture TDC ASIC) • Inconvénients : • Sensible (vrai pour tous les systèmes TDCs) • Horloge, tension, température… • Fréquence master très limitée • NLD grand • Difficile à déboguer : • sans logiciel de débogue du LM32 • Temps de compilation long: 8mins INF-ECA-PST-3013
Adaptations du projet au besoin Calculs Remplacement d’horloge Mesures de temps INF-ECA-PST-3013
4. Adaptations du projet au besoin Adaptations au besoin et mesures • Calcul du temps exprimé en picoseconde à la base des données brutes fournies par « TDC CORE » • Remplacement de l’horloge externe fournie par le générateur par une source embarquée sur la carte • Cherche des Oscillateurs en boitier DIL8 sur le marché • Génération d’horloge avec DCM du FPGA à la base d’horloge 200MHz sur carte INF-ECA-PST-3013
4. Adaptations du projet au besoin t*5 6 fois t>>7 division left shift quotient and reminder • Calcul du temps exprimé en picoseconde à la base des données brutes fournies par « TDC CORE » • La version du compilateur n’accepte pas les types de données « long int » (64bits) et « float» (la librairie associée n’étant pas disponible). La difficulté est de traiter un registre codé sur 38bits avec des types 32bits entiers. • Programmation d’une fonction en C réalisant un algorithme du calcul du timestamp en picosecondes au lieu de l’unité LSB • Données brutes fournies par TDC CORE, registre “t” 38 bits decomposé en 2 registres:th (6 bits MSB), ts (32 bits LSB), t= th*2³²+ts, t s’exprime en nombre de LSB (par exemple si Master_Clk_Freq = 125MHz alors LSB = 0,98ps) • LSB = Master_Clk_Period (ps)/213= 1000000*Master_Clk_Period (ns)/2¹³ =1000000/(2¹³*Master_Clk_Freq(MHz)) • Timestamp =t*LSB = (th*2³²+ts)*5⁶/(2⁷*Master_Clk_Freq(MHz)) Registre t Supposant que : ts = 0x33333333 * quot + reminder; ts*5 = carry * 0x100000000 + Ts’; ts*5 = (0x33333333 * quot + reminder) * 5 = 0xffffffff * quot + reminder * 5 = (0x100000000-1) * quot + reminder * 5 = quot * 0x100000000 - quot + reminder * 5 Du coup : carry = quot; ts’ = reminder * 5 – quot t*5 = (th * 2³² + ts) * 5 = (th * 5 + quot) + (reminder* 5 – quot) Après 1 fois de multiplication : th’= th * 5 + quot; ts’ = reminder* 5 – quot; Calcul de l’opération *5⁶ Calcul de l’opération /27 Calcul de l’opération /Master_Clk_Freq(MHz) rq[2] Master_Clk_Freq t(th&ts) INF-ECA-PST-3013
4. Adaptations du projet au besoin • Remplacement de l’horloge externe par la source sur carte • Oscillateurs en boitier DIL8 sur le marché INF-ECA-PST-3013
4. Adaptations du projet au besoin • Remplacement de l’horloge externe par la source sur carte • Génération d’horloge avec DCM du FPGA à la base d’horloge 200MHz sur carte • DCM_CLKGEN : • CLKFX_MULTIPLY => 5 • CLKFX_DIVIDE => 8 • Sortie d’horloge : • ODDR2 (Dual Data Rate Output D Flip-Flop) ODDR2 #( .DDR_ALIGNMENT("C0"), // Sets output alignment to "NONE", "C0" or "C1" .INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1 .SRTYPE("ASYNC") // Specifies "SYNC" or "ASYNC" set/reset ) ODDR2_inst ( .Q(clk125out), // 1-bit DDR output data .C0(clk125), // 1-bit clock input .C1(~clk125), // 1-bit clock input .CE(1'b1), // 1-bit clockenable input .D0(1'b1), // 1-bit data input (associatedwith C0) .D1(1'b0), // 1-bit data input (associatedwith C1) .R(1'b0), // 1-bit reset input .S(1'b0) // 1-bit set input ); INF-ECA-PST-3013
4. Adaptations du projet au besoin • JitterTIE (Time IntervalError) de l’horloge générée par DCM: • 1M mesures INF-ECA-PST-3013
4. Adaptations du projet au besoin Mesures de 50ps à 50ns Avec l’horloge générée par AWG • Histogramme générée par l’oscilloscope • 218(soit 262144) mesures pour générer l’histogramme de la Delayline • Mesures • Ne sait pas faire la mesure fine • Mesures au delà de 1us : non effectués • Idée abandonnée Erreurs Avec l’horloge générée par DCM Mesures de 500ps à 1us INF-ECA-PST-3013
4. Adaptations du projet au besoin ps CH0 CH0 relectures CH1 CH1 • Mesures avec l’horloge fournie par AWG5004B • Comparaison des mesures du TDC avec celles d’un intervallomètre ps relectures Relectures (Zoom 50ps -> 1ns) erreurs Diff_intervallo_TDC 50ps->100us : constante 1ms->200ms : linaire Tdélais varie : de 50ps à 200ms Câbles de même longueur erreurs Générateur de délais TTL CH0 CH1 Principe de mesure : deux canaux de signaux avec un délais programmable entre les deux injectés sur les 2 voies CH0 et CH1 du TDC, le TDC mesure l’écart entre les 2 fronts descendants de CH0 et CH1 Plages de mesure : 50ps -> 1ms Plages de mesure : 1ms -> 200ms INF-ECA-PST-3013
Evaluation Comparaisons système TDC+SPEC vs TDC+SP605 Etude comparative des TDCs INF-ECA-PST-3013
5. Evaluation Comparaisons système TDC+SPEC versus TDC+SP605 INF-ECA-PST-3013
Annexe INF-ECA-PST-3013
Architecture du µP LM32 • CPU : lm32 (LatticeMico32) • RISC CPU • 32 bits (data & instructions) • 32 registres générales • 32 interruptions maximum • I/D caches optionnels • Double wishbone interfaces de mémoire (I & D) INF-ECA-PST-3013
Digital Delay Generator T560 HyperTerminal Carte d’évaluation Xilinx SP605 CH1 CH0 USB communication Programmation Xilinx ISE Design Suite 13.2 PC iMPACT Horloge système (LVDS) Signal à analyser Digital PhosphorOscillator Tektronix DPO 7254 ArbitraryWaveformGenerator Tektronix AWG5004B INF-ECA-PST-3013