Site créer le 17/02/2000 - Dernière mise à jour le 25/06/2003

 

 
 
 
 
 
 

 

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

  • Can.vhd


  • Cna.vhd

  • Sram.vhd

  • Config.vhd

  • Appli.vhd

  • Architecture interne complète du FPGA


2. Description fonctionnelle

  • Can.vhd

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.

  • Sram.vhd

    Ce composant fait l'interface entre la mémoire SRAM et notre application. En fait, nous utilisons deux SRAM de 64K * 16. Ce composant VHDL gère ces deux mémoires comme si nous utilisions une seule mémoire de 64K * 32.

    En entrée, on définit le mode d'écriture (8, 16 ou 32 bits), la lecture ou l'écriture, l'adresse sur 18 bits et les données sur 32 bits.
    En sortie, le composant transmet l'adresse physique sur 16 bits, les données sur 32 bits et les signaux de validation des boîtiers :

    - BLE : signal validant les 8 bits de poids faible.
    - BHE : signal validant les 8 bits de poids fort.
    - CS : signal validant un boîtier.
    - WE : signal validant l'écriture.
    - OE : signal validant la lecture.

  • Des exemple de chronogrammes utilisant ce module sont fournis en annexe.

  • Config.vhd
  • Ce composant permet de fournir deux types d'horloge (80MHz et 40MHz) et de définir le nombre de voies d'acquisition utilisées.

  • Appli.vhd

    L'application consiste en une mise en œuvre d'une chaîne d'acquisition avec mise en mémoire des données et relecture en utilisant les interfaces VHDL créées précédemment (can.vhd, sram.vhd, cna.vhd et config.vhd)

 

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.



Merci d'envoyer vos commentaires à propos du site au Webmaster@libaud.net