|
Carte d'acquisition de données à
haute vitesse
Ce mini-projet à été réalisé
de octobre 2000 à janvier 2001 en binôme (B. LAVAUD
et moi-même) durant nôtre troisiéme année
du cycle ingénieur à l'ESEO. Ce mini-projet entre
dans le cadre du projet de fin d'études ESEO.
Voici le plan du rapport de mini-projet contenu dans cette page
:
I - Présentation
du sujet
II - Cahier des charges
III - Veille technlogique
A - CAN
B - CNA
C - FPGA
D - SRAM
IV - Spécifications
de la carte d'acquisition
A - Architecture de la carte
1 - Caractéristique de
la carte
2 - Choix des composants
B - Architecture interne du FPGA
1 - Description de chaque composant
2 - Description fonctionnelle
V - Industrialisation et
Maintenance
A - Fichiers ORCAD
B - Mise en fonctionnement et test
1 - Vérification des niveaux
d'alimentations
2 - Accès aux signaux logiques
3 - Programmation du FPGA
C - Programmes de test
1 - Test du FPGA
2 - Test du CNA
3 - Test du CAN
4 - Test de la SRAM
VI - Application et évolution
A - Application
B - Evolution
VII - Conclusion
I - Présentation
du Sujet
Dans le cadre de la dernière année de formation
d'ingénieur à l'ESEO, il est demandé aux étudiants
de SEA de réaliser un projet dans le domaine de l'électronique.
Ce projet a une durée de 128h. environ répartie sur
3 mois.
Le projet que nous avons choisi consiste à développer
un système d'acquisition de données rapide de Bande
Passante de 20 MHz. Le travail à réaliser pour ce
projet consiste à mettre en uvre une chaîne d'acquisition
à base de FPGA.
II - Cahier des charges
Le cahier des charges qui nous a été fourni est le
suivant :
Acquisition de données Haute vitesse :
Mise en uvre d'une chaîne d'acquisition de signaux
de bande passante de 20 Mhz dont le séquenceur sera intégré
au sien d'un circuit FPGA Xilinx.
Le paramétrage des voies d'acquisition (fréquence
d'échantillonnage, nombre de voies) s'effectuera par l'intermédiaire
d'une liaison I2C.
Avant de commencer la conception de la carte d'acquisition, on
nous a demandé d'effectuer une recherche concernant les composants
utilisés dans des chaînes d'acquisition de données
rapide.
III - Veille technologique
Développer un système d'acquisition de donnée
haute vitesse (> 1MSPS) nécessite l'utilisation de composants
rapides, relativement récent, peu répandus et chers.
Il est donc intéressant de regrouper et de comparer dans
un document un ensemble de composants qui peuvent être utilisés
dans ce type de système d'acquisition.
Nous avons principalement axé notre recherche sur quatre
composants nécessaires à une chaîne d'acquisition.
Ces quatre composants sont : CAN, CNA, FPGA (pour séquencer
les acquisitions) et mémoire SRAM.
A - CAN
Nous avons recherché différents CANs parmi 6 constructeurs
de semi-conducteurs :
- Analog Devices
- Maxim
- National Semiconductors
- Philips Semiconductors
- Linear Technology
- Burr-Brown (TI)
Les caractéristiques importantes pour les CAN recherchés
sont la vitesse de conversion, le nombre de bits converti, la dynamique
de tension, l'alimentation, la disponibilité, l'impédance
d'entrée,
Remarque : Sur l'ensemble des CAN trouvés, peu sont
disponibles dans les catalogues classiques des revendeurs de matériels
électroniques (Farnel, Radiospares,...).
Le descriptif des principales caractéristiques des CANs
est donné en annexe.
B - CNA
Nous avons recherché quelques CNAs rapides parmi différends
constructeur :
- Analog Devices
- Harris
- Texas Instruements
- Maxim
Les principales caractéristique des CNA recherchés
sont sa vitesse de conversion, son niveau d'alimentation,
Le descriptif des principales caractéristiques des CNA est
donné en annexe.
C - FPGA
Les FPGA que nous avons choisi d'étudier sont des FPGA fabriqués
par XILINX.
Le tableau ci-dessous regroupe quelques caractéristiques
principales des FPGA XILINX. Le type de boîtier n'est pas
précisé pour chaque famille de FPGA puisque chaque
famille se décline sur plusieurs types de boîtier.
|
High density devices
|
Low Cost devices
|
VIRTEX
50 à 1.000 K. Portes
180 à 512 I/O
Double Alimentation 3.3V et 2.5V
Propagation dans un CLB : 2 ns max
Propagation dans un IOB : 2 à 10 ns max.
jusqu'à 200 MHZ
VIRTEX-E
20.000 à 800.000 Portes (vrai)
1700 à 18000 Flip-Flop
176 à 804 I/O
Double Alimentation 3.3V et 1.8V
Propagation dans un CLB : 4 ns max
jusqu'à 350 MHZ
CLB : Configurable Logic Block
IOB : Input Output Block
|
SPARTAN-II
15.000 à 200.000 Portes
Double Alimentation 3.3V et 2.5V
jusqu'à 160 MHZ
Propagation dans un CLB : 10 ns max
XC4000EX/XL
1.000 à 180.000 Portes
256 à 7000 FLIP-FLOP
64 à 448 I/O
Alimentation 5V
Freq : 111 à 166 MHz
Propagation dans un CLB : 10 ns max.
Propagation dans un IOB : 5 à 20 ns max.
XC4000XLA/XV
10.000 à 500.000 Portes
1500 à 18000 Flip-Flop
192 à 448 I/O
Alimentation XLA 3.3V, XV2.5V
Propagation dans un CLB : 2 à 5 ns max.
Propagation dans un IOB : 5 à 20 ns max.
|
Remarque : Les temps de propagation dans un CLB et un IOB
présents dans ce tableau donnent un ordre de grandeur de
la rapidité des technologies utilisées par les différentes
familles de FPGA. Cependant, il est difficile de déterminer
précisément les temps de propagation puisqu'ils dépendent
de nombreux facteurs (configuration des CLB et IOB, alimentation,
fréquence, point de mesure,
)
D - SRAM
Les mémoires que nous avons recherchées sont toutes
des mémoires dont les temps d'accès sont inférieures
à 20 ns. Nous avons principalement recherché les mémoires
SRAM dans les catalogues Farnel et Radiospares.
|
Référence
|
Description
|
Densité (bits)
|
Alim.(V)
|
Vitesse (ns)
|
Package
|
Prix unitaire (FF)
|
|
MCM67A618A
|
18*64K
|
1M
|
5
|
10, 11, 12, 15
|
PLLC 52
|
-
|
|
MCM6949
|
4*1M
|
4M
|
3,3
|
10, 11, 12, 15
|
SOJ 400
|
-
|
|
EDI8F8512C-M6
|
8*512K
|
4M
|
5
|
20, 35
|
DIP32
|
-
|
|
EDI8F8513C-M6
|
8*512K
|
4M
|
5
|
20,35
|
DIP32
|
-
|
|
M48Z128-85MP1
|
-
|
1M
|
-
|
5
|
DIL32
|
466
|
|
CY7C128A-20PC
|
-
|
16K
|
-
|
20
|
DIL24
|
46
|
|
IDT7164S15TP
|
-
|
64K
|
-
|
15
|
DIL28
|
18
|
|
CY7C199-15PC
|
-
|
256K
|
-
|
15
|
DIL28
|
26
|
|
IDT7164S15Y
|
-
|
64K
|
-
|
15
|
SOIC28
|
18
|
|
CY7C199-15VC
|
-
|
256K
|
-
|
15
|
SOJ28
|
26
|
|
CY7C109-15VC
|
-
|
1
|
-
|
15
|
SOJ28
|
40
|
|
KM681001HJ-15
|
-
|
1
|
-
|
15
|
SOIC28
|
74
|
IV - Spécifications
de la carte d'acquisition
A - Architecture de la carte

1. Caractéristique de
la carte
| Voies d'acquisition : |
2 voies à 60 MSPS |
| Voies de restitution : |
2 voies à 125 MSPS |
| FPGA : |
Xilinx Virtex 100k portes à 80 MHz |
| Mémoire : |
64K * 32 bits de SRAM à 20ns |
| Alimentation : |
5V (stabilisée) |

2. Choix des composants
Les documentations techniques des composants de la carte d'acquisition
sont disponible dans un document annexe contenant l'ensemble des
" data sheet ".
- CAN: Nous avons choisi un CAN HARRIS (HI5667),
le seul CAN correspondant à nos critères de sélection
qui etait disponible immédiatement. Seul inconvénient,
il nécessite une alimentation de 5V, alors que nous cherchions
des CAN s'alimentant en 3,3V.
- CNA: Nous avons choisi un CNA HARRIS (HI5660)
pour la même raison que le CAN, a savoir, la disponibilité.
- FPGA: Nous hésitions entre deux FPGA Xilinx
qui satisfaisait nos critères de sélection : Un
SPARTAN-II 100k portes (25$)et un VIRTEX 100k portes (125$). Cependant,
le SPARTAN-II n'etait pas disponible avant le mois de février.
Nous avons du alors commander un VIRTEX 100k .
- SRAM: La mémoire SRAM choisi est une IDT71V016
64Ko * 16bits. Cette mémoire à un temps d'accès
en lecture ou écriture de 20 ns. Malheureusement, la bande
passante maximale de cette mémoire n'est que de 100Mo/s.
Nous avons donc utilisé deux boîtiers de cette mémoire
en augmentant la taille du bus de données à 32 bits.
B - Architecture interne du FPGA
Le FPGA nous permet de gérer entièrement la carte
d'acquisition. Il nous sert principalement de séquenceur
dont ses principales fonctions sont les suivantes :
- Cadencer les Convertisseurs AN et NA
- Récupérer les données du CAN et les traiter
- Lire et Ecrire ces données en mémoires
- Restituer les données au CNA
Ces différentes fonctionnalités seront implémentées
au travers de composants internes décrits en VHDL.
Les composants VHDL ainsi décrits sont au nombre de 7 :
- 2 composants faisant l'interface avec les CAN, permettant de
récupérer les données numériques
- 2 composants faisant l'interface avec les CNA, permettant de
restituer les données numériques
- un composant faisant l'interface avec la SRAM, permettant de
lire et d'écrire les données en SRAM selon un mode
bien précis (soit 8bits, 16 bits, 32 bits)
- un composant permettant de configurer la fréquence d'échantillonnage
et les voies d'acquisition et de restitution
- Enfin, un composant constituant l'application et permettant
de traiter les données
1. Description de chaque composant





- Architecture interne complète du FPGA

2. Description fonctionnelle
Selon le CAN matériel que nous avons choisi, les données
numériques ne sont valides qu'au bout de 7 cycles d'horloge.
Ainsi, ce composant VHDL permet de lancer, de cadencer l'acquisition
(signal acq) et de récupérer les données.
Dès que le signal valid est à '1', les données
sont disponibles en sortie.
Les chronogrammes de la simulation de ce module sont fournis
en annexe.
- Cna.vhd
Ce composant cadence la restitution des données vers
le CNA. De même que pour le module précédent,
les chronogrammes de la simulation de ce module sont fournis
en annexe.
V - Industrialisation et
Maintenance
A - Fichiers ORCAD
Les fichiers Orcad présents en annexe sont les suivant :
· Les schémas électroniques de la carte (au
format Orcad Capture 9.2).
· Les schémas d'implémentation des composants
et les masques de fabrication (au format Orcad Layout 9.2).
· La liste des composants présents sur la carte.
Téléchargez-les au format Orcad 9.1 : schemas.zip
(492 Ko)
B - Mise en fonctionnement et test
1. Vérification des niveaux
d'alimentation
La carte d'acquisition s'alimente en 5V et possède trois
tensions d'alimentation différentes : 5V, 3.3V et 2.5V.
Le 3.3V et le 2.5V sont générés par des régulateurs
de tension variable préréglés et bloqués.
Cependant, on peut s'assurer de la correcte génération
des tension d'alimentation en les mesurant.
· Le 5V se mesure entre les borniers d'alimentation.
· Le 3,3V se mesure entre la deuxième patte du régulateur
(la plus proche du connecteur JTAG) et la masse.
· Le2,5V se mesure entre la deuxième patte du régulateur
(la plus proche du bornier d'alimentation JTAG) et la masse.
2. Accès aux signaux logiques
Les signaux logiques sont tous accessibles à l'aide de sonde,
sur les CAN, les CNA et les boîtiers de SRAM. Remarque, il
est impossible de placer une sonde de tension sur les pins du FPGA.
Cependant, certains signaux logique de la mémoires SRAM
ont été déportés sur des picots de mesure.
Ces signaux sont la parties basse du bus d'adresse (A0-A7) et la
partie basse du bus de données du second boîtier de
SRAM (D16-D23).
3. Programmation du FPGA
La carte d'acquisition possède trois mode de programmation
du FPGA. Un interrupteur DIL placé en bas à gauche
de la carte d'acquisition prêt des CAN permet de sélectionner
le mode de programmation choisi.
- Mode PROM série : Configuration de l'interrupteur DIL
: 0 - 0 - 0 - X (M0-M1-M2-M3)
Le mode de programmation PROM série permet de programmer
le FPGA à chaque mise sous tension en chargeant le
fichier de configuration du FPGA depuis la PROM série
placer à coté des régulateur.
Pour programmer une PROM (PROM, EPROM, ou EEPROM), il suffit
d'utiliser un programmateur de PROM sur lequel on place une
PROM, et d'utiliser le logiciel fourni dans la suite de développement
Foundation, " PROM Programmer ".
- Mode FPGA : Configuration de l'interrupteur DIL : 1 - 1 - 1
- X (M0-M1-M2-M3)
Le mode de programmation FPGA permet de programmer le FPGA
à l'aide d'une sonde de programmation Xilinx connecté
sur le port parallèle du PC. Pour cela, il suffit de
connecter cette sonde sur la carte et d'utiliser le logiciel
" Hardware Debugger".
- Mode JTAG : Configuration de l'interrupteur DIL : 1 - 0 - 1
- X (M0-M1-M2-M3)
Le mode de programmation JTAG permet de programmer le FPGA
à l'aide d'une sonde de programmation JTAG. Cette sonde
permet également de faire du débuggage directement
sur la carte (Boundary Scan). Le logiciel à utilisé
est le " JTAG Programmer "
C - Programmes de test
Divers programmes de test ont été réalisés
en VHDL afin de pouvoir valider les composants de la carte (FPGA,
CAN, CNA, SRAM). Le développement a été réalisé
sous FOUNDATION (Xilinx).
Téléchargez-les, c'est du VHDL : source.zip
(253 Ko)
1. Test du FPGA
Ce test consiste à implémenter un composant VHDL
ayant en entrée le signal d'horloge à 80 MHz et générant
en sortie deux signaux d'horloge de fréquence 80 MHz et 40
MHz.
Ensuite, nous avons implémenté ces signaux de sortie
sur des pins non utilisées. Ces pins ont été
sorties sur des picots. Ainsi, nous pouvons visualiser facilement
les signaux à l'aide d'une sonde sur un oscilloscope.
Résultat :
Nous avons obtenu les deux signaux d'horloge correctement. Le FPGA
est donc validé.
2. Test du CNA
Ce test consiste à implémenter un composant VHDL
ayant en entrée un signal d'horloge et générant
en sortie un signal triangulaire sur 8 bits, et un signal d'horloge
permettant de cadencer le CNA.
Ensuite, nous avons implémenter ces signaux sur les pins
du premier CNA (un seul CNA était utilisé à
chaque test) puis sur le deuxième.
Sur un oscilloscope sur visualisons le signal analogique à
l'aide d'un connecteur BNC.
Résultat :
Nous obtenons le signal triangulaire attendu sur chaque CNA. Les
Convertisseurs Numérique Analogique sont bien validés.
3. Test du CAN
Ce test consiste à implémenter un composant VHDL
utilisant les composants d'interface (can.vhd et cna.vhd), récupérant
les échantillons en sortie du CAN sur 8 bits et transmettant
ces échantillons au CNA.
Ensuite nous avons implémenter ces signaux sur les pins dédiées
à cette effet sachant qu'on utilise une seule voie à
chaque fois. En entrée, on met un signal sinusoïdal,
triangulaire, carré dont la fréquence varie jusqu'à
13 MHz et on observe la sortie sur un oscilloscope.
Résultat :
Nous obtenons bien la sinusoïde d'entrée sans perte
d'information jusqu'à 13 MHz et décalée d'une
dizaine d'échantillons (correspondant à l'architecture
Pipeline de 7 niveaux du CAN). Le signal de sortie (dans le cas
d'une haute fréquence) nécessiterait un filtrage.
Le signal de sortie est parfaitement exploitable à haute
fréquence. Les CAN sont donc bien validés. Concernant
les temps de propagation dans le FPGA, ils restent en moyenne inférieurs
à 3 ns.
4. Test de la SRAM
Le test n'a pas pu être mis en uvre par manque de temps.
Cependant, l'objectif était de ranger en mémoire un
signal triangulaire (celui créé précédemment)
puis de lire ces données et de les envoyées vers le
CNA. Ce test validerait à la fois l 'écriture et la
lecture, mais il est difficile de le tester séparément.
VI - Application et évolution
A - Application
Par manque de temps, nous n'avons pas pu développer d'application
pour valider entièrement cette carte d'acquisition. Cependant,
l'application aurait eu pour but d'utiliser toutes les ressources
de la carte.
Cette application devait réaliser un écho simple
des voies d'acquisitions fonctionnant à pleine vitesse (40
MSPS sur les deux voies), d'enregistrer les échantillons
acquis et d'effectuer la restitution des signaux à partir
des échantillons lus en mémoires.
B - Evolution
La carte d'acquisition qui à été développée
pendant ce projet peut être améliorée.
En effet, il serait intéressant de pouvoir gérer
un bus sur cette carte afin de pouvoir connecter celle-ci à
une carte de traitement à base de DSP. Aussi, on pourrait
lui ajouter un module I2C afin de pouvoir modifier les registres
de configurations du module CONFIG qui actuellement sont prédéfinis
dans le code VHDL.
Une autre évolution possible au niveau de la carte d'acquisition
serait de lui ajouter des voies d'acquisition et de restitution
en multiplexant les convertisseurs présents sur la carte.
V - Conclusion
La conception de la carte d'acquisition de données à
haute vitesse à été très enrichissante.
Nous avons pu conduire ce projet du début jusqu'à
la fin, de la veille technologique à la validation du produit.
Cependant, nous nous sommes confrontés à quelques
problèmes concernant la recherche des composants (disponibilité
et achat des composants). Cela nous a obligé à reconsidérer
l'architecture de la carte en fonction des composants disponibles.
Aussi, nous n'avons pas pu valider entièrement cette carte
d'acquisition à cause du peu de temps que nous avons passé
à travailler sur " Foundation " (l'unique ordinateur
possédant la licence d'utilisation de "Foundation"
étant déjà utilisé pour un autre projet).
Enfin, nous gardons un sentiment très positif de ce projet
de fin d'étude, ou nous avons pu manipuler des composants
électroniques et des outils de haute performance.

|