Cours2 SE
INTRODUCTION AU PROCESSEUR ZYNQ
La famille Zynq
Les systèmes on chip (SOC) ZYNQ de la société xilinx
intègre : Un système de traitement PS (processing
system) basé sur un processeur double cœur ARM
cortex A9 capable d’accueillir un système
d’exploitation comme LINUX Un système de
programmation logique PL (programmable logic) avec
un FPGA de la série XILINX-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)
Architecture de la famille XILINX ZYNQ
Tous les systèmes ZYNQ ont la même architecture et
ils contiennent tous un processeur double cœur ARM
cortex A9. C’est un processeur en dur (hard processor)
comparé au processeur logiciel (soft processor). Le
ZYNQ permet l’utilisation du soft processor mais dans
la partie PL du circuit. L’appellation du soft processor
est microblaze comme sur la série de FPGA SPARTAN
ou VIRTEX
Description de la partie PS du ZYNQ
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
cœur complet avec ses contrôleurs mémoire et ses Le système de traitement PS n’est pas simplement
périphériques (Processing System PS). On dit que son basé que un cœur de processeur ARM mais c’est un
architecture est centrée sur le PS car le processeur ensemble de ressources de traitement associé
démarre en premier, puis charge le fichier de formant une APU (Application Processing Unit). L’APU
configuration de la PL. La logique programmable est comprend des interfaces vers des périphériques et la
alors utilisée pour réaliser des accélérateurs matériels mémoire, des périphériques, de la mémoire cache,
connectés au PS. Ceci dit, on peut ne pas utiliser le PS des systèmes d’interconnexion et des générateurs
et travailler uniquement avec la PL mais le PS sera d’horloge. L’architecture de l’APU est donnée ci-
nécessaire pour configurer la logique programmable dessous
sauf si on n’utilise que le JTAG.
Le système double cœur
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
Le coprocesseur NEON :
est dédié aux instructions audio, vidéo et 3D. Comme
un DSP, il supporte des instructions SIMD (Single
Instruction Multiple Data) sur 8, 16 32 et 64 bits. C’est
un accélérateur de calcul dédié au multimédia comme
Description de la partie PS du ZYNQ le jeu d’instructions SSE pour les processeurs Intel. La
FPU (Floating Point Unit) est un coprocesseur
L’APU est composé de deux cœur de processeur ARM
arithmétique dédié aux opérations sur les nombres
chacun associé à plusieurs unités de traitement ; Un
réels. Elle respecte la norme IEEE-754 en simple et
moteur de traitement multimédia NEON (Media
double précision. Ses registres sont partagés avec
Processing Engine (MPE)) Une unité de traitement à
l’unité NEON
virgule flottante (FPU) Une unité de management de
mémoire (Memory Management Unit (MMU))
essentiel pour faire tourner un OS comme LINUX De la
mémoire cache de niveau 1 et de niveau 2 De la Les interfaces externes du système de traitement PS
mémoire OCM On Chip Memor La partie PS du ZYNQ dispose d’une grande variété
d’interfaces à la fois entre le PS et le PL mais aussi
avec les composants externes. La communication
-La Snoop Control Unit (SCU) connecte les deux entre le PS et les interfaces des périphériques
Cortex-A9 à la mémoire système et au cache L2. Il externes est assurées par un bus d’entrée sorties
maintient la cohérence entre les deux caches L1 multiplexés (Multiplexed Input/Output (MIO)) qui
données. Il arbitre entre les deux processeurs pour peut fournir jusqu’à une connectivité de 54 broches.
l’accès au cache L2. Il fournit un accès à la ROM/RAM
interne. Il fournit aussi un accès à l’ACP (Accelerator
Coherence Port) pour la logique programmable
L’ACP est un port AXI 64 bits reliant la PL avec la SCU.
Il permet à l’accélérateur matériel dans la PL
d’accéder au contenu des caches L1 et L2 tout en
maintenant la cohérence des données. Il est utilisé
pour partager les données entre PS et PL avec une
faible latence
Il existe plusieurs solutions pour debugger le
programme dans la partie ARM ainsi que la logique
programmable avec Vivado. Nous utiliserons la
solution mono câble JTAG avec le ARM Debug Access
Port (DAP) placé en tête dans la chaine JTAG Xilinx.
Cela nous permettra aussi de télécharger le bitstream
dans la PL.
Les interconnections
La logique programmable peut utiliser 4 ports AXI
haute performance pour un accès direct (DMA ) à la
mémoire du PS. Les AXI FIFO Interfaces (AFI) ont une La partie PL est basé sur un FPGA série 7 du type
capacité suffisamment élevée (FIFO 128 x 64-bit) pour ARTIX ou KINTEX suivant le modèle de ZYNQ. Le FPGA
transférer avec régularité de grandes quantités de est constitué :
données entre PL et PS
De CLB (Configurable Logic Blocks)
groupement d’éléments logiques
Des matrices de commutation pour
interconnecter les CLB entre eux
D’entrée-sorties Input/Output Blocks (IOBs)
Des blocs de RAM
Des blocs de traitement du signal numérique
DSP48E1s
D’un bloc XADC
Des ports AXI 32 bits à usage général permettent de
relier PS et PL : deux maîtres et deux esclaves.
Dans le PS, le module de génération d’horloges crée
les horloges pour le CPU, pour la DDR et pour les
périphériques. 4 horloges supplémentaires peuvent
être fournies à la PL.
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. Les broches ont des ressources
spécifiques (IO PLL et IO phaser shift) pour
s’interfacer avec des mémoires de type DDR3
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) : Dans 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)
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
NOTE
Le logiciel Xilinx Vivado est un outil de conception de
circuits pour FPGA de Xilinx. Ce logiciel permet
essentiellement d’effectuer les différentes étapes de
la conception et de la réalisation de circuits
numériques sur FPGA. Il permet entre autres de faire
la description, la simulation, la synthèse et
l’implémentation d’un circuit, puis la programmation
d’une puce d’une des différentes familles de FPGA de
Xilinx