Charakterisierung einer Zeitmesseinheit für das Compass
Transcrição
Charakterisierung einer Zeitmesseinheit für das Compass
Albert-Ludwigs-Universität Freiburg Fakultät für Mathematik und Physik Physikalisches Institut Prof. Dr. Horst Fischer Charakterisierung einer Zeitmesseinheit für das Compass-Experiment am Cern Wissenschaftliche Arbeit vorgelegt von Michael Bickel Matrikelnummer 3111833 Wackerstr. 17 79108 Freiburg Freiburg, den 7. Dezember 2015 Inhaltsverzeichnis 1 Einleitung 1 2 Physikalischer Hintergrund 2 3 COMPASS-II Experiment 3.1 Teilchenstrahl . . . . . . 3.2 Wechselwirkungszone . . 3.3 Spektrometer . . . . . . 3.4 Trigger Control System . 3.5 Datennahmesystem . . . 2 2 3 3 3 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 RICH-Detektor 5 4.1 Thick-GEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.2 Aragorn-Auslesekarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.3 Time-to-Digital-Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5 Field Programmable Gate Array 5.1 Der Xilinx Artix-7 . . . . . . . . . . . 5.2 Block RAM . . . . . . . . . . . . . . . 5.3 Taktsignale im FPGA . . . . . . . . . 5.4 Clock Management Tile . . . . . . . . 5.5 Timingbudget synchroner Schaltungen 6 VHDL Entwurf des Aragorn-TDC 6.1 Das TCS-Interface . . . . . . . . 6.2 Das Clock-Interface . . . . . . . . 6.3 Config Master . . . . . . . . . . . 6.4 Das TDC-Interface . . . . . . . . 6.4.1 Coarsetime Counter . . . 6.4.2 Trigger Catching . . . . . 6.4.3 TDC-Module . . . . . . . 6.4.4 Merger . . . . . . . . . . . 6.5 Serializer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 16 17 18 18 20 . . . . . . . . . 21 22 22 23 23 23 24 24 26 27 7 Implementierung des Aragorn TDC-Designs im Artix-7 FPGA 29 7.1 Das TDC Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.2 Taktsignale des Aragorn-TDC . . . . . . . . . . . . . . . . . . . . . . . . . 36 8 Messung und Auswertung 39 8.1 Differentielle und integrale Nichtlinearität . . . . . . . . . . . . . . . . . . 40 8.2 Zeitauflösung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 9 Zusammenfassung 48 10 Anhang 50 Literaturverzeichnis 53 1 Einleitung Das COMPASS-II-Experiment am CERN bei Genf ist ein Teilchenphysik-Experiment bei dem die Spinstruktur von Nukleonen untersucht wird. Dazu wird ein hochenergetischer Myonen-Strahl an einem ruhenden Target aus Protonen oder Neutronen gestreut. Mit einen zweistufigen Spektrometer, welches sich aus mehreren Einzeldetektoren zusammensetzt, werden die Eigenschaften der gestreuten Teilchen untersucht. Ein ringabbildender Cherenkov-Detektor (RICH) ist Teil des Spektrometers und dient der Identifikation von Hadronen. Im Zuge einer Überarbeitung des RICH-Detektors werden neue Photonendetektoren, sogenannte Thick-GEM, eingesetzt. Dabei wird auch die Ausleseelektronik des Detektors erneuert. Die Aragorn-Karte ist zentraler Bestandteil der neuen Ausleseelektronik. Die Aragorn-Karte wird direkt am Detektor-Frontend montiert und misst den Zeitpunkt zu dem die Signale im Detektor registriert werden. Die Zeitmessung wird durch Time-to-Digital-Converter (TDC) realisiert. Dazu sind auf der Aragorn-Karte vier sogenannte Artix-7 TDC-FPGA der Firma Xilinx verbaut. Ziel dieser Arbeit ist die Implementierung eines 96 Kanal Time-to-Digital-Converters mit einer angestrebten Zeitauflösung von 400 ps in einem Artix-7 FPGA. Um diese Anforderung zu erfüllen, wurde der TDC nach der „Shifted-Clock-Sampling“-Methode mit acht phasenverschobenen Taktsignalen und einer Taktrate von 311,04 MHz aufgebaut. Bei der Implementierung im FPGA galt es, möglichst geringe Laufzeitdifferenzen des Datensignals, sowie der acht Taktsignale sicherzustellen. Zudem muss das entwickelte FPGA-Layout fixiert werden, um die Reproduzierbarkeit des Entwurfs zu gewährleisten. Das Kapitel 2 erläutert den physikalischen Hintergrund des COMPASS-Experiments. Kapitel 3 beschreibt den experimentellen Aufbau des COMPASS-Experiments und die einzelnen Komponenten. In Kapitel 4 wird näher auf den RICH-Detektor und dessen Überarbeitung, sowie auf die neuen Thick-GEM Photonendetektoren, eingegangen. Kapitel 5 widmet sich dem Aufbau von FPGA, speziell dem in dieser Arbeit eingesetzten Artix-7 FPGA. In Kapitel 6 wird der gesamte VHDL-Entwurf des TDC-FPGA vorgestellt und in Kapitel 7 die physische Implementierung auf der Aragorn-Karte. Die Verifikation und Charakterisierung der Kenndaten des in dieser Arbeit entwickelten Aragorn-TDC erfolgt in Kapitel 8. 1 2 Physikalischer Hintergrund Der Spin eines Teilches ist eine fundamentale Quantenzahl. Trotz der Analogie zum Drehimpuls, wird der Spin nicht von der Bewegung einer Masse hervorgerufen. Der Spin von Nukleonen beträgt 21 . Da Nukleonen aus Quarks (Spin 12 ) und Gluonen (Spin 1) aufgebaut sind und sich der Spin von Nukleonen aus den Spins der Konstituenten und deren Drehimpulsen zusammensetzt, gilt: 1 1 ~q + L ~g = J~q + J~g = ∆Σ + ∆G + L 2 2 (1) Die Spinbeiträge der Quarks und der Gluonen sind ∆Σ und ∆G. Ihre Größe ist aus früheren Experimenten bekannt und beträgt ∆Σ ≈ 0, 3 und |∆G| ≈ 0, 2 [1]. Unbekannt sind jedoch weiterhin die Größen der Bahndrehimpulse L~q und L~g der Quarks und Gluonen. Über tief-virtuelle-Compton-Streuung (DVCS) erhält man Zugang zu den generalisierten Partonverteilungsfunktionen (GPDs), welche mit den Gesamtdrehimpulsen J~q und J~g der Quarks und Gluonen verknüpft sind [2]. 3 COMPASS-II Experiment COMPASS ist ein Hochenergiephysik-Experiment am Cern bei Genf und untersucht die Spinstruktur von Nukleonen. Seit 2002 werden am COMPASS erfolgreich Messungen durchgeführt. Seit 2012 wird das Experiement zum COMPASS-II erweitert, um Prozesse wie die tief-virtuelle-Compton-Streuung genauer zu untersuchen [3]. Das Experiment verwendet den Protonstrahl des SPS1 mit einer Energie von bis zu 450 GeV und streut ihn an ruhenden Protonen oder Neutronen. 3.1 Teilchenstrahl Abbildung 3.1 zeigt die sogenannte M2 Beamline des SPS, welche den Teilchenstrahl für COMPASS-II liefert. Der Protonenstrahl des SPS wird am Splitter 1 auf das BerylliumTarget T6 geleitet. Bei der Kollision entstehen Pionen, welche auf einer 650 m langen Strecke zu Myonen zerfallen. Ein Absorber entfernt verbliebene Hadronen. Durch zwei weitere Magnete kann eine zusätzliche Impulsselektion durchgeführt werden, bevor der Myonenstrahl die COMPASS-II Halle erreicht. Der Teilchenstrahl steht nicht kontinuierlich zur Verfügung, sondern wird in sogenannten „Spills“ vom SPS ausgekoppelt. 2012 betrug die Länge eines Spills etwa 9,6 s in Intervallen von etwa 48 s. 1 Super Proton Synchrotron 2 3.2 Wechselwirkungszone Abbildung 3.1: Strahlführung der M2 Beamline für einen positiven Myonenstrahl. Der Protonenstrahl des SPS wird auf das Target M6 geleitet. Entstehende Pionen zerfallen auf einer Strecke von 650 m zu Myonen und werden anschließend zum COMPASS-II geleitet [4] 3.2 Wechselwirkungszone Der Myonenstrahl wird im COMPASS-II Experiment an einem ca. 2,5 m langen Target aus flüssigem Wasserstoff gestreut. Das Target befindet sich im Zentrum des CAMERADetektors. Der CAMERA-Detektor wurde 2012 in Betrieb genommen und detektiert bei der Kollision im Target rückgestoßene Protonen. 3.3 Spektrometer Gestreute Teilchen werden von einem Spektrometer mit einer Gesamtlänge von 50 m detektiert. Aufgrund der breiten Impulsverteilung der auslaufenden Teilchen und der geforderten Winkelakzeptanz ist das Spektrometer in zwei Stufen aufgebaut: Im „Large Angle Spectrometer“ (LAS), werden Teilchen mit einem relativ großen Streuwinkel (bis 180 mrad) nachgewiesen. Zum Nachweis von Teilchen in einem Winkelbereich bis 30 mrad dient das „Small Angle Spectrometer“ (SAS). Abbildung 3.2 zeigt eine massstabsgetreue Darstellung des Spektrometers. Die Magnete SM1 und SM2 lenken Teilchen auf eine Kreisbahn. Nachfolgende Spurdetektoren messen die Flugbahn der Teilchen. Aus den gewonnen Daten wird der Impuls der Teilchen bestimmt. Zur Identifikation von Hadronen in der LAS-Stufe, wird ein ringabbildender Cherenkov-Detektor (RICH) verwendet. Eine Beschreibung des RICH findet sich in Kapitel 4. Zur Messung der Teilchenenergie befinden sich in beiden Spektrometerstufen elektromagnetische Kalorimeter (ECAL1, ECAL2) und hadronische Kalorimeter (HCAL1, HCAL2). 3.4 Trigger Control System Das Trigger Control System (TCS) steht am Anfang der Auslesekette. Da die anfallende Datenmenge während eines Spills die Kapazität des Datennahmesystems übersteigt, werden die Daten von der Triggereinheit vorsortiert. Die Triggereinheit prüft den Datenstrom bestimmter Detektoren auf spezielle Kriterien und gibt ein Triggersignal aus, wenn ein interessantes Ereignis detektiert wurde. Das Triggersignal steuert die Auslese der Daten 3 3.4 Trigger Control System Abbildung 3.2: Das COMPASS-II-Spektrometer besteht aus einem „Small Angle Spectrometer“ (SAS) und einem „Large Angle Spectrometer“ (LAS). Massstabsgetreue Ansicht, generiert mit TGEANT, Stand 2015. in den Auslesemodulen (siehe Kapitel 3.5). Da das Triggersignal jedoch nicht beliebig schnell generiert werden kann, erhalten die Auslesemodule den Trigger erst nachdem das physikalische Ereignis im Detektor passiert ist. Deshalb werden die Detektordaten kontinuierlich in einem Buffer zwischengespeichert und beim Empfangen eines Triggers an die Ausleseeinheiten gesendet. Zu jedem Trigger-Event werden zusätzliche Informationen wie Spillnummer, Eventnummer und Eventtyp übermittelt. Dadurch können die Daten eindeutig einem Event zugeordnet werden. Zudem markieren sie Signale „Begin Of Spill“ (BOS) und „End Of Spill“ (EOS) die zeitlichen Grenzen eines Spills. Neben der Generierung der Triggerinformation stellt das TCS-System ein Referenztaktsignal zur Verfügung, welches von allen Modulen im Experiment zur Synchronisation verwendet wird. Der Referenztakt des TCS-Systems hat eine Frequenz von 38,88 MHz und wird über Glasfaserleitungen an alle Module verteilt. Die Codierung des Referenztaktes und der zusätzlichen Triggerinformation erfolgt mit 155,52 Mb/s. Da alle Module ihren Systemtakt aus dem TCS-Datenstrom decodieren, beträgt die TCS-Referenzfrequenz in allen Modulen 155,52 MHz [5]. 4 3.5 Datennahmesystem 3.5 Datennahmesystem Die Erfassung und Weiterverarbeitung der Detektorinformation erfolgt durch ein modulares Datennahmesystem (DAQ2 ). Abbildung 3.3 zeigt den Aufbau des DAQ am COMPASSII. Die direkte Erfassung der analogen Detektorsignale erfolgt in sogenannten Frontend Modulen. Die Digitalisierung der Signale erfolgt entweder direkt auf dem Frontend Modul oder in den Auslesemodulen. Das TCS-Signal wird zentral an alle Auslesemodule übermittelt und steuert dort die Datenselektion. Die Digitalisierung der Signale erfolgt entweder über Analog-Digital-Wandler (ADC) oder über Schwellwertdiskriminatoren. Letztere werden zusammen mit Scalern zur Ratenmessung verwendet. Die Zeitmessung erfolgt durch Time-to-Digital-Converter (TDC). Anschließend werden die Daten von den Auslesemodulen gebündelt und im S-Link Format über optische Fasern an Computer und schlussendlich zur zentralen Datennahme (CDR) weitergeleitet. Die Zeitmessung der diskriminierten Signale des RICH-Detektors (siehe Kapitel 4) wurde bisher, wie in Abbildung 3.3 dargestellt, mit dem M1-TDC im GANDALF3 -Modul durchgeführt [6]. Im Zuge einer Modernisierung werden am RICH neue Photonendetektoren installiert. Eine Beschreibung des RICH und der neuen Photonendetektoren befindet sich in Kapitel 4. Die Zeitmessung der diskriminierten Signale des RICH-Detektors erfolgt in Zukunft durch den in dieser Arbeit entwickelten Time-to-Digital-Converter auf dem sogenannten „Aragorn-Modul“(siehe Kapitel 4.2), welches direkt auf die neuen Photonendetektoren montiert wird. Das GANDALF-Modul wird dann als Auslesemodul für die Aragorn-Karten verwendet. Detaillierte Informationen zu GANDALF-Modul finden sich in [7]. 4 RICH-Detektor Der Ring Imaging CHerenkov-Detektor (RICH) ist ein ringabbildender Cherenkov Detektor, der in der LAS-Stufe des Spektrometers zur Identifikation von Hadronen dient. Abbildung 4.1 (links) zeigt einen schematischen Querschnitt des RICH. Die Messung der Teilchen beruht auf dem Cherenkov-Effekt. Der Innenraum des Detektors ist mit einem Radiatorgas (C4 F10 ), mit einem Brechungsindex von 1,005 gefüllt. Beim Durchflug geladener Teilchen werden die Atome längs zur Flugrichtung der Teilchen kurzzeitig polarisiert und emittieren elektromagnetische Strahlung. Ist die Geschwindigkeit der Teilchen klein, wird durch destruktive Interferenz makroskopisch keine Strahlung emittiert. Ist die Teilchengeschwindigkeit größer als die Phasengeschwindigkeit des Lichts im dielektrischen Medium, kann keine vollständige Auslöschung mehr stattfinden, sodass unter einem bestimmten Winkel φch zur Teilchenbahn ein Lichtkegel emittiert wird. cosφch = 2 3 1 1 p nβ 1 + m2 /p2 Data Aquisition system Generic Advanced Numerical Device for Analytic and Logic Functions 5 (2) Abbildung 3.3: Das Datennahmesystem am COMPASS-Experiment. Stand 2012 [5]. Dabei ist β = v/c die Geschwindigkeit, m die Masse und p der Impuls des Teilchens. Die Lichtkegel werden im RICH von sphärischen UV-Spiegeln mit einer Gesamtfläche von etwa 21m2 auf Photonendetektoren fokussiert. Die Photonendetektoren sind in zwei Gruppen zu je 8 Kacheln aufgeteilt und befinden sich außerhalb der Strahlebene. Die Lichtkegel werden als Ringe auf die Photonendetektoren abgebildet (Siehe Abbildung 4.1, rechts). Aus dem Durchmesser der Ringe kann der Winkel φch bestimmt werden. Zusammen mit dem Impuls p, welcher aus Messungen anderer Detektoren bekannt ist, kann nach Gleichung (2) die Masse m eines Teilchens bestimmt werden. Der RICH-Detektor kann Pionen, Kaonen und Protonen in einem Energiebereich zwischen 5GeV /c und 43GeV /c unterschieden werden [8]. Abbildung 4.2 (links) zeigt eine Gesamtansicht des RICH. Im inneren Bereich der Detektorebene, wo die meisten Daten anfallen, werden Photonen von Mehrkanal-Photomultipliern (MAPMT4 ) registriert. Im äußeren Bereich sind derzeit MWPC5 mit CsI beschichteten Photokathoden eingesetzt. Diese werden im Zuge eines Detektor-Upgrades zukünftig durch sogenannte THGEM-Detektoren ersetzt (siehe Kapitel 4.1). Dafür wird auch eine neue Ausleseelektronik benötigt, welche unter anderem die Aragorn-Auslesekarte (siehe Kapitel 4.2) beinhaltet. Abbildung 4.2 (rechts) zeigt den Aufbau der Auslese-Elektronik für eine THGEM-Anode: Jeweils 96 Detektorsignale werden von 24 Analog-Karten ent4 5 Multi-Anode PhotoMultiplier Tubes Multi-Wire Proportional Chambers 6 4.1 Thick-GEM Abbildung 4.1: Links: RICH-Detektor im Querschnitt. Beim Durchflug von geladenen Teilchen wird Cherenkov-Strahlung emittiert und über sphärische UV-Spiegel ringförmig auf die Photonendetektoren außerhalb der Stahlebene fokussiert. Rechts: Exemplarische Messergebnisse der Photonendetektoren. Aus dem Durchmesser der Ringe, kann der Emissionswinkel der Photonen berechnet werden [9]. gegengenommen. Die Analog-Karten verstärken und diskriminieren die Signale und sich mit der Aragorn-Karte verbunden. Jede Aragorn-Karten verarbeitet die Signale von vier Analog-Karten. Jeweils 5 Aragorn-Slave-Karten sind wiederum mit einer Aragorn-MasterKarte verbunden, welche die zentrale Kommunikation mit dem Datennahmesystem steuert. 4.1 Thick-GEM Thick-GEM6 sind Elektronen-Multiplier die sich von GEMs im Wesentlichen durch die deutlich größere Bauform unterscheiden. Anstatt dünner Folien werden kupferbeschichtete Leiterplatten (PCB7 ) mit einer Dicke 0.2 - 1 mm verwendet. In die Leiterplatten werden in einem Raster Löcher mit einem Durchmesser von 0.4 mm und einem Pitch von 0.8 mm gebohrt (siehe Abbildung 4.3, rechts). Ein Vorteil von THGEMs gegenüber GEMs ist eine höhere mechanischen Stabilität, die es erlaubt große Detektorflächen zu bauen. Außerdem können THGEMs in standardisierten Herstellungsverfahren gefertigt werden und sind damit auch in kleinen Stückzahlen kosteneffizient. Abbildung 4.3 (links) zeigt den Aufbau THGEM basierter Photonendetektoren, wie sie im RICH eingesetzt werden sollen: Insgesamt drei THGEM Ebenen sind in geringem Abstand über einer Detektoranode gestapelt. Die oberste THGEM ist mit einer CsI-Schicht als Photokathode beschichtet. Zwischen Ober- und Unterseite jeder THGEM wird eine 6 7 Thick Gas Electron Multiplier Printed Circuit Board 7 4.2 Aragorn-Auslesekarte Abbildung 4.2: Links: Gesamtansicht des RICH-Detektors mit den Photonendetektoren. Die MWPC sollen zukünftig durch Thick-GEM (THGEM) ersetzt werden. Rechts: Die analogen Signale der THGEM-Anode werden und auf Analogkarten diskriminiert von Aragorn-Modulen ausgelesen [9]. Beschleunigungsspannung angelegt. Photonen können durch ein Fenster in den Detektor gelangen und in der Photokathode Elektronen herauslösen. Diese werden beim Durchgang der Löcher beschleunigt und ionisieren weitere Elektronen. Driftspannungen zwischen den THGEMs leiten die Elektronen jeweils zur nächsten Ebene. An der Detektor-Anode wird schließlich das analoge Signal ausgelesen. 4.2 Aragorn-Auslesekarte Die Aragorn-Karte-Karte ist Teil der neuen Ausleseelektronik, welche im Zuge eines Upgrades des RICH-Detektors entwickelt wird. Die vorliegende Arbeit fand im Rahmen der Entwicklung der Aragorn-Karte statt. Wie in Kapitel 4 beschrieben, werden die Signale der THGEM-Detektoren von AnalogKarten verstärkt und diskriminiert. Anschließend werden die diskriminierten Signale an Aragorn-Auslesekarten weitergeleitet. Auf der Aragorn-Karte findet für jedes Signal eine Messung des Detektierungszeitpunktes statt. Die gemessenen Zeitmarken werden anschließend im S-Link Format an das Datennahmesystem (siehe Kapitel 3.5) weitergeleitet. Abbildung 4.4 zeigt den Aufbau der Aragorn-Auslesekarte. Auf der Platine befinden sich insgesamt fünf Xilinx Artix-7 FPGA. In jedem der vier TDC-FPGA soll zur Zeitmessung der Detektorsignale ein Time-to-Digital-Converter mit 96 Kanälen und einer Zeitauflösung von 400ps implementiert werden, im Folgenden Aragorn-TDC genannt. 8 4.2 Aragorn-Auslesekarte Abbildung 4.3: Links: Querschnitt durch einen THGEM-Detektor. Rechts: Detailansicht und Maße der Bohrungen einer THGEM [10]. Gegenstand der vorliegenden Arbeit ist die Entwicklung des VHDL-Designs des AragornTDC, sowie die Implementierung im Artix-7 FPGA. Abschließend erfolgen Verifikation und Charakterisierung der Kenngrößen des Aragorn-TDC. Der fünfte FPFA ist der sogenannte Data-Merger-FPGA. Dieser nimmt die gemessenen Zeitmarken der TDC-FPGAs entgegen, formatiert sie im S-Link Format und schickt sie an das Datennahmesystem, bzw. die Master-Karte weiter. Außerdem Empfängt er das Triggersignal vom TCS-System (siehe Kapitel 3.4) und decodiert daraus den Referenztakt TCS-Clock. Um das Referenzsignal von Phasenrauschen zu bereinigen wird ein LMK04906 Jitter-Cleaner-Chip verwendet [5]. Sowohl Triggersignal als auch TCS-Clock werden vom Data-Merger-FPGA über differentielle LVDS-Buffer an die vier TDC-FPGAs verteilt. Die Master-Karte schickt zusätzlich das empfangene TCS-Signal über einen optischen CXP-Transceiver an die Slave-Karten weiter. Auf der Maser-Karte erfolgt die Kommunikation zu den Slave-Karten wie bereits erwähnt über einen CXP-Transceiver, der über 12 optische Doppelfasern (RX,TX) verfügt und mit einer Datenrate von 3,1104Gb/s betrieben wird. Auf den Slave-Karten wird der CXP-Transceiver nicht benötigt, weshalb die Verbindungsbuchse nicht bestückt wird. Bei Bedarf kann sie aber einfach nachbestückt werden, um eine Slave-Karte in eine MasterKarte umzukonfigurieren. Zur Kommunikation mit dem Datennahmesystem bzw. mit der Master-Karte wird ein SFP+-Transceiver mit zwei optischen Fasern (RX,TX) und einer Datenrate von ebenfalls 3,1104Gb/s verwendet. Eine detaillierte Beschreibung der optischen Transceiver und deren Konfigurierung findet sich in [5]. Eine Übersicht, über den Aufbau und die wichtigsten Signalwege auf der Aragorn-Karte, ist in Abbildung 4.4 gegeben. 9 4.2 Aragorn-Auslesekarte Abbildung 4.4: Das TCS-Signal (blau) wird auf der Aragorn-Masterkarte vom DataMerger-FPGA über den SFP+-Transceiver empfangen und über LVDS-Buffer (nicht eingezeichnet) an die vier TDC-FPGAs verteilt. Außerdem leitet die Master-Karte das TCS-Signal über den CXP-Transceiver an die fünf Slave-Karten weiter. Das Datensignal (gelb) der TDCs wird vom Data-Merger-FPGA entgegengenommen und über den SFP+Transceiver ans Datennahmesystem bzw. die Master-Karte weitergeleitet. 10 4.3 Time-to-Digital-Converter 4.3 Time-to-Digital-Converter Ein Time-to-Digital-Converter (TDC) wandelt kontinuierliche Zeitintervalle, oder einzelne Ereignisse (Hit) auf einem Signal in digitale Werte um. Die einfachste Implementierung eines TDC ist ein digitaler Zähler, der die Perioden eines Referenztaktsignals der Frequenz Fref mitzählt. Die Quantisierungseinheit LSB 8 eines solchen TDC, ist gleich der Taktperiode des Referenzsignals. LSB = T0 = 1/Fref (3) Abbildung 4.5 (links) zeigt die Quantisierungscharakteristik eines idealen TDC. Auf der x-Achse ist die Zeitskala in Einheiten von LSB aufgetragen, auf der y-Achse der binäre Ausgabewert des TDC. Es ist offensichtlich, dass durch die Quantisierung die Information über den wahren Zeitpunkt THit eines Hits verloren geht. Der Quantisierungsfehler ist definiert als = [T ] − THit (4) und beschreibt die Abweichung des gemessen Wertes [T ] von der wahren Dauer THit [11]. Da Beginn und Ende eines Zeitintervalls in der Regel unabhängig von der Referenzfrequenz sind, liegt der Quantisierungsfehler jeweils gleichverteilt im Intervall −LSB/2 bis +LSB/2. Die Standardabweichung eines einzelnen Hits ist gegeben als [12]. LSB ≈ 0, 289LSB σ= √ 12 (5) Da Zeitintervalle durch ein Start- und ein Stoppsignal begrenzt sind, ergibt sich die Standardabweichung für ein gemessenes Zeitintervall aus quadratischer Fehleraddition. LSB (6) σ = √ ≈ 0, 408LSB 6 Dies gilt aber nur für Intervalle zufälliger Länge. Werden konstante Zeitintervalle gemessen, so hängt der Quantisierungsfehler von der Länge des Zeitintervalls ab. Jedes Zeitintervall lässt sich in ein ganzzahliges Vielfaches von LSB und den Bruchteil f (fractional part) zerlegen. Die Zeitauflösung in Abhängigkeit des Bruchteils f ist für einen idealen TDC gegeben durch [13]. σ(f ) = LSB p f (1 − f ) (7) Wie in Abbildung 4.5 (rechts) zu erkennen ist, hat die Standardabweichung für f = 0, 5 ein Maximum von σmax = 0, 5LSB. Nähert sich der Bruchteil f einem ganzzahligen Vielfachen von LSB, geht der Quantisierungsfehler gegen null. Durch Integration der Standardabweichung über f in den Grenzen 0 < f < 1, erhält man die mittlere Standardabweichung σideal eines idealen TDC [13]. 8 Least Significant Bit 11 4.3 Time-to-Digital-Converter σideal = π · LSB ≈ 0.39LSB 8 (8) Abbildung 4.5: Links: Quantisierungscharakteristik eines idealen TDC. Der Zeitpunkt eines Hits THit wird einem binären Ausgabewert Bout zugeordnet. Der Quantisierungsfehler beschreibt die Differenz zwischen Messwert und wahrem Zeitpunkt THit . Rechts: Auf LSB normierte Standardabweichung σ einer Messung in Abhängigkeit des Bruchteils f (ebenfalls auf LSB normiert). Die mittlere Standardabweichung beträgt σ = 0, 39LSB. [13]. Gleichung (7) beschreibt die Standardabweichung eines idealen TDC, dessen Zeitauflösung nur vom Quantisierungsfehler beeinflusst wird. In der Realität wirkt sich Jitter9 sowohl auf dem Daten, als auch auf dem Taktsignal negativ auf die erreichbare Zeitauflösung aus. Außerdem verhindert die Nichtlinearität der Konvertierungscharakteristik, dass die ideale Zeitauflösung erreicht werden kann. Unter dem Begriff Nichtlinearität versteht man jede Abweichung der Konvertierungscharakteristik von ihrer idealen Form. Die differentielle Nichtlinearität (DNL) ist definiert als die Abweichung jedes Quantisierungsschritts (TDC-Bin) vom idealen Wert LSB. Die integrale Nichtlinearität ist die Abweichung des i-ten Quantisierungszeitpunktes Ti vom nominellen Wert i · LSB [11]. Die Minimierung der Nichtlinearität spielt bei der Implementierung des Aragorn-TDCs eine entscheidende Rolle und wird ausführlich in Kapitel 7 besprochen. Für Anwendungen, in denen eine Zeitauflösung <1 ns benötigt wird, sind zählerbasierte TDC aufgrund der benötigten Taktrate von >1 GHz ungeeignet. Um die beim AragornTDC angestrebten Zeitauflösung von 400ps zu erreichen, wäre nach der Zählermethode eine Taktfrequenz von 2,5 GHz notwendig. Im Artix-7 liegt die maximale Taktrate jedoch nur bei 600 MHz [14]. Um die angestrebte Zeitauflösung trotzdem realisieren zu können, kommt im Aragorn-TDC die sogenannte „Shifted Clock Sampling“-Methode (SCS) zum 9 Phasenrauschen 12 4.3 Time-to-Digital-Converter Einsatz (siehe Abbildung 4.6). Dabei wird das Datensignal, auf dem die Zeitmessung stattfinden soll, mit den Dateneingängen von insgesamt k D-Flipflops verbunden. Die Flipflops bilden zusammen das sog. TDC-Register. Jedes Flipflop wird mit einem eigenen Taktsignal CLKk betrieben. Jedes der k Taktsignale ist um eine konstante Phase ∆φ phasenverschoben, sodass die Daten an den Flipflop mit einem konstanten Zeitversatz eingelesen werden. Die effektive Abtastrate beträgt also k-mal die Frequenz des Taktsignals. Die Summe aller Phasenverschiebungen beträgt 2π, sodass gilt: ∆φ = 2π/k. Die Zeitdifferenz, mit der die Daten quantisiert werden beträgt in diesem Fall LSB = TCLK /k. Zur Umsetzung der SCS-Methode im Aragorn-TDC, wird ein TDC-Register aus 8 DFlipflops aufgebaut. Mit einem Clock-Manger werden 8 Taktsignale mit einer konstanten Phasenverschiebung von je 2π/8 = 45◦ erzeugt. Mit diesem Aufbau kann mit einer Taktfrequenz von 311,04MHz eine theoretische Zeitauflösung von LSB = 401, 9ps realisiert werden. Abbildung 4.6: Aufbau eines TDC-Register nach der Shifted Clock Sampling-Methode. [6] 13 5 Field Programmable Gate Array Field Programmable Gate Array (FPGA) sind integrierte Schaltkreise (IC) aus der Familie der programmierbaren Logik. Darunter werden alle digitalen Schaltkreise gezählt, deren Logikfunktion vom Anwender programmiert werden kann. Neben FPGA stellen CPLD (Complex Programmable Logic Device) die zweite große Gruppe innerhalb der programmierbaren Logik dar. Beide unterscheiden sich damit grundlegend von ASICs (Application Specific ICs), deren Aufbau auf die Erfüllung anwendungsspezifischer Funktionen optimiert ist. ASICs sind der programmierbaren Logik in Geschwindigkeit, Flächennutzung und Energieeffizienz deutlich überlegen [15], haben aber den Nachteil, auf eine Anwendung limitiert zu sein. Weiterhin rechnet sich der Einsatz von ASICs aufgrund der höheren Entwicklungskosten im Schnitt erst ab einer Fertigungsmenge von einigen tausend Stück [16]. Abbildung 5.1: Schematischer Aufbau eine FPGA. [17] Abbildung 5.1 zeigt schematisch den Aufbau eines FPGA. Die Logikelemente in so genannten „Configurable Logic Blocks“ (CLB) gruppiert. Die Logikblöcke sind regelmäßig angeordnet, daher die Bezeichnung „Array“. Zwischen ihnen verläuft horizontal und vertikal, ein komplexes Netz aus Verbindungsleitungen (Interconnect Wires). Über programmierbare Schaltmatritzen (Switch-Box) werden die CLB bzw. Interconnect Wires miteinander verbunden. I/O-Blöcke enthalten verschiedene Signaltreiber (Buffer) und schaffen die Verbindung zwischen der internen Logik und den physischen Anschlusspins des IC. Moderne FPGA beinhalten weitere, anwendungsspezifische Funktionseinheiten, z.B. Block-RAM, Digitale Signalprozessoren (DSP) oder Clock Manager zur Synthese von Taktsignalen. 14 Heutzutage sind die meisten FPGA SRAM10 basiert [16]. Das bedeutet, die gewünschte Konfiguration der internen Logik wird bei der Progammierung des FPGA in SRAMSpeicherzellen hinterlegt. Jede Speicherzelle ist mit Multiplexern oder Schalttransistoren („Pass-Transistoren“ [18])verbunden. Die Pass-Transistoren stellen im Verbindungsnetzwerk letztendlich die elektrischen Verbindungen zwischen einzelnen Komponenten her (siehe Abbildung 5.2). Es handelt sich dabei um statische Verbindungen, also permanent leitend oder nichtleitend, welche nur durch Neuprogrammierung umkonfiguriert werden können. Ein Nachteil der Bauart mit flüchtigen Speichern ist, dass die Konfiguration nach jeder Unterbrechung der Versorungsspannung erneut geladen werden muss. FPGA sind deshalb nach einem Neustart erst nach einer kurzen Konfigurationszeit einsatzbereit. Abbildung 5.2: Schematische Darstellung der Verbindungsressourcen im FPGA. Schalttransistoren (rot) werden von SRAM-Zellen angesteuert und schaffen leitende Verbindungen zwischen einzelnen Leitungen des Verbindungsnetzwerks. [17] Im Gegensatz zu einem Prozessor findet im FPGA keine sequentielle Abarbeitung von Programmbefehlen statt. Vielmehr beschreibt der Programmcode die statische Verschaltung der Komponenten im FPGA. Die Funktion der Schaltung wird i.d.R. in einer Hardwarebeschreibungsprache (HDL) formuliert. In dieser Arbeit wurde dazu VHDL11 verwendet. Der VHDL-Code wird von einer Synthesesoftware in eine Netzliste übersetzt. Diese enthält, ähnlich wie ein Schaltplan, alle verwendeten Bauteile und deren Verschaltung. Das synthetisierte Design kann mithilfe einer Simulationssoftware auf Funktion geprüft werden. Danach erfolgt die FPGA-spezifische Implementierung des Designs in die gewünschte Hardware. Dabei wird die Netzliste in real vorhandene Logikkomponenten des FPGA übersetzt (Translate, Map). Anschließend werden im Place & Route-Schritt alle Komponenten im FPGA platziert und verdrahtet. Zuletzt wird eine Bitstream-Datei 10 11 Static Random Acces Memory Very High Speed Integrated Circuit Hardware Description Language 15 5.1 Der Xilinx Artix-7 Tabelle 5.1: Auszug aus der Spezifikation des Artix-7 XC7A200T [19] Slices Logic Cells 33.650 215.360 DSP Slices 740 Block RAM [36Kb] CMT 365 10 User I/O 500 erzeugt, welche in den FPGA geladen werden kann. 5.1 Der Xilinx Artix-7 Auf der Aragorn-Karte werden insgesamt 5 Artix-7 FPGA des Herstellers Xilinx verwendet. Der Artix-7 ist Teil der aktuellen12 „7-Series“ FPGA-Familie von Xilinx. Weitere (leistungsstärkere) Modelle sind der Kintex-7 und der Virtex-7. Die 7-Series FPGAs werden in 28nm Prozesstechnologie hergestellt und enthalten bis zu 300.000 Slice mit knapp 2 Mio. Logikzellen im Fall des Virtex-7 [19]. Tabelle 5.1 enthält die Spezifikation des im Aragorn-TDC Projekt verwendeten Artix-7 XC7A200T. Eine Herausforderung dieser Arbeit stellte die Optimierung der Signalverdrahtung des TDC-Designs dar (siehe Kapitel 7). Vorraussetzung dafür ist die Kenntnis der Logik-, und Verbindungsressourcen des Artix-7 FPGA, die im folgenden Abschnitt kurz vorgestellt werden. Die kleinste Einheit programmierbarer Logic bilden sogenannte „Slice“-Elemente. Beim Artix-7 enthält jedes Slice vier Lookup-Table (LUT), acht Speicherelemente in Form von flankengesteuerten D-Flipflops, diverse Multiplexer und die sogenannte Carry-Logic. Diese besteht aus je vier Multiplexern und XOR13 -Gattern und wird für die Implementierung schneller Addition/Subtraktion benötigt. Die Lookup-Table benutzt man zur Generierung von Logik-Funkionen. Jeder LUT hat sechs unabhängige Eingänge und zwei unabhängige Ausgänge. Dies ermöglicht die Implementierung einer Booleschen Funktion mit sechs Variablen und einem Ausgangssignal. Alternativ können auch zwei Boolesche Funktionen mit je fünf Variablen realisiert werden. In diesem Fall müssen aber von beiden Funktionen die gleichen Eingänge verwendet werden. Multiplexer können mehrere Funktionsgeneratoren kombinieren und erzeugen so Funktionen mit bis zu acht Eingängen. Die Signalverzögerung (Propagation Delay) durch einen LUT ist unabhängig von der implementierten logischen Funktion. Die Signallaufzeit durch das gesamte Slice-Element ist von der Verschaltung der internen Komponenten abhängig. Im Artix-7 gibt es zwei verschiedene Slice-Typen: SliceL und SliceM. SliceM bieten, neben den beschriebenen Funktionen, die Option die Funktionsgeneratoren als synchrones RAM (Distributed-RAM14 ), oder als 32-Bit Schieberegister zu konfigurieren. Zum Aufbau sequentieller Schaltungen müssen Signalzustände in der Zeit zwischen zwei 12 Stand: Dezember 2015 Logisches Exklusiv-Oder 14 Random Access Memory 13 16 5.2 Block RAM Taktflanken zwischengespeichert werden. Als Speicherelemente stehen dazu in jedem Slice acht taktflankengesteuerte D-Flipflop zur Verfügung. Jeweils vier davon können optional als Latch konfiguriert werden. Abbildung 5.3 (rechts) zeigt schematisch den Aufbau eines SliceL. Zur besseren Übersicht sind die Funktionsgruppen farblich markiert. Jeweils 2 Slice bilden zusammen einen „Configurable Logic Block“ (CLB). Die CLB sind über eine programmierbare Switch Matrix mit dem Verbindungsnetzwerk (Routing Matrix) des FPGA verbunden. Innerhalb eines CLB besteht außer der Carry-Chain keine direkte Verbindung zwischen den Slice. Die Carry-Chain verbindet benachbarte Slice vertikal miteinander, um schnelle arithmetische Operationen zu realisieren. Abbildung 5.3 (links) zeigt schematisch den Aufbau eines CLB. Im FPGA sind die CLBs spaltenweisen angeordnet und deren Position (sowie die Position der Slice) ist durch ein Koordinatensystem eindeutig definiert. Abbildung 5.3: Links: Ein CLB besteht aus zwei Slice-Elementen, welche jeweils mit einer Switch-Matrix verbunden sind. Die Anschlüsse der Carry-Chain (CIN , COU T ) verbinden CLBs direkt miteinander. Rechts: Schematischer Aufbau und Struktur eines SliceL der Xilinx 7-Series. [20] 5.2 Block RAM Um größere Datenmengen zu speichern besteht die Möglichkeit, SliceM-Elemente als Distrubuted-RAM zu konfigurieren. Die Implementierung von Speicher in Slice-Elementen ist aber unwirtschaftlich, da bereits für geringe Speichertiefen enorme Logikressourcen benötigt werden. Deshalb verfügt der Aritx-7 über Block RAM-Elemente mit einer Kapazität von jeweils 36Kb. Neben der Nutzung als Single- oder Dual-Port-RAM, kann der Block 17 5.3 Taktsignale im FPGA RAM auch als FIFO15 konfiguriert werden. 5.3 Taktsignale im FPGA Synchrone digitale Schaltungen bestehen in der Regel aus verschiedenen funktionalen Gruppen, welche nicht selten mit unterschiedlichen Taktsignalen betrieben werden. Der optimalen Verteilung von Taktsignalen im FPGA kommt deshalb eine besondere Rolle zu. Generell ist, wie bei allen Verbindungsressourcen im FPGA, eine möglichst kurze Signallaufzeit erstrebenswert. Bei Taktnetzen kommen außerdem folgende Anforderungen hinzu: Zum einen soll der Taktversatz („Clock Skew“), also die Laufzeitdifferenz des Taktsignals zu verschiedenen Logikblöcken möglichst gering sein. Dies wirkt sich vor allem auf die mögliche Maximalfrequenz aus, mit der man die Schaltung betreiben kann (siehe Abschnitt 5.5). Zum anderen müssen Leitungskapazitäten bei jeder Taktflanke umgeladen werden. Da dies maßgeblich zur Verlustleistung einer Schaltung beiträgt, soll der Leistungsbedarf des Taktnetzwerkes möglichst gering sein [18]. Deshalb erfolgt die Taktverteilung in 7-Series FPGA über dedizierte Taktnetzwerke. Der Artix-7 ist dazu in zehn sogenannte „Clock Regions“ gegliedert. Diese sind nebeneinander in zwei, etwa gleich breiten Spalten angeordnet und haben eine Höhe von jeweils 50 CLB. Zwischen beiden Spalten verläuft die vertikale Hauptachse des Taktnetzwerks („Clock Backbone“). Hierüber können insgesamt 32 unterschiedliche Taktsignale im gesamten FPGA zur Verfügung gestellt werden. Von der Hauptachse zweigen in jede Clock Region horizontal verlaufende Taktleitungen („HROW“) ab. Jede HROW besteht aus 12 Leitungen. Innerhalb einer Clock Region können also maximal 12 verschiedene Taktsignale verwendet werden. Getrieben werden Taktsignale von speziellen Buffern (BUFG, BUFH, BUFR). Durch die H-Baum ähnliche Struktur des Taktnetzes wird ein minimaler Clock Skew gewährleistet [21]. Weiterhin werden ungenutzte Abschnitte des Taktnetzwerks automatisch deaktiviert, um die Verlustleistung zu minimieren [14]. 5.4 Clock Management Tile Im Aragorn-TDC werden zur Realisierung des SCS-Algorithmus (siehe Abschnitt 4.3) acht Taktsignale gleicher Frequenz und jeweils 45° Phasenverschiebung benötigt. Zur Genese bzw. Modifikation von Taktsignalen enthält der Artix-7 in jeder Clock Region eine sogenannte „Clock Management Tile“(CMT). Jede CMT beinhaltet eine PLL16 und einen „Mixed Mode Clock Manager“ (MMCM), welcher ebenfalls PLL-basiert arbeitet. MMCM/PLL werden zur Frequenzsynthese, als Jitter-Filter oder zur Beseitigung von Taktversätzen („Deskew“) genutzt. Abbildung 5.4 zeigt schematisch den Aufbau eines MMCM. Im Wesentlichen handelt es sich dabei um eine PLL, also eine Phasenregelschleife, bestehend aus einem spannungs15 16 First In First Out Phase-Locked-Loop 18 5.4 Clock Management Tile Abbildung 5.4: Schematischer Aufbau eines Mixed Mode Clock Manager. [14] gesteuerten Oszillator (VCO17 ) und einem Phasenkomparator (PFD18 ). Über spezielle Multiplexer wird das Eingangssignal („Inputclock“) ausgewählt und an den PFD angelegt. Am zweiten Eingang des PFD liegt das rückgekoppelte Ausgangssignal des VCO an. Der PFD erzeugt ein Steuersignal, welches proportional zur Phasen- und Frequenzdifferenz der beiden Eingangssignale ist. Dieses Steuersignal wird durch eine Charge-Pump (CP) verstärkt, von einen Loopfilter (LP) geglättet und dient danach als Referenzspannung für den VCO. Das Lock-Signal zeigt eine feste Phasenbeziehung und damit die korrekte Funktion des MMCM an. Über programmierbare Teiler D, On und M kann man die Frequenz der acht Ausgangssignale individuell anpassen [14]: fout,n = finput M D · On (9) Die Phasenlage der Ausganssignale kann ebenfalls für jeden Kanal individuell definiert werden. Außerdem kann eine globale Phasenverschiebung aller Ausgänge durch die Phase des Feedbacksignals CLKFBOUT programmiert werden. Im Besonderen wirkt sich jede Verzögerung des CLKFBOUT Signals auf die Phasenlage aller Ausgangssignale aus. Diese Funktion erlaubt es z.B. das Delay von Takttreibern zu kompensieren. Bei der Implementierung der beiden MMCMs im Aragorn-TDC verursachten leitungsbedingte Laufzeitunterschiede des Feedbacksignals einen Taktversatz zwischen den MMCMs (siehe Kapitel 7.2). 17 18 Voltage Controlled Oscillator Phase-Frequency Detector 19 5.5 Timingbudget synchroner Schaltungen 5.5 Timingbudget synchroner Schaltungen In der Realität kommt es beim Betrieb digitaler Schaltungen unweigerlich zu Signalverzögerungen in Logikkomponenten und auf den Verbindungsleitungen. Abbildung 5.5 veranschaulicht beispielhaft das Timing einer synchronen Registerstufe. Zwei D-Flipflop werden mit demselben Taktsignal betrieben, welches aber aufgrund der Signallaufzeit mit dem Zeitversatz (skew) tSkew am zweiten Flipflop ankommt. Das Ausgangssignal Q wird am ersten Flipflop nach der Verzögerungszeit (Propagation Delay) tpd(F F ) relativ zum Taktsignal bereitgestellt und benötigt zum Passieren der kombinatorischen Logik die Zeit tKomb . Damit das Signal D anschließend am zweiten Flipflop korrekt eingelesen wird, muss es bereits um die Setupzeit tSetup vor der nächsten Taktflanke am Eingang anliegen. Abbildung 5.5: Timingbudget einer synchronen Digitalschaltung. Nähert sich die Taktrate CLK der Maximalfrequenz, geht die eingezeichnete Taktreserve gegen null. Verändert nach [21]. Aus Abbildung 5.5 b) geht hervor, dass die Schaltung sich maximal mit der Frequenz: fmax = (tpd(F F ) + tKomb + tSetup − tSkew )−1 (10) betreiben lässt. Der Taktversatz ist per Definition negativ und verringert im konkreten Fall die Maximalfrequenz [21]. Um die korrekte Funktion von FPGA Entwürfen sicherzustellen, muss bei der Platzierung und Verdrahtung die Einhaltung des Timingbudgets überprüft werden. Dazu werden in der statischen Timinganalyse die Laufzeiten aller Signalpfade berechnet. Analog zu Gleichung 10 kann damit überprüft werden, ob sich die Schaltung mit der vorgesehenen Taktrate betreiben lässt. 20 6 VHDL Entwurf des Aragorn-TDC Ziel dieser Arbeit war die Implementierung eines 96 Kanal Time-to-Digital-Converters (TDC), mit einer Zeitauflösung von 400ps, in einen Artix-7 FPGA der Firma Xilinx. Die Arbeit fand im Rahmen der Entwicklung der Aragorn-Auslesekarte statt. Neben Entwicklung und Verifikation von Teilen des VHDL Quellcodes, lag der Schwerpunkt dieser Arbeit auf der Implementierung des fertigen Designs (Kapitel 7) im FPGA, sowie der Verifikation der Kenngrößen des TDC (Kapitel 8). Dieses Kapitel widmet sich dem VHDL Design des Aragorn-TDC. Dabei werden alle Module, sowie deren funktionaler Zusammenhang im TDC, bzw. auf der AragornKarte vorgestellt. Abbildung 6.1 zeigt die Top-Level Ansicht des Aragorn-TDC, sowie die wichtigsten Signalverbindungen. Zu Beginn der Arbeit an diesem Projekt war bereits ein Großteil der eingezeichneten Module vorhanden oder befanden sich in der Entwicklung. Die eigenständige Arbeit am VHDL-Projekt beschränkt sich hauptsächlich auf die Entwicklung der „Serializer“-Komponente. Dies umfasst neben der Programmierung des Quellcodes auch die Entwicklung einer geeigneten Testbench, sowie die Simulation des Moduls. Außerdem muss der Serializer in den Gesamtentwurf eingebettet werden. Als Programmierumgebung wird Vivado (v2015.1) von Xilinx verwendet, zur Simulation Modelsim SE-64 (v10.0b) der Firma Mentor Graphics Corporation. Abbildung 6.1: Top-Level Schema des Aragorn-TDC. 21 6.1 Das TCS-Interface 6.1 Das TCS-Interface Der Data-Merger-FPGA empfängt über den SFP+ Transceiver das codierte Triggersignal des TCS-Systems (siehe Abschnitt 3.4). Im Data-Merger wird daraus der 155,52 Mhz TCS-Referenztakt decodiert. Zusätzlich im TCS-Signal enthaltene Triggerinformationen werden als serieller Datenstrom zu den TDC-FPGAs weitergeleitet. Im TDC-FPGA decodiert das TCS-Interface aus dem Datenstrom das Trigger- und Begin-of-Spill-Signal für den Trigger-Catching Prozess im TDC-Interface. Außerdem werden die Spillnummer, die Eventnummer und der Event-Typ decodiert. Diese Daten werden separat in einem FIFO zwischengespeichert und von der Serializer-Komponente beim Schreiben der S-Link Header ausgelesen. 6.2 Das Clock-Interface Das Clock Interface generiert alle im TDC-FPGA verwendeten Taktsignale. Dazu wird das vom Data-Merger-FPGA kommende TCS-Taktsignal von 155,52 MHz auf die Eingänge von zwei „Mixed Mode Clock Manager“(MMCM, siehe Kapitel 5.4) gegeben. Die MMCM sind als IP19 -Core implementiert und können jeweils maximal 7 Ausgangssignale generieren. Frequenz und Phasenlage im Bezug zum Eingangssignal können im Vivado „Clocking-Wizard“ für jeden Kanal separat eingestellt werden. Abbildung 6.2 zeigt exemplarisch die Einstellungen des ersten MMCM im Clocking-Wizard. Dieser generiert vier 311,04 MHz Taktsignale, mit einer Phase von 0°, 45°, 90° und 135°, sowie den 155,52 MHz Systemtakt der ebenfalls eine Phase von 0° hat. MMCM_2 generiert vier 311,04 MHz Taktsignale mit einer Phase von 180°, 225°, 270° und 315°. Abbildung 6.2: Vivado Clocking Wizard: MMCM_1 generiert vier der acht benötigten Taktsignale, mit einer Frequenz von 311.04 MHz und je 0°, 45°, 90° und 135° Phasenverschiebung relativ zum Eingangssignal, sowie den Sytemtakt sys_clk mit einer Frequenz von 155,52MHz. 19 „Interlectual Property“ 22 6.3 Config Master 6.3 Config Master Über den Config-Bus können Module konfiguriert oder Statusinformationen ausgelesen werden. Der Bus ist nach dem Master-Slave-Prinzip aufgebaut. Der Bus-Master kann jeden Slave über eine individuelle 16-bit Adresse ansprechen und über Kontrollleitungen Lese-, bzw. Schreibbefehle senden. Slave-Module lesen/schreiben von getrennten 16-Bit Datenleitungen und bestätigen mit einem „Acknowledge-Flag“. Abbildung 6.3 zeigt den Aufbau des gesamten Bus-Systems auf der Aragorn-Karte: Daten vom/zum SFP+ Transceiver werden im Config-FIFO zwischengespreichert. Der Config-Master im Data-MergerFPGA kontrolliert verschiedene Config-Slave-Module. Darunter sind vier TDC Slave-LinkModule, welche jeweils mit einem Config-Master in den TDC-FPGAs verbunden sind. Im TDC-FPGA kontrolliert der Config-Master seinerseits mehrere Slave-Module. Abbildung 6.3: Aufbau und Datenfluss des Config-Bus auf dem ARAGORN-Board. 6.4 Das TDC-Interface Das TDC-Interface ist die zentrale Komponente im Aragorn-TDC (siehe Abbildung 6.1). Neben dem Trigger-Catching und einem 14Bit Coarsetime-Counter enthält es 96 TDCModule, in denen jeweils die Zeitmessung für ein Detektorsignal erfolgt. Das MergerModul fasst die Ausgangsdaten der TDC-Module zu einem Datenpaket zusammen. 6.4.1 Coarsetime Counter Der Coarsetime-Counter ist ein synchroner 14Bit-Zähler, welcher mit dem um 0° phasenverschobenen Taktsignal hochgezählt und mit dem Begin-of-Spill-Signal zurückgesetzt wird. Der Zählerstand entspricht also der Dauer des laufenden Spills in Einheiten der ganzen Taktperiode (Zeitauflösung 3,215ns). Diese Zeitinformation wird zur Berechnung der Grenzen des Suchfensters im Trigger-Catching (Abschnitt 6.4.2) und zur Zeitmessung in den TDC-Modulen benötigt (Anschnitt 6.4.3). 23 6.4 Das TDC-Interface trigger (1) window_low (14) window_hi (14) event_no (6) Abbildung 6.4: Aufbau des 35-Bit Datenworts für das Trigger-Buffer-FIFO. 6.4.2 Trigger Catching Die Trigger-Catching-Komponente empfängt das Trigger-Signal vom TCS-Interface und codiert alle zur Bearbeitung des Triggers notwendigen Informationen in einem 35-Bit Datenwort (Abbildung 6.4). Dieses Datenwort wird an alle TDC-Module geschickt und dort im Trigger-Buffer-FIFO abgelegt. Auf diese Weise können schnell aufeinanderfolgende Trigger zwischengespeichert und sequentiell abgearbeitet werden. Abbildung 6.4 zeigt den Aufbau eines Datenworts: Trigger gibt an, ob es sich um einen „echten“ oder einen „Fake-Trigger“ handelt (1=real, 0=fake). Fake-Trigger werden nach einer einstellbaren Maximalzeit automatisch generiert und dienen dazu, nicht mehr benötigte Hits aus dem RAM zu entfernen. Die Zeitmarken window_low und window_hi und haben eine Breite von jeweils 14 Bit. Sie markieren die Grenzen des Suchfenster für den Trigger-MatchingProzess (siehe Abschnitt 6.4.3) und berechnen sich wie folgt: window_low = coarsetime − latency window_hi = coarsetime − latency + window (11) (12) Dabei ist coarsetime der aktuelle Wert des Coarsetime-Counters und gibt den Zeitpunkt des Triggers an. Die Parameter window und latency werden über den Config-Bus programmiert. Außerdem werden alle Trigger mitgezählt und so die event_no im laufenden Spill bestimmt. 6.4.3 TDC-Module Abbildung 6.5 zeigt Aufbau eines TDC-Kanals. Der Zustand des Datensignals wird im TDC-Register eingelesen und synchronisiert. Im Decode-Schritt wird aus dem Bitmuster des synchronisierten TDC-Register, zusammen mit dem Zählerstand des CoarsetimeCounters, die Zeitinformation decodiert und in einem Dual-Port-RAM zwischengespeichert. Wird ein Triggersignal empfangen, durchsucht der Triggermatching-Prozess den RAM nach passenden Einträgen und schreibt die gefundenen Daten in ein AusgangsFIFO, wo sie anschließend vom Merger ausgelesen werden. Das TDC-Register arbeitet nach der Shifted-Clock-Sampling Methode (siehe Kapitel 4.3) und besteht aus acht taktflankengesteuerten D-Flipflops. Das Eingangssignal ist mit dem Dateneingang aller Flipflops verbunden. Bei steigenden Taktflanken wird der Zustand des Eingangssignals auf den Ausgang übernommen und bis zur nächsten Taktflanke gespeichert. Jedes Flipflop wird mit einem der acht phasenverschobenen Taktsignale betrieben. Das Datensignal wird also jeweils im Abstand von 81 Taktperiode eingelesen. Solange das Datensignal sich nicht ändert, hat das TDC-Register konstant den Wert ’00000000’ oder ’11111111’ (je nach Pegel des Eingangssignals). Ändert sich der Pegel des Eingangssignals („Hit“ im Detektor), wird der neue Zustand bei der nächsten Taktflanke an der entsprechenden Position ins TDC-Register übernommen (siehe Abbildung 6.6). Aus der Position 24 6.4 Das TDC-Interface Abbildung 6.5: Aufbau eines TDC-Moduls des Bitwechsels („bitswap position“) im TDC-Register, kann der genaue Zeitpunkt des Hits innerhalb einer Taktperiode bestimmt werden. Da jedes TDC-Flipflop mit einem anderen Taktsignal betrieben wird, läuft das TDCRegister nicht synchron zum Systemtakt. Bei hohen Taktraten kann nicht ohne weiteres davon ausgegangen werden, dass alle Ausgangssignale das Timingbudget einhalten und von nachfolgenden Bauteilen korrekt eingelesen werden (siehe Abschnitt 5.5). Bei der geplanten Taktfrequenz von 311,04 MHz steht einem Signal im ungünstigsten Fall ein Timingbudget von ≤ 18 Taktperiode, also maximal 0,4ns zur Verfügung. Bevor die Zeitinformation aus dem TDC-Register decodiert werden kann, müssen die Ausgangssignale der Flipflops schrittweise zum Systemtakt synchronisiert werden. Dies geschieht in einem 2-stufigen SynchronisationsregisterJede Stufe besteht, wie das TDC-Register, aus acht D-Flipflops. Alle Signale werden mit einer Phasenverschiebung von maximal 180° zur vorherigen Stufe eingetaktet. Auf diese Weise wird ein Timingbudget von mindestens 12 Taktperiode, also etwa 1,6ns sichergestellt. Wie im vorherigen Absatz besprochen, enthält das synchronisierte TDC-Register die Information über den Zeitpunkt des Hits auf dem Datensignal. Allerdings kann damit nur der relative Zeitpunkt innerhalb einer Taktperiode bestimmt werden. Um den absoluten Zeitpunkt (relativ zum Begin-of-Spill) zu bestimmen, muss im Decoding Prozess zusätzlich noch der Zählerstand des Coarsetime-Counters ausgewertet werden. Die absolute Zeitmarke eines Hits THit berechnet sich durch Addition von Zählerstand (in Einheiten von LSB) und der Position des Bitwechsels im TDC-Register: THit = coarse_time · 8 + bitswap_position (13) Der Wert coarse_time ist eine 14Bit Binärzahl. Die binäre Multiplikation mit 8 wird im VHDL-Code durch dreimaliges logisches Linksschieben, die Addition der bitswap_position mit dem „&“-Operator realisiert. Um das Ergebnis zu speichern wird also ein 17-Bit breites 25 6.4 Das TDC-Interface Abbildung 6.6: Decodierung des TDC-Registers Datenwort benötigt, welches anschließend in einem 17-Bit breiten und 2k-Wörter tiefen Dual-Port-RAM zwischengespeichert wird (siehe Abbildung 6.5). Wie in Kapitel 3.4 beschrieben, werden relevante Ereignisse vom TCS-System durch ein Triggersignal gekennzeichnet. Das Triggersignal wird etwa 500ns nach dem physikalischen Ereignis empfangen [6]. Der RAM muss also groß genug sein, um die Zeitmarken aller anfallenden Hits bis zum Eintreffen des Triggers zu speichern. Erst dann entscheidet sich, welche Hits aus dem RAM an das Datennahmesystem weitergeleitet werden. Dazu durchsucht die Trigger-Matching Komponente den RAM nach Zeitmarken, welche innerhalb eines definierten Zeitfensters liegen und schreibt sie in ein Ausgangs-FIFO. Die Grenzen des Zeitfensters werden durch die fixen Parameter trigger-window und latecy definiert und bereits in der Trigger-Catching Komponente berechnet. Abbildung 6.7 zeigt den zeitlichen Zusammenhang zwischen physikalischem Event und Trigger. 6.4.4 Merger Der Merger ist ein Multiplexer, der für jedes Trigger-Event die Ausgangs-FIFOs aller 96 TDC-Kanäle ausliest, zusammenfasst und in einem eigenen Ausgangs-FIFO speichert. Dies geschieht in einem dreistufigen Prozess. Die erste Stufe besteht aus 12 parallelen 8:1 Multiplexern, die zweite Stufe aus 3 parallelen 4:1 Multiplexern. Die letzte Stufe besteht aus einem 3:1 Multiplexer, welcher die Daten anschließend im Ausgangs-FIFO 26 6.5 Serializer Abbildung 6.7: Beim Trigger-Matching werden nur Hits innerhalb des Suchfensters („trigger window“) aus dem RAM gelesen. Ältere Einträge werden gelöscht, neuere werden evtl. für zukünftige Trigger benötigt. [6] speichert. Die Daten bleiben entsprechend den Kanalnummern geordnet und werden im Anschluss von der Serializer-Komponente im S-Link Format an den Data-Merger-FPGA weitergegeben. 6.5 Serializer Die Arbeit an der Serializer Komponente machte einen großen Teil der Mitarbeit am Projekt aus. Die VHDL Programmierung einer geeigneten Testbench nahm dabei etwa gleich viel Zeit in Anspruch wie die Programmierung des Serializer selbst. Der Serializer empfängt die TDC-Daten vom Merger, generiert ein Datenpaket im S-Link Format [22] und wandelt es in einen seriellen Datenstrom um, welcher zum Data-Merger-FPGA gesendet wird. Sobald im Ausgangs-FIFO des Merger Daten vorhanden sind, werden diese vom Serializer eingelesen und in einem Datenbuffer zwischengespeichert. Die Anzahl empfangener Datenwörter wird mitgezählt und die Größe des Events zu bestimmen. Immer, wenn ein vollständiges Datenpaket (header + n · data + trailer) empfangen wurde, wird die Größe des Pakets in einem FIFO abgelegt. Ein weiterer Prozess liest die Paketgröße, sowie die TCS-Informationen (event_size, event_no, event_type) vom Ausgangs-FIFO des TCS-Interface. Daraus werden die S-Link Header generiert und im S-Link-FIFO abgelegt. Danach werden die anfangs im Datenbuffer abgelegten Daten ebenfalls ins S-Link-FIFO übertragen. 27 6.5 Serializer Der eigentliche Serialisierungs-Prozess liest vom S-Link-FIFO und platziert den Inhalt wortweise in einem 32-Bit Schieberegister, dessen höchstwertiges Bit direkt mit einem Ausgangs-Buffer verbunden ist. Mit jeder steigenden Taktflanke wird der Inhalt des Schieberegisters um eine Stelle nach links geschoben, wodurch nach 32 Taktzyklen der gesamte Inhalt des Schieberegisters serialisiert ist. Die serielle Schnittstelle zum Data-Merger-FPGA besteht aus drei differentiellen Signalen: Daten, Clock und Frame (Abbildung 6.1: sck, sdo, sfr). Das Signal Frame ist während der Übertragung eines Datenworts ’high’ und zeigt dem Empfänger an, dass gerade Daten gesendet werden. Die Datenübertragung erfolgt über DDR20 -Buffer. Das bedeutet, es werden sowohl auf der steigenden, als auch auf der fallenden Taktflanke Daten übertragen. Im aktuellen Design werden die Daten bisher mit SDR21 und einer Taktrate von 155,52 MHz übertragen (19,44 MB/s). Im Bedarfsfall kann die Datenrate durch Verdopplung der Taktfrequenz und DDR-Übertragung um den Faktor 4 erhöht werden. 20 21 Dual-Data-Rate Single-Data-Rate 28 7 Implementierung des Aragorn TDC-Designs im Artix7 FPGA Nachdem die einzelnen Module des Aragorn-TDC fertig programmiert und getestet waren, konnte der gesamte Entwurf erfolgreich synthetisiert werden. Dabei wird der VHDL-Code in eine (hardwarespezifische) Netzliste der Schaltung übersetzt. In weiteren Simulation wurde die korrekte Funktion der gesamten Schaltung geprüft. In der Simulation können jedoch keine Schalt- und Signallaufzeiten berücksichtigt werden. Das reale Timing einer Schaltung kann deshalb erst nach der Implementierung verifiziert werden. Der nächste Schritt ist die Implementierung des Aragorn-TDC Designs im Artix-7 FPGA. Dabei werden im Place & Route-Schritt alle Komponenten im FPGA platziert und verdrahtet. War dies erfolgreich, kann man mit einer Static-Timing-Analysis überprüfen, ob alle Signalpfade das ihnen zur Verfügung stehende Timingbudget einhalten (siehe Abschnitt 5.5). Wenn das der Fall ist, wird eine Bitstream-Datei generiert und in den FPGA geladen. Durch abschließende Hardwaretests wird die Funktion des Designs verifiziert (Kapitel 8). Die Herausforderung bei der Implementierung des Aragorn-TDCs besteht darin, die größtmögliche Linearität aller TDC-Kanäle sicherzustellen. Dazu müssen alle Einflüsse, welche zu einer Abweichung der Bin-Breite vom Idealwert LSB führen, berücksichtigt werden. Bei der Verwendung der Shifted-Clock-Sampling-Methode (SCS) beeinflussen folgende Faktoren die Linearität des TDC: • Unterschiedliche Laufzeiten des Datensignals zu den einzelnen Eingängen der Flipflops des TDC-Registers. • Unterschiedliche Laufzeiten der Taktsignale (Clock Skew) zu den Takteingängen der Flipflops. • Phasenfehler bei der Generierung der Taktsignale durch die MMCM. Der Phasenfehler der MMCMs können im Rahmen der Implementierung nicht beeinflusst werden und sind deshalb nicht Gegenstand dieses Kapitels. Daneben ist die Optimierung der Signalführung, im Bezug auf minimalen Skew, maßgeblich für die erreichbare Qualität des TDC verantwortlich. Dies machte große Teile dieser Arbeit aus. Abschnitt 7.1 widmet sich der optimalen Platzierung und Verdrahtung der acht TDC-Flipflop, sowie der Fixierung des optimalen Layouts. Abschnitt 7.2 behandelt die Optimierung der Takterzeugung und Verteilung im FPGA. 7.1 Das TDC Register Bevor der gesamte Entwurf des Aragorn-TDC mit allen 96 Kanälen implementiert werden kann, muss ein geeignetes Routing für die zeitkritischen Schaltungsteile des TDCRegisters gefunden werden. Deshalb wird zuerst nur ein TDC-Kanal zusammen mit den 29 7.1 Das TDC Register restlichen Modulen des Designs (Siehe Abschnitt 6) implementiert und optimiert. War dies erfolgreich, werden die Place & Route-Informationen gespeichert und anschließend auf die anderen TDC-Kanäle übertragen. Erst dann kann der gesamte Entwurf implementiert, analysiert und ggf. weiter optimiert werden. Da für einem TDC-Kanal nur vergleichsweise wenig Logikressourcen benötigt werden, traten bei der Implementierung ohne zusätzliche Vorgaben an die Bauteilverdrahtung keine Probleme im Bezug auf die Einhaltung des Timingbudgets auf. Die Static-TimingAnalysis ergab jedoch einen Skew des Datensignals in der Größenordnung von einigen 100ps. Dieser Wert wäre für ein “normales“ Signal völlig ausreichend. Die angestrebte Zeitauflösung von LSB=400ps könnte damit jedoch nicht erreicht werden. Um das Routing von FPGA Entwürfen zu optimieren, bietet Vivado die Möglichkeit sowohl Logikkomponenten manuell im FPGA zu platzieren, als auch Signalverbindungen von Hand zu verdrahten. Dazu können nach der Synthese des Designs beliebige Komponenten (z.B. LUT, Flipflop oder Block-RAM) per Drag-and-Drop, direkt aus der Netzliste in die gewünschten Ressourcen im FPGA platziert werden. Signalverbindungen zwischen den Komponenten werden entsprechend des Schaltplans zunächst als „unrouted“ angezeigt. Im nächsten Schritt können im „Assign-Routing-Mode“ einzelne Signale ausgewählt und manuell verdrahtet werden. War dies erfolgreich, erscheinen die Signale in der Netzliste als „routed“. In Form von Physical-Constraints können Routing-Informationen gespeichert und wiederverwendet werden [23]. Der erste Ansatz zur Optimierung des Routings bestand darin, eine Anordnung der acht Flipflops zu finden, welche es erlaubt, das Datensignal manuell und möglichst symmetrisch zu den Eingängen der Flipflops zu führen. Dieser Ansatz wurde jedoch nach kurzer Zeit aufgegeben, da das Netz aus Verbindungsleitungen zwischen den Logikblöcken zu komplex ist, um das Datensignal über seine gesamte Länge manuell zu routen. In den Switch-Matrix stehen dem Nutzer zudem nicht beliebige Verbindungsmöglichkeiten zur Verfügung. Eine Dokumentation der Routing-Ressourcen des Artix-7 existiert leider nicht. Zwar werden im „Assign-Routing-Mode“ mögliche Verdrahtungsoptionen visuell hervorgehoben, trotzdem muss hauptsächlich nach der Trial-and-Error-Methode gearbeitet werden. Mit diesem Ansatz gelang es deshalb nicht das Datensignal entsprechend den Anforderungen zu den Flipflops zu führen. Im weiteren Vorgehen wurden in das Datensignalnetz zusätzliche Lookup-Table (LUT) eingefügt und so konfiguriert, dass das Signal unbeeinflusst weitergeleitet wird. So entstehen an definierten Punkten Verzweigungen im Signalverlauf. Abbildung 7.1 zeigt den modifizierten Schaltplan eines TDC-Registers. Ein ähnliches Vorgehen wurde bereits bei der Implementierung des M1-TDC erfolgreich eingesetzt [6]. Da die eingefügten LUT den Funktionsumfang der Schaltung nicht erweitern, werden sie von der Implementierungssoftware im Optimierungsschritt üblicherweise wieder entfernt, um Logikressourcen zu sparen. Um das zu verhindern, wurden die LUT mit dem so genannten „DONT_TOUCH“30 7.1 Das TDC Register Attribute versehen. Dieses kann beliebigen Objekten aus der Netzliste zugewiesen werden und verhindert die Entfernung während der Optimierung. Folgendes Syntaxbeispiel zeigt die Verwendung des Constraints im VHDL-Code: attribute dont_touch : string; attribute dont_touch of <LUT-name> : entity is “true“; Abbildung 7.1: Vereinfachter Schaltplan des TDC-Registers. In den Pfad des Datensignals werden LUT eingefügt, um Verzweigungspunkte zu schaffen. Die Schaltung wird dadurch in zwei identische 4-Bin TDC-Register geteilt (grün & orange markiert). Durch die erzwungene Verästelung des Datensignals ergeben sich mehrere Vorteile: Zum einen lassen sich neben den Flipflops nun auch die Verzweigungspunkte manuell in beliebigen Slice-Elementen positionieren. Zum anderen wird die freie Signallänge reduziert, was die manuelle Verdrahtung deutlich vereinfacht. Weiterhin wird das Signalnetz in zwei symmetrische Pfade aufgeteilt (siehe Abbilung 7.1). Es genügt deshalb, ein Routing für ein TDC-Register, bestehend aus vier Flipflops, zu entwickeln. Dieses 4-Bin Register kann anschließend kopiert werden. Im letzten Schritt müssen beide 4-Bin Register ebenfalls möglichst symmetrisch mit dem ersten Verzweigungspunkt zum fertigen 8-Bin TDC Register verdrahtet werden. Es wurden Studien zu verschiedenen Anordnungen der Komponenten angefertigt. Dabei zeigte sich, dass neben der Anordnung der Slice-Elemente, auch die Positionierung der Komponenten innerhalb der Slice (BEL-Position) darüber entscheidet, welche Abschnitte 31 7.1 Das TDC Register der Routing-Matrix zugänglich sind. Die Signallaufzeiten zu unterschiedlichen Flipflops desselben Slice unterscheiden sich dadurch um bis zu 50ps. Die besten Ergebnisse wurden erzielt, indem vier Flipflops in zwei benachbarten CLB derselben Spalte platziert wurden. Der zugehörige LUT wurde im gegenüberliegenden CLB platziert. Die Aufspaltung des Signals erfolgt schrittweise in den Switch-Matrix. Abbildung 7.2 zeigt das fertige Layout eines TDC-Register bestehend aus vier Flipflops. Durch die optimale Platzierung der Komponenten innerhalb der Slice-Elemente konnte der maximale Skew des Datensignals in dieser Konfiguration auf 16ps reduziert werden. Die exakten Signallaufzeiten, sowie die BEL-Positionen im SLICE sind in Tabelle 7.1 zusammengefasst. Die Werte sind keine Messwerte, sondern entstammen der VivadoLaufzeitanalyse. Abbildung 7.2: Platzierung und Verdrahtung der Komponenten eines 4-Bin TDCRegisters. Der maximale Skew des Datensignals beträgt auf diesem Abschnitt 16ps. Um das gesamte TDC-Register mit allen acht Flipflops zu implementieren, wurde der vorhandene Entwurf des 4-Bin TDC-Registers innerhalb derselben CLB-Spalte kopiert. Der noch fehlende Verzweigungspunkt LUT_0 wurde so platziert, dass sich ebenfalls ein symmetrischer Signalverlauf zu den weiteren Verzweigungspunkten ergab. Die Signallaufzeiten auf diesem Abschnitt sind Tabelle 7.2 zu entnehmen. Der zusätzliche Skew des Datensignals beträgt 3ps. Der maximale Gesamtskew des Datensignals erhöht sich damit auf insgesamt 19ps. Dies entspricht etwa 5% LSB. Abbildung 7.3 zeigt das fertige Layout des 8-Bin TDC-Registers wie es im Aragorn-TDC implementiert ist. 32 7.1 Das TDC Register Tabelle 7.1: Laufzeiten des Datensignals ausgehend vom LUT_a zu den jeweiligen Flipflops eines 4-Din TDC-Registers. Der maximale Skew beträgt 16ps. logic cell lut_a dff_a[0] dff_a[1] dff_a[2] dff_a[3] BEL routingdelay [ps] C6LUT 0 DFF 607 DFF 623 C5FF 607 C5FF 622 Tabelle 7.2: Laufzeiten des Datensignals ausgehend vom LUT_0 zu den beiden Verzweigungen LUT_a und LUT_b. Der Skew beträgt 3ps. logic cell LUT_0 LUT_a LUT_b BEL routingdelay [ps] A6LUT 0 C6LUT 620 C6LUT 623 Um die optimale Implementation aller 96 TDC-Kanäle sicherzustellen, müssen die Routinginformationen des bereits implementierten Kanals gesichert werden. Dies geschieht über sogenannte „Placement-Constrains“, welche während der Implementierung Vorgaben an die Platzierung und Verdrahtung der Komponenten machen und in einer .xdc22 -Datei gespeichert werden. Anschließend können die gespeicherten Constraints auch bei der Implementation aller anderen TDC-Kanäle angewendet werden. Im Folgenden werden kurz alle Constraints vorgestellt, die zur Fixierung des TDC-Registers notwendig sind. • Das FIXED_ROUTE-Constraint wird auf das Signalnetz net_name angewendet und spezifiziert alle Teilstrecken der Routing-Matrix, welche zur Verbindung der Komponenten verwendet wurden. Die Teilstrecken sind in einem „routing string“codiert. set_property FIXED_ROUTE {routing string} [get_nets {net_name}] Um Netze vollständig zu fixieren, müssen alle am Netz beteiligten Logikkomponenten ebenfalls fixiert werden [24]. Konkret also alle LUT und TDC-Flipflops. Dazu werden die im Folgenden beschriebenen LOC- und BEL-Constraints benutzt. • Das LOC-Constraint wird auf Logikkomponenten angewendet und legt deren absolute Slice-Koordinate im Koordinatensystem des FPGA fest. set_property LOC SLICE_X160Y190 [get_cells {cell_name}] 22 Xilinx Design Constraints 33 7.1 Das TDC Register Abbildung 7.3: Platzierung und Verdrahtung aller Komponenten des fertigen 8-Bin TDCRegisters. Der gesamte Skew des Datensignals beträgt maximal 19ps. 34 7.1 Das TDC Register • Mit dem BEL-Constraint wird die Position von Logikkomponenten innerhalb eines Slice festgelegt. Ohne Ergänzung durch ein entsprechendes LOC-Constraint bleibt die Auswahl des Slice aber nach wie vor der Implementierungssoftware überlassen. set_property BEL A6LUT [get_cells {cell_name}] • Bei einigen Tests kam es vor, dass einige LUT entsprechend den Placement-Constraints korrekt platziert wurden, das Datensignal aber trotzdem nicht erfolgreich geroutet werden konnte. Als Ursache stellte sich heraus, dass die physikalischen Eingänge (I0 , I1 , ...) einer LUT-Komponente nicht fest mit den logischen Eingängen (A0 , A1 , ...) der internen Logikfunktion verbunden sind. Diese Verbindung wird erst während der Implementation generiert. Deshalb wird mit dem LOCK_PINS-Constraint das Datensignal fest mit einen spezifischen (logischen) Eingang des LUT verknüpft. set_property LOCK_PINS {I0:A3} [get_cells {LUT_name}] • Mit dem PROHIBIT-Constraint schließt man gezielt mögliche Platzierungsoptionen von der Implementation aus. Dies war notwendig, weil die Nutzung eines bestimmten Flipflop durch andere Module mit dem optimalen Routing eines LUT in Konflikt stand. Die Adressierung erfolgt durch kombinierte Angabe von Slice-Koordinate und BEL-Bezeichnung. set_property PROHIBIT true [get_bells SLICE_XY/BEL] Durch die Anwendung der aufgezählten Constraints konnte das Routing der Signale jedes TDC-Registers vollständig und reproduzierbar definiert werden. Die Nutzung des LOC-Constraints beinhaltet aber Nachteile. Zum einen müssen die Koordinaten für jede Komponente aller TDC-Register explizit berechnet werden. Dies ist zwar kein besonderer Aufwand, macht das Design aber unflexibel im Bezug auf evtl. notwendige Änderungen. Zum anderen stellt die explizite Fixierung von Logik eine Einschränkung der Place & Route-Algorithmen dar. Dies erhöht die Gefahr von sogenanntem „over-constraining“ [24]. Als mögliche Alternative boten sich sog. „Relative-Placement-Macros“ (RPM) an. In einem RPM können Logikkomponenten ähnlich dem LOC-Constraint fest in einem Slice platziert werden. Nur erfolgt die Koordinatenangabe der Slice nicht absolut, sondern relativ zueinander. Die Entscheidung wo das RPM optimalerweise im FPGA platziert wird, bleibt schließlich der Implementierungssoftware vorbehalten. Trotz vielversprechender Ansätze, zeigte sich nach umfangreichen Versuchen, dass ein RPM in Kombination mit FIXED_ROUTE das LOC-Constraint nicht ersetzten kann. Die Fixierung der Place & Route-Information erfolgt deshalb mithilfe der vorgestellten Constraints. Zur Koordinatenberechnung für das LOC-Constraint wurde ein Skript geschrieben. Dieses kann in der Bash-Shell ausgeführt werden und generiert eine fertige .xdc-Datei für je 24 TDC-Kanäle. Im Anhang findet sich ein vollständiges Constraint-Set zur Implementierung eines TDC-Kanals. Die endgültige Platzierung der 96 TDC-Register ist in Abbildung 7.5 zu sehen. Je 24 Kanäle werden in einer CLB-Spalte gleichmäßig über 35 7.2 Taktsignale des Aragorn-TDC die gesamte Höhe des Artix-7 verteilt. Jede Clock Region enthält damit 10, bzw. 8 TDC Kanäle. Jeweils zwei CLB-Spalten schließen direkt an die entsprechenden I/O-Blöcke der Eingangssignale an, um das Routing der Eingangssignale möglichst kurz zu halten. 7.2 Taktsignale des Aragorn-TDC Zum Einlesen des Datensignals im TDC-Register werden acht Taktsignale mit je 0°, 45°, 90°, 135°, 180°, 225°, 270° und 315° Phasenverschiebung zueinander benötigt. Wie in Abschnitt 6.2 beschrieben, werden zur Taktgenerierung im Clock Interface zwei MMCMs verwendet. Die Verteilung der Taktsignale zu den CLB erfolgt über globale Clock Buffer (BUFG). Abbildung 7.4 zeigt den gesamten Weg der Taktsignale vom differentiellen Eingangsbuffer bis zu den den Takteingängen der TDC-Register. Auf den einzelnen Abschnitten entsteht jeweils ein Clock Skew ∆t zwischen den Taktsignalen. Abbildung 7.4: Schaltplan der Taktverteilung zu den Flipflop eines TDC-Registers. Die Platzierung beider MMCMs erfolgt möglichst nahe am Input-Buffer, welcher das TCS-Taktsignal empfängt. Da pro Clock Region nur eine CMT zur Verfügung steht, wurden die beiden MMCM in horizontal benachbarte Clock Regions implementiert. Das Taktsignal wurde manuell gerouted und spaltet sich zwischen dem BUFG und den MMCMs auf. Durch die unterschiedliche Leitungslänge entsteht auf diesem Abschnitt ein Skew von ∆t1 = −14ps (siehe Abb. 7.4). Analog zur Implementierung des TDC-Registers, werden Position und Verdrahtung der Komponenten mit entsprechenden Placement Constraints fixiert. Die zugehörige .xdc-Datei findet sich im Anhang. Jeder MMCM hat neben 7 Taktausgängen auch ein Feedbacksignal (CLKFBOUT ), mit dem die Phase aller Ausgangssignale in Schritten von (FV CO ·56)−1 feinjustiert werden kann. Durch unterschiedliche Laufzeiten von CLKFBOUT entsteht zwischen den MMCMs ein Skew von ∆tF B = +17ps. Das Routing des Feedbacksignals wurde ebenfalls fixiert. Ausgehend von den MMCMs laufen alle Taktsignale zu BUFGs. Aufgrund der Optimierung des Taktnetzwerks ist die Signallaufzeit auf diesem Abschnitt für alle Taktsignale 36 7.2 Taktsignale des Aragorn-TDC identisch, es entsteht kein clock skew (∆t2 = 0ps). Von den BUFG-Elementen werden die Taktsignale auf die Flipflops aller TDC-Module verteilt. Die Verdrahtung wird der Implementierungssoftware überlassen, d.h. es erfolgen keine manuellen Einschränkungen durch Constraints. Zunächst wurde angenommen, dass Signallaufzeit und Skew ∆t3 einzig vom Ort der Flipflops im FPGA abhängen, und daher für jeden CLB variieren. Bei der Analyse des implementierten Designs zeigte sich aber folgendes: Innerhalb eines CLB existiert ein näherungsweise konstanter Taktversatz von ∆tclock ≈ 35ps zwischen dem oberen und dem unteren Slice. Zwischen gleichen Slice-Elementen benachbarter CLB gibt es fast keinen Taktversatz. Dieser Zusammenhang wurde in mehreren Stichproben überprüft und gilt zumindest innerhalb einer CLB-Spalte der selben Clock Region. Ein Vergleich mit dem Skew des Datensignals aus Tabelle 7.1 zeigt eine analoge Verteilung: Der konstante Datenskew zwischen oberen und dem unteren Slice-Elementen beträgt ∆tdata ≈ 16ps. Aus Daten- und Clock Skew kann der effektive Taktversatz ∆t3,ef f zwischen oberen und unteren Slice-Elementen berechnet werden. ∆t3,ef f = ∆tclock − ∆tdata ≈ +19ps (14) Die Flipflops in den unteren Slice-Elementen erhalten das Taktsignal also effektiv um etwa 19ps zu spät. Dieser Wert ist ausdrücklich nicht als Messwert zu interpretieren. Es handelt sich bei allen angegebenen Signallaufzeiten lediglich um Ergebnisse der Vivado Laufzeitanalyse. Dennoch erlauben die Werte zumindest eine Abschätzung der durch das Routing verursachten Nichtlinearität des TDCs. Bei einem effektiven Gesamtskew von ∆tges ≈ +22ps und einer Zeitauflösung von LSB = 400ps liegt die vom Routing verursachte Nichtlinearität bei ≈ 5%LSB. Abbildung 7.5 zeigt eine schematische Darstellung des endgültigen Designs des 96Kanal Aragorn-TDC wie es im Xilinx Artix-7 FPGA implementiert wurde. Abbildung 7.6 zeigt den Ressourcenverbrauch des gesamten Entwurfs. 37 7.2 Taktsignale des Aragorn-TDC Abbildung 7.5: Schematische Darstellung des 96-Kanal Aragorn-TDC wie es im Xilinx Artix-7 FPGA implementiert wurde. Vom TDC genutzte Ressourcen sind rot markiert. Im den beiden grün umrandeten Bereichen sind jeweils 48 TDC-Kanäle nahe den I/O-Blocks implementiert. Abbildung 7.6: Ressourcenverbrauch des 96-Kanal Aragorn-TDC im Xilinx Artix-7 (Model: XC7A200T). 38 8 Messung und Auswertung Der folgende Absatz gibt eine Übersicht über das im Testaufbau verwendete GANDALFModul und die Aufsteckkarten (siehe Abbildung 8.1). Eine detaillierte Beschreibung des GANDALF-Moduls findet sich in [7]. Das GANDALF-Modul ist die Basisplatine eines modularen Messsystems und wurde an der Universität Freiburg entwickelt. Im Wesentlichen stehen zwei Virtex-5-FPGAs zur Implementierung benutzerdefinierter Anwendungen (z.B. M1-TDC [6]) zur Verfügung. Je nach Anwendung können die Mezzanine-Card Slots mit unterschiedlichen Aufsteckkarten bestückt werden. Neben der in diesem Projekt nicht verwendeten analogen MezzanineCard (AMC), existieren sowohl eine optische Mezzanine-Card (OMC, auch Arwen-Karte genannt) und die digitale Mezzanine-Card (DMC). Beide werden im Testaufbau verwendet und sind in Abbildung in Abbildung 8.1 abgebildet. Die OMC verfügt über vier optische SFP+-Transceiver, welche eine bidirektionale Datenübertragung mit bis zu 3,1104 GBit/s erlauben. Sind beide OMCs bestückt können acht optischen Verbindungen mit einem GANDALF-Modul realisiert werden. Die DMC ermöglicht den Anschluss von 64 digitalen Signalen im LVDS oder LVPECL44-Signalstandard. Zur Datenübertrag stehen zwei NIM-Eingänge, ein NIM-Ausgang (LEMO-Steckverbinder) und zwei VHDCI-Steckverbinder mit je 32 differentiellen Kanälen zur Verfügung [25]. Abbildung 8.1: Das GANDALF (rechts) kann mit verschiedenen Mezzanine-Cards (links) bestückt werden. Im Testaufbau werden sowohl die optische Mezzanine-Card (OMC) als auch die digitale Mezzanine-Card (DMC) verwendet [9]. 39 8.1 Differentielle und integrale Nichtlinearität Abbildung 8.2: Schematischer Messaufbau zur Bestimmung der Nichtlinearität und der Zeitauflösung des Aragorn-TDC. Alle GANDALF-Module sowie das Tiger-Modul befinden sich im selben Rack und sind über die VXS-Backplane miteinander verbunden. 8.1 Differentielle und integrale Nichtlinearität Die differentielle Nichtlinearität (DNL) ist definiert, als die Abweichung jedes Quantisierungsschritts (TDC-Bin) vom idealen Wert „Least Significant Bit“ (LSB) und wird üblicherweise auf LSB normiert. Die DNL des Aragorn-TDC wurde mit einem „statistical code density test“ bestimmt [6] [26]. Dazu werden die Zeitmarken von statisch verteilten Testpulsen gemessen. Um die DNL aller 96 Kanäle des Aragorn-TDC zu bestimmen, wurde folgender Testaufbau verwendet (siehe Abbildung 8.2): Das Testsignal wird von einem Funktionsgenerator (nicht eingezeichnet) mit einer Frequenz von 1 MHz erzeugt, anschließend diskriminiert und auf den NIM-Eingang eines mit DMC-Karten bestückten GANDALF-Moduls geleitet. Von dort aus wird das Signal über den 68-poligen VHDCI23 -Connector mit einem VHDCI-to-8xRJ45 Kabel auf zwei LVDS-Fanout Boards verteilt. Auf den LVDS-Boards wird das Eingangssignal über einen Crosspoint-Switch und mehrere LVDS-Buffer auf 98 Ausgangspins verteilt. Diese sind mit dem Aragorn-Modul verbunden und bedienen die Dateneingänge eines TDC-FPGA mit dem Testsignal. Es werden zwei LVDS-Boards benötigt, da sich auf der Platine des Aragorn die 96 Datensignale eines Steckverbinders, auf 23 Very High Density Cable Interconnect 40 8.1 Differentielle und integrale Nichtlinearität jeweils zwei TDC-FPGA verteilen. Das Triggersignal wird mit einer Frequenz von 100 Hz ebenfalls von einem Funktionsgenerator (nicht eingezeichnet) erzeugt und an den TCS-Eingang eines mit Arwen-Karten bestücktes GANDALF-Moduls angelegt. Das GANDALF-Modul gibt das Triggersignal über eine optische Faser an den zentralen VXS-Switch (TIGER-Modul) weiter. Das TIGERModul verteilt das Triggersignal über die VXS-Backplane an alle Module im Rack. Ein weiteres, ebenfalls mit Arwen-Karten bestücktes GANDALF-Modul schickt das Triggersignal schlussendlich über eine optische Faser an den SFP+ Transceiver auf dem Aragorn-Board. Im Testaufbau wird der Aragorn-TDC mit einem TCS-Referenztakt von 155,52 MHz betrieben. Da die Eingangsfrequenz in den TDC-FPGA nochmals verdoppelt wird, beträgt die Taktrate der TDC-Module 311,04 MHz. Daraus ergibt sich eine theoretische Größe von LSB ≈ 400ps. Die Parameter window und latency werden so eingestellt, dass pro Trigger genau 1 Hit gemessen wird. Insgesamt werden N=10k Einzelmessungen auf allen 96 TDC-Kanälen parallel durchgeführt. Aus den 16-Bit Datenwort des Aragorn-TDC (tdc_data) lässt sich die BinNummer Bini berechnen, bei der das Signal im TDC quantisiert wurde. Bini = tdc_data (mod 8) (15) In der Auswertung wurde für alle Messwert Bini berechnet und in einem Histogramm aufgetragen. Da die Hits auf dem Testsignal unkorreliert zur Taktfrequenz des TDC auftreten, würden bei einem idealen TDC alle 8 Bins gleich oft getroffen werden. Die Anzahl der Histogrammeinträge für jedes Bin wäre gleichverteilt, mit n = Nk (k=8, Anzahl der TDC-Bins). Aus der Differenz von n und der tatsächlichen Anzahl der Einträge ni im Histogramm, kann die DNL für jedes Bini in Einheiten von LSB berechnet werden. DN Li = n − ni ni = − 1, n n i = 0, 1, ..., 7 (16) Die integrale Nichtlinearität (INL) des TDC, beschreibt die Abweichung von der idealen Transferfunktion (siehe Kapitel 4.3) am i-ten Bin und berechnet sich durch Summation der differentiellen Nichtlinearität DN Li IN Li = i X DN Lj , i = 0, 1, ..., 7 (17) j=0 Abbildungen 8.4 und 8.5 zeigen die TDC-Kanäle mit der besten bzw. schlechtesten differentiellen Nichtlinearität. Die Beurteilung erfolgt nach der kleinsten bzw. größten maximalen DN Li eines Kanals. Die DNL des Aragorn-TDC liegt für alle Kanäle zwischen 14% LSB und 32% LSB. Abbildungen 8.6 und 8.7 zeigen die TDC-Kanäle mit der besten bzw. schlechtesten integralen Nichtlinearität. Die INL wird nach Gleichung (17) durch Aufsummieren der 41 8.1 Differentielle und integrale Nichtlinearität DNL und liegt beim Aragorn-TDC für alle Kanäle zwischen 15% LSB und 32% LSB. Da bei der Implementierung der TDC-Register, sowie der Takterzeugung und Verteilung (siehe Kapitel 7) großer Wert auf die Optimierung von Signallaufzeiten gelegt wurde, gelang es die maximale Laufzeitdifferenz auf eine Größenordnung von ≈ 22ps zu minimieren. Beim Betrieb des Aragorn-TDC mit einer Taktfrequenz von 311,04 MHz, beträgt die Größe von LSB ≈ 400ps. Man würde also eine differentielle Nichtlinearität in der Größenordnung von etwa 5%LSB erwarten. Die gemessene DNL liegt im Mittel für alle TDC-Kanäle über dem erwarteten Wert. Da alle TDC-Kanäle mit den selben Placement-Constraints implementiert sind und die selben Taktsignale erhalten, sollten sich eventuell vorhandene Asymmetrien im Routing der TDC-Register in einer systematischen Über, bzw. Unterrepräsentation von Bins im Histogramm zeigen. Dazu wurde über alle Kanäle der Mittelwert der DNL gebildet. Wie in Abbildung 8.3 zu sehen, zeigt sich eine signifikante Überrepräsentation von Bin 7 und eine Unterrepräsentation von Bin 0. Das bedeutet, dass die Daten am 8. Flipflop des TDC-Registers effektiv zu spät eingetaktet werden. Die Ursache hierfür könnte ein systematischer Phasenfehler bei der Generierung der Taktsignale im MMCM sein. Unabhängig von der beschriebenen systematischen Abweichung, schwanken die DNLs aller TDC-Bins in einer Größenordnung von ca. 5-10% LSB. Da das Routing des Datensignals vollständig fixiert ist, liegt die Ursache wahrscheinlich in der Verteilung der Taktsignale im FPGA. Abbildung 8.3: Mittelwert der DNL für alle TDC-Bins im Aragorn-TDC. 42 8.1 Differentielle und integrale Nichtlinearität Abbildung 8.4: TDC-Kanal mit der besten differentiellen Nichtlinearität. Abbildung 8.5: TDC-Kanal mit der schlechtesten differentiellen Nichtlinearität. 43 8.1 Differentielle und integrale Nichtlinearität Abbildung 8.6: TDC-Kanal mit der besten integralen Nichtlinearität. Abbildung 8.7: TDC-Kanal mit der schlechtesten integralen Nichtlinearität. 44 8.2 Zeitauflösung 8.2 Zeitauflösung Die Zeitauflösung eines TDC ergibt sich aus der Standardabweichung der Verteilung der Messwerte, für ein konstantes Zeitintervall. Da alle TDC-Kanäle dieselben Testpulse messen, die Signallaufzeiten zum TDC-Rgister für jeden Kanal individuell unterschiedlich sind (Leiterbahnlänge, etc.), ergibt sich aus der Differenz der Zeitmarken zweier Kanäle ein konstantes Zeitintervall. Es wurden für 10k Einzelmessungen die Differenzen zwischen gemessener Zeitmarke und der Zeitmarke von Kanal 0 berechnet und für jeden Kanal der Mittelwert darüber gebildet. Abbildung 8.8 zeigt die Verteilung der Mittelwerte Channel Mean für alle TDCKanäle in Einheiten von LSB. Die gemessenen Zeitintervalle liegen im Bereich -5,6 LSB bis 8,7 LSB. Der konstante Versatz ab Kanal 48 ist darauf zurückzuführen, dass die Testpulse über zwei LVDS-Fanout-Boards, mit je 48 Kanälen, eingespeist werden. Channel Mean [LSB] Channelwise average 10 8 6 4 2 0 −2 −4 −6 0 20 40 60 80 100 TDC-Channel Abbildung 8.8: Mittelwerte der gemessen Zeitintervalle in Einheiten von LSB für jeden Kanal. Die Zeitintervalle ergeben sich aus der Differenz von zwei Zeitmarken auf unterschiedlichen Kanälen. Die Zeitauflösung der TDC-Kanäle (siehe Abbildung 8.9) ergibt sich direkt aus der Standardabweichung der Einzelmessungen um den Mittelwert Channel Mean aus Abbildung 8.8. Wie erwartet liegen die Zeitauflösungen im Bereich zwischen 0 und 0,5 LSB. Wie in Kapitel 4.3 gezeigt, hängt die Zeitauflösung eines TDCs von der Länge des 45 8.2 Zeitauflösung Abbildung 8.9: Die Zeitauflösung der TDC-Kanäle ist die Standardabweichung der Zeitmarken um die Mittelwerte aus Abbildung 8.9. gemessenen Zeitintervalls ab. Genauer gesagt, lässt sich jedes gemessene Zeitintervall in ein ganzzahliges Vielfaches von LSB und den Bruchteil f (fractional part) zerlegen. Die Zeitauflösung in Abhängigkeit des Bruchteils f ist für einen idealen TDC gegeben durch: p (18) σ(f ) = LSB f (1 − f ) Die mittlere Standardabweichung σideal eines idealen TDCs erhält man durch Integration von Gleichung (18) über f in den Grenzen 0 < f < 1. π σideal = · LSB ≈ 0.39LSB (19) 8 Um den Zusammenhang (18) für alle Kanäle des Aragorn-TDC zu überprüfen, müsste die Zeitauflösung von jedem Kanal als Funktion des Bruchteils f über die Länge mindestens einer Taktperiode (also 8 LSB) gemessen werden. Da eine derartige Analyse recht aufwendig und zeitintensiv ist, wurde im Rahmen dieser Arbeit darauf verzichtet. Um dennoch eine Abschätzung für das zeitliche Auflösungsvermögen des AragornTDCs zu erhalten, kann die mittlere Zeitauflösung über alle 96 Kanäle berechnet werden. Diese beträgt σ = 0, 404 LSB, und weicht damit 0,014 LSB (≈ 5, 6ps) vom Idealwert 0,39 LSB ab. Um die Abhängigkeit der Zeitauflösung vom Bruchteil f qualitativ zu untersuchen, wurde aus den Mittelwerten der Zeitintervalle ChannelM ean, der Bruchteil f in Einheiten von LSB berechnet. Abbildung 8.10 zeigt die Zeitauflösung aller Kanäle in Abhängigkeit von f . Zum Vergleich ist der Verlauf der Zeitauflösung eines idealen TDC nach 46 8.2 Zeitauflösung Gleichung (18) als rot gestrichelte Linie eingezeichnet. Im Intervall 0, 2 < f < 0, 8 ist die Zeitauflösung durch den Quantisierungsfehler des TDC dominiert und stimmt deshalb mit dem idealen TDC überein. In den Randbereichen der Verteilung, in denen sich f einem ganzzahligen Vielfachen von LSB nähert und der Quantisierungsfehler abnimmt, erkennt man deutlich die Abweichung von der idealen Zeitauflösung. Neben dem Jitter des Clock- und Datensignals, limitiert hier vor allem die integrale Nichtlinearität die mögliche Zeitauflösung. Der Einfluss der INL auf die erwartete mittlere Zeitauflösung eines TDC Kanals kann folgendermaßen abgeschätzt werden [27]: q 2 2 2 + σIN (20) σerw,i = σideal L,0 + σIN L,i Dabei ist i die Kanalnummer und σIN L,0 , σIN L,i sind die Standardabweichungen der INL eines einzelnen Kanals. Bildet man Mittelwert σ erw und Standardabweichung der erwarteten mittleren Zeitauflösung über alle TDC-Kanäle, so erhält man: σ erw = (0, 403 ± 0, 002)LSB (21) Dieser Wert stimmt im Rahmen der Unsicherheit mit dem gemessenen Mittelwert σ = 0, 404 LSB überein. Die Zeitauflösung des TDC wird also wie erwartet von der Nichtlinearität der TDC-Bins bergrenzt. Abbildung 8.10: Zeitauflösung der TDC-Kanäle in Abhängigkeit des Bruchteils f. Bei einem idealen TDC (rot) ist die Zeitauflösung nur durch den Quantisierungsfehler bestimmt. 47 9 Zusammenfassung Ziel dieser Arbeit war die Implementierung eines 96 Kanal Time-to-Digital-Converters (TDC) mit einer Zeitauflösung von 400 ps in einem Artix-7 FPGA. Die Arbeit fand im Rahmen der Entwicklung der Aragorn-Auslesekarte für die neuen Thick-GEM Photonendetektoren des RICH-Detektors am COMPASS-II Experiment statt. Um 96 TDC-Kanäle mit den Logikressourcen eines Artix-7 FPGA zu realisieren wurde die „Shifted-ClockSampling“-Methode gewählt. Dazu wurde ein TDC-Register bestehend aus acht Flipflops mit konstant phasenverschobenen Taktsignalen aufgebaut. Durch die manuelle Platzierung und Verdrahtung der Logikkomponenten eines TDCRegisters, konnte die maximale Laufzeitdifferenz des Datensignals zu den Dateneingängen der acht Flipflops auf ca. 19 ps begrenzt werden. Durch die Nutzung von sogenannten „Placement-Constraints“, konnte die Platzierung und Verdrahtung für alle 96 TDCRegister übernommen werden. Weiterhin gelang es, die Position aller zeitkritischen Schaltungsteile im FPGA zu fixieren. Alle notwendigen Platzierungsinformationen stehen in einer .xdc-Datei zur Verfügung, sodass die vollständige Reproduzierbarkeit gewährleistet ist. Des weiteren sind die Komponenten der Takterzeugung für die TDC-Register ebenfalls auf minimale Laufzeitdifferenz der Taktsignale optimiert und in ihrer Position fixiert. Der effektive Taktversatz zwischen den acht Taktsignalen eines TDC-Registers konnte auf ca. 22 ps minimiert werden. Durch Testmessungen konnte die korrekte Funktion auf der Aragorn-Karte verifiziert, sowie die Kenngrößen des Aragorn-TDC bestimmt werden. Dazu wurde der TDC mit einer Taktfrequenz von 311,04 MHz betrieben. Die theoretische Größe eines TDC-Bins beträgt dabei ca. 400ps. Die Nichtlinearität des TDC konnte mit einem „Code-Density Test“ bestimmt werden und beträgt: ∧ • Maximale differentielle Nichtlinearität: 32% LSB (= 128ps) ∧ Minimale differentielle Nichtlinearität: 14% LSB (=56ps) ∧ • Maximale integrale Nichtlinearität: 32% LSB (= 128ps) ∧ Minimale integrale Nichtlinearität: 15% LSB (= 60ps) Die Zeitauflösung wurde für jeden Kanal durch die Messung eines Zeitintervalls fester Größe bestimmt. Die mittlere Zeitauflösung des Aragon-TDC beträgt: σ = 162ps. Zur Prüfung der Plausibilität wurde aus der Standardabweichung der integralen Nichtlinearität die zu erwartende mittlere Zeitauflösung des TDC bestimmt. Diese beträgt σ erw = (161 ± 1) ps und stimmt im Rahmen der Standardabweichung mit dem gemessenen Wert überein. Die Zeitauflösung wird also in erster Linie von der Nichtlinearität der TDC-Bins begrenzt. 48 Ich erkläre, dass ich die Arbeit selbstständig angefertigt und nur die angegebenen Hilfsmittel benutzt habe. Alle Stellen, die dem Wortlaut oder dem Sinne nach anderen Werken, gegebenenfalls auch elektronischen Medien, entnommen sind, sind von mir durch Angabe der Quelle und des Zugriffsdatums sowie dem Ausdruck der ersten Seite belegt; sie liegen zudem für den Zeitraum von 2 Jahren entweder auf einem elektronischen Speichermedium im PDF-Format oder in gedruckter Form vor. Freiburg, den 07.12.2015 49 10 Anhang Placement Constraints for one TDC-Register set_property BEL DFF [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_a[0].dff_tdc_a}] set_property LOC SLICE_X3Y8 [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_a[0].dff_tdc_a}] set_property BEL DFF [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_a[1].dff_tdc_a}] set_property LOC SLICE_X2Y8 [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_a[1].dff_tdc_a}] set_property BEL C5FF [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_a[2].dff_tdc_a}] set_property LOC SLICE_X3Y7 [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_a[2].dff_tdc_a}] set_property BEL C5FF [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_a[3].dff_tdc_a}] set_property LOC SLICE_X2Y7 [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_a[3].dff_tdc_a}] set_property BEL DFF [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_b[0].dff_tdc_b}] set_property LOC SLICE_X3Y6 [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_b[0].dff_tdc_b}] set_property BEL DFF [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_b[1].dff_tdc_b}] set_property LOC SLICE_X2Y6 [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_b[1].dff_tdc_b}] set_property BEL C5FF [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_b[2].dff_tdc_b}] set_property LOC SLICE_X3Y5 [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_b[2].dff_tdc_b}] set_property BEL C5FF [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_b[3].dff_tdc_b}] set_property LOC SLICE_X2Y5 [get_cells {tdc_interface/tdcs[0].tdc_channel/tdc_dffs_b[3].dff_tdc_b}] set_property BEL A6LUT [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_A}] set_property LOC SLICE_X0Y8 [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_A}] set_property BEL A6LUT [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_B}] set_property LOC SLICE_X0Y6 [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_B}] set_property BEL A6LUT [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_inst}] set_property LOC SLICE_X1Y7 [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_inst}] set_property LOCK_PINS I0:A3 [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_A}] set_property LOCK_PINS I0:A3 [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_B}] set_property LOCK_PINS I0:A5 [get_cells {tdc_interface/tdcs[0].tdc_channel/LUT2_inst}] set_property PROHIBIT true [get_bels SLICE_X0Y8/A5FF] set_property PROHIBIT true [get_bels SLICE_X0Y6/A5FF] set_property FIXED_ROUTE { { CLBLL_L_A CLBLL_LOGIC_OUTS8 { SL1BEG0 IMUX_L1 CLBLL_LL_A3 } NR1BEG0 IMUX_L1 CLBLL_LL_A3 } } [get_nets {tdc_interface/tdcs[0] .tdc_channel/qms_data_lut}] set_property FIXED_ROUTE { { CLBLL_LL_A CLBLL_LL_AMUX CLBLL_LOGIC_OUTS20 { SE2BEG2 { BYP_ALT2 BYP2 CLBLM_L_CX } BYP_ALT3 BYP3 CLBLM_M_CX } ER1BEG3 { BYP_ALT7 BYP7 CLBLM_L_DX } BYP_ALT6 BYP6 CLBLM_M_DX } } [get_nets {tdc_interface/tdcs[0].tdc_channel/D}] set_property FIXED_ROUTE { { CLBLL_LL_A CLBLL_LL_AMUX CLBLL_LOGIC_OUTS20 { SE2BEG2 { BYP_ALT2 BYP2 CLBLM_L_CX } BYP_ALT3 BYP3 CLBLM_M_CX } ER1BEG3 { BYP_ALT7 BYP7 CLBLM_L_DX } BYP_ALT6 BYP6 CLBLM_M_DX } }[get_nets {tdc_interface/tdcs[0].tdc_channel/LUT2_B_n_0}]end 50 Placement Constraints for MMCMs and Co. lock positions of both MMCMs set_property BEL MMCME2_ADV [get_cells {clock_interface/first_mmcm/U0/mmcm_adv_inst}] set_property LOC MMCME2_ADV_X0Y2 [get_cells {clock_interface/first_mmcm/U0/mmcm_adv_inst}] set_property BEL MMCME2_ADV [get_cells {clock_interface/second_mmcm/U0/mmcm_adv_inst}] set_property LOC MMCME2_ADV_X0Y3 [get_cells {clock_interface/second_mmcm/U0/mmcm_adv_inst}] LOC global clock buffer pre_mmcm set_property LOC BUFGCTRL_X0Y15 [get_cells {tcs_clk_bufg}] clock buffer for feedback_clk set_property LOC BUFGCTRL_X0Y3 [get_cells {clock_interface/first_mmcm/U0/clkf_buf}] set_property LOC BUFGCTRL_X0Y20 [get_cells {clock_interface/second_mmcm/U0/clkf_buf}] feedback clk set_property FIXED_ROUTE { { CMT_LR_LOWER_B_MMCM_CLKFBOUT CMT_R_LOWER_B_CLK_MMCM11 HCLK_CMT_MUX_CLK_4 CLK_HROW_TOP_R_CK_BUFG_CASCO8 CLK_BUFG_BUFGCTRL4_I0 } } [get_nets {clock_interface/second_mmcm/U0/clkfbout_mmcm2}] set_property FIXED_ROUTE { { CLK_BUFG_BUFGCTRL4_O CLK_BUFG_CK_GCLK20 CLK_BUFG_REBUF_R_CK_GCLK20_TOP CLK_HROW_CK_MUX_OUT_L1 CLK_HROW_CK_HCLK_OUT_L1 CLK_HROW_CK_BUFHCLK_L1 HCLK_CMT_MUX_MMCM_CLKFBIN CMT_LR_LOWER_B_MMCM_CLKFBIN } } [get_nets {clock_interface/second_mmcm/U0/clkfbout_buf_mmcm2}] bufg first_mmcm AND second_mmcm routing set_property FIXED_ROUTE { { CLK_BUFG_BUFGCTRL15_O CLK_BUFG_CK_GCLK15 { CLK_BUFG_REBUF_R_CK_GCLK15_BOT CLK_HROW_CK_MUX_OUT_L0 CLK_HROW_CK_HCLK_OUT_L0 CLK_HROW_CK_BUFHCLK_L0 HCLK_CMT_MUX_MMCM_CLKIN1 CMT_LR_LOWER_B_MMCM_CLKIN1 } CLK_BUFG_REBUF_R_CK_GCLK15_TOP CLK_HROW_CK_MUX_OUT_L0 CLK_HROW_CK_HCLK_OUT_L0 CLK_HROW_CK_BUFHCLK_L0 HCLK_CMT_MUX_MMCM_CLKIN1 CMT_LR_LOWER_B_MMCM_CLKIN1 } } [get_nets {tcs_clk_bufg_out}] 51 LITERATUR Literatur [1] M. Gorzellik, Entwicklung eines digitalen Triggersystems für RückstoßprotonDetektoren. Diplomarbeit, Universität Freiburg, 2013. [2] T. Baumann, Entwicklung einer Schnittstelle zur Übertragung von Pulsinformationen eines Rückstoßdetektors an ein digitales Triggersystem. Diplomarbeit, Universität Freiburg, 2013. [3] F. Gautheron, COMPASS-II Proposal. Tech. Rep. CERN-SPSC-2010-014. SPSC-P340, CERN, Geneva, May 2010. [4] M. Leberig and L. Gatignon, The M2 Beam Line Villar Meeting CERN. July 2004. [5] M. Becker, Serielle Takt- und Datenübertragung am COMPASS-Experiment. Staatsexamensarbeit, Universität Freiburg, 2014. [6] M. Büchele, Entwicklung eines FPGA-basierten 128-Kanal Time-to-Digital Converter fur Teilchenphysik-Experimente. Diplomarbeit, Universität Freiburg, 2012. [7] F. Herrmann, Development and Verification of a High Performance Electronic Readout Framework for High Energy Physics. Dissertation, Universität Freiburg, August, 2011. [8] S. Schopferer, An FPGA-based Trigger Processor for a Measurement of Deeply Virtual Compton Scattering at the COMPASS-II Experiment. Dissertation, Universität Freiburg, 2013. [9] M. Büchele, THick Gas ElectronMultiplier (THGEM) detector readout based on TDCFPGAs. DPG Frühjahrstagung Frankfurt, 2014. [10] S. Dalla Torre, “Ion backflow in thick gem-based detectors of single photons,” IOP Publishing for SISSA Medialab, vol. doi:10.1088/1748-0221/8/01/P01021, Jan. 2013. [11] S. Henzler, Time-to-Digital Converters. Springer Series in Advanced Microelectronics 29, 2010. [12] L. Zaworski, Quantuzation error in time-to-digital converters, vol. XIX. Metrol. Meas. Syst., No. 1, pp. 115–122, 2012. [13] J. Kalisz, “Review of methods for time interval measurements with picosecond resolution,” Military University of Technology, DOI: 10.1088/0026-1394/41/1/004, 2003. [14] Xilinx Inc., 7 Series FPGAs Clocking Resources User Guide. UG472, v1.11.2, June, 2015. www.xilinx.com. 52 LITERATUR [15] I. Kuon und J. Rose, “Measuring the Gap Between FPGAs and ASICs,” IEEE Transactions on computer-aided design of integrated circuits and systems, vol. 26, pp. 203– 215, FEBRUARY 2007. [16] R. Woitowitz, K. Urbanski und W. Gehrke, Digitaltechnik: Ein Lehr- und Übungsbuch. Springer Berlin Heidelberg, 6. übearb. Aufl., 2012. [17] S. Zhang, Delay Characterization in FPGA-based Reconfigurable Systems. Diplomarbeit, Universität Stuttgart, 2013. [18] V. Matrose, “Optimierung der Verdrahtbarkeit unter Berücksichtigung heterogener Verdrahtungsressourcen hierarchischer FPGA-Architekturen,” Dissertation, Technische Universität Berlin, 2009. [19] Xilinx Inc., 7 Series FPGAs Overview. DS180, v1.17, May, 2015. www.xilinx.com. [20] Xilinx Inc., 7 Series FPGAs Configurable Logic Block. ug474, v1.7, Nov., 2014. www.xilinx.com. [21] J. Reichhardt, Lehrbuch Digitaltechnik: eine Einführung mit VHDL. Oldenbourger Wissenschaftsverlag, 3. überarb. und erw. Aufl., 2013. [22] H. Fischer et. al., “The COMPASS Online Data Format,” 2000. [23] Xilinx Inc., Vivado Design Suite User Guide: Implementation. UG904, v2012.4, Dez., 2012. www.xilinx.com. [24] Xilinx Inc., Vivado Design Suite User Guide: Using Constraints. UG903, v2012.2, Sept., 2012. www.xilinx.com. [25] T. Grussenmeyer, Entwicklung eines modularen und verteilten Datenaufnahmesystems für Testexperimente. Diplomarbeit, Universität Freiburg, 2013. [26] I. Baronti et. al., “On the differential nonlinearity of time-to-digital converters based on delay-locked-loop delay lines,” IEEE transactions on nuclear science, vol. 48, pp. 2424–2432, December 2001. [27] A. Mäntyniemi, An integrated CMOS high precision time-to-digital converter based on stabilized three-stage delay line interpolation. Dissertation, University of Oulu, 2004. 53