exemples d’applications avec la carte flex rio de...
TRANSCRIPT
15/11/2011 1/73Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Exemples d’applications avec la carte Flex RIO de NI Des exemples simples … pour réaliser des projets plus complexes …
Utilisation en port d’entrée / sortie
Génération d’une horloge Quelques Mhz à 200 MHz
Génération d’une impulsion de largeur paramétrable 5 ns à 20,5 s
Mesure de la largeur d’une impulsion 5 ns à 20,5 s
Comptage d’impulsions … de 5 ns « de large » …
Accès DMA – Accès SRAM FPGA
Génération de pattern
Sérialisation
25 Démos … ~ 10 seront présentées
Source des démos fournis
Groupe PICSEL - IPHC : Physics with Integrated Cmos Sensors and ELectron machines
Module NI32 I/O LVDS – 200 (300) MHz
Carte Flex RIOPXIe 7962R
Châssis Flex RIO - PXIe
15/11/2011 2/73Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Le but de cette présentation …Présenter brièvement le groupe PICSEL et ses besoins en DAQ
PICSEL = Physics with Integrated Cmos Sensors and ELectron machines
Présentation complète Réunion Réseau Electroniciens 23/11/2010
Réaliser ET Evaluer des « briques de base » avec la carte FlexRIO
Se constituer une boîte à outils Faciliter les développements plus complexes
Génération / Acquisition - Mesure de signaux
Montrer – durant ce talk - comment développer ces applications
Software (LabVIEW) - Firmware (LabVIEW FPGA – VHDL )
HardwareMesure des performances
3/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
IPHC ( Strasbourg )Département de Recherches Subatomiques
Groupe Capteurs CMOS ( Marc WINTER )
R&D Capteurs monolithiques à pixels MAPSDonnent la position d’impact des particules ( x, y )
Plus de 30 capteurs conçus et validés depuis 1999Simple matrice de pixels à lecture analogique
MAPS numériques à suppression de zéros intégrée
L’organisation du groupe Définition des projets 5 Chercheurs
Conception Microélectronique 10 Ingénieurs
Caractérisation des capteurs 5 IngénieursConception des bancs de test & Caractérisation
Etudiants 7 Doctorants
Présentation groupe : Qui sommes nous ?
Le groupe Capteurs CMOS Le capteur : C’est une matrice de pixels• MAPS analogique Lecture analogique série
• MAPS numérique Discriminateur / colonne
• MAPS « intelligent » Suppression de zéros intégrée
SF
Futurs Détecteurs de vertex : STAR – ILC – CBM
120
mm
250 mm
Exemple : ILC
~ 300 106 pixels
Pitch 20-10 µm
Temps de lecture 25-200 µs
50 KRad/an1011 neq/cm²/an
Détecteur de Vertex ILC : 5 Couches de MAPS ~ 300 106 pixels
Les Applications des capteurs
~ 21 mm
~10
mm
En 10 ans de R & D …
• Surface x 100 : ~ 4 mm² 4 cm²
• Temps lecture / 10 : ~ 1 ms 0,1 ms
• Tolérance aux radiations x ~ 10
• Amincissement / 10 : ~ 500 µm 50 µm
1999 - Mimosa 16,5 mm² - 600 images / s
2008 - Mimosa 264 cm² - 10 000 images / s
2,56 mm
2,56
m
m
15/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
5/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Présentation groupe : Caractérisation Calibration & Test en Faisceau
5/21
Calibration au laboratoireBanc de test Source Fe55
Gain [µV/e-] – Collection de charge [%]
Mesure des performances de détection au CERN & DESYTélescope de Faisceau π, e-
Résolution spaciale [µm] – Efficacité de détection [%]
MAPS sur PCB
Fe55 Source
MAPS
X-Ray Photons
Hits
Off-line analysis
Calibration peak5,9 keV
On-line monitoring
Ces Bancs de Test nécessitent des systèmes d’acquisition de données Ressources Développement DAQ
X Photons
4 Plans de référenceCoordonnées x, y particules
( Resoltiuon ~1 µm )Beam(π, 120 GeV)
MAPS à caractériser
X1, Y1
X2, Y2
X3, Y3X4, Y4
Plane n° 1
Plane n° 2
Plane n° 3
Plane n° 4v
u
Scintillateur(trigger)
Scintillateur 4 mm x 4 mm( trigger )
Faisceau
Pions
Plans de référence
Largeur du MAPS = 21 mm
Scintillateur = 4 mm
On-line monitoring
MAPS & Source Fe55
Courtesy from M.Gélin
Single point resolution
σ (X Maps – X Telescope)Mimosa 26 – Pixels 18,4 µm pitch σx ~ σy ~ 4 – 4,5 µm
Off-line analysis
6/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
DAQ pour capteurs numériques Protocoles propriétaires
Liens série 40 MHz à 160 MHz – 20 à 40 MB/s / capteur
A partir de 2009 – Migration cartes DAQ Numériques
Développement cartes au labo National Instrument
Présentation groupe : Besoins DAQ – Réalisations DAQ
Protocole Propriétaire de lecture de Mimosa 26
Télescope de faisceau EUDET
DAQ pour les Applications de nos capteurs
Projet réalisé Télescope de faisceau EUDET
Collaboration Européenne - Projet FP6
6 x Mimosa 26 - 12 liens @ 80 MHz – Max ~ 120 MB/s
Développement d’un « Tool Kit » DAQ Mimosa 26
Transfert & Formation collaborateurs
Projets en cours Demande = x 10 sur performances
AIDA – FP7 72 Mimosa 26 – 144 liens @ 80 MHz – 1440 MB/s
SALAT 3 x 4 Mimosa 28 – 24 liens @ 160 MHz – 456 MB/s
Télescope de faisceau EUDET 6 x Mimosa 26
EUDET European Union project (FP6) 2006-201031 Institutes - 12 countriesDetectors R&D towards the International Linear ColliderJRA1 Test Beam InfrastructureJRA2 Infrastructure for Tracking DetectorsJRA3 Infrastructure for Calorimeters
Web www.eudet.org
12 Liens série
7/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Présentation groupe : Réalisations DAQ
PXIe Link x 4
6 x Mimosa 26
Clock out 80 MHz
Start
2 Data links / Mi26Synchro
Clo
ck in
80
MH
zPXIe Crate
RAID Disk - 3 TBHDD 8264
NI PXIe Link x 4 = 4 x 200 MB/s Mesuré PXIe x 1 à ~ 195 MB/s
MXI Link ~ 600 MB/sMesuré à ~ 600 MB/s
EUDET JRA1 SWRun ctrl & Monitoring
LVDS front endPXI 6585
Flex RIO boardPXIe 7962R
CPUPXIe 8130
PXIe / MXI interfaceNI 8262
Ethernet link1 Gb/s ~ 100 MB/s
Il faut pouvoir soutenir 120 MB/sde la carte vers le disque
EUDET 6 x Mimosa 26 1 Carte Flex RIO & 1 Châssis
Débit No 1 Flex = D1 CPU
Débit No 2 Flex = D2 CPU Disque
Débit Flex Disque en “séquentiel” = Pire cas !(D1 x D2) / (D1+ D2) = 147 MB/s > 120 MB/s
DAQ Réalisés & Validés
• 8 x Mimosa 26 – 16 liens @ 80 MHz 160 MB/s
• 6 x Ultimate – 12 liens @ 160 MHz 230 MB/s
8/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Les personnes impliquées dans les tests … Photo en 2009Développement bancs de test … Tests & Caractérisation … Transfert - Collaborations
Mathieu GOFFE
* Guy DOZIEREMarie GELIN
Caractérisation MAPS Analyses données faisceau
Matthieu SPECHT
Gilles CLAUS
Conception de Cartes d’Acquisition Cartes de Test des MAPS *
* Wojciech Dulinski
Slow Control - Développement FW Conception – Caractérisation
PLL – Liens Série Rapides
Montage & Test CartesDéveloppement HW & SW
Emulation ASIC
Kimmo JAASKELAINEN
Définition des bancs de Test - CoordinationDéveloppement SW DAQ & Monitoring
* Les micro-électroniciens directement impliqués dans les tests
Test de SUZE
Caractérisation des ADC
* Nicolas PILLET
Développement FWDAQ Test en faisceau
Cayetano SANTOS
* Andrei DOROKHOV
Michal KOZIEL
Caractérisation MAPS & Tests d’irradiationConception SW Analyse
Sans oublier les physiciens qui analysent les données faisceau J.Baudot, M.Gélin, R.De Masi, CDritsa …
Michael DEVEAUX
Collaboration IPHC / IRFU ( CEA )Conception MAPS Numériques
STAR Upgrade VTx
EUDET Télescope faisceau
Michal SZELEZNIAKCaractérisation MAPS
Intégration / STAR
Antonio BULGHERONICaractérisation MAPS
Conception SW analyse faisceau
9/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Forte implication du Groupe Micro-Techniques dans nos activités
Activités Micro-Techniques
Routage des cartes
Montage des cartes
Bonding des Capteurs
Tests sous pointes
Montage échelles de capteursPlacement composants sur cartes
Soudure cartes - Four
Bonding capteurs
Assemblage d’échelles de capteursTests sous pointes des capteurs
10/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Seconde partie …
un peu de Technique …
juste de quoi s’amuser …
Démos firmware carte FlexRIO
11/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Châssis + CPU + Flex RIO + Module I/O Total ~ 15 K€
Pas de Flex RIO PCI pour PC Pas de solution Flex RIO « Low cost »
Mais l’architecture « Châssis » a ses avantages
Modularité et scalabilité Augmenter le nombre de cartes
Puissance CPU disponible
Emission des données via Ethernet
Sauvegarde des données Interface vers RAID
Architecture PXIe Flex RIO : Similaire aux systèmes VME
Système RIO FPGA « low cost »Quelques K€
Compact RIO
Single board RIO
Châssis PXIe
Carte CPU
Carte vers RAID
Carte vers Flex RIO( dans le châssis)
Module I/O pour Flex RIO
12/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Ressources sur la carte Flex RIO
1 Virtex 5
Deux blocs de DRAM bus 64 bits - 512 MB chacun
Bus PXIe vers le CPU BW annoncée ~ 800 MB/s
Interface vers le monde extérieur (via module LVDS 6585)
Deux ports DDCA et DDCB – Sur chacun :
1 x horloge en entrée DDC Clock In
1 x horloge en sortie DDC Clock Out
4 x lignes d’usage général (Synchro, trigger, etc …) PFI 1,2,3,4
Un bus 16 bits DDC 00..15
Fréquence d’horloge maximale
200 MHz en SDR = Single Data Rate
300 MHz en DDR = Double Data rate
Génération sur les deux fronts d’horloge
Carte Flex RIO + Interface Module 6585 : En résumé …
DDCA
Module NI32 I/O LVDS – 200 (300) MHz
Carte Flex RIOPXIe 7962R
DDCB
Setup utilisé pour réaliser les démos
13/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Software SW
Est exécuté par le CPU
Souplesse / Facilité Développement & Upgrades LabVIEW – C, Pascal, etc …
Efficacité modérée « Mauvais pour » …
Réponse temps réel
Traitement en ligne de flux de données élevé
Traitement parallèles
Firmware FWS’exécute dans un FPGA
Difficulté / Lourdeur Développement & Upgrades
Efficacité élevée « Très bon pour »
Réponse en temps réel
Traitement de flux de données élevés
Traitement parallèles
Firmware / Software : LabVIEW - C / LabVIEW FPGA - VHDL
Si il fallait conclure …
Software & Firmware Complémentaires Faire le bon compromis entre SW et FW
CPU
FPGA
14/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Intro No 1 : Génération d’un pulse de 1 ms par SW
BilanLa largeur du pulse varie
Largeur moyenne 1 ms
Jiiter 88 µs peak/peak
Jiiter = 8,8 % largeur
Jiiter peut atteindre 80 % …
Largeur d’impulsion – SW LabVIEW « seul »
Largeur d’impulsion – Avec SW « perturbateur »
15/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Intro No 1 : Génération d’un pulse de 1 ms par FW
BilanLa largeur du pulse constante
Largeur moyenne 1 ms
Plus de jiiter
Max 5 ns dans notre cas
Le SW ne génère pas le pulse
Il ordonne au FW de le faire
Largeur d’impulsion – Avec SW « Perturbateur »
16/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Intro No 2 : Génération d’une horloge 500 Hz par SW
BilanLa fréquence varie !
Même avec les outils « ad-hoc »
Time loop LabVIEW
Si on regarde « une fois » – OK
Si on regarde longtemps – Jiiter Inutilisable
17/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
BilanFréquence constante
Dérivée d’horloge mère
5 MHz / 8192 = 610 Hz
Jitter = Lié à l’horloge mère
Le SW ne génère pas l’horloge
Il ordonne au FW de le faire
Intro No 2 : Génération d’une horloge 610 Hz par FW
Horloge générée – Malgré SW « Perturbateur »
18/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 1 : Comment ça marche ?
Software LabVIEW
Firmware LabVIEW FPGA
Deux FAV & DiagrammesSW LabVIEW
FW LabVIEW FPGA
LabVIEW FPGA VHDL Netlist
Compilation = Outils Xilinx
Explorateur de projet
19/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 1 : Fréquence maximale
Fréquence maximale Timed LoopTime Loop vide Difficile de faire mieux
500 MHz Max
Limites HW FPGA
Limites de l’implémentation du code
20/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 2 : Ecriture / Lecture d’un registre - Le SW
But ?SW écrit dans registre (32 bits) du FW
SW relit contenu du registre
SW sensé relire ce qu’il a écrit ;-)
Evaluer la fréquence maximale W/R
21/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 2 : Ecriture / Lecture d’un registre - Le FW
Fréquence maximale W/R ?Côté FW Compilation Max 250 MHz
Mais aucune info sur F Max côté SW
Accès à 250 MHz ? … peu probable …
Pas de moyen de mesure … pour l’instantVoir démo No X
22/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 3 : Pilotage d’un signal HW - Le SW
But ?Générer un pulse sur PFI1
Evaluer le temps d’accès (SW + HW)Mini ~ 200 ns
Maxi ~ 1 µs
Fréquence équivalente 1 à 5 MHz
23/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 3 : Pilotage d’un signal HW - Le FW
Comment ça marche ?La FAV contient un contrôle « DDCA PFI1 State » Registre qui fixe l’état de PFI1
Le diagramme contient une « Timed loop » @ 200 MHz
Elle lit le registre
Fixe la direction du signal PFI1 WE = Write Enable
Ecrit l’état du registre sur le port de sortie
24/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 3 : Pilotage d’un signal HW - Comparaison / USB & Port //
Temps d’accès - Bus PXIe ?Mesure du temps d’accès (SW + HW)
Mini ~ 200 ns - Maxi ~ 1 µs
Fréquence équivalente 1 à 5 MHz
Même démo avec module I/O USB 2.0 …Mesure du temps d’accès (SW + HW)
Mini ~ 80 µs - Maxi ~ 200 µs
Fréquence équivalente 5 à 12,5 KHz
En principe accès par multiples de 125 µs (micro-frame)
80 µs
200 µs
Même démo avec Port // PC ?Mesure du temps d’accès (SW + HW)
Mini ~ 1 µs - Maxi ~ 2 µs
Fréquence équivalente 0,5 à 1 MHz
25/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 4 : Temps d’écriture dans un registre - Le SW
400 ns / div – Min ~ 250 ns – Max ~2,25 µs
But ?Mesurer temps W registre 32 bits
Utilise PFI1 pour visualiser ce tempsSet PFI1 – Write – Reset PFI1
Temps d’accès
250 ns à 2,25 µs
Pour mémoire PFI1 seul 200 ns à 1 µs
Point de vue BP ?Accès 32 bits 4 octets
Débit > 1,7 MB/s à 15 MB/s
Bon pour un accès registreA opposer à un mode bloc
26/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 4 : Temps d’écriture dans un registre - Le FW
Comment ça marche ?La FAV contient deux contrôles L’etat de PFI1 et le Registre 32 bits
Le diagramme contient
Une phase d’initialisation qui fixe la direction des I/O
Une « Timed loop » @ 200 MHzPilote PFI1
Lit le registre U32 et positionne PFI2 à 1 si U32 <> 0
27/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 5, 6, 7 : Les temps d’accès à un registre
Bilan de quelques mesures
Ecriture U32 sans accès au GUI250 ns à 2,5 µs Débit ~ 1,7 MB/s à 15 MB/s
• Ecriture U32 avec lecture valeur depuis GUIMini ~ 300 ns ( ~ 250 ns sans accès GUI Influence faible )
Lecture registre U32 sans accès au GUI2 à 2,5 µs Débit ~ 1,5 MB/s à 2 MB/s
Inférieur à débit en écriture
Ecriture et lecture U32 sans accès au GUI
2 à 3 µs Débit ~ 1,3 MB/s à 2 MB/s
Chiffres à ne pas prendre à la lettre … Le but est d’avoir un ordre de grandeur en tête !
Latence d’accès au bus PXIe faible ~ n x 1 µs
Débit raisonnable ( Bien que ne soit pas le but des registres ! )
28/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 8 : Lecture d’une entrée - Le SW
But ?Lire l’état de l’entrée PFI2
L’afficher dans le GUI sur une « led »
Faire l’opération toutes les 10 ms
29/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 8 : Lecture d’une entrée - Le FW
Comment ça marche ?
La FAV contient un indicateur L’etat de PFI2
Le diagramme contient une « Timed loop » @ 200 MHz
Elle fixe PFI2 en entrée ( pourrait être effectué hors de la Timed loop )
Elle lit l’état de l’entrée PFI2 et l’écrit dans le registre « DDCA PFI2 State »
30/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 9 : Pilotage sortie & Lecture entrée - Le SW
But ?Piloter la sortie PFI1 par SW
Lire l’entrée PFI2 par SW
PF1 reliée à PFI2 pour la démo
PFI1 mise à 0 PFI1 mise à 1
31/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 9 : Pilotage sortie & Lecture entrée - Le FW
Comment ça marche ?
La FAV contient un contrôle ( la valeur de PFI1 ) et un indicateur ( l’état de PFI2 )
Le diagramme contient une « Timed loop » @ 200 MHz
Elle fixe PFI1 en sortie et PFI2 en entrée ( pourrait être effectué hors de la Timed loop )
Elle copie l’état du contrôle (registre) « DDCA PFI1 Out Sate » sur PFI1
Elle lit l’état de l’entrée PFI2 et l’écrit dans l’indicateur (registre) « DDCA PFI2 State »
32/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 10 : Copie d’un signal par SW … Hérésie - Le SW
But ?Acquérir l’entrée PFI2 par SW
La recopier sur PFI1 par SW
Evaluer la fréquence maximaleCa décroche à partir de 10 KHz
33/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 10 : Copie d’un signal par SW … Hérésie - Le FW
Comment ça marche ?
La FAV contient un contrôle ( la valeur de PFI1 ) et un indicateur ( l’état de PFI2 )
Le diagramme contient une « Timed loop » @ 200 MHz = Démo No 9
Elle fixe PFI1 en sortie et PFI2 en entrée ( pourrait être effectué hors de la Timed loop )
Elle copie l’état du contrôle (registre) « DDCA PFI1 Out Sate » sur PFI1
Elle lit l’état de l’entrée PFI2 et l’écrit dans l’indicateur (registre) « DDCA PFI2 State »
34/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 11 : Copie d’un signal par FW - Le SW
But ?Recopier PFI2 sur PFI1 par FW
Le SW n’intervient pas
Evaluer la fréquence maximaleHorloge FW 200 MHz
Test jusqu’à 15 MHz
35/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 11 : Copie d’un signal par FW - Le FW
Comment ça marche ?
La FAV contient rien Aucun contrôle ni indicateur
Le diagramme contient une « Timed loop » @ 200 MHz ( 5 ns période )
Elle fixe PFI1 en sortie et PFI2 en entrée ( pourrait être effectué hors de la Timed loop )
Elle lit l’état de l’entrée PFI2 et le mémorise ( Feedback node )
Copie l’état sur la sortie PFI au coup d’horloge suivant 5 ns de latence
36/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 12 : Diviseur d’horloge - Le SW
But ?Générer une horloge sur PFI1
Fréquence paramétrable par SW
Fréquence = 200 MHz / 2n
Le SW « ne fait rien »Configure le FW
Clock divider config
Diviseur par 2 100 MHz
Diviseur par 16 12,5 MHz
Diviseur par 128 1,56 MHz
Horloge mère 200 MHz
Horloge mère 200 MHz
Horloge mère 200 MHz
37/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 12 : Diviseur d’horloge - Le FW
Comment ça marche ?La FAV contient un contrôle Le rapport de division ( registre U32 )
Le diagramme contient
Une phase d’initialisation Fixe PFI1 en sortie – Autorise sortie horloge mère sur DDCA Clock out
Une « Timed loop » @ 200 MHzIncrémente un compteur 32 bits « Reset automatique lorsqu’il déborde »
Extrait un bit du compteur (Division par 2n ) et « le sort » sur PFI1
38/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 13 : Horloge DDR - Le SW
« Diviseur par 1 » 200 MHz
Horloge mère 200 MHz
But ?Générer une horloge sur PFI1
Fmax PFI1 = Fmère / 2Donc 100 MHz ( Fmère 200 MHz )
Sauf si on pilote sur les deux frontsDDR = Double Data Rate
Grâce au mode DDROn pilote PFI1 sur
Front montant de l’horloge mère
Front descendant de l’horloge mère
Fmax PFI1 = Fmère !
39/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 13 : Horloge DDR - Le FW
Comment ça marche ?La FAV ne contient rien
Le diagramme contient une « Timed loop » @ 200 MHz
Elle fixe PFI1 en sortie et autorise la sortie de l’horloge mère sur DDCA Clock out
Elle met PFI1 à 0 sur front descendant de l’horloge
Elle met PFI1 à 1 sur front montant de l’horloge
40/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 14 : Générateur d’impulsion - Le SW
But ?Générer une impulsion sur PFI2
Horloge FW = 200 MHzLargeur mini = 5 ns
Compteur 32 bitsLargeur maxi = 21,5 s
Impulsion de 5 ns
Impulsion de 1 ms
Rôle du SWConfigure la largeur d’impulsion
Donne l’ordre de générer l’impulsionBouton « Pulse Request »
41/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 14 : Générateur d’impulsion - Le FW 1/3
Comment ça marche ?La FAV contient deux contrôles Largeur d’impulsion – La commande pour générer l’impulsion
Le diagramme contient
Une phase d’initialisation Fixe la direction des I/O
Une « Timed loop » @ 200 MHzQui génère l’impulsion
42/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 14 : Générateur d’impulsion - Le FW 2/3
Fonctionnement étape par étapeDétection d’un front montant sur « Pulse request » Chargement du compteur & Set de PFI2
Tant que le compteur > 0 On le décrémente
43/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 14 : Générateur d’impulsion - Le FW 3/3
Fonctionnement étape par étapeLe compteur atteint 0 On le transmet sans le décrémenter & Reset de PFI2
44/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 15 : Générateur d’impulsion - Firmware plus simple !
Impulsion de 10 ns
FW plus simple que démo 14 Un seul niveau
Mais performances réduites F max = 125 MHz
FW compilé horloge 100 MHz (max 125 MHz)
Largeur mini impulsion = 10 ns !
Démo 14 F max = 250 MHz
45/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 16 : Générateur d’impulsion avec Trigger HW - Le SW
But ?Sur front montant de PFI1
Générer une impulsion sur PFI2
Horloge FW = 200 MHzLargeur 5 ns à 21,5 s
PFI2 Impulsion de 100 ns
PFI1 = Trigger
Délai ?L’impulsion est en retard / Trigger
Retard de 56,8 ns causé parLes câbles de la manip (5 ns/m)
Les buffers ( manip + Flex RIO )
La latence de détection trigger ( 5 ns )
46/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 16 : Générateur d’impulsion avec Trigger HW - Le FW
Comment ça marche ?La FAV contient deux contrôles Largeur d’impulsion – Autorisation trigger
Le diagramme contient
Une phase d’initialisation Fixe la direction des I/O
Une « Timed loop » @ 200 MHzQui détecte le trigger et génère l’impulsion ( sur le même principe que Démo 14 )
47/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 17 : Mesure largeur d’impulsion - Le SW
But ?Mesurer la largeur d’une impulsion sur PFI4
Dynamique 5 ns à 21,5 s
Pour testerOn génère une horloge 2 MHz sur PFI3
Elle déclenche un générateur d’impulsionTriggé sur PFI1 – Génère pulse sur PFI2
Ce générateur de pulse attaque PFI4
Impulsion de 5 ns- Générée sur PFI2- Mesurée sur PFI4
48/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 17 : Mesure largeur d’impulsion - Le FW 1/2
Fonctionnement étape par étape ?Génération d’une horloge 2 MHz sur PFI3
Générateur d’impulsion ( cf Démo 16 ) déclenché par l’horloge ( PFI1 = Trigger – PFI2 = Sortie )
Tout ceci sert uniquement à tester le module de mesure de largeur d’impulsion
49/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 17 : Mesure largeur d’impulsion - Le FW 2/2
Fonctionnement étape par étape ?Si front montant sur PFI4 Reset compteur
Tant que PFI4 = 1 Incrémente compteur
Si front descendant sur PFI4 Capture du résultat ( registre Pulse width )
50/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 18 : Génération et Comptage d’impulsions - Le SW
But ?Générer des impulsions sur PFI1, 2
Largeur 5 ns à 20,5 s FW
Cadencement (salve) SW
Compter ces impulsions sur PFI 3, 4Dynamique 5 ns à 21,5 s
51/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 18 : Génération et Comptage d’impulsions - Le FW 1/2
Comment ça marche ?La FAV contient
La configuration de la largeur d’impulsion générée
Les commandes : Reset compteurs, Démarrage comptage, Génération de l’impulsion
Le résultat des deux compteurs d’impulsions
Le diagramme contient deux « Timed loop »
Une pour générer une impulsion (la salve pilotée par SW) Cf Démo 14
Une pour compter les impulsions
52/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 18 : Génération et Comptage d’impulsions - Le FW 2/2
Comptage des impulsionsReset des compteurs effectué par SW « Reset Cmd »
Démarrage / Arrêt du comptage par SW « Count Cmd »
Front montant sur entrée Incrémenter compteur
Mise à jour des registres résultats à chaque coup d’horloge – Sauf si « Count Cmd » = 0 Capture
53/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 19 : Ecriture DMA Fifo 42 Bytes ;-) - Le SW
But ?Transfert de données haut débit ???
Canal DMA du CPU vers le FPGA
Mesurer le débitTemps d’écriture côté CPU via PFI1
Temps de lecture côté FPGA via PFI2
Influence de la taille de la FifoCôté PC 2048 U16 (4096 Bytes)
Côté FPGA 21 U16 (42 Bytes)
54/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 19 : Ecriture DMA Fifo 42 Bytes ;-) - Débit ?
Calcul du débitFifo 2048 U16 4096 Bytes
Côté CPU transfert en 26 µsSoit 4 KB / 26 µs = 150 MB/s
Côté FPGA lecture fifo en 250 µsSoit 4 KB / 250 µs = 15 MB/s !!!
Ce n’est pas plus rapide que le mode registre !!!
Demo 4 – Write U16 1,7 à 15 MB/sCause = Fifo trop petite
Côté FPGA 21 U16
Le FW dépile 21 U16 @ 200 MHz = 105 ns
Ensuite le FW attend l’accès au busLatence 250 ns à 2,25 µs (Demo 4)
Latence dans notre exemple 1,75 µs
Importance : Taille fifo – Latence accès busL’importance de comprendre ce qu’on fait …
PFI1 = Temps d’écriture côté PC
PFI2 = Temps lecture fifo côté FPGA
250 µs
1,75 µs
Lecture de 21 U16 ~ 100 ns
55/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 19 : Ecriture DMA Fifo 42 Bytes ;-) - Le FW
Comment ça marche ?Une « Timed loop » @ 200 MHz
Teste si qqch a lire dans la fifo
Si oui Lit un U16
Set PFI2 durant la lecturePour mesurer le temps de lecture
Met à jour PFI 1 (contrôlé par SW)
56/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 20 : Ecriture DMA Fifo 4106 Bytes - Le SW
But ?Transfert de données haut débit
Canal DMA du CPU vers le FPGA
Mesurer le débitTemps d’écriture côté CPU via PFI1
Temps de lecture côté FPGA via PFI2
Influence de la taille de la FifoCôté PC 2048 U16 (4096 Bytes)
Côté FPGA 2053 U16 (4106 Bytes)
57/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 20 : Ecriture DMA Fifo 4106 Bytes - Débit ?
Calcul du débitFifo 2048 U16 4096 Bytes
Côté CPU transfert en 27 µsSoit 4 KB / 27 µs = 145 MB/s
Côté FPGA lecture fifo en 20,5 µsSoit 4 KB / 20,5 µs = 190 MB/s
C’est ce qu’on attend d’in transfert DMA
A comparer à la démo précédante 15 MB/sCause = Fifo bien dimentionnée
Côté FPGA 2053 U16
Le FW dépile 2053 U16 @ 100 MHz = 20,5 µs
Ensuite le FW attend l’accès au busLatence 250 ns à 2,25 µs (Demo 4)
Latence dans notre exemple 1,75 µs
Importance : Taille fifo – Latence accès busL’importance de comprendre ce qu’on fait …
PFI1 = Temps d’écriture côté PC
PFI2 = Temps lecture fifo côté FPGA
58/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 20 : Ecriture DMA Fifo 4106 Bytes - Le FW
Comment ça marche ?Une « Timed loop » @ 100 MHz
Teste si qqch a lire dans la fifo
Si oui Lit un U16
Set PFI2 durant la lecturePour mesurer le temps de lecture
Met à jour PFI 1 (contrôlé par SW)
RemarqueLa compilation à 200 MHz échoue
Raison de la « Timed loop » @ 100 MHz
59/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 21 : Ecriture 2 x Fifo DMA // - Le SWBut ?
Transfert de données très haut débitCanal DMA du CPU vers le FPGA
Mesurer le débitTemps d’écriture côté CPU via PFI1
Temps de lecture côté FPGA via PFI2, PFI3
Influence de la taille de la FifoCôté PC 2048 U16 (4096 Bytes)
Côté FPGA 2053 U16 (4106 Bytes)
60/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 21 : Ecriture 2 x Fifo DMA // - Débit ?
Calcul du débitFifo 2048 U16 4096 Bytes
Côté CPU transfert en 42 µsSoit 4 KB / 42 µs = 93 MB/s
Côté FPGA lecture une fifo en 20,5 µsSoit 4 KB / 20,5 µs = 190 MB/s / fifo
Côté FPFA les deux fifos lues en 28 µsSoit 8 KB / 28 µs = 280 MB/s Total
Bilan
Deux fifos // Débit x 1,5 En théorie … on pourrait espérer … Débit x 2 …
PFI1 = Temps d’écriture côté PC
PFI2 = Temps lecture fifo No 1 côté FPGA
PFI3 = Temps lecture fifo No 1 côté FPGA
28 µs
Débit côté CPU < côté FPGA ?Ou est la fuite dans le tuyau ;-)
C’est forcément le SW !La création du tableau (Allocation, cast, copie)
Des recopies de données
Cette démo n’est pas optimisée côté SWUtiliser U32 plutôt que U16, etc …
61/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Comment ça marche ?Une « Timed loop » @ 100 MHz
Teste si qqch a lire dans les fifos
Si oui Lit un U16
Set PFI2 (fifo No 1) ou PFI3 (fifo No 2) durant lecturePour mesurer le temps de lecture
Met à jour PFI 1 (contrôlé par SW)
Même code pour chaque fifoS’exécute en //
RemarqueLa compilation à 200 MHz échoue
Raison de la « Timed loop » @ 100 MHz
Démo No 21 : Ecriture 2 x DMA Fifo // - Le FW
62/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 22 : Lecture Fifo DMA 4094 Bytes - Le SW
But ?Transfert de données haut débit
Canal DMA du FPGA vers le CPU
Mesurer le débitTemps de lecture côté CPU via PFI1
Temps d’écriture côté FPGA via PFI2
Influence de la taille de la FifoCôté PC 2048 U16 (4096 Bytes)
Côté FPGA 2047 U16 (4094 Bytes)
63/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 22 : Lecture Fifo DMA 4094 Bytes - Débit ?
Calcul du débitFifo 2048 U16 4096 Bytes
Côté CPU transfert en 21 µsSoit 4 KB / 42 µs = 186 MB/s
Côté FPGA lecture une fifo en 20,5 µsSoit 4 KB / 20,5 µs = 190 MB/s / fifo
PFI1 = Temps de lecture côté PC
PFI2 = Temps d’écriture fifo côté FPGA
64/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Comment ça marche ?Une « Timed loop » @ 100 MHz
Teste si il y a de la place libre dans la fifo
Si oui Ecrit un U16
Set PFI2 durant l’écriturePour mesurer le temps de lecture
Met à jour PFI 1 (contrôlé par SW)
RemarqueLa compilation à 200 MHz échoue
Raison de la « Timed loop » @ 100 MHz
Démo No 22 : Lecture Fifo DMA 4094 Bytes - Le FW
65/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 23 : Utilisation SRAM FPGA - Le SW
But ?Ecriture / Lecture de la SRAM FPGA
Demo simple Pas d’accès SWEcriture Boucle FW, écrit 0,1,2 ... N
Lecture Boucle FW, sort U16 sur DDCAVérification fonctionnement au scop
A quoi sert le SW ?A charger et démarrer le FW
PFI2 = Sortie premier vecteur
Bit 0 rampe 0, 1, 2 ...
Bit 1 rampe 0,2,4 ...
66/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Comment ça marche ?
Initialise la SRAM avec la rampe
Lit la SRAM en boucle et la sort sur DDCA
Démo No 23 : Utilisation SRAM FPGA - Le FW
67/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 24 : Générateur de pattern - Le SW
But ?Dérouler une table de vecteurs sur DDCA
La table configurée par SW est stockée en SRAM
Utilise les démos précédentesAccès port PFIx, DDCA
Transfert DMA
Ecriture / Lecture SRAM
Exemple de table de vecteursTable de 8 vecteurs générée sur DDCA
Les 4 premiers vecteurs contiennent une rampe
Les 4 vecteurs suivants sont à 0
PFI 4 est mis à 1 sur le premier vecteur
PFI4 = Sortie premier vecteur
Bit 0 rampe 0, 1, 2 ...
Bit 1 rampe 0, 2, 4 ...
68/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 24 : Générateur de pattern - Le SW
Le softwareMérite quelques commentaires … ;-)
69/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 24 : Générateur de pattern - Le FW
Le firmware
Mérite quelques commentaires … lui aussi !
70/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 25 : Sérialiser - Le SW
But ?Générer un lien série
Horloge 200 MHz
Synchro début mot = PFI2
Sortie série = PFI1
Sérialisation LSB first
Un seul mot configuréRegiste Pas de DMA
Trois exemples de données $ 0001
$ 0005
$ 8001
PFI2 = Synchro
PFI1 = Sortie série
Horloge 200 MHz
5
71/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Démo No 25 : Sérialiser - Le SW
Rôle du SW ?Configure la donnée
Donne l’ordre de sérialiser
72/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Comment ça marche ?Une « Timed loop » @ 200 MHz
Charge la donnée à sérialiser
Génère un masque pour extraire les bits
Sort Data AND Mask sur PFI1
Set PFI2 lors de la sortie du premier bit
Démo No 25 : Sérialiser - Le FW
73/7315/11/2011 Réseau des électroniciens CNRS - Strasbourg – 15 Novembre 2011 - V1.0 [email protected]
Conclusion
Ce que je n’ai pas traité … par manque de temps …L’accès à la DRAM ( Deux blocs 512 MB « on board » )
L’intégration de code VHDL HDL Interface Node & User defined CLIP (Component Level IP)
Ce que je ne dis pas !Qu’on peut se passer de développeurs FW expérimentés (Full Time Job) Non !
Que tout FW peut être écrit en LabVIEW FPGA = Oublier le VHDL Non !
• Ce que je dis = LabVIEW FPGA peut permettreA des électroniciens « Non experts VHDL » de s’impliquer dans le développement FW
De décharger les experts VHDL des développements « simples »Pour des projets simples on peut se passer d’experts
De séparer les grands projets entreL’architecture générale et les I/O LabVIEW FPGA
Des parties plus complexes / Critiques en temps d’exécution VHDL
L’idée Augmenter les personnes impliquées dans le développement