0% ont trouvé ce document utile (0 vote)
52 vues69 pages

Synthèse D'un Module de Cryptage RSA Sur Un Circuit de Type FPGA

crypto

Transféré par

zineb beniz
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
52 vues69 pages

Synthèse D'un Module de Cryptage RSA Sur Un Circuit de Type FPGA

crypto

Transféré par

zineb beniz
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE

UNIVERSITE MOULOUD MAMMERI DE TIZI-OUZOU


FACULTE DE GENIE ELECTRIQUE ET D’INFORMATIQUE
DEPARTEMENT AUTOMATIQUE

Mémoire
De fin d’étude en vue de l’obtention du diplôme de Master Académique
En Génie Micro-Electronique

Thème

Synthèse d’un module de cryptage RSA sur un


circuit de type FPGA

Présenté par : Proposé et dirigé par :


Mr. HOUADJ Mohamed Nazim Mr. DAOUI Mehammed
Remerciements

Je remercie vivement mon encadreur Monsieur Mehammed DAOUI,


d’avoir proposé et dirigé ce travail de ci-près, avec une qualité
remarquable, j’ai grandement apprécié ses compétences, sa
disponibilité et le suivi régulier a l’avancement de mon travail.

Mes sincères remerciements à tous mes enseignants qui m’ont


transmit les bases de la Micro-électronique tout au long de ces deux
années de master.

Un merci particulier à ma famille pour leurs encouragements et leur


soutien tout au long de ce travail.

Un grand merci à mes collègues et mes amis avec qui j’ai passé de très
bons moments au sein de l’université Mouloud Mammeri.

Que ceux qui se sentent oubliés trouvent ici ma profonde gratitude et


mes chaleureux remerciements pour leur concours dans
l’accomplissement de ce travail.

Mr HOUADJ Mohamed Nazim


A mes parents
Sommaire
Sommaire

Introduction générale ____________________________________________ 4

Chapitre 1 : cryptographie et étude algorithmique ___________ 5


I. Introduction ___________________________________________________ 6

II. La cryptographie ______________________________________________ 6

II.1 Cryptographie symétrique ________________________________ 6

II.2 Cryptographie asymétrique _______________________________ 7

III. Le cryptage asymétrique ‘RSA’ __________________________________ 8

III.1 Création des clés RSA ___________________________________ 9

III.2 Protocole RSA ________________________________________ 10

III.2.1 Le chiffrement avec le RSA ____________________________ 10

III.2.2 Le déchiffrement avec le RSA __________________________ 10

IV Algorithme de Montgomery pour la multiplication modulaire ________ 10

IV.2 Présentation du problème ______________________________ 11

IV.3 Transformation de Montgomery ________________________ 11

V. Algorithme Square and Multiply _________________________ 12

V.1 Description de l’algorithme _____________________________ 12

VI. Conclusion ___________________________________________ 13

Chapitre 2 : circuits logiques programmables ________________ 14

I. Introduction __________________________________________________ 15

II. Les ASIC (Application Specific Integrated Circuit) _________________ 16


Sommaire
II.1 Les circuits semi-personnalisés __________________________ 17

II.1.1 Les réseaux logiques programmables _______________ 17

II.1.2 Circuits prés diffusés ____________________________ 18

II.2 Circuits personnalisés __________________________________ 18

II.2.1 Circuits à la demande ____________________________ 18

II.2.2 Les circuits pré-caractérisés ______________________ 19

II.3 Les avantages de l’utilisation des ASIC _______________ 19

III. FPGA (Fiel Programmable Gate Arrays) _________________________ 20

III.1 Principaux fondeurs des FPGA _________________________ 20

III.2 Architecture des FPGA ________________________________ 20

III.3 Les différents types d’FPGA ____________________________ 22

III.3.1 Les FPGA de type anti fusible ____________________ 22

III.3.2 Les FPGA de type SRAM ________________________ 22

III.4 Domaine d’application des FPGA _______________________ 24

III.5 Critères de choix des FPGA ____________________________ 24

III.6 Avantages et inconvénients des FPGA ____________________ 24

IV. Configuration des FPGA par outils CAO _________________________ 25

IV.1 Méthode de conception par CAO ________________________ 25

IV.1.1 Spécification du design ______________________________ 26

IV.1.2 Développement du design ____________________________ 26

IV.1.3 La synthèse ________________________________________ 27


Sommaire
IV.1.4 Placement et routage ________________________________ 27

IV.1.5 Intégration et implémentation ________________________ 27

IV.2 Technique de programmation des FPGA _________________________ 27

V. Conclusion ___________________________________________________ 29

Chapitre III : présentation de la carte de développement


Virtex-II _________________________________________________________ 30

I. Introduction __________________________________________________ 31

II. La carte de développement Virtex-II _____________________________ 31

II.1 Description de la carte système Virtex-II __________________ 32

II.2 Virtex-II Dispositif ____________________________________ 32

II.3 Mémoire DDR ________________________________________ 33

II.4 Génération d’horloge __________________________________ 33

II.5 Circuit de reset _______________________________________ 34

II.6 Utilisation des afficheurs 7 segments ______________________ 34

II.7 Utilisation de la LED ___________________________________ 35

II.8 Utilisation des interrupteurs à bouton poussoir (SW5 et SW6)__35

II.9 User Switch DIP (SW2) _________________________________ 36

II.10 Port RS232 __________________________________________ 37

II.10.1 Interface RS232 _______________________________ 37

II.10.2 Description du Signal RS232 _____________________ 37

II.11 Port JTAG __________________________________________ 37

II.11.1 Connecteur standard JTAG _____________________ 37

II.11.2 Câble parallèle IV Port __________________________ 38

II.11.3 Chaîne JTAG _________________________________ 38


Sommaire
II.11.4 Réglages des cavaliers dans la chaîne JTAG ________ 39

III. Utilisation de la carte _________________________________________ 39

III.1 Interface JTAG ______________________________________ 40

III.1.1 Configuration du FPGA Virtex-II _________________ 40

III.1.2 Programmation de la XC18V04 FAI PROM ________ 40

IV. Conclusion _________________________________________________ 41

Chapitre 4 : solution et contribution __________________________ 42


II. Présentation de notre protocole RSA ______________________________ 43

II.1 Description de notre protocole RSA ______________________ 43

II.2 Algorithme de notre protocole RSA _______________________ 44

III. Implémentation ______________________________________________ 44

III.1. Langage de description VHDL _________________________ 45

III.2. Environnement de développement ISE ___________________ 45

III.3. simulation de notre protocole __________________________ 46

III.3.1. chiffrement avec notre protocole _________________ 46

III.3.2 déchiffrement avec notre protocole ________________ 47

IV. Implémentation de notre protocole sur la carte Virtex-II ____________ 47

V. Conclusion ___________________________________________________ 52

Conclusion et perspectives ____________________________ 53

Annexes ____________________________________________________________ 54
Table des figures

Figure (I.1) principe de la cryptographie symétrique _______________________ p7

Figure (I.2) principe de la cryptographie asymétrique ______________________ p8

Figure (1) les différents circuits ASIC ___________________________________ p17

Figure (II.2) : Architecture interne d’un FPGA ___________________________ p21

Figure (II.3) : architecture 6T-SRAM ___________________________________ p23

Figure (II.4) : architecture 5T-SRAM ___________________________________ p23

Figure (II.5) : étapes de développement par outils CAO ____________________ p26

Figure (III.1) : carte de développement Virtex-II. _________________________ p31

Figure (III.2) : schéma bloc de la carte de développement Virtex-II ___________ p32

Figure (III.3) : Diagramme de haut niveau de l'interface DDR_______________ p33

Figure (III.4) : circuit reset ____________________________________________ p34

Figure (III.5) : afficheur 7 segments _____________________________________ p35

Figure (III.6) : interface commutateur DIP à l’FPGA ______________________ p36

Figure (III.7) : interface RS232. ________________________________________ p37

Figure (III.8) : Connexion J2 JTAG _____________________________________ p38

Figure (III.9) : Port parallèle IV JP29 ___________________________________ p38

Figure (III.10) : chaîne JTAG de la carte de développement Virtex-II _________ p39

Figure (III.6) : configuration de la chaîne JTAG __________________________ p39

Figure (III.11) : branchement des modes de configuration __________________ p40

Figure (VI.1) : simulation du chiffrement avec notre protocole RSA __________ p46
Table des figures

Figure (VI.2) : simulation du déchiffrement avec notre protocole RSA. ________ p47

Figure (VI.3): notre protocole sous ISE __________________________________ p48

Figure (VI.4) : vérification de la syntaxe du protocole ______________________ p48

Figure (VI.5) : créer une source .ucf _____________________________________ p49

Figure (VI.6) : affectation des pins au FPGA _____________________________ p49

Figure (VI.7) : lancement d’IMPACT. __________________________________ p50

Figure (VI.8) : chargement du programme _______________________________ p51

Figure (VI.9) : affichage du résultat sur la carte Virtex-II ___________________ p51


Table des tableaux

Tableau (III.1) : description des signaux d’horloge _______________________ p34

Tableau (III.2) : affectation des broches de l’afficheur 7 segments. __________ p35

Tableau (III.3) : affectation des broches des boutons poussoirs _____________ p36

Tableau (III.4) : affectation des broches du commutateur DIP ______________ p36

Tableau (III.5) : affectation des broches du RS232 ________________________ p37

Tableau (III.7) : configuration du mode de sélectionné_____________________ p41


Introduction
générale
Introduction générale

Le RSA est un algorithme de cryptage asymétrique, considéré actuellement


comme l’un des moyens les plus sûrs pour sécuriser les transferts de données. Le RSA
est un protocole garantissant une sureté proportionnelle à la taille des clés utilisées.

D’un point de vue technique ceci pose problème lorsqu’on veut implémenter ce
protocole sur les systèmes embarqués actuels, dont la taille mémoire et la puissance de
calcul restent insuffisantes vu les exigences sécuritaires de cet algorithme.

Pour dépasser ces limites, notre travail a consisté à trouver une solution en
apportant des modifications à l’algorithme RSA en se basant sur la multiplication
modulaire de Montgomery qui permet la multiplication modulaire efficace en réduisant
la taille du résultat produit de deux grand nombres, par conséquent elle peut nous
permettre de réduire la taille du résultat d’une puissance.

Dans la perspective d’aboutir à un protocole RSA réduit par la multiplication de


Montgomery, on doit se baser sur l’algorithme Squart and Multiply. Ce dernier nous
permet la réduction de la taille d’une puissance par la multiplication modulaire de
Montgomery.

Le but de la réduction de la taille du RSA est d’avoir un protocole qui pourra


s’implémenter sur des circuits FPGA et de les utiliser dans des systèmes embarqués afin
de décharger le processeur de cette tâche qui nécessite une grande puissance de calcul.

Notre travail sera implémenté sur une carte de développement FPGA, Virtex-II
(V2MB1000), de la firme Xilinx.

Organisation du mémoire :
Le travail réalisé est décomposé en 4 chapitres : le premier est dédié à la
Cryptographie, dans le deuxième chapitre on s’est intéressé aux circuits logiques
programmables, le troisième chapitre est consacré à la carte de développement Virtex-II
et dans le dernier on a présenté notre contribution.

4
Chapitre 1 :

Cryptographie et
étude algorithmique
Cryptographie et étude algorithmique
Introduction

De nos jours la cryptographie est un outil très utilisé dans les domaines des
télécommunications et des systèmes embarqués pour crypter des données ou des
informations. Pour cela, plusieurs méthodes de cryptage existent et sont réalisées, le plus
souvent, par des ordinateurs. Mais le plus grand défi de nos jours est de réduire la taille de
ces méthodes en les combinant avec d’autres méthodes mathématiques afin de pouvoir les
adapter aux systèmes embarqués à ressources limitées.

Dans ce chapitre, nous allons nous intéresser à la cryptographie en général, au


cryptage asymétrique RSA, à l’algorithme de Montgomery pour la réduction modulaire et
à l’algorithme Squart and Multiply.

II. La cryptographie

La cryptographie est l’ensemble des techniques (algorithmes, matériels, logiciels)


permettant de protéger une communication au moyen d’un code secret. L’information à
communiquer est modifiée par l’émetteur de façon à la rendre compréhensible uniquement
par le destinataire.

De nos jours, on distingue deux types de cryptographie : la cryptographie symétrique


et la cryptographie asymétrique

II.1 Cryptographie symétrique

C’est la cryptographie la plus ancienne également dite à clé secrète. Elle est basée sur
l’échange préalable d’une clé secrète commune. Cette clé a une taille variable, elle peut
être sous la forme d’un chiffre, d’une lettre, d’un livre de code . . . Avec cette clé
commune, les communicants peuvent crypter ou décrypter un message. Aujourd’hui, de
nombreux algorithmes de cryptage à clé secrète sont utilisés tels que : le DES, le triple
DES, le AES. . . . Ces algorithmes sont basés sur des permutations et des transformations
de blocs et n’utilisent pas d’arithmétique modulaire. La figure (II.1) illustre le principe de
la cryptographie symétrique.

6
Cryptographie et étude algorithmique

Figure (II.1) principe de la cryptographie symétrique

II.2 Cryptographie asymétrique

C’est une cryptographie moderne qui a vu le jour dans les années soixante-dix. Au
lieu d’une seule clé, il y a deux clés différentes. Une clé publique (qui sera diffusée) pour
crypter et une clé privée (gardée secrète) pour décrypter. Chaque récepteur peut à l’aide de
la clé publique du destinataire crypter un message et seule le destinataire en possession de
la clé privée peut le décrypter. Le principe de la cryptographie à clé publique, est illustré
dans la figure (II.2).

7
Cryptographie et étude algorithmique

Figure II.2 principe de la cryptographie asymétrique

III. Le cryptage asymétrique ‘RSA’

RSA est sûrement le plus connu des algorithmes cryptographiques à clé publique. En
proposant ce protocole en 1978, Rivest Shamir et Adelman ouvrent un nouveau pan de la
cryptographie (la cryptographie asymétrique). La cryptographie asymétrique se nomme
ainsi car elle est à sens unique. La cryptographie asymétrique utilise une clé (publique)
pour crypter et une autre clé (secrète) pour décrypter.

L’idée est qu’une personne ‘’A’’ crée deux clés qui lui sont associées. Une clé
publique est utilisée par toute personne qui désire lui envoyer un message. Cette clé est
associée à un protocole et, puisqu’elle est publique, toute personne peut crypter un
message pour l’envoyer à ‘’A’’. Une seconde clé, secrète et connue uniquement par ‘’A’’,
permet à ‘’A’’ d’utiliser une fonction trappe pour décrypter les messages qu’il a reçus. En
fait, après avoir crypté un message avec la clé publique, l’émetteur n’est pas capable de
décrypter le message qu’il a crypté. C’est ce qui rend sûr la cryptographie asymétrique et
c’est ce qui permet à ‘’A’’ de publier sa clé publique, elle ne permet pas de décrypter le
message.

Rivest, Shamir et Adelman ont proposé un protocole basé sur ce principe de


cryptographie à clé publique. Ils utilisent comme fonction trappe la factorisation, il est

8
Cryptographie et étude algorithmique
“facile” de faire la multiplication de deux nombres p et q mais “difficile” de factoriser un
produit p*q pour récupérer les entiers p et q.

III.1 Création des clés RSA

Algorithme :

 La personne ‘’A’’ choisit deux grands nombres premiers p et q.


 Calculer n = p*q et Ø(n) = (p-1)*(q-1).
 Choisir un entier e premier avec Ø(n).
 Calculer b = (inverse de e) mod Ø(n).

La paire (n, e) est la clé publique du RSA.


La paire (n, b) est la clé privée du RSA.

Maintenant la personne ‘’A’’ peut proposer sa clé publique afin de recevoir des
messages sécurisés.

III.2 Protocole RSA

Le protocole RSA va permettre à n’importe quelle personne qui connait la clé


publique, de crypter un message afin de l’envoyer à la personne ‘’A’’, et à son tour la
personne ‘’A’’ peut décrypter le message.

III.2.1 Le chiffrement avec le RSA

La fonction de chiffrement RSA a pour entrées la clé publique du RSA (n, e) et un


texte en clair M. Le texte va être découpé en blocs de K bits, tel que 2K ≤ n. (M = m1, m2,
…. ml) et chaque bloc est traité comme un entier m.

La sortie de la fonction de chiffrement est un message crypté C (C = c1, c2, …… cl),


avec ci = mie mod n.

9
Cryptographie et étude algorithmique
III.2.2 Le déchiffrement avec le RSA

La fonction de déchiffrement a pour entrées la clé privée (n, b) et le texte chiffré C


(C = c1, c2, ……, cl). Donc pour retrouver le message M. (M = m1, m2, …. ml) en clair on
calcule mi = cib mod n.

IV Algorithme de Montgomery pour la multiplication modulaire

En 1985, Peter Montgomery franchit un cap dans la réduction modulaire. Il


transforme la réduction modulo n en une division par une puissance de la base. En
pratique, une division par une puissance de la base revient à un décalage, qui ne coûte rien.

IV.2 Présentation du problème

Etant donnés trois nombres entiers a, b, n, le problème est de calculer le plus


rapidement possible a*b mod n en un minimum d’espace.

IV.3 Transformation de Montgomery

 Définition de la transformation

Soit n le modulo intervenant dans l’opération. On supposera désormais que n est un


nombre impair. Le nombre de bits de n est l’entier k tel que : 2k-1 ≤ n < 2k. On appellera r le
nombre 2k. Comme n est impair, r est premier avec n et donc inversible modulo n. On
notera r-1 l’inverse de r modulo n.

Soit mont (transformation de Montgomery) donc :

mont(a) = a*r mod n.

Cette application mont (multiplication par r modulo n) est une bijection puisque r est
inversible modulo n et on peut écrire :

a = mont(a)*r-1 mod n.

10
Cryptographie et étude algorithmique

 Comment calculer la transformation d’un produit ?

On calcule une fois pour toute r-1, tel que :

r r-1 = 1 mod n.

Et on calculera aussi v tel que :

r r-1 – v n = 1.

Une fois ces coefficients calculés on suit les étapes suivantes :

 s = mont(a) * mont(b).
 t = (s*v) mod r.
 res_mont = (s + t*n) / r.

Les résultats de la multiplication obtenus sont dans le domaine de Montgomery. Pour


avoir le résultat dans le domaine naturel on fait la transformation suivante :

res = res_mont * r-1 mod n.

V. Algorithme Square and Multiply

La première façon de calculer une puissance ne, est de multiplier n par lui-
même e fois. Cependant, il existe des méthodes bien plus efficaces, où le nombre
d'opérations nécessaires n'est plus de l'ordre de e.

L’algorithme square and multiply est l’une des méthodes qui calculent une puissance S=
XE mod n, en un minimum d’opérations.

V.1 Description de l’algorithme

 On initialise les paramètres d’entrée et de sortie :

S (0) = 1 ; (élément neutre).

Z (0) = X.

E = ∑𝑛−1
𝑖=0 𝑒𝑖 2
𝑖

11
Cryptographie et étude algorithmique

 On fait une boucle allant de 0 jusqu’à (n-1) et on calcule :

Z (i+1) = Zi2 mod n.

 On fait un test sur chaque bit de e et si e (i) = 1 on calcule :

S (i+1) = S (i) *Z (i) mod n.

 Si non on calcule :

S (i+1) = S (i).

VI. Conclusion

En cryptographie asymétrique, de grands nombres sont utilisés (plusieurs centaines


de bits pour le RSA). Dans certains systèmes embarqués ou l’espace est limité, le calcul du
produit de deux grand nombres est problématique.

Dans ce contexte nous allons proposer un nouveau protocole RSA qui permet de
crypter un message tout en réduisant la taille de ce dernier afin de pouvoir l’implémenter
sur un circuit FPGA.

Le chapitre suivant sera consacré aux circuits logiques programmables.

12
Chapitre 2 :

Circuits logiques
programmables
Circuits logiques programmables
Introduction

Durant les dernières années, le domaine de l’intégration des circuits électroniques a


connu des progrès considérables dans la recherche des circuits capables de réaliser des
fonctions de plus en plus complexes. Ces progrès ont permis la miniaturisation des
composants, la réduction de leur coût et de leur consommation ainsi que l’augmentation de
leurs performances. Pour cela, le rôle des fabricants des semi-conducteurs, pendant ces
trois dernières décennies, ne s’est pas limité à faire progresser la technologie et par
conséquent à augmenter le nombre de transistors par unité de surface, mais aussi à définir
les types de circuits à créer afin de satisfaire leurs clients.

Dans les années soixante on distinguait :

 Les portes logiques.


 Les circuits intégrés SSI (Small Scale Integration).
 Les registres à décalages, les compteurs …etc.

Dans les années soixante-dix :

 Les circuits intégrés LSI (Large Scale Intégration).


 Les PIA (Adaptateur Interface Périphérique).
 Les ACIA (Adaptateur Interface Asynchrone de Communication).
 Les microprocesseurs.

Les composants programmables, apparus au début des années 70, ont dû attendre les
années 80 pour que l’évolution de la technologie permette l’intégration d’architectures
complexes et performantes.

Dans les années quatre-vingts, un virage a été marqué dans la conception des circuits
intégrés avec le développement des microprocesseurs et l’arrivée de la VLSI (Very Large
Scale Integration).

Notons bien que cette évolution a apporté beaucoup de solutions à la majeure partie
des problèmes logiques, par une solution programmée en utilisant des microcontrôleurs,
mais elle n’était pas la solution idéale car elle s’est heurtée à plusieurs butoirs :

14
Circuits logiques programmables

 D’une part, la gamme des produits standards offerts aux utilisateurs, ne répond pas
tout le temps à leurs exigences.
 D’autre part, la difficulté des fabricants de poursuivre l’innovation.
 Et enfin, les outils de conception tardent à venir.

Une autre solution est proposée aux utilisateurs, c’est la conception de circuits intégrés sur
mesure. Elle permet :

 D’optimiser les dimensions, autrement dit, réduire la surface du silicium.


 D’optimiser les performances fonctionnelles et électriques (rapidité et
consommation d’énergie).

Cependant, cette solution est très coûteuse en temps de conception et en investissement.


Elle est envisageable pour un volume de production très élevé. A partir des années 80 une
autre voie a vu le jour, l’utilisation des ASIC (Application Specific Integrated Circuit), qui
a été réalisable grâce aux progrès des outils C.A.O (conception assistée par ordinateur) qui
permettent aux ingénieurs de concevoir des circuits intégrés de manière rapide et sûre et
dans divers domaines de l’électronique.

II. Les ASIC (Application Specific Integrated Circuit)

Dans un premier temps, nous allons rappeler quelques concepts autour des circuits
intégrés pour applications spécifiques ASIC. Les circuits ASIC constituent la troisième
génération de circuits intégrés qui a vu le jour au début des années 80. En comparaison
avec les circuits intégrés standards et figés proposés par les fabricants, l’ASIC présente une
personnalisation de son fonctionnement, selon l’utilisation, accompagnée d’une réduction
de temps de développement, d’une augmentation de la densité d’intégration et de la vitesse
de fonctionnement. En outre sa personnalisation lui confère un autre avantage industriel,
c’est évidemment la confidentialité. Ce concept d’abord développé autour du silicium s’est
ensuite étendu aux autres matériaux pour les applications micro-ondes ou très rapides.

Par définition, les circuits ASIC regroupent tous les circuits dont la fonction peut être
personnalisée d’une manière ou d’une autre en vue d’une application spécifique, par
opposition aux circuits standards dont la fonction est définie et parfaitement décrite dans le
catalogue de composants. Les ASIC peuvent être classés en plusieurs structures de base

15
Circuits logiques programmables
(réseau programmable, cellule de base, matrice,… etc.). Sous le terme ASIC deux familles
sont regroupées, les semi-personnalisées et les personnalisées comme le représente la
figure (1).

Figure (1) les différents circuits ASIC

II.1 Les circuits semi-personnalisés

Les semi-personnalisables sont des réseaux de transistors et/ou de portes logiques.


L’utilisateur doit personnaliser les interconnexions pour réaliser des fonctions spécifiques
bien définies. Cette famille comprend :

 Les réseaux logiques programmables


 Les réseaux pré-diffusés

II.1.1 Les réseaux logiques programmables

Ce sont des circuits standards programmables par l’utilisateur (programmation des


interconnexions). Ces composants ont une architecture basée sur des portes logiques ‘OR’
et ‘AND’. On trouve dans la même catégorie :

 PAL (Programmable Aray Logic).


 EPLD (Erasable PLD) effaçable par rayons UV.

16
Circuits logiques programmables

 EEPLD (Electrically Erasable PLD) effaçable électriquement.

II.1.2 Circuits pré-diffusés

Ces composants se présentent sous forme de tableau de portes logiques bien


distribuées et pré-caractérisées, fourni avec une carte détaillée de l’architecture interne et
l’emplacement exact de chaque porte, pour que l’utilisateur arrive à définir une carte des
interconnexions de ces portes pour avoir la fonction souhaitée tout en essayant d’optimiser
les interconnexions et l’emplacement des portes utilisées.

Cette technologie a un avantage de rapidité de conception et elle est à faible coût,


mais elle présente l’inconvénient d’avoir une faible densité d’intégration.

II.2 Circuits personnalisés

Ce sont des circuits non préfabriqués. Pour chaque application on conçoit un circuit
intégré le plus optimisé possible, ce qui conduit à la création de son propre composant.
Cette famille comprend :

 Les circuits à la demande.


 Les circuits pré-caractérisés.

II.2.1 Circuits à la demande

Ce sont des circuits qui sont conçus pour répondre aux exigences d’un utilisateur
(une fonction bien définie). La conception de ce type de circuits démarre des
spécifications, de l’architecture voulue et à l’aide des outils C.A.O faire les dessins de
mask et passer à la fonderie pour obtenir le produit final.

Toutes les opérations, de la conception à la fabrication sont effectuées de façon


spécifique, adaptée aux exigences de l’utilisateur. C’est l’ASIC le plus optimisé car aucune
contrainte ne lui est imposée, cependant son temps de fabrication est élevé ainsi que son
coût de revient.

II.2.2 Les circuits pré-caractérisés

17
Circuits logiques programmables
Ce sont des circuits basés sur des cellules standard pré-caractérisées et d’autres
cellules qui réalisent des fonctions spécifiques. La conception de ces circuits consiste à
trouver le meilleur moyen de les disposer et de les interconnecter afin d’optimiser le
circuit. Il existe trois types de cellules :

 Cellules standards (logique classique).


 Méga cellules (microprocesseur, périphériques).
 Cellules compilées (RAM, ROM, …etc.).

Ces circuits présentent des avantages tels que la rapidité de conception et de


fabrication (environ 8 semaines), pas de perte de silicium et un grand investissement des
outils C.A.O. Parmi ces inconvénients, le choix limité des cellules et un début de
concurrence avec les FPGA.

II.3 Les avantages de l’utilisation des ASIC

D’une manière générale l’utilisation d’un ASIC conduit à de nombreux avantages


provenant essentiellement de la réduction de la taille des systèmes. Il en ressort :

 Réduction du nombre de composants sur le circuit imprimé. La consommation et


l’encombrement s’en trouvent considérablement réduits.
 Le concept ASIC par définition assure une optimisation maximale du circuit à
réaliser. Nous disposons alors d’un circuit intégré correspondant réellement à nos
propres besoins.
 La personnalisation du circuit procure une confidentialité au concepteur et une
protection industrielle.
 Enfin, ce type de composant augmente la complexité du circuit, sa vitesse de
fonctionnement et sa fiabilité.

Dans notre travail nous nous sommes intéressés à une classe d’ASIC que sont les FPGA.

18
Circuits logiques programmables
III. FPGA (Fiel Programmable Gate Arrays)

Les FPGA sont des circuits pré-diffusés programmables. Contrairement aux circuits
pré-diffusés conventionnels, on n’a pas à faire de fabrication spéciale en usine, ni de
système de développement coûteux.

Inventé par XILINX, dans la famille des ASIC, se situe entre les réseaux logiques
programmables et les pré-diffusés, c’est donc un composant standard qui combine densité
et performances d’un pré-diffusé avec la souplesse due à la reprogrammation d’un PLD.

Les FPGA sont des circuits VLSI à haute intégration (3 000 000 de ports en 2010),
qui emploient une technologie CMOS performante, qui est passée de 2µm avec 2 niveaux
de métallisation en 1986 à 0.13µm avec 9 niveaux de métallisation en 2002, et à 13nm en
2010.

III.1 Principaux fondeurs des FPGA

Les fabricants des circuits FPGA ne cessent d’améliorer leur produit en efficacité et
en puissance. L’ensemble des principaux fondeurs qui conçoivent ce type de circuits sont :
Actel, Altera, Atmel, Xilinx, Lattice et d’autres.

III.2 Architecture des FPGA

Les FPGA sont des circuits intégrés composés d’un réseau de cellules élémentaires
ou d’éléments logiques programmables, répartis régulièrement et reliés entre eux grâce à
des interconnexions qui forment une matrice de routage programmable pour obtenir un
comportement du circuit dans sa globalité. Les différents éléments d’un FPGA (figure (2))
sont : cellule de base, slice, CLB, IOB et matrice d’interconnexion.

19
Circuits logiques programmables

Figure (2) : Architecture interne d’un FPGA

 Cellule de base : ce sont des éléments de base d’un FPGA, avec lesquels on peut
réaliser toute opération de logique. Ils contiennent des LUT (look up table) qui
sauvegardent la table de vérité de la fonction programmée, des générateurs de
fonctions ou aussi des blocs de mémorisation.
 Slice : un slice est constitué d’un ensemble de cellules de base, qu’on va
interconnecter pour avoir la fonction voulue.
 CLB (Configurable Logic Bloc) : c’est un ensemble de slice interconnecté pour
obtenir une fonction déterminé.
 IOB (input output bloc) : les blocs IOB servent d’interface entre les broches du
composant FPGA et la logique interne développée à l’intérieur du composant. Ils
sont sur toute la périphérie du circuit intégré.
 Matrice d’interconnexions : elle est sous forme de grille de segments métalliques
verticaux et horizontaux positionnée entre les lignes et les colonnes des CLB et
IOB.

20
Circuits logiques programmables
III.3 Les différents types d’FPGA

Les FPGA ont différentes architectures et on distingue deux types principaux qui
sont :

 Les FPGA à anti fusibles.


 Les FPGA de types SRAM.

III.3.1 Les FPGA de type anti fusible

Les anti-fusibles sont des composants généralement constitués de deux couches


conductrices entourant un diélectrique. L’application d’une tension élevée fait claquer le
diélectrique créant une liaison entre les deux couches conductrices du composant, donc
elles peuvent être considérées comme des circuits ouverts dans leur état initial, et des
circuits fermés une fois programmées.

L’avantage de cette technologie est sa faible taille, son haut niveau de confidentialité
due aux difficultés de relecture de l’état du fusible, et sa faible sensibilité aux radiations et
autres perturbations environnementales, induisant une bonne fiabilité. Cependant elle
présente l’inconvénient d’être configurable une seule fois.

III.3.2 Les FPGAS de type SRAM

La structure de base d’un FPGA de type SRAM est complexe, le point de connexion
entre les différentes cellules est un ensemble de transistors MOS de commutation
commandés par des cellules de mémoire vive (RAM).

Les mémoires SRAM sont également utilisées pour la conception de réseaux


programmables du fait de leurs performances (rapidité d’accès notamment) et leur faible
coût. On trouve deux grandes architectures pour ces points mémoires, les 6T-SRAM et
5T-SRAM, respectivement à six et cinq transistors. La cellule à six transistors est
constituée de deux inverseurs montés tête-bêche et deux transistors d’accès, voir la Figure
(3). La figure (4) représente une cellule à cinq transistors.

21
Circuits logiques programmables

Figure (3) : architecture 6T-SRAM

Figure (4) : architecture 5T-SRAM

22
Circuits logiques programmables

III.4 Domaine d’application des FPGA

Les FPGA dépassent désormais leur rôle d'interfaçage d'appoint, qui leur permettait
d’apporter une solution à ce que la logique des produits ne parvenait pas à résoudre. Ils
occupent en effet aujourd'hui le devant de la scène grâce à leur capacité à s'intégrer dans
des systèmes sur puce entièrement personnalisés, conçus spécifiquement pour une
application particulière. Parmi ces applications : la télécommunication, la cryptographie,
les systèmes embarqués, les applications de teste et de contrôle …etc.

III.5 Critères de choix des FPGA

Les FPGA étant adaptables à différentes tâches, ils peuvent facilement répondre à
des exigences poussées, comme par exemple le conditionnement de signaux, l’utilisation
de nouvelles interfaces ou l’accélération de parties de modèles. Les FPGA sont
particulièrement utiles, vu qu’on peut les configurer en un temps relativement court et à
bas coût, et le fait de connaitre ces caractéristiques on pourra faire des applications sur ces
circuits qui seront plus performants et qui consommeront un minimum de puissance.

III.6 Avantage et inconvénients des FPGA

En nous intéressant aux FPGA on a constaté qu’ils ont beaucoup d’avantages


comme ils ont aussi leurs inconvénients. On va citer quelques-uns dans le tableau suivant :

23
Circuits logiques programmables

Avantages Inconvénients

 Technologie facile à  Performances non optimisées.


maitriser.
 Temps de réponse long par
 Haute performance de calcul. rapport aux ASIC.

 Temps de mise sur le marché


réduit.

 Faible coût de revient.

 Très fiables.

 Reconfiguration parfois en
temps réel.

IV. Configuration des FPGA par outils CAO

Les techniques de conception CAO (Conception Assistée par Ordinateur) sont


aujourd’hui largement employées afin de concevoir des circuits électroniques nécessaires à
mettre en pratique les connaissances algorithmiques. L’approche moderne pour la
conception des circuits et la manière d’introduire une fonctionnalité sur un support
physique sont confiées aux outils CAO. Les outils CAO sont utilisés pour générer le fichier
de configuration des FPGA qui s’appelle bit-Stream, à partir d’une description de haut
niveau.

24
Circuits logiques programmables
IV.1 Méthode de conception par CAO

Le flot de conception d’un système sur puce regroupe plusieurs niveaux


d’abstraction. Dans chaque niveau le concepteur s’intéresse à la résolution d’un problème.
Les outils CAO sont utilisés intensivement afin d’assurer la transition entre les différents
niveaux d’abstraction.

Le développement d’une application sur FPGA par des outils CAO, suit
l’enchaînement des étapes suivantes (figure (5)) : spécification du design, développement
du design, la synthèse, le placement et le routage, intégration et implémentation.

Figure (5) : étapes de développement par outils CAO

IV.1.1 Spécification du design

Cette étape se fait sur un outil de développement tel que le VHDL, VERILOG,…
Elle consiste en la spécification de nombres de broches et leur localisation sur le circuit

25
Circuits logiques programmables
FPGA, ainsi que la spécification de la fréquence d’horloge du système et la mémoire
requise pour l’application.

IV.1.2 Développement du design

Une fois l’outil de développement choisi, il faut respecter certaines règles propres à
ce dernier, pour que le code soit synthétisable. Vient alors la saisie du code et là on a deux
choix, soit le graphique (Machine à états) ou la saisie HDL (Hardware Description
Language). Après ça, on passe à la simulation ensuite à la synthèse.

IV.1.3 La synthèse

La synthèse est le processus qui convertit le code HDL ou le graphique pour avoir
une représentation au niveau portes logiques la mieux adaptée. Le résultat de cette étape
est un fichier représentant les différentes portes à utiliser et leurs interconnexions,
représentant le circuit électronique, appelé fichier synthèse.

IV.1.4 Placement et routage

A partir du fichier synthèse, l’outil de conception procède au placement et routage.


Un algorithme de routage est sensé faire l’aiguillage des données qu’il reçoit vers leur
destination par action sur les nœuds de routage, ce qui est équivalent à définir les chemins
qui relient l’ensemble des CLB contenus dans la fonction désirée, toute en essayant
d’optimiser ces chemins au maximum.

Cette étape va générer un ensemble de valeurs numériques appelées bit-Stream, qui


seront chargées sur le composant FPGA.

IV.1.5 Intégration et implémentation

L’implémentation est la réalisation proprement dite, qui consiste à mettre en œuvre


l’algorithme cible, c’est à dire à compiler, charger, puis lancer l’exécution sur un

26
Circuits logiques programmables
ordinateur ou calculateur. C’est une étape de programmation physique et de tests
électriques qui clôturent la réalisation du circuit.

IV.2 Technique de programmation des FPGA

Les circuits FPGA ne possèdent pas de programme résident. A chaque mise sous
tension, il est nécessaire de les configurer. Leur configuration permet d’établir des
interconnexions entre les CLB et les IOB. Pour cela ils disposent d’une RAM interne dans
laquelle sera écrit le fichier de configuration. Le format des données du fichier de
configuration est produit automatiquement par le logiciel de développement sous format
d’un ensemble de bits organisés en champs de données. Les FPGA disposent de quatre
modes de chargement et de trois broches M0, M1, M2, lesquelles définissent les différents
modes comme l’indique le tableau ci-dessous. Ces modes définissent les différentes
méthodes pour envoyer le fichier de configuration vers le circuit FPGA.

M0 M1 M2 Mode sélectionné
000 Maître série
001 Maître parallèle bas
011 Maître parallèle haut
101 Périphérique
111 Esclave série

 Mode maître série :


Le mode maître série utilise une mémoire à accès série de type registre à
décalage commercialisée par le fabricant Xilinx. Le programme est
préalablement chargé par le système de développement utilisé pour le circuit
FPGA. Le FPGA génère tous les signaux de dialogue nécessaires pour la
copie du contenu de la PROM dans la RAM interne, lorsque la copie est
terminée, il bascule le signal DONE pour le signaler au circuit. Pour ce mode
on peut avoir une seule PROM pour configurer plusieurs circuits FPGA avec
la même configuration ou plusieurs PROM pour configurer plusieurs FPGA
en chaîne ou le premier des circuits FPGA est le maître et génère l’horloge.

27
Circuits logiques programmables

 On dispose aussi d’un mode maître-parallèle ou le FPGA est relié à une


EPROM classique, de même qu’un mode passif type périphérique dans lequel
le FPGA est considéré comme un périphérique de microprocesseur et peut-
être configuré à partir de celui-ci.
 Mode esclave :
Dans ce mode, le programme de configuration peut être envoyé à partir d’un
PC, d’une station ou à partir d’un autre circuit FPGA. Le circuit FPGA
maître peut être interfacé à une mémoire en mode parallèle ou série sans
apporter aucune modification au niveau du câblage des circuits FPGA
esclaves. C’est souvent le mode exploité pour la mise au point d’une
configuration.

V. Conclusion

Dans ce chapitre nous avons présenté les différents circuits logiques programmables
et concluons que la technologie FPGA s’inscrit au sommet de l’évolution des composants
logiques programmables et ouvre de grandes perspectives en termes de coût et rapidité de
conception.

Le chapitre suivant va être dédié à la présentation de la carte Virtex-II sur laquelle en


va implémenter notre protocole.

28
Chapitre III :
Présentation de la
carte de
développement
Virtex-II
Présentation de la Carte de développement Virtex-II
Introduction

Le kit de développement Virtex-II, V2MB1000, fournit une solution complète pour


développer des modèles et des applications basés sur la famille de FPGA Xilinx Virtex-II.

La carte système Virtex-II utilise le dispositif FPGA Virtex-II 1 million de portes


(XC2V1000-4FG456C). Dans le paquet de réseau de grille en trouve 456 pins. La forte
densité de portes et le grand nombre des E / S permet des solutions complètes des
systèmes à mettre en œuvre.

La carte système comprend une mémoire de 16M x 16 DDR, deux sources d'horloge,
port RS-232, des circuits de soutien. Une interface LVDS est munie d'une transmission de
16 bits en émission et en réception, ainsi qu’une horloge.

La famille Virtex-II FPGA a les fonctionnalités avancées nécessaires pour s'adapter


aux exigences des applications de haute performance.

Le kit de développement FPGA Virtex-II fournit une excellente plate-forme pour


explorer ces caractéristiques de sorte que vous pouvez rapidement et efficacement
répondre à vos exigences.

II. La carte de développement Virtex-II

La figure (II.1) montre une photo de la carte et ces composants.

Figure (II.1) : carte de développement Virtex-II.

30
Présentation de la Carte de développement Virtex-II

II.1 Description de la carte système Virtex-II

Un schéma bloc de la carte de développement FPGA Virtex-II, est représenté sur la


figure (II.2), suivi par une brève description de chaque sous-section.

Figure (II.2) : schéma bloc de la carte de développement Virtex-II

II.2 Virtex-II Dispositif

La carte de développement Virtex-II utilise le dispositif Xilinx Virtex-II XC2V1000-


4FG456C. La famille Virtex-II est une plate-forme FPGA développée pour la haute
performance, utilisant des IP et des modules personnalisés.

La famille Virtex-II fournit des solutions complètes pour les télécommunications,


sans fil, réseau, vidéo et DSP applications. La performance et la densité de la famille
Virtex-II avec les E/S pris en charge tels que LVDS, PCI et DDR, permettent aux
concepteurs de répondre aux exigences des applications de télécommunication et autres.

31
Présentation de la Carte de développement Virtex-II
II.3 Mémoire DDR

La carte de développement Virtex-II fournit 32 Mo de mémoire DDR. Cette mémoire


est mise en œuvre à l'aide du dispositif DDR Micron MT46V16M16TG-75 16Mx16. Le
diagramme de haut niveau de l'interface DDR est illustré ci-dessous :

Figure (II.3) : Diagramme de haut niveau de l'interface DDR

II.4 Génération d’horloge

La carte de développement Virtex-II dispose de deux oscillateurs fonctionnant à 100


Mhz (CLK.CAN2) et 24 Mhz (CLK.CAN1). L’oscillateur fonctionnant à 100 Mhz est
activé lorsque le cavalier JP24 est ouvert et désactivé lorsque JP24 est fermé. JP23
commande l’oscillateur 24 Mhz. Une troisième prise de l’horloge est fournie pour
l’utilisateur.

Le tableau suivant fournit une brève description de ces signaux d’horloge :

32
Présentation de la Carte de développement Virtex-II

Tableau (II.1) : description des signaux d’horloge

II.5 Circuit de reset

La carte de développement Virtex-II utilise un dispositif de surveillance de tension


TI TPS3125 pour surveiller le FPGA Virtex-II (1,5 V). Ce circuit fournit un signal de
réinitialisation (FPGA_RESETn) au Virtex-II lorsque la tension de base de 1,5 V descend
en dessous de ses spécifications minimales (1.425V). La remise à zéro envoie au FPGA
une faible impulsion de 100ms fixes. En plus de surveiller la tension de base, ce circuit
peut être utilisé pour générer une impulsion de remise à zéro en activant le Master Reset du
signal (MRN) avec le dispositif TPS3125 via le commutateur de la carte bouton-poussoir
(SW3).

La figure (II.4) suivante montre le circuit de réinitialisation sur la carte de


développement FPGA Virtex-II.

Figure (II.4) : circuit reset

II.6 Utilisation des afficheurs 7 segments

La carte de développement Virtex-II utilise deux afficheur 7 segments LED, à


cathode commune qui peuvent être utilisés pendant l’essai et la phase de mise au point
d’un dessin. L’utilisateur peut activer un segment donné par l’envoi d’un signal haut.

La figure (II.5) suivante montre le mode d’affichage à 7 segments interfacé avec le


FPGA Virtex-II:

33
Présentation de la Carte de développement Virtex-II

Figure (II.5) : afficheur 7 segments

Le tableau (II.2) suivant présente l’affectation des broches de l’afficheur 7 segments :

Tableau (II.2) : affectation des broches de l’afficheur 7 segments.

II.7 Utilisation de la LED

La carte de développement Virtex-II fournit une seule LED pour l’utilisateur qui est
active pour un signal haut. Elle est reliée au Pin A9 du FPGA.

II.8 Utilisation des interrupteurs à bouton poussoir (SW5 et SW6)

La carte de développement Virtex-II dispose de deux entrées de commutation avec le


FPGA Virtex-II qui sont des boutons poussoirs. Chaque commutateur à bouton poussoir
peut être utilisé pour générer un signal actif au niveau bas.

34
Présentation de la Carte de développement Virtex-II
Le tableau (II.3) suivant présente l’affectation des broches pour les boutons
poussoirs :

Tableau (II.3) : affectation des broches des boutons poussoirs

II.9 User Switch DIP (SW2)

La carte de développement Virtex-II fournit 8 entrées de commutation pour


l'utilisateur. Ces commutateurs sont statiques, mis à un niveau bas ou niveau haut logique.

La figure (II.6) suivante montre l'interface du commutateur DIP à l’FPGA Virtex-II.

Figure (II.6) : interface commutateur DIP à l’FPGA

Le tableau (II.4) suivant présente l’affectation des broches du commutateur DIP :

Tableau (II.4) : affectation des broches du commutateur DIP

35
Présentation de la Carte de développement Virtex-II
II.10 Port RS232

La carte de développement Virtex-II fournit un port RS232 qui peut être géré par le
FPGA Virtex-II. Le sous-ensemble des signaux RS232 est utilisé sur la carte de
développement Virtex-II pour mettre en œuvre cette simple interface (signaux TD et RD).

II.10.1 Interface RS232

La carte de développement Virtex-II dispose d’un port DB-9 pour connecter un


simple port RS232. La carte utilise le pilote TI MAX3221 RS232 pour piloter les signaux
RD et TD. L'utilisateur fournit le Code RS232 UART, qui réside dans l’FPGA Virtex-II.

Figure (II.7) : interface RS232.

II.10.2 Description du Signal RS232

Le tableau (II.5) suivant montre les signaux RS232 et leurs affectations aux broches
du FPGA Virtex-II.

Tableau (II.5) : affectation des broches du RS232

II.11 Port JTAG

La carte de développement Virtex-II fournit un connecteur JTAG qui peut être utilisé
pour programmer la PROM de la carte et configurer le FPGA Virtex-II. Deux options de
connexion sont fournies, J2 est utilisé pour la connexion standard JTAG, et JP29 est utilisé
pour la connexion Xilinx parallèle IV avec câble JTAG.

II.11.1 Connecteur standard JTAG

La figure (II.8) suivante montre l'affectation des broches du connecteur JTAG J2 sur
La carte de développement Virtex-II.

36
Présentation de la Carte de développement Virtex-II

Figure (II.8) : Connexion J2 JTAG

II.11.2 Câble parallèle IV Port

La figure (II.9) suivante montre les connexions du connecteur du câble parallèle


IV. Le Câble IV parallèle peut également être utilisé pour configurer le FPGA via mode
Slave de configuration de série.

Figure (II.9) : Port parallèle IV JP29

II.11.3 Chaîne JTAG

La figure (II.10) suivante montre la chaîne JTAG sur la carte de développement


Virtex-II. Le Jumper JP22 offre la possibilité de retirer la PROM de la chaîne JTAG pour
la connexion directe à l’FPGA.

37
Présentation de la Carte de développement Virtex-II

Figure (II.10) : chaîne JTAG de la carte de développement Virtex-II

II.11.4 Réglages des cavaliers dans la chaîne JTAG

Le tableau (II.6) suivant indique les cavaliers à mettre pour avoir la chaine JTAG sur
la carte de développement Virtex-II:

Figure (II.6) : configuration de la chaîne JTAG

III. Utilisation de la carte

La carte de développement Virtex-II prend en charge plusieurs méthodes de


configuration du FPGA Virtex-II. Le port JTAG sur la carte de développement FPGA
Virtex-II peut être utilisé pour configurer directement le FPGA Virtex-II, ou de
programmer le XC18V04 FAI PROM. Une fois la PROM programmée, elle peut être
utilisée pour configurer le FPGA Virtex-II. Le port série SelectMap/esclave sur cette carte
de développement peut également être utilisé pour configurer le FPGA Virtex-II.
La figure (II.11) ci-après montre le branchement pour tous les modes de
configuration FPGA Virtex-II qui sont pris en charge sur La carte de développement
Virtex-II.

38
Présentation de la Carte de développement Virtex-II

Figure (II.11) : branchement des modes de configuration

III.1 Interface JTAG

Le connecteur J2 JTAG sur la carte de développement FPGA Virtex-II peut être


utilisé pour configurer le Virtex-II ou de programmer le XC18V04 FAI PROM. Le câble
JTAG est connecté à la carte de développement Virtex-II via J2 à une extrémité et au port
parallèle d'un PC à l'autre extrémité.

III.1.1 Configuration du FPGA Virtex-II

Lorsque le port JTAG est utilisé pour configurer le FPGA Virtex-II, les mesures
suivantes doivent être prises:

 En utilisant le tableau (II.7) régler le mode de configuration du FPGA Virtex-II en


mode JTAG.
 Utiliser l'utilitaire de programmation JTAG Xilinx (IMPACT) pour charger le
fichier binaire de conception dans le FPGA Virtex-II, associer la PROM FAI soit à
un fichier [Link] ou à un fichier .bsd afin de permettre au logiciel de
programmation JTAG de transmettre les données à la PROM.

III.1.2 Programmation de la XC18V04 FAI PROM

Lorsque le port JTAG est utilisé pour programmer le FAI PROM, effectuer les étapes
suivantes :

 En utilisant le tableau (II.7) régler le mode de configuration du FPGA Virtex-II en


Mode Master Serial ou Master SelectMap.
 Utiliser l'utilitaire de programmation JTAG Xilinx (IMPACT) pour charger le
fichier de conception sur la PROM, associer le FPGA soit à un fichier fictif .bits ou
à un fichier .bsd. permettant au logiciel de programmation JTAG de transmettre les
données à l’FPGA.

39
Présentation de la Carte de développement Virtex-II

Tableau (II.7) : configuration du mode sélectionné

Conclusion

Ce chapitre est dédié à la présentation de la carte Virtex-II, expliquant ses


constituants que nous exploiterons dans le chapitre suivant qui sera consacré à la
présentation de notre protocole et à son implémentation.

40
Chapitre 4 :
Solution et
contribution
Solution et contribution
Introduction

Dans le chapitre I nous avons décrit la multiplication modulaire de Montgomery, le


protocole de cryptage RSA et l’algorithme Squart and Multiply. En se basant sur ces
derniers on va d’abord présenter notre protocole RSA, auquel nous avons abouti en se
basant sur la multiplication modulaire de Montgomery et l’algorithme Squart and Multiply
dans la perspective de réduire la taille afin de l’implémenter sur un FPGA. Par la suite on
va programmer notre algorithme RSA en utilisant le langage VHDL et faire quelques
simulations et on passera à l’environnement de développement ISE afin de l’implémenter
et le tester sur notre carte de développement Virtex-II.

II. Présentation de notre protocole RSA

Notre protocole consiste à chiffrer un message M avec le protocole RSA qui est un
protocole simple, fiable ayant fait ses preuves dans la cryptographie moderne ; surtout qu’il
est facile à programmer sur un ordinateur. Mais ce qui pose problème c’est la taille
mémoire nécessaire à son implémentation. Afin d’essayer de remédier à ça, on va utiliser
la multiplication modulaire de Montgomery et l’algorithme Squart and Multiply qu’on a
présentés dans le chapitre I.

II.1 Description de notre protocole RSA

On veut crypter un message m, en utilisant le chiffrement RSA. On va avoir à la


sortie un message crypté c, tel que c = m e mod n. Ce type de chiffrement peut nécessiter un
grand espace mémoire et de calcul. Pour essayer de réduire cet espace, on va opter pour la
multiplication modulaire de Montgomery.

Le protocole que nous proposons est basé sur l’algorithme square and multiply et la
multiplication de Montgomery, qui va calculer C = M ᴧe mod n et qui va donner un résultat
dans le domaine de Montgomery pour aboutir à une puissance qu’on appellera la puissance
de Montgomery qui va nous donner le cryptage RSA en réduisant l’espace utilisé.

ᴧ : puissance de Montgomery.

42
Solution et contribution
II.2 Algorithme de notre protocole RSA

On commence par calculer les paramètres de l’algorithme de Montgomery comme on


l’a expliqué dans le chapitre I, dont on aura besoin aussi dans notre algorithme de
puissance.

 On transforme m vers le domaine de Montgomery :

M = m*r mod n. (m = mont (m)).

 On écrit e sous forme binaire :

E = écriture binaire de e.

 On initialise les paramètres d’entrée et de sortie :

C (0) = r-n.

z (0) = M.

 On fait une boucle allant de 0 jusqu’à (n-1) et on calcule :

z (i+1) = z (i) ӿ z (i) mod n.

 On fait un test sur chaque bit de e et si e (i) = 1 on calcule :


C (i+1) = C (i) ӿ z (i) mod n.
 Sinon on calcule :
C (i+1) = c (i).

La sortie de notre module est un résultat C qui est dans le domaine de Montgomery,
donc on doit le remettre dans le domaine naturel comme suit :

ӿ : multiplication de Montgomery.

c = C * r-1 mod n.

III. Implémentation

Dans ce qui suit nous allons présenter l’implémentation de notre protocole matériel
décrit avec le langage de description du matériel VHDL en utilisant Le navigateur de projet
ISE.

43
Solution et contribution
Nous commençons ainsi par une brève description du langage VHDL, ainsi que le
navigateur de projet ISE. Par la suite, nous présenterons l’algorithme de notre protocole
RSA sous VHDL, et testeront sa fonctionnalité par des simulations, puis sur la carte de
développement Virtex-II.

III.1. Langage de description VHDL

VHDL (VHSIC Hardware Description Language) est un langage de description pour


les circuits numériques. Il a été développé dans le cadre du projet VHSIC (Very high speed
integrated circuits) commandité par le département de la défense américaine DoD au début
des années quatre-vingts. C'est un standard IEEE depuis 1987 largement utilisé en Europe.
Il autorise plusieurs méthodologies de conception (comportemental, flot de données,
structurel).

Il est indépendant de la technologie utilisée FPGA, CPLD, ASIC, etc., et permet


d’aller d’un niveau d’abstraction très élevé par une description algorithmique jusqu'à un
niveau proche du matériel, où l’on décrit le système par un ensemble de portes logiques et
d’interconnexions. Entre les deux se trouve le niveau RTL (Register Transfer Level) qui
permet de définir le système par une architecture de type machine de Moore ou Mealy.
Cette abstraction permet d'ailleurs de simuler sur ordinateur avant de programmer le
moindre circuit.

III.2. Environnement de développement ISE

Le navigateur de projet ISE sera utilisé comme outil de conception. Cet outil de
Xilinx permet de créer des projets comportant plusieurs types de fichiers (HDL,
schématique, UCF, EDIF, etc.), de compiler, d’effectuer des designs rule check (DRC), de
créer des contraintes d’implémentation dont des contraintes de timing sur les horloges, de
déterminer l’emplacement des broches, de créer des bancs d’essais de simulations
(testbench) et de gérer efficacement les projets d’envergure.

Le navigateur de projet ISE offre un environnement de conception centralisé


extrêmement efficace qui regroupe tous les outils nécessaires à la conception, la simulation

44
Solution et contribution
et à l’implémentation d’un projet d’envergure ainsi qu’à la configuration de la carte,
Virtex-II en ce qui nous concerne.

III.3. simulation de notre protocole

Avant de passer à la simulation de notre protocole, on doit d’abord définir les


paramètres du RSA comme on l’a vu dans le chapitre I :

 n = p*q = 13*17 = 221.


 Ø = (p-1)*(q-1) = 192.
 e premier avec Ø. e = 11.
 b = (inverse modulaire e) modulo Ø. b = 35.

Après avoir défini les paramètres du RSA, on définit les paramètres de notre protocole :

 R = puissance supérieure de n = 256.


 R-1 = (inverse modulaire R) modulo n = 120.
 Et définir v tel que : R*R-1 – v*n = 1 et v = 139.
 On choisit un m qu’on veut crypter : m = 203.

III.3.1. chiffrement avec notre protocole

L’algorithme présenté en annexe permettra le chiffrement de m avec notre protocole


RSA. La figure qui suit illustre notre simulation.

Figure VI.1 : simulation du chiffrement avec notre protocole RSA

45
Solution et contribution

 Start = 0, lancement du calcul.


 S est la sortie en hexadécimal.
 S_décimal est la sortie en décimal.

III.3.2 déchiffrement avec notre protocole

Pour le déchiffrement, on utilisera le même algorithme qu’on a présenté en annexe ;


il suffit juste de changer la clé publique « e » par la clé privée « b ». La figure suivante
illustre notre simulation.

Figure VI.2 : simulation du déchiffrement avec notre protocole RSA.

IV. Implémentation de notre protocole sur la carte Virtex-II

L’implémentation sur la carte se fait à l’aide de l’environnement de développement


ISE. Dans ce dernier on va introduire le code de notre protocole sous VHDL, comme le
montre la figure suivante :

46
Solution et contribution

Figure VI.3 : notre protocole sous ISE

Une fois la saisie du code de notre protocole terminée, on doit vérifier s’il est correct.
Pour cela aller dans process puis check syntax. (Voir figure suivante.)

Figure VI.4 : vérification de la syntaxe du protocole

Arrivé à ce niveau, notre protocole introduit dans l’environnement ISE est correct.
L’étape suivante consiste à affecter les entrées et les sorties aux pins du FPGA de la carte

47
Solution et contribution
Virtex-II. Pour cela on ouvre une nouvelle source nommée « implémentation contrainte
file (.ucf) » et introduire l’affectation de chaque pin. Les figures suivantes montrent
comment créer une source .ucf et l’affectation des pins :

Figure VI.5 : créer une source .ucf

Figure VI.6 : affectation des pins au FPGA

Une fois ces étapes terminées avec succès, on va générer notre programme. Pour cela
aller dans « processes » puis « generation programming file » pour obtenir le programme
qu’on implémentera sur la carte.

48
Solution et contribution
Une fois la carte connectée à notre machine et le programme obtenu, on le chargera
avec l’outil IMPACT se trouvant dans « processes » puis « configure device
(impact) ».comme le montre la figure suivante :

FigureVI.7 : lancement d’IMPACT.

Figure VI.8 : chargement du programme

49
Solution et contribution
Arrivé à cette étape, on retrouve le résultat qui s’affiche sur les afficheurs 7 segments
de notre carte comme le montre la figure suivante :

Figure VI.9 : affichage du résultat sur la carte Virtex-II

Vu qu’on ne dispose que de deux afficheurs à 7 segments et qu’on ne peut pas


afficher le résultat en décimal, on a opté pour un test qui affiche un « A A » si c’est juste
ou bien « 0 0 » si c’est faux.

Conclusion

Dans ce chapitre on a présenté notre protocole RSA basé sur la réduction modulaire
de Montgomery et l’algorithme Squart and Multiply. Ce travail s’inscrit dans la
contribution à la réduction de la taille du RSA pour pouvoir l’utiliser sur des systèmes
embarqués.

50
Conclusion et
perspectives
Conclusion et perspectives

Les systèmes embarqués représentent un enjeu majeur dans les nouvelles


technologies vu qu’ils équipent en grande partie les équipements et matériels utilisés au
quotidien et ils ne cessent d’être le sujet de travaux de recherche afin de les développer.

Le RSA est l’un des protocoles les plus fiables consacrés à la sécurité des données
grâce à des clés de 1024 bits.

Notre travail a consisté à trouver le moyen d’implémenter le RSA sur un système


embarqué de type FPGA équipant la carte de développement Virtex-II sur laquelle a été
chargé notre protocole RSA utilisant des clés de 256 bits.

Actuellement il existe des FPGA tels que le Virtex-5 ou le Virtex-7 sur lesquels peut
être implémenté notre protocole en utilisant des clés de 1024 bits.

En conclusion, afin que notre système constitue un produit fini, on sera amené à lui
associer un protocole de communication via SPI, Bluetooth ou I2C.

52
Annexes
Annexe
Algorithme de notre protocole RSA
-------------------------------------------------------------------------------------------------
--
-- Title : RSA_ent
-- Design : multiplier
-- Author : mémoire
-- Company : UMMTO
--
---------------------------------------------------------------------------------------------------
--
-- File : [Link]
-- Generated : Thu Jan 16 23:12:20 2014
-- From : interface description file
-- By : Itf2Vhdl ver. 1.20
--
---------------------------------------------------------------------------------------------------
--
-- Description :
--
---------------------------------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;

entity RSA_ent is
port(

54
Annexe
start : in STD_LOGIC;
s : out STD_LOGIC_vector(255 downto 0)
);
end RSA_ent;

architecture RSA_arch of RSA_ent is

signal res_aff : std_logic_vector(255 downto 0);


signal e : std_logic_vector(255 downto 0);
signal calc : std_logic;

begin

p1:process (start)

constant e1: integer := 11;

begin
if start = '0' then

-- convertir e on un std_logic_vector

e <= conv_std_logic_vector (e1,256);

calc <='1';
else
calc <= '0';

55
Annexe
end if;

end process P1 ;

process(calc)

variable p,resul,y,m,z,res : integer;

-- declaration des paramétres de notre protocole

constant m1: integer := 203;


constant n: integer := 221 ;
constant r: integer := 256;
constant j: integer := 120 ;
constant v: integer := 139 ;

begin

if calc = '1' then

-- transformation de m vers le domaine de Montgomery

m := m1*r mod n;

-- initialisitation de p et z. r = r-n = elément neutre

56
Annexe
p:= r-n ;
z:= m ;

for i in e'reverse_range loop

if e(i) = '1' then

p:= p*z;
y:= p*v mod r;
resul:= (p+y*n)/r;
p:= resul mod n;

else

p:= p;

end if;

z:= z*z;
y:= z*v mod r;
resul := (z+y*n)/r;
z := resul mod n;

end loop;

-- transformation de notre resultat vers le domaine naturel

res := p*j mod n;

-- conversion du resultat en un std_logic_vector afin de

57
Annexe
-- pouvoire l'afficher sur un afficheur 7 segment

res_aff <= conv_std_logic_vector (res,256);

end if;

end process;

-- en fait un convertiseur 7 segment

s <= res_aff;

end RSA_arch;

58
Bibliographie
Bibliographie

 Thomas Plantard « Arithmétique modulaire pour la cryptographie » thèse


Doctorale université de Montpelier II Sciences et Techniques du Languedoc.

 Bruce Scheneier, «Cryptographie appliquée », deuxième édition, Algorithmes,


Protocoles et codes sources en C.

 Sylvain GUILLEY « Implémentation d’un multiplieur de Montgomery sécurisé


et cascadable » [Link]

 Network Associates Inc. « Introduction à la cryptographie »

 Michel HUBEN
[Link]

 D. AIT AZZI, [Link], « multiplieur en ligne pour le calcul en longe


précision sur circuit FPGA » thèse ingéniorat, UMMTO, 2002.

 Z. AIT OUALI, « application des FPGA a la commande d’un moteur


asynchrone » thèse magister, UMMTO, 2011.

 D. HADJ SAID, « implémentation d’une application de tracking sur FPGA »


thèse master, UMMTO, 2013.

 B. ALOUINI, « implementation of IP cores dedicated to cryptography », thèse


magister, UMBB, 2012.

 Virtex-II™ V2MB1000 Development Board User’s Guide.

Site web :

 [Link]

 [Link]

 [Link]

 [Link]

Vous aimerez peut-être aussi