[PDF] Conservatoire National des Arts et Métiers





Previous PDF Next PDF



Conservatoire National des Arts et Métiers

Des blocs d'entrée-sortie (IOB) configurables sont répartis sur toute la Le signal de sortie peut être optionnellement inversé à l'intérieur de l'IOB et ...



Cours MATLAB et Simulink appliqué au traitement vidéo sur DSP

11h15 : Application à un DSP Texas Instruments avec création d'un projet Code Composer de sortie du bloc source vers le port d'entrée du bloc cible.



Extron - DMP 64

Le logiciel DSP Configurator dispose d'une présentation fixe des blocs de traitement audio DSP pour chaque entrée et sortie de la chaîne du signal.



IntelliMix Room

comprend 8 canaux avec tous les blocs DSP IntelliMix (AEC NR et AGC). Le logiciel inclut toujours 8 canaux d'entrée Dante auxiliaires sans traitement ...



SI CONTACT

de gestion et de routage de signaux d'entrée et de sortie. Ce même port Le logiciel DSP Configurator utilise des blocs de traitement audio DSP pour.



Programmation et Utilisation du FPGA pour la validation et la

7 mars 2011 Digital Signal Processing (Processeur de signaux numériques) ... d?un projet. ... blocs logiques et les blocs d?entrées/sorties.



Conception dun Compresseur de Dynamique en Sigma-Delta

audio et l'on expliquera la réalisation de ses sous-blocs en utilisant la mo- modulateur est donc de convertir le signal d'entrée en une modulation nu-.



Line 6 Helix v3.0 Owners Manual - Rev E French

Les blocs Output s'affichent en vert quand un signal est présent et en rouge vif s'il y a saturation à la sortie. Sélectionnez un bloc d'entrée et tournez le 



Conception et réalisation de la partie numérique dun simulateur

17 nov. 2008 4.2.1 Quantification du signal d'entrée et de la réponse impulsionnelle . ... En sortie du bloc numérique la version passe-bas du signal ...



Conception et réalisation dun émulateur de smart grid

la création d'un signal MLI en sortie du DSP l'acquisition de signaux analogiques en entrée du DSP

Conservatoire National des Arts et Métiers

Zynq (standalone) = FPGA + ARM

Cours + TP

Vivado 2017.4

Windows 10 Pro 64 bits

ZC702 rev 1.1

C.ALEXANDRE, vendredi 30 novembre 2018

i

1 DEUX EXEMPLES DE FPGA ................................................................................................................... 1

1.1 LA FAMILLE SPARTAN-3 ............................................................................................................................. 1

1.1.1 Caractéristiques générales .............................................................................................................. 1

1.1.2 Blocs d'entrée-sortie (IOB) ............................................................................................................. 2

1.1.2.1 Généralités ............................................................................................................................................. 2

1.1.2.2 Caractéristiques d'entrée ........................................................................................................................ 4

1.1.2.3 Caractéristiques de sortie ....................................................................................................................... 4

1.1.3 Bloc logique configurable (CLB) ..................................................................................................... 4

1.1.3.1 Généralités ............................................................................................................................................. 4

1.1.3.2 Générateurs de fonctions ........................................................................................................................ 6

1.1.3.3 Bascules ................................................................................................................................................. 6

1.1.3.4 Configuration en ROM, RAM et registre à décalage ............................................................................. 6

1.1.3.5 Logique de retenue rapide ...................................................................................................................... 7

1.1.4 Block RAM (SelectRAM) .................................................................................................................. 7

1.1.5 Multiplieurs dédiés .......................................................................................................................... 8

1.1.6 Gestionnaire d'horloges .................................................................................................................. 8

1.1.7 Ressources de routage et connectivité ............................................................................................. 9

1.1.7.1 Généralités ............................................................................................................................................. 9

1.1.7.2 Routage hiérarchique ........................................................................................................................... 10

1.1.7.3 Lignes dédiées d'horloge ..................................................................................................................... 12

1.1.8 Configuration ................................................................................................................................ 12

1.1.9 Méthodologie de placement ........................................................................................................... 16

1.2 LA FAMILLE ZYNQ .................................................................................................................................... 17

1.2.1 Logique programmable (PL) ......................................................................................................... 18

1.2.1.1 CLB/Slices ........................................................................................................................................... 18

1.2.1.2 Block RAM .......................................................................................................................................... 19

1.2.1.3 DSP Slice ............................................................................................................................................. 19

1.2.1.4 Input/Ouput block (IOB) ...................................................................................................................... 20

1.2.1.5 Ressources d'horloges .......................................................................................................................... 21

1.2.1.6 High-Speed Serial I/O transmitter/receiver (Transceivers)................................................................... 22

1.2.1.7 Interface PCI Express ........................................................................................................................... 23

1.2.1.8 XADC: Dual 12-Bit 1-MSPS ADCs .................................................................................................... 23

1.2.2 Système microprocesseur (PS) ....................................................................................................... 24

1.2.2.1 Introduction .......................................................................................................................................... 24

1.2.2.2 Le système double coeur ....................................................................................................................... 25

1.2.2.3 Les interconnections............................................................................................................................. 27

1.2.2.4 Procédure de démarrage ....................................................................................................................... 30

1.2.3 Le flot de développement Zynq ...................................................................................................... 33

1.2.3.1 Introduction .......................................................................................................................................... 33

1.2.3.2 Vivado .................................................................................................................................................. 34

1.2.3.3 Software Development Kit (SDK) ....................................................................................................... 35

1.2.4 La carte ZC702 .............................................................................................................................. 36

ii

2 TRAVAIL PRATIQUE N°7 ...................................................................................................................... 39

2.1 PRISE EN MAIN D'ECLIPSE ........................................................................................................................ 39

2.1.1 Introduction ................................................................................................................................... 39

2.1.2 Premier essai ................................................................................................................................. 41

2.1.3 Mise au point (mode debug) .......................................................................................................... 49

2.1.4 Saisie de valeurs au clavier ........................................................................................................... 57

2.1.5 Exercice n°1 ................................................................................................................................... 58

2.1.6 Exercice n°2 ................................................................................................................................... 59

2.1.7 Exercice n°3 ................................................................................................................................... 59

2.1.8 Exercice n°4 ................................................................................................................................... 59

2.1.9 Exercice n°5 ................................................................................................................................... 60

3 TRAVAIL PRATIQUE N°8 ...................................................................................................................... 61

3.1 PS STANDALONE ...................................................................................................................................... 61

3.1.1 Vivado ............................................................................................................................................ 61

3.1.1.1 Création du projet ................................................................................................................................ 61

3.1.1.2 Création du block Design .................................................................................................................... 65

3.1.1.3 Création du Wrapper ........................................................................................................................... 72

3.1.1.4 Préparation des fichiers du SDK.......................................................................................................... 77

3.1.2 Software Develoment Kit ............................................................................................................... 78

3.1.2.1 Création d'un projet helloworld .......................................................................................................... 78

3.1.2.2 Les fichiers du projet ........................................................................................................................... 82

3.1.2.3 Exécution du programme ..................................................................................................................... 90

3.2 PS AVEC MIO CONNECTES SUR 2 SWITCHES ET 2 LEDS ............................................................................ 96

3.2.1 Introduction ................................................................................................................................... 96

3.2.2 Modifications dans le Block Design .............................................................................................. 96

3.2.3 Modifications dans le SDK ............................................................................................................ 97

3.3 EXERCICE ............................................................................................................................................... 100

3.3.1 Introduction ................................................................................................................................. 100

3.3.2 Block Design ................................................................................................................................ 101

3.3.3 Wrapper ....................................................................................................................................... 104

3.3.4 Fichier de contraintes .................................................................................................................. 109

3.3.5 Bitstream ...................................................................................................................................... 112

3.3.6 SDK .............................................................................................................................................. 116

4 TRAVAIL PRATIQUE N°9 .................................................................................................................... 117

4.1 PS AVEC PL, EMIO ET COMPTEUR 32 BITS (METHODOLOGIE) ................................................................ 117

4.1.1 Introduction ................................................................................................................................. 117

4.1.2 Block Design ................................................................................................................................ 118

4.1.3 Wrapper ....................................................................................................................................... 119

4.1.4 Modèle de simulation ................................................................................................................... 122

iii

4.1.5 Testbench. .................................................................................................................................... 126

4.1.6 Simulation .................................................................................................................................... 133

4.1.7 Recopie du code de simulation dans le Wrapper ......................................................................... 142

4.1.8 SDK ............................................................................................................................................. 144

4.2 DEMARRAGE DE LA CARTE DEPUIS LA SD CARD .................................................................................... 145

4.3 EXERCICE .............................................................................................................................................. 152

5 TRAVAIL PRATIQUE N°10 .................................................................................................................. 155

5.1 PS AVEC PL, AXI GPIO CONNECTE SUR 4 SWITCHES ET 8 LEDS ............................................................ 155

5.1.1 Introduction ................................................................................................................................. 155

5.1.2 Block Design ................................................................................................................................ 155

5.1.3 Wrapper ....................................................................................................................................... 160

5.1.4 Contraintes .................................................................................................................................. 161

5.1.5 SDK ............................................................................................................................................. 162

5.2 PS AVEC PL, AXI GPIO CONNECTE SUR COMPTEUR 8 BITS, ANALYSEUR LOGIQUE ............................... 163

5.2.1 Introduction ................................................................................................................................. 163

5.2.2 Block Design ................................................................................................................................ 164

5.2.3 Wrapper ....................................................................................................................................... 168

5.2.4 Modèle de simulation................................................................................................................... 169

5.2.5 Testbench ..................................................................................................................................... 171

5.2.6 Recopie du code de simulation dans le Wrapper ......................................................................... 172

5.2.7 Contraintes .................................................................................................................................. 173

5.2.8 Insertion d'un analyseur logique (ILA) ....................................................................................... 174

5.2.9 Lancement du programme et visualisation des chronogrammes ................................................. 180

5.3 EXERCICE .............................................................................................................................................. 190

6 TRAVAIL PRATIQUE N°11 .................................................................................................................. 195

6.1 PL SEULE : TEST DU DAC DE LA CARTE AMS101 .................................................................................. 195

6.1.1 Introduction ................................................................................................................................. 195

6.1.2 Projet Vivado ............................................................................................................................... 197

6.1.3 Intellectual Property Core (IP Core) ........................................................................................... 202

6.1.4 Simulation .................................................................................................................................... 210

6.1.5 Contraintes .................................................................................................................................. 212

6.1.6 Test .............................................................................................................................................. 213

6.2 PL SEULE : TEST DU XADC AVEC UN ILA ............................................................................................. 215

6.2.1 Copie du projet ............................................................................................................................ 215

6.2.2 IP XADC ...................................................................................................................................... 216

6.2.3 Simulation .................................................................................................................................... 222

6.2.4 Insertion ILA ................................................................................................................................ 226

6.2.5 Test .............................................................................................................................................. 228

iv

6.2.6 Matlab .......................................................................................................................................... 230

6.3 EXERCICE ............................................................................................................................................... 234

7 TRAVAIL PRATIQUE N°12 .................................................................................................................. 237

7.1 INTERRUPTIONS ...................................................................................................................................... 237

7.2 TIMER ET WATCHDOG............................................................................................................................. 238

7.3 PS STANDALONE : SCUTIMER AVEC INTERRUPTION ............................................................................ 240

7.4 EXERCICE ............................................................................................................................................... 244

8 TRAVAIL PRATIQUE N°13 .................................................................................................................. 249

8.1 DIRECT MEMORY ACCESS (DMA) ......................................................................................................... 249

8.2 AXI DMA AVEC POLLING ET IP LOOPBACK ........................................................................................... 252

8.2.1 Introduction ................................................................................................................................. 252

8.2.2 Création du Block Design ............................................................................................................ 253

8.2.3 Création de l'IP loopback............................................................................................................ 258

8.2.4 Insertion de l'IP loopback dans le BD ......................................................................................... 262

8.2.5 Modification du code VHDL de l'IP loopback ............................................................................ 264

8.2.6 Bitstream ...................................................................................................................................... 272

8.2.7 SDK .............................................................................................................................................. 272

8.2.8 Mode Debug, mode Release ......................................................................................................... 275

8.2.9 Profiling ....................................................................................................................................... 284

8.3 AXI DMA AVEC INTERRUPTIONS ET IP LOOPBACK ................................................................................ 292

8.4 AXI DMA AVEC INTERRUPTIONS ET IP, LOOPBACK DANS LE WRAPPER ................................................. 298

8.4.1 Introduction ................................................................................................................................. 298

8.4.2 Modification du code VHDL de l'IP loopback ............................................................................ 299

8.4.3 Modification du Wrapper ............................................................................................................. 300

8.4.4 Test ............................................................................................................................................... 302

8.5 EXERCICE 1 ............................................................................................................................................ 302

8.5.1 Introduction ................................................................................................................................. 302

8.5.2 Wrapper ....................................................................................................................................... 303

8.5.3 Contraintes .................................................................................................................................. 305

8.5.4 ILA ............................................................................................................................................... 305

8.5.5 Visualisation d'un transfert ......................................................................................................... 307

8.5.6 Modification du programme C..................................................................................................... 309

8.5.7 Suppression du test des données .................................................................................................. 310

8.6 EXERCICE 2 ............................................................................................................................................ 313

8.6.1 Introduction ................................................................................................................................. 313

8.6.2 Modification du wrapper ............................................................................................................. 313

8.6.3 Contraintes .................................................................................................................................. 317

8.6.4 SDK .............................................................................................................................................. 317

v

8.6.5 Modification programme C ......................................................................................................... 321

vi 1

1 Deux exemples de FPGA

1.1 la famille Spartan-3

Ce paragraphe détaille la structure interne des FPGA de la famille Spartan-3 fabriqués par la société XILINX. Ce sont des FPGA assez simple à comprendre qui peuvent servir de base pour appréhender la logique programmable moderne.

1.1.1 Caractéristiques générales

La figure suivante représente la structure simplifiée de la famille Spartan-3. On reconnaît là,

une structure de type prédiffusé. La famille Spartan-3 est une famille de FPGA CMOS SRAM faible coût basée sur la famille Virtex-II (FPGA complexité élevée). La liste suivante résume ses caractéristiques : · matrice de blocs logiques programmables ou CLB (Configurable Logic Block), · blocs d'entrée/sortie programmables ou IOB (Input Ouput Block) dont le nombre varie suivant le type de boîtier (QFP ou BGA). Ils supportent 23 standards d'E-S plus le contrôle des impédances d'entrée et de sortie via DCI, · réseau de distribution d'horloge avec une faible dispersion via les DCM,

· des blocs RAM 18 kbits,

· des multiplieurs 18 bits x 18 bits,

· de nombreuses ressources de routage.

2Cette famille comprend 8 membres allant d'une capacité de 1728 à 74880 cellules logiques

(une LUT associée à une bascule D) :

Les boîtiers suivants sont disponibles :

Le circuit utilisé pour les TP est le XC3S200-FT256-4C. Nous allons maintenant reprendre chaque point clé de ce FPGA plus en détail.

1.1.2 Blocs d'entrée-sortie (IOB)

1.1.2.1 Généralités

Des blocs d'entrée-sortie (IOB) configurables sont répartis sur toute la périphérie du boîtier.

Chaque IOB assure l'interface entre une broche d'entrée/sortie du boîtier et la logique interne.

La figure suivante représente le schéma bloc simplifié d'un IOB. 3 Standards d'entrée/sortie supportés (en différentiel, il faut utiliser une paire d'IOB) :

41.1.2.2 Caractéristiques d'entrée Le signal sur la broche d'entrée (I/O pin) est amené vers les CLB soit directement via le signal

I, soit à travers une paire de bascules D (ou de latch) via IQ1 et IQ2. Les caractéristiques de

l'entrée de l'IOB sont les suivantes :

· diodes de protection ESD,

· résistance de "pull-up" ou "pull-down",

· Contrôle de l'impédance d'entrée (DCI), · 23 standards d'entrée (différentiels ou non),

· horloge indépendante de la sortie,

· Un délai de quelques ns peut-être inséré dans le chemin de la donnée d'entrée pour

compenser le retard de l'horloge, · Support du Double Data Rate pour écrire dans les SDRAM DDR.

1.1.2.3 Caractéristiques de sortie

Le signal de sortie peut être optionnellement inversé à l'intérieur de l'IOB et sortir

directement sur la broche ou bien être mis en mémoire par une paire de bascules D actives sur un front. Les caractéristiques de la sortie d'un IOB sont les suivantes : · buffer 3 états piloté par une paire de bascules D,

· sortie collecteur ouvert,

· 23 standards de sortie (différentiels ou non),

· contrôle de "slew-rate" (rapide ou lent),

· Contrôle de l'impédance de sortie (DCI), · Support du Double Data Rate pour lire dans les SDRAM DDR.

· sortance de 24 mA max.

1.1.3 Bloc logique configurable (CLB)

1.1.3.1 Généralités

Le CLB est l'élément fonctionnel de base de ce FPGA. Sa programmation permet à

l'utilisateur de réaliser des fonctions logiques combinatoires ou séquentielles. Le schéma bloc

simplifié d'un CLB est représenté à la page suivante. Il est constitué de 4 SLICES, qui sont

eux-mêmes formés de deux cellules logiques. 5

6Un slice (figure précédente) est constitué essentiellement de 2 générateurs de fonctions (LUT)

F et G et de 2 bascules D, FFX et FFY.

1.1.3.2 Générateurs de fonctions

Les deux générateurs de fonctions F et G peuvent réaliser chacun n'importe quelle fonction combinatoire de 4 variables. En combinant les LUT des différents slices du CLB, il est aussi possible de réaliser des multiplexeurs à grand nombre d'entrées : par exemple, un mux 4:1 dans un slice, un mux 16:1 dans un CLB ou encore un mux 32:1 dans deux CLB. La polyvalence du CLB est la meilleure manière d'améliorer la vitesse de fonctionnement du système à réaliser.

1.1.3.3 Bascules

Ces générateurs de fonctions peuvent être connectés directement vers les sorties du slice

(sorties X et Y), ou bien être mis en mémoire par deux bascules D (sorties XQ et YQ). Ces deux bascules ont la même horloge (CLK), le même signal de validation (CE) et la même

logique de mise à 0 ou de mise à 1 asynchrone (SR). L'état de sortie de la bascule à la mise

sous tension est programmable. Les deux bascules peuvent être utilisées indépendamment (entrée sur BX et BY) ou à la suite des générateurs de fonctions.

1.1.3.4 Configuration en ROM, RAM et registre à décalage

Tous les générateurs de fonctions F et G du CLB peuvent être utilisés comme des ROM. En effet, chaque LUT est une ROM 16 bits et on peut donc former au maximum une ROM 128x1 dans un CLB. Chaque LUT des 2 Slices de gauche du CLB peut aussi être programmée en RAM (simple et double port) ainsi qu'en registre à décalage.

7Ainsi, on peut trouver au maximum dans un CLB :

· 4 mémoires 16x1 bits synchrones simple port, · 2 mémoires 32x1 bits synchrones simple port, · 1 mémoire 64x1 bits synchrone simple port, · 2 mémoires 16x1 bits synchrones double port,

· 1 registre à décalage 64 bits.

Ces mémoires sont très rapides et elles ont l'avantage d'être situées au coeur de la fonction à

réaliser. Il n'y a donc pas de délais de routage. La mémoire synchrone est avantageuse car elle

est plus rapide et plus facilement exploitable que la mémoire asynchrone. La mémoire double

port possède deux ports (adresse, donnée, contrôle) indépendants. Elle peut être utilisée pour

réaliser des FIFO. Le contenu de ces RAM ou de ces ROM peut être initialisé à la mise sous

tension.

1.1.3.5 Logique de retenue rapide

Chaque slice contient une logique arithmétique dédiée pour générer rapidement une retenue

(carry). Cette logique dédiée accélère grandement toutes les opérations arithmétiques telles

que l'addition, la soustraction, l'accumulation, la comparaison... Elle accélère aussi la vitesse

de fonctionnement des compteurs. Chaque slice peut être configuré comme un additionneur 2

bits avec retenue qui peut être étendu à n'importe quelle taille avec d'autres CLB. La sortie

retenue (COUT) est passée au CLB se trouvant au-dessus. La retenue se propage en utilisant une interconnexion directe.

1.1.4 Block RAM (SelectRAM)

Tous les FPGA de la famille Spartan-3 incorporent des blocs de mémoire RAM 18kbits synchrones simple ou double ports (de 4 à 104 suivant la taille du circuit). Les 4 modes suivants sont possibles :

8Chaque BlockRAM peut être configuré dans les modes : 16kx1, 8kx2, 4kx4, 2kx8, 1kx16 et

512x32 en simple port ou double ports.

1.1.5 Multiplieurs dédiés

Associé à chaque BlockRAM, on trouve un multiplieur 18x18 = 36 bits signé en complément

à 2 (ou 17x17 = 34 non signé). On les utilise surtout pour effectuer des opérations de

traitement du signal, mais ils peuvent aussi être utilisés avec profit pour réaliser des opérations

logiques (comme un décalage en un coup d'horloge par exemple).

1.1.6 Gestionnaire d'horloges

Le FPGA possède un gestionnaire d'horloge (Digital Clock Manager : DCM) particulièrement

élaboré. Il permet par exemple de créer des horloges décalées en phase (pour piloter des DDR

SDRAM par exemple), ou encore il élimine le skew (décalage des arrivées d'horloge sur les bascules D) des horloges dans le FPGA ou bien encore il permet de synthétiser des horloges avec des rapports (M x Fin) / D (avec M entier compris entre 2 et 32 et D entier compris entre

1 et 32). Vous pouvez par exemple créer une horloge sur CLKFX dont la fréquence est égale à

11/7 de CLKIN.

D'autre part, le FPGA possède 8 buffers spéciaux (BUFG) pour distribuer les horloges dans le circuit.

91.1.7 Ressources de routage et connectivité 1.1.7.1 Généralités Les FPGA de la série Spartan-3 disposent d'un nombre important de ressources de routage et

de connectivité, ce qui leur confère une très grande souplesse d'utilisation. Toutes les

connexions sont constituées de segments métalliques reliés par des matrices de contacts

programmables (Programmable Switch Matrix ou PSM). Chaque élément vu précédemment est relié à une ou plusieurs PSM. Chaque PSM est constituée de transistors permettant d'établir une connexion entre lignes horizontales et verticales comme le montre le schéma suivant.

PSM 6 transistors par points de connexion

10Après programmation, la PSM permet par exemple la configuration suivante :

L'objectif final est de relier les différents éléments logiques (LE) entre eux comme sur la figure suivante : LELE LELE LELE LELE LELE LELE

Switch

MatrixSwitch

Matrix

LELE LELE LELE LELE LELE LELE

Switch

MatrixSwitch

Matrix

1.1.7.2 Routage hiérarchique

Hélas, chaque passage par une PSM introduit un délai de propagation qui est très pénalisant

pour les liaisons à longue distance. Aussi les interconnexions ont été spécialisées en fonction

de la distance à parcourir. 4 types d'interconnexion sont disponibles : · Les longues lignes qui connectent un CLB sur 6 et donc sautent 5 PSM sur 6.

11· Les lignes triples qui connectent un CLB sur 3 et donc sautent 2 PSM sur 3.

· Les lignes doubles qui connectent un CLB sur 2 et donc sautent 1 PSM sur 1. · Les lignes directes qui connectent un CLB avec ses voisins immédiats.

· Des lignes dédiées. Ce sont des connexions fixes utilisées pour propager les retenues,

cascader les registres à décalage formés dans les slices à gauche du CLB,... Il existe aussi

des lignes dédiées pour propager les horloges.

121.1.7.3 Lignes dédiées d'horloge Il existe 8 entrées externes pour les horloges globales nommées GCLK0 à GCLK7. Il y a aussi

8 multiplexeurs (2:1) d'horloge globale BUFGMUX. Ces BUFGMUX acceptent en entrée soit

une horloge globale, soit une sortie de DCM, soit un signal créé à l'intérieur du FPGA. La

sortie des BUFGMUX attaque le réseau de distribution d'horloge. Une horloge globale dans un design peut passer soit par un BUFGMUX, soit par un BUFG (Global Clock Buffer).

Pour minimiser la puissance dynamique dissipée, les lignes d'horloge non utilisées sont

désactivées.

1.1.8 Configuration

Il y a trois types de broches sur un FPGA :

· Les broches dédiées en permanence. Ce sont les broches d'alimentation et de masse (un couple (VCC, GND) par côté), les buffers d'horloge... · Les broches utilisables exclusivement par l'utilisateur pour réaliser son système.

13· Les broches utilisables par l'utilisateur mais qui ont un rôle durant la configuration du

circuit. La configuration est le processus qui charge le design dans la SRAM afin de programmer les fonctions des différents blocs et de réaliser leurs interconnexions.

On voit, sur la figure ci-dessus, qu'il y a sous la logique dédiée à l'application une mémoire

de configuration qui contient toutes les informations concernant la programmation des CLB et

des IOB ainsi que l'état des connexions. Cette configuration est réalisée, à la mise sous

tension, par le chargement d'un fichier binaire dont la taille varie en fonction du nombre de portes du circuit :

14La configuration se fait en 4 étapes. A la mise sous tension, la mémoire de configuration est

effacée puis le circuit est initialisé. Ensuite a lieu la configuration qui est suivie du démarrage

du circuit programmé. Un CRC (" Cyclic Redundancy Check ») contenu dans le fichier de

configuration permet au circuit de vérifier l'intégrité des données au moment du chargement.

Le circuit peut se configurer en série (bit par bit) ou en parallèle (octet par octet). Il peut être

maître ou bien esclave en cas de configuration de plusieurs boîtiers. En mode maître, c'est lui

qui fournit les signaux nécessaires à sa propre configuration mais il peut aussi configurer un ou plusieurs circuits esclaves montés en cascade (daisy chain). Le fichier de configuration contient successivement tous les fichiers de configuration des circuits à programmer. Le mode parallèle esclave correspond au mode périphérique microprocesseur. Les principaux modes sont les suivants :

· En mode série maître, il faut utiliser une mémoire Flash série (XCF02S dans notre

maquette). On s'en sert en phase de production car c'est celui qui nécessite le moins de câblage. Le FPGA génère une horloge CCLK pour lire les bits en série. · En mode parallèle esclave, c'est un microcontrôleur externe qui charge la configuration octet par octet. L'horloge est fournie par le microcontrôleur. 15 · En mode JTAG. La prise JTAG est constituée de 6 fils : VCC, GND, TDI, TDO, TMS et

TCK. Conçu à l'origine pour le test de carte équipée, le JTAG est utilisé chez tous les

fabricants de FPGA et d'EPLD pour la programmation In Situ (ISP) de leurs circuits y compris les PROM Flash série. Les circuits sont montés en Daisy Chain et on fabrique à faible coût un cordon qui se branche sur le port parallèle du PC. A l'aide d'Impact (chez

Xilinx), on identifie les circuits de la chaine JTAG, puis on leur associe le fichier de

configuration correspondant. Le téléchargement se fait alors en un clic de souris. Il est possible de vérifier la programmation du circuit en utilisant le ReadBack. L'horloge JTAG (TCK) est fournie par le cordon JTAG, donc par le PC.

161.1.9 Méthodologie de placement Compte tenu de la structure du composant, il est préférable de placer les broches

d'entrées/sorties de la manière suivante : Le point critique, ce sont les retenues qui montent dans le circuit, ce qui implique que les additionneurs ont forcément le poids faible en bas et les bits dans l'ordre croissant en montant. Les bus à l'entrée du FPGA doivent donc être mis dans l'ordre, LSB en bas et MSB en haut. Ce point est toutefois bien moins critique que par le passé depuis que l'on peut effectuer des changements dans l'affectation des broches du composant avec une faible pénalité temporelle. Ce qui est vital quand on fabrique une carte avec des FPGA, c'est de placer :

1. Les alimentations,

2. les masses,

3. Les entrées d'horloges,

4. Les broches de configuration,

5. Les bus (dans le bon ordre de préférence s'il y a des problèmes de performance).

Le reste des fils peut être placé pour faciliter le routage de la carte. C'est le cas aussi pour les

bus s'ils ne sont pas très rapides.

Spartan 3

171.2 La famille Zynq Dans ce paragraphe, nous allons expliquer ce que Xilinx a modifié (par rapport à la Spartan 3

qui date de 2003) dans un FPGA plus récent : la Zynq qui fait partie de la famille des FPGA de la série 7. Nous trouvons dans la Zynq deux parties principales : la logique programmable (PL) et un système à microprocesseur ARM complet avec ses périphériques (PS). Du point de vue de la logique programmable, la famille Zynq est à cheval entre la famille Artix (7010, 7015 et

7020) et la famille Kintex (7030, 7045 et 7100) :

181.2.1 Logique programmable (PL) 1.2.1.1 CLB/Slices Il y a maintenant deux slices par CLB : les slice_M (ROM, logique, RAM et registres à

décalage), et les slice_L (ROM et logique). On a 4 LUT et 8 bascules D par slice. Les LUT sont passées à 6 entrées. On peut les utiliser en une fonction combinatoire à 6 entrées ou en 2 fonctions combinatoires indépendantes à 5 entrées. Il y a maintenant 4 bascules (D ou Latch) plus 4 bascules D par slice, soit 2 bascules par LUT.

191.2.1.2 Block RAM Les blocs RAM sont passés à 36 kbits mais peuvent être utilisés en deux blocs 18 kbits

indépendants. Ils ont les caractéristiques suivantes :

· De 32kx1 à 512x72 dans un bloc 36k.

· Mémoire ROM simple port à mémoire RAM double port.

· Configurable en FIFO sans logique externe.

· Code correcteur d'erreur possible.

· 2 blocs 36k adjacents forment un bloc 64k sans logique supplémentaire.

1.2.1.3 DSP Slice

Le multiplieur de la Spartan 3 a évolué en un bloc MAC (Multiply and ACcumulate) qui est la brique de base d'un Digital Signal Processor (DSP) : A B P Si D Q 48
clk Q 48
48

43 25 18

L i ii BAQ

1.Equation réalisée :

Exemple d'utilisation : la

multiplication-accumulation permet de calculer un produit de convolution.

C'est l'opération de base du filtrage

numérique.

20Dans la série 7, le MAC est hautement polyvalent d'où sa complexité apparente. Il est conçu

pour être cascadé avec d'autres DSP slices afin de réaliser des filtres numériques rapides (500

MHz à comparer avec les 250 MHz de la logique programmable usuelle) :

1.2.1.4 Input/Ouput block (IOB)

Les IOB peuvent être de deux types : High range ou High performance :

Les IOB " high range » supportent des tensions jusqu'à 3.3 V (unipolaire ou différentiel, sans

digitally controlled impedance DCI). Les IOB " high performance » supportent les standards jusqu'à 1.8 V (unipolaire ou différentiel avec DCI). Il y a des SERDES

(sérialiseur/desérialiseur) et des fifo dans chaque IOB et les retards sont beaucoup plus précis

21(32 pas, le retard élémentaire étant calibré par une horloge). Les broches ont des ressources

spécifiques (IO PLL et IO phaser shift) pour s'interfacer avec des mémoires de type DDR3.

1.2.1.5 Ressources d'horloges

Il y a beaucoup plus de ressources d'horloge dans le FPGA avec des horloges globales et régionales. Il n'y a quasiment plus de restriction sur le nombre d'horloges. Les Mixed-Mode Clock Managers (MMCM) sont les évolutions des DCM de la Spartan 3.

Les performances en synthèse d'horloge et en déphasage se sont considérablement améliorées.

Les Phase Locked Loop (PLL) sont conçues pour travailler avec les IO phaser pour contrôler de la mémoire.

221.2.1.6 High-Speed Serial I/O transmitter/receiver (Transceivers)

Les liaisons séries rapides (>> 1Gbits/s) sont de plus en plus utilisées en électronique car la

plupart des interfaces sont passées de bus parallèles à interface série (USB, IEEE-1394

" Firewire », SATA, PCI Express, ...). De plus, les interfaces réseau Ethernet ne cessent de monter en débit (100 Gbit/s avec IEEE-802.3ba-2010). Il ne s'agit plus de broche

d'entrée/sortie traditionnelle, mais d'une liaison de type télécom avec une reconstruction de

l'horloge indépendante pour chaque broche.

Dans la série 7, il existe 4 familles de transceivers, mais la Zynq n'utilise que les 3 premières :

· GTP transceivers jusqu'à 3.75 Gbps (PCI Express 1, Gigabit Ethernet, ...), · GTX transceivers jusqu'à 12.5 Gbps (PCI Express 1/2/3, 10 Gigabit Ethernet, ...), · GTH transceivers jusqu'à 13.1 Gbps (PCI Express 1/2/3, 10 Gigabit Ethernet avec correction d'erreurs, ...), · GTZ transceivers jusqu'à 28 Gbps (100 Gigabit Ethernet, ...). Toutes ces liaisons sont différentielles et les broches GTn implémentent en réception une

égalisation, une récupération d'horloge, un alignement, un décodage (10B/8B), une extraction

de la signalisation, une désérialisation et une fifo :

231.2.1.7 Interface PCI Express La norme PCI Express est universellement implantée depuis 2005 dans le domaine de

l'informatique. C'est une liaison série qui a remplacé le bus parallèle PCI. Sa bande passante

s'adapte aux besoins : · Gen1 (2.5Gbps), Gen2, (5.0Gbps), Gen3 (8Gbps). · Configurations multi-voies (x1, x2, x4, x8, x16, x32). La Zynq comporte des interfaces gen2 x4, x8. Dans le FPGA que nous utiliserons (XC7Z020), il n'y en a pas.

1.2.1.8 XADC: Dual 12-Bit 1-MSPS ADCs

Le bloc XADC permet soit de surveiller les alimentations et la température du FPGA via des

capteurs sur la puce, soit d'acquérir jusqu'à 17 signaux analogiques externes via un

multiplexeur. Il comporte deux convertisseurs analogique/numérique (ADC) 1 Msps 12 bits. On peut l'utiliser directement en VHDL ou avec le processeur ARM via le bus AXI.

241.2.2 Système microprocesseur (PS) 1.2.2.1 Introduction La Zynq est une famille de FPGA qui contient en plus de la partie logique programmable

(Programmable Logic PL) un système microprocesseur ARM double coeur complet avec ses

contrôleurs mémoire et ses périphériques (Processing System PS). On dit que son architecture

est centrée sur le PS car le processeur démarre en premier, puis charge le fichier de

configuration de la PL. La logique programmable est alors utilisée pour réaliser des

accélérateurs matériels connectés au PS. Ceci dit, on peut ne pas utiliser le PS et travailler

uniquement avec la PL mais le PS sera nécessaire pour configurer la logique programmable sauf si on n'utilise que le JTAG.

251.2.2.2 Le système double coeur L'ARM Cortex-A9 est un processeur performant de type tablette fonctionnant jusqu'à 800

MHz. Il possède un cache L1 de 32 kilo octets sur les données et sur les adresses. Il y a deux coeurs A9 dans la Zynq.quotesdbs_dbs26.pdfusesText_32
[PDF] Bloc ELCO COF-100 - Anciens Et Réunions

[PDF] Bloc en béton de granulats courants et légers à enduire

[PDF] BLOC ERRATIQUE DE LA CONDAMINE

[PDF] BLOC FOIE GRAS CANARD SUD OUEST 30 % MORCEAUX MI

[PDF] Bloc K : La ponctuation - Gestion De Projet

[PDF] BLOC M OTEUR ET ACCES SOIRES SÉPAR ÉS - Anciens Et Réunions

[PDF] Bloc moteur et Culasse - Électricité

[PDF] Bloc multiprises 10 prises Multiblok 10 stopcontacten Power strip

[PDF] Bloc multiprises 2 x 4 prises NL Multiblok 2 x 4 stopcontacten Power

[PDF] Bloc note aimanté 70x80

[PDF] Bloc Note JAVA - IA - IAD - Java : Supports de cours - Espèces En Voie De Disparition

[PDF] Bloc note mini stylo

[PDF] Bloc note tout temps `outside`

[PDF] bloc notes

[PDF] BLOC NOTES JUIN-JUILLET 2013 Paiement en espèces et