Notes de Cours VLSI

198
Note de cours VLSI GIF-4202 Philippe Leroux epartement de G´ enie ´ Electrique Facult´ e de Science et G´ enie Universit´ e Laval, Quebec, QC, Canada ebastien Roy epartement de G´ enie ´ Electrique Facult´ e de Science et G´ enie Universit´ e de Sherbrooke, Sherbrooke, QC, Canada 7 d´ ecembre 2012

Transcript of Notes de Cours VLSI

Page 1: Notes de Cours VLSI

Note de cours VLSIGIF-4202

Philippe Leroux

Departement de Genie ElectriqueFaculte de Science et Genie

Universite Laval, Quebec, QC, Canada

Sebastien Roy

Departement de Genie ElectriqueFaculte de Science et Genie

Universite de Sherbrooke, Sherbrooke, QC, Canada

7 decembre 2012

Page 2: Notes de Cours VLSI

Table des matieres

I Generalite VLSI 6

1 Introduction 71.1 Generalite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.1.1 VLSI en bref . . . . . . . . . . . . . . . . . . . . . . . 71.1.2 Applications . . . . . . . . . . . . . . . . . . . . . . . . 81.1.3 Omnipresence du VLSI . . . . . . . . . . . . . . . . . . 91.1.4 Conception et Ingenierie en VLSI . . . . . . . . . . . . 101.1.5 Une part d’histoire . . . . . . . . . . . . . . . . . . . . 11

1.2 Tendance et defis . . . . . . . . . . . . . . . . . . . . . . . . . 121.2.1 Loi de Moore . . . . . . . . . . . . . . . . . . . . . . . 121.2.2 Au present : limites et nouveaux paradigmes . . . . . . 131.2.3 Le fosse de conception . . . . . . . . . . . . . . . . . . 151.2.4 et la suite ? . . . . . . . . . . . . . . . . . . . . . . . . 18

1.3 Objectif du cours . . . . . . . . . . . . . . . . . . . . . . . . . 201.3.1 Quels sont les defis ? . . . . . . . . . . . . . . . . . . . 211.3.2 Les trois piliers de la conception . . . . . . . . . . . . . 21

1.4 Les 10 commandements de la conception de circuits numeriquesur FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2 Vue d’ensemble 242.1 Concept de bases . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.1.1 Modules logiques . . . . . . . . . . . . . . . . . . . . . 242.1.2 Fonctions logiques . . . . . . . . . . . . . . . . . . . . 242.1.3 Processus logiques . . . . . . . . . . . . . . . . . . . . 252.1.4 Types de circuits . . . . . . . . . . . . . . . . . . . . . 25

2.2 Options de conception . . . . . . . . . . . . . . . . . . . . . . 292.2.1 Composants programmables . . . . . . . . . . . . . . . 292.2.2 Langages de description de materiel . . . . . . . . . . . 32

1

Page 3: Notes de Cours VLSI

2.3 Exemples de modules . . . . . . . . . . . . . . . . . . . . . . . 322.3.1 le filtre FIR . . . . . . . . . . . . . . . . . . . . . . . . 322.3.2 Un multiplieur a tableaux . . . . . . . . . . . . . . . . 352.3.3 Multiplieur partitionne . . . . . . . . . . . . . . . . . . 36

2.4 Materiel versus logiciel . . . . . . . . . . . . . . . . . . . . . . 37

3 Circuits combinatoires 403.1 Logique combinatoire, rappel . . . . . . . . . . . . . . . . . . 40

3.1.1 Fonction logique en circuit . . . . . . . . . . . . . . . . 403.1.2 Realisation en logiciel . . . . . . . . . . . . . . . . . . . 423.1.3 Realisation en materiel . . . . . . . . . . . . . . . . . . 443.1.4 Realisation - Conclusion . . . . . . . . . . . . . . . . . 483.1.5 Synthese de circuit . . . . . . . . . . . . . . . . . . . . 48

3.2 Element de memoire . . . . . . . . . . . . . . . . . . . . . . . 493.3 Discipline d’horloge . . . . . . . . . . . . . . . . . . . . . . . . 50

3.3.1 Discipline d’horloge a 1 phase . . . . . . . . . . . . . . 503.3.2 Discipline d’horloge a 2 phases . . . . . . . . . . . . . . 51

3.4 Machines a etats . . . . . . . . . . . . . . . . . . . . . . . . . 533.4.1 Formalisme . . . . . . . . . . . . . . . . . . . . . . . . 533.4.2 Classification . . . . . . . . . . . . . . . . . . . . . . . 53

3.5 Design sequentiel . . . . . . . . . . . . . . . . . . . . . . . . . 563.5.1 Etape de conception . . . . . . . . . . . . . . . . . . . 563.5.2 Exemple : design d’un multiplieur . . . . . . . . . . . . 573.5.3 Resume des etapes de conception d’un automate fini . 66

II FPGA et VHDL 68

4 Historique du VHDL 69

5 Les types de technologies logiques 705.1 Technologies logiques . . . . . . . . . . . . . . . . . . . . . . . 70

5.1.1 Vue d’ensemble . . . . . . . . . . . . . . . . . . . . . . 705.1.2 Classification des dispositifs logiques programmables

(PLDs) . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.1.3 Types de PLDs simples . . . . . . . . . . . . . . . . . . 785.1.4 PLDs de complexite moyenne . . . . . . . . . . . . . . 835.1.5 Les CPLDs . . . . . . . . . . . . . . . . . . . . . . . . 86

2

Page 4: Notes de Cours VLSI

5.1.6 Les FPGAs . . . . . . . . . . . . . . . . . . . . . . . . 905.2 Les FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

5.2.1 Les FPGAs de Xilinx . . . . . . . . . . . . . . . . . . . 915.2.2 Les FPGAs d’Actel . . . . . . . . . . . . . . . . . . . . 1005.2.3 Les FPGAs d’Altera . . . . . . . . . . . . . . . . . . . 105

6 Introduction VHDL 1126.1 Structures de bases . . . . . . . . . . . . . . . . . . . . . . . . 112

6.1.1 Description VHDL . . . . . . . . . . . . . . . . . . . . 1126.1.2 Entite . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136.1.3 Architecture . . . . . . . . . . . . . . . . . . . . . . . . 1146.1.4 Processus . . . . . . . . . . . . . . . . . . . . . . . . . 115

6.2 Codage de modules sequentiels . . . . . . . . . . . . . . . . . . 1186.2.1 Machine a etats en VHDL . . . . . . . . . . . . . . . . 1196.2.2 Methode des machines multiples . . . . . . . . . . . . . 1216.2.3 Machine de Moore . . . . . . . . . . . . . . . . . . . . 1246.2.4 Machine de Mealy . . . . . . . . . . . . . . . . . . . . 125

7 Methode 1287.1 Modelisation en VHDL . . . . . . . . . . . . . . . . . . . . . . 128

7.1.1 Dimensions de modelisation des systemes numeriques . 1287.1.2 Domaines et niveaux de Gajski et Kahn . . . . . . . . 130

7.2 Implantation a partir d’un modele VHDL . . . . . . . . . . . . 1367.2.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . 1377.2.2 Elaboration . . . . . . . . . . . . . . . . . . . . . . . . 1387.2.3 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . 1387.2.4 Synthese . . . . . . . . . . . . . . . . . . . . . . . . . . 138

7.3 Resume : flot de conception . . . . . . . . . . . . . . . . . . . 1397.3.1 Processus formel . . . . . . . . . . . . . . . . . . . . . 1397.3.2 Processus pratique de conception . . . . . . . . . . . . 139

8 Elements lexicologiques et types de donnees 141

9 Types et logique standard 142

10 Commande parrallele 143

11 Synthese de circuits numeriques 144

3

Page 5: Notes de Cours VLSI

12 Simulation comportementale 145

13 Designs parametrisables et bancs d’essai 146

14 Modularite et gestion de projets complexes en VHDL 147

15 VHDL avance 148

III Architecture 149

16 Representation des nombres 15016.1 Representation des nombres entiers . . . . . . . . . . . . . . . 151

16.1.1 Binaire signe . . . . . . . . . . . . . . . . . . . . . . . 15116.1.2 Complement a deux . . . . . . . . . . . . . . . . . . . 15216.1.3 Numeration redondante . . . . . . . . . . . . . . . . . 15316.1.4 Autres notations . . . . . . . . . . . . . . . . . . . . . 156

16.2 Representation des nombres a virgule . . . . . . . . . . . . . . 158

17 Circuits d’addition et de conversion 16017.1 Additionneurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

17.1.1 Demi- et plein-additionneur . . . . . . . . . . . . . . . 16017.1.2 Additionneur sequentiel . . . . . . . . . . . . . . . . . 16117.1.3 Circuit de soustraction. . . . . . . . . . . . . . . . . . . 16417.1.4 Additionneurs a retenue bondissante . . . . . . . . . . 16717.1.5 Additionneurs a retenue anticipee . . . . . . . . . . . . 16917.1.6 Additionneur a retenue conditionnelle . . . . . . . . . . 16917.1.7 Additionneurs sur FPGAs . . . . . . . . . . . . . . . . 171

17.2 Arithmetique redondante et Additionneurs avances . . . . . . 17317.2.1 Additionneurs en notation somme plus retenue . . . . . 17317.2.2 Additionneurs en notation Avizienis, binaire signe . . . 17517.2.3 Additionneur hybride . . . . . . . . . . . . . . . . . . . 18017.2.4 Conversions . . . . . . . . . . . . . . . . . . . . . . . . 182

18 Multiplieur 18518.1 Multiplieur serie . . . . . . . . . . . . . . . . . . . . . . . . . . 185

18.1.1 Multiplication de binaire positif . . . . . . . . . . . . . 18518.1.2 Optimisation de l’additionneur . . . . . . . . . . . . . 18718.1.3 Multiplicande en Ca2 . . . . . . . . . . . . . . . . . . . 188

4

Page 6: Notes de Cours VLSI

18.1.4 Multiplieur serie en binaire redondant . . . . . . . . . . 19018.1.5 Multiplieur serie pour operandes en Ca2 . . . . . . . . 190

18.2 Multiplier reseaux . . . . . . . . . . . . . . . . . . . . . . . . . 19418.3 Miltuplier en arbre . . . . . . . . . . . . . . . . . . . . . . . . 194

19 Arithmetique specialisee 19519.1 Generation de nombre aleatoire . . . . . . . . . . . . . . . . . 19519.2 Compteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

20 Pipelinage, structures en arbre et en cascade 196

21 integration de systemes 197

5

Page 7: Notes de Cours VLSI

Premiere partie

Generalite VLSI

6

Page 8: Notes de Cours VLSI

Chapitre 1

Introduction

1.1 Generalite

1.1.1 VLSI en bref

1. Le VLSI, very large scale integration, est litteralement l’integration decomposant a tres large echelle. Soit la possibilite technologique de relierdes composants elementaires ou moins elementaires entre eux sur unememe puce.

2. Il designe potentiellement les puces electroniques elle-memes, que l’onretrouve aujourd’hui... partout, malheureusement. Meme au fond descontrees non industrialise ou s’accumulent nos dechets remplis de cespuces.

3. Il designe aussi et surtout (pour ce qui nous concerne dans ce cours)les techniques de conception, les technologies et la science quientourent les circuits integres a haute densite.

4. Le VLSI fait aussi reference a une taxonomie quantitative (c’est-a-direun vocabulaire dedie qui permet de definir precisement chaque entite,fonction, structure, etc.) des circuits integres, aujourd’hui considereecomme desuetes. Car effectivement l’acceleration de l’evolution tech-nologique arrive au point ou les frontieres s’estompent entre les tech-nologies.

Brievement, il se categorise quatre integrations d’echelles, Small, Medium,Large, et Very Large, ...scale integration. Le tableau 1.1 resume les quantitesqui caracterisent ces echelles. Nous parlons dans ce cours, de VL - SI, soit

7

Page 9: Notes de Cours VLSI

SSI Small Scale Integration moins de 12 portes environ 100 transistorsMSI Medium Scale Integration entre 12 et 100 portes 100-1000 transistorsLSI Large Scale Integration plus de 100 portes plus de 1000 transistorsVLSI Very Large Scale Integration plus de 1000 portes 10000 transistors et plus

Table 1.1 – Ordre de grandeur des differentes echelles d’integration

plus de 1000 portes logiques. Mais pour les premiers laboratoires, je vousrassure, il y en aura moins. La realite aujourd’hui est qu’il coute moins cherde produire des puces VLSI (comportant de multiples fonctions), meme si deplus petites puces etaient suffisantes pour l’utilisation souhaitee. Par exemple,une gamme de processeurs peut etre base sur la meme puce, avec l’activationou la desactivation de certaines composantes, afin d’adresser une part demarcher plus large. Ceci afin de ne pas complexifier la chaine de productionet reduire les couts.

1.1.2 Applications

Le VLSI regroupe un ensemble d’applications diverses et variees qui onttoutes en commun ce denominateur : integrer des composants electroniquessur une meme puce. Ces composants peuvent etre de nature analogique ounumerique. Ce cours se concentre sur ce deuxieme aspect.

Un exemple d’application VLSI omnipresent aujourd’hui tient dans lemicroprocesseur. Democratise par Intel avec son 4004. Toutefois, les micro-processeurs ne representent qu’une infime partie des puces sur le marche. Atitre d’exemple, une carte mere d’ordinateur moderne peut comprendre plu-sieurs dizaines de puces qui representent autant d’application differente deVLSI. Mais les puces se retrouvent dans les objets les plus heteroclites, de lamachine a laver a la poupee parlante, aux voitures ou telephones intelligents.

Par ailleurs, nous citons les varietes de puces suivantes, qui peuvent etrecombinees de diverses facons pour l’application souhaitee :

– DSP– FPGA– Microcontroleur– Processeur– Memoires– Controleur de bus

8

Page 10: Notes de Cours VLSI

– SoC– Processeur graphique– Capteur (imagerie numerique, senseur temperature)– Convertiseur A/D D/A– Audio– Amplificateur– Cuircuit d’horloge– Cuircuit RF integre– MEMSLes applications se traduisent dans differents domaines avec differentes

contraintes :– electronique grand public,– medical,– aerospatial,– militaire,– industriel.

1.1.3 Omnipresence du VLSI

Pour vous donner un exemple de l’omnipresence de ces puces, il y a encorepeu, une compagnie comme Texas Instruments Inc. pouvait se vanter quechaque personne possedant des objets d’electronique a affaire avec au moinsun DSP TI. Le marche de l’electronique est en plein changement et TI se faitdevancer sur le marche du DSP.

Encore la, ils produisent la plupart des circuits analogiques. Pour citerTempleton (CEO TI, 2012) 1 “Literally every piece of electronic equipmentyou have at work or home has at least one, if not multiple, analog chips”.Chaque objet electronique domestique ou professionnel comprend au mini-mum une puce analogique.

En moyenne, actuellement, 13 puces analogiques sont vendues par per-sonne pour des objets de consommations allant de la voiture au telephoneintelligent en passant par les appareils menagers...

Pour les puces numeriques, ca va de paire, puisque generalement aujour-d’hui, il est plus aise de convertir en numerique pour traiter l’information.Pour donner quelques chiffres :

1. http ://www.unitedwaydallas.org/blog/entry/how-ceo-rich-templeton-is-reinventing-texas-instruments

9

Page 11: Notes de Cours VLSI

– 1 milliard de PC seraient en utilisation en 2008, 2 milliards auraientete produits.

– 10 milliards de puces ARM auraient ete produites jusqu’en 2008, 15milliards au 1er janvier 2011,

– mais, 5 milliards de processeurs ARM auraient ete produits en 2011 2.– Certains estiment que le marche des ordinateurs (PC/MAC / super or-

dinateur,...) ne representerait que 1% du marche des microprocesseursaujourd’hui (en comptant toute categorie de processeur, du controleur4 bits au Intel-Xeon le plus cher).

– Une voiture moyenne comporte environ 15 microprocesseurs.– Une Mercedes class S, 63.– Tous ces objets necessitent des DSP, des convertisseurs A/D, des bus,

des controleurs, de plus en plus souvent integres a meme le support desilicium, pour obtenir les “System on a Chip” (SoC).

Le plus gros fournisseur de composant electronique aujourd’hui (donneepour 2011) est Intel (leurs processeurs n’en sont qu’une petite partie), suivitde Samsung, TI, Toshiba. Qualcomm arrive aujourd’hui en 6e place, car ilsfournissent 50% du marche des telephones intelligent.

Cela devrait vous donner une idee de l’ampleur du marche du VLSI

1.1.4 Conception et Ingenierie en VLSI

A cote de grosses applications tres connues, telle la conception de micro-processeur, se dresse toute une serie d’applications niches pour l’ingenieur.

Ainsi dans l’industrie, maints developpements necessiteront des pieces“custom”. Aussi, et de plus en plus des architectures VLSI se democratisentpour des applications de plus en plus specifiques, grace a des technologies decomposant programmable, sur lesquels l’architecture n’est pas emulee commesur un PC, mais programme electriquement.

Ces puces, tel le FPGA, permettent d’acceder a la puissance du VLSIen gardant la plasticite du codage. Elles permettent le prototypage rapide,et pour des applications en petites quantite peuvent suffire pour un produitfinal.

Le marche de l’emploi dans le domaine du VLSI est en plein essor.

2. http://en.wikipedia.org/wiki/ARM_architecture

10

Page 12: Notes de Cours VLSI

1.1.5 Une part d’histoire

Avant le 20ieme siecle

Il existe des machines mecaniques, programmables. Par exemple les metiersa tisser, mais aussi des machines, en bois d’abord, puis avec des engrenagesen metal, capables d’effectuer des calculs.

du Tube a l’ENIAC, 1900 a 1946

Le tube a vide permet en 1946 d’elaborer la premiere machine electriquea calculer programmable

1906 Invention du tube a vide (triode) par Lee de Forest ;

1946 ENIAC, ordinateur a tube a vide, 1900 additions par secondes ;

L’arrivee du transistor, 1947 a 1971

1947 Invention du transistor chez Bell Labs ;

1958 Jack Kilby (Texas Instruments) et Robert Noyce (Fairchild) invententindependamment le circuit integre ;

1963 La NASA lance le satellite IMP, le premier a utiliser des circuits integres ;

1964 IBM System/360 1964 – 5× 105 additions par seconde

1964 RCA invente la technologie MOS, reduisant ainsi considerablement lecout des circuits integres ;

1968 Burroughs lance les premiers ordinateurs incorporants des circuits integres ;

1968 Gordon Moore et Robert Noyce quittent Fairchild pour fonder Intel ;

L’arrivee du premier microprocesseur, 1971 -1983

1971 Intel lance le premier microprocesseur, le 4004 ;

1972 Premier microprocesseur 8 bits, l’Intel 8008 ;

1975 Fondation du fabricant de microprocesseurs Zilog ;

1975 Lancement du premier micro-ordinateur, le MITS Altair 8800, sousforme de kit ;

1977 L’Apple II, premier micro-ordinateur pour consommation de masse, estlance ;

11

Page 13: Notes de Cours VLSI

1978 IBM lance son premier PC qui est base sur le 8088 ;

1979 Le 68000, premier microprocesseur 32 bits, est lance par Motorola ;

1981 Les puces de memoire japonaise de 64K (DRAM) capturent le marchemondial de la micro-informatique ;

1983 Fondation d’Altera, actuellement no. 2 du marche FPGA

L’arrivee des puces a circuits programmables, 1984 a 1992

1984 Lancement du premier FPGA par Xilinx (XC2064, 1000 portes) ;

1988 Premier FPGA d’Actel, a base d’antifusibles

1991 Fujitsu, Matsuhita, Mitsubishi et Toshiba annoncent une puce DRAMexperimental de 1 Megabit ;

1992 Lancement de la famille FLEX, premiers veritables FPGAs chez Altera

La complexification des architectures de microprocesseur, 1993 aaujourd’hui

1993 Lancement du Pentium d’Intel (3.1 millions de transistors) et du PowerPC de Motorola / IBM (2.8 millions de transistors) ;

1999 Le PowerPC 7500 (G4) comprend 10.5 millions de transistors et tournea 800 MHz ; L’Itanium d’Intel (Pentium III) comprend 25.4 millions detransistors et tourne a 700 MHz.

2003 Le processeur Intel Xeon tourne a 3.06 GHz avec 55 millions de transis-tors tandis que le PowerPC G5 d’IBM, tourne a 2 GHz avec 58 millionsde transistors.

2006 Intel Core Duo 2 — biprocesseur, 291 millions de transistors, 65 nm, 3GHz

2006 Premier FPGA en 65 nm — famille Virtex-5 de Xilinx

2006 Processeur Cell (Sony, Toshiba, IBM) — 250 millions de transistors, 9processeurs, 4 GHz.

1.2 Tendance et defis

1.2.1 Loi de Moore

Moore nous a impose une vision de developpement exponentiel.

12

Page 14: Notes de Cours VLSI

1970 1975 1980 1985 1990 1995 200010

3

104

105

106

107

108

109

Pentium II

(Pentium Pro)

TMS320C15

TMS320C30

TMS320C40

TMS320C80

4004

8008

8080

6800

8085

8086

8088

80286

80386

80486

68040

Pentium 200

PPC603e

AMD K6

Pentium

PPC

PPC7400 (G3)

PPC7500 (G4)

1K

4K

68000

68020

16M

64M

4M

1M

256K

16K

64K

256M

memoire (DRAM)

microprocesseurs Intel

microprocesseurs Motorola

DSP de TI

Annee

Nom

bre

de

tran

sist

ors

Figure 1.1 – Evolution du nombre de transistors par puce

Loi de Moore (1965) Le nombre de transistors maximum par puce dou-blera tous les 18 mois

Celle-ci ce traduit effectivement pour le nombre de transistors par puce(Figure 1.1) jusqu’au debut du 21ieme siecle, et demeure relativement d’ac-tualite aujourd’hui.

Mais plus encore, dans ses predictions en 1964, Gordon Moore prevoyait :– une croissance exponentielle de la densite des puces ;– une diminution exponentielle des couts de fabrication ;– une augmentation exponentielle des frequences de fonctionnement.Pour la vitesse d’horloge (Figure 1.2), ceci se verifie aussi jusqu’au debut

des annees 2000.Cette croissance devait permettre des merveilles : l’ordinateur domes-

tique, controles automatises pour l’automobile, systemes de communicationpersonnels.

1.2.2 Au present : limites et nouveaux paradigmes

Il ne faut pas sous-estimer la puissance d’une loi exponentielle !

13

Page 15: Notes de Cours VLSI

1970 1975 1980 1985 1990 1995 200010

2

103

104

105

106

4004

8008

8080

8085 80286

68020 8048668040

PentiumPowerPC

Pentium 200PPC 603e

Pentium IIPPC 750 (G3)

Annee

freq

uen

ced

’hor

loge

La frequence d’horloge double enmoyenne a tous les 2.18 ans..

Figure 1.2 – Evolution de la vitesse d’horloge des puces

– Plus de puces CMOS fabriquees que tout autre objet dans l’histoire.– En 2004 : il y a eu plus de transistors produits, et a un moindre cout,

que de grains de riz.– Le cout d’un bit de memoire vive dynamique (DRAM) en 2004 : 1

nanodollar !Par analogie, en 1977, un vol commercial entre Paris et New York coutait

900 USD et durait 7 heures. Si la loi de Moore s’etait appliquee a l’aeronautique,ce vol couterait aujourd’hui 1 sou et durerait moins d’une seconde 3.

Toutefois, tout a des limites, et aujourd’hui, la miniaturisation du transis-tor se confronte a des contraintes toujours plus pressantes. Sans rentrer dansles limites physiques de la finesse de gravures (finesse des transistors gravessur le substrat de silicium et consideres comme le mur de la miniaturisation),nous constatons que d’autres difficultes sont plus pressantes.

3. source : rapport annuel 2005 de la SIA

14

Page 16: Notes de Cours VLSI

Une question de puissance

Nous pouvons constater qu’une mesure de performance a deja atteint seslimites : Le Cube de performance (Figure 1.3) :

Cube de performance = Puissance [W]× cout [$]× periode d’horloge [ns](1.1)

qui tient compte de la frequence d’horloge autant que du cout et de la puis-sance consommee par puce, ne diminue plus et meme augmente depuis le mi-lieu des annees 1990 (Figure 1.4). Ainsi, bien que les frequences ont continued’augmenter pendant ces annees, l’augmentation se heurte a une autre aug-mentation exponentielle de puissance et de cout.

D’une part, le cout des fonderies qui permettent une miniaturisation aug-mente a chaque nouvelle technologie. Mais surtout, la puissance consommeeaugmente (Figure 1.5). D’une part, avec la miniaturisation, les fuites de cou-rant dans le substrat de silicium representent une part grandissante de lapuissance consommee. Mais surtout, l’augmentation des frequences impliquedirectement une augmentation de puissance ; puisqu’en CMOS, l’energie estessentiellement consommee pendant les transitions d’etats (plus de transitionpar seconde avec des frequences plus grandes, donc plus de fuites de courantet de puissance).

Ceci a deux consequences :– un echauffement des puces a de plus grandes frequences. Echauffement

qui pose des difficultes d’evacuation de la chaleur (avec des systemesde refroidissement toujours plus gros pour les processeurs haute per-formance) ;

– un probleme d’efficacite energetique pour l’electronique embarquee.En consequence l’augmentation exponentielle de la frequence d’horloge s’entrouve limitee .

Nous nous heurtons a plusieurs limites, dans plusieurs dimensions, et passeulement physiques

1.2.3 Le fosse de conception

Nous avons mentionne la frequence d’horloge comme etant l’une des li-mites physiques qui ralentissent la croissance exponentielle de la loi de Moore.La Figure 1.6 l’illustre. Il n’y a toutefois pas seulement la limite physique ducourant de fuite et de la chaleur dispensee par la puce qui y contribue. Des li-

15

Page 17: Notes de Cours VLSI

ns

$

W

Figure 1.3 – Le cube de performance

1940 1950 1960 1970 1980 1990 2000 201010

0

102

104

106

108

1010

1012

1014

1016

1018

ns·W·$

Annee

Figure 1.4 – Evolution des circuits integres selon le cube de performanceen nanosecondes - Watts - dollars (ns·W·$)

16

Page 18: Notes de Cours VLSI

1980 1985 1990 1995 2000 20050

50

100

150

Annee

Pu

issa

nce

(Wat

ts)

Figure 1.5 – Evolution de la consommation de puissance depuis 1980 (2000-2005 : projections)

17

Page 19: Notes de Cours VLSI

1980 1985 1990 1995 2000 2005 2010

0

1000

2000

3000

4000

5000 potentiel du siliciumF

requ

ence

d’h

orlo

ge(M

Hz)

Figure 1.6 – Evolution du fosse de la conception ; capacite potentielle enfonction des procedes de fabrication (en bleu) et complexite reelle des pucesfabriquees (en rouge).

mites conceptuelles empechent aussi d’imposer une frequence d’horloge eleveea un circuit toujours plus complexe.

Ce niveau conceptuel tient dans la capacite limitee d’une personne a tirerle maximum de profit d’une surface de silicium en y integrant de facon astu-cieuse les composants. Mais aussi, avec des designs complexes necessitant letravail de nombreux ingenieurs, la capacite a coordonner l’ensemble des de-signs produit en une puce qui maximise le potentiel du silicium, suivi par lataille necessairement limitee de ces equipes. La Figure 1.7 illustre le “manquea gagner” de ce fosse de conception.

1.2.4 et la suite ?

Nous constatons que la progression d’une technologie se heurte systematiquementa une limite, physique ou de concept. Cela prend un paradigme : un chan-gement de modele de pensee ou de technologie pour continuer a progresser.Par le passe, nous remarquons les suivants :

1. le tube a vide,

2. le transistor,

3. le circuit integre,

18

Page 20: Notes de Cours VLSI

Nombre de transistors / puce

1980 1985 1990 1995 2000 2005 2010

100

1000

10000

100000

1000000

10000000

Limite a la tailledes equipes

fosse du design

(sans memoire)

evolution de la productivitedes ingenieurs

Loi de Moore

Figure 1.7 – Naissance et evolution du fosse de la conception.

4. les architectures RISC (ARM, PowerPC, 68000) 4 et CISC (Intel, AMD,...) 5,

5. les composants circuits programmables,

6. le denombrement de coeur sur une meme puce et leur complexification.

Le circuit integre qui a permis le developpement des architectures RISCet CISC se heurte aujourd’hui aux limites physiques de consommation depuissance, ou de frequence d’horloge. Leur complexification, avec l’ajout parexemple d’instruction SIMD (single instruction multiple data) qui permet detraiter plus d’information en meme temps, necessite deja une programmationadaptee et des compilateurs sophistiques pour en tirer avantage.

Malgre ces innovations, les limites obligent aujourd’hui l’ajout de plu-sieurs coeurs sur une meme puce. L’augmentation de la puissance de calculn’est deja plus possible par l’augmentation en frequence. Et si de hautesfrequences sont atteignables, elles necessitent des consommations energetiqueselevees qui imposent des systemes de refroidissement pour dissiper la chaleur.Ainsi pour l’electronique embarquee dans les telephones intelligents en 2012,

4. RISC : reduce instruction set computer, fait reference a un jeu d’instructions reduitqui necessite peu de logique de decodage. Des operations complexes sont donc d’aborddecomposees par le compilateur pour produire les instructions en assembleur

5. CISC : complex instructions set computer. Jeux d’instruction complexes. Celles-ci necessitent un decodage elabore de l’instruction pour son execution par le proces-seur. Le jeu d’instructions comprend de multiples variantes d’instructions qui peuventeventuellement se decomposer en instruction plus elementaire

19

Page 21: Notes de Cours VLSI

il se trouve jusqu’a quatre coeurs sur une meme puce. Non qu’un proces-seur unique ne pourrait fournir la meme puissance de calcul, mais bien parceque le systeme ne peut operer a des frequences elevees, afin de limiter et laconsommation et la surchauffe.

Ce paradigme oblige les informaticiens, a un niveau d’abstraction materielplus eleve, de concevoir des methodes de programmation qui tirent effective-ment profit de cela.

De la meme facon, en considerant que le cout des puces a circuit program-mable diminue sans cesse, nous pouvons imaginer une percee de ces compo-sants dans tous les milieux. Ainsi, un telephone intelligent equipe de tellespuces en place de ses composants fixes usuels pourrait etre mis a jour aussibien au niveau du circuit (et non seulement par son firmware), lui apportantde nouvelles fonctionnalites sans necessiter de changement d’appareil.

La programmation de logiciel pourrait aussi beneficier de telles puces, encompilant les parties de calcul intensif directement en un circuit optimise,afin de s’affranchir des contraintes et limites des processeurs.

Cela se fait deja, mais reste tres specifique. Pour que cela soit democratisea la consommation de masse, il reste encore a le rendre accessible, autantconceptuellement (pour en faciliter l’utilisation), qu’economiquement pourtoucher des marches larges et grand public.

En fin de compte, cette revolution materielle impose en consequence unerevolution logicielle qui suit plus lentement.

Un autre paradigme envisageable pour s’affranchir des contraintes deconception du paradigme actuel (numerique et synchrone) tient dans lescircuits integres partiellement asynchrones (ou completement). C’est dansde tels defis que ce situe le defi conceptuel de design novateur. De tels cir-cuits ont deja ete developpes pour des applications specifiques tel le decodagevideo. Il est encore loin de s’implanter dans le microprocesseur.

1.3 Objectif du cours

Ce cours a pour principal objectif d’apporter une comprehension et unemethodologie de la conception en VLSI.

Il se concentre sur les technologies numeriques. Il apporte une introduc-tion au langage VHDL supporte par des laboratoires sur FPGA, c’est-a-diresur des puces de circuits electroniques programmables.

20

Page 22: Notes de Cours VLSI

Sur ce support, l’etudiant est amene a comprendre les enjeux de concep-tion d’un circuit qui fait appel a une certaine creativite, face aux defis quepose le sujet. Mais tout aussi important pour le developpement, la methodede conception (simulation, validation integration) sera expliquee et employeedans les laboratoires.

1.3.1 Quels sont les defis ?

D’abord, comprendre le fond du probleme :– nous parlons d’integration de composants a tres large echelle⇒ L’ingenieur peut-il se contenter d’assembler des composantes exis-

tantes, sans connaıtre la conception interne des puces ?Non, car il existe des dimensions intriquees telles :– Un compromis de generalite versus de densite. En regard a l’integration

des composants, le probleme est analogue a l’optimisation de code deprogrammation versus lisibilite du code.

– La disponibilite de fonctions specialisees, telle une fonction nonlineaire pour transformer une entree en une autre quantite a des couts.

– La “Colle logique” qui permet de relier les composants entre eux, unsimple “fil” de silicium ne suffit pas necessairement.

– Une question de taille physique du systeme, limite par des choix detechnologie, la puce ne peut pas contenir tout, de plus le temps depropagation des signaux en distance dans la puce est une limite a tenircompte pour l’elaboration d’un circuit

– Une question de cout de conception. Un cahier des charges peutlimiter le choix a certaines technologies, certaines quantites, etc.

– Et une comprehension des systemes numeriques et de leur optimi-sation, par exemple une multiplication peut se traduire de differentesfacons dans un circuit, selon les besoins et les limites de ce qui doit etremultiplie.

Pour faire face a ces difficultes, l’ingenieur doit disposer de moyens : lestrois piliers.

1.3.2 Les trois piliers de la conception

Outils, concept, et creativite se conjuguent pour elaborer une comprehensionen VLSI.

21

Page 23: Notes de Cours VLSI

Les outils comprennent un repertoire de techniques de base, de connais-sance, de pratique usuelle, et de methode. La seule chose que votre enseignantpeut reellement enseigner. Cela commence dans ces notes par des rappels decircuits logiques et continue sur les notions de VHDL et ses methodes dedesign, pour continuer sur des notions d’architecture plus evoluees.

Les concepts sont les elements fondamentaux, les briques sur lesquelsil est possible de se reposer pour avancer dans la conception. Ils sont dusa des limites physiques ou mathematiques. Physique par ce qu’impose latechnologie employee ou mathematique par ce qu’impose la logique du circuita concevoir. Le concept de latence est un exemple de limite physique. Dememe, la synchronisation des circuits est un concept logique recherche pourla stabilite du design.

Les concepts comprennent aussi les principes de base. Ceux-ci traduisentle modele de representation des etats et evenement dans le circuit. Parexemple un signal est un concept, tout comme une variable, mais ce sontdeux concepts differents qui traduisent l’un l’etat electrique sur “fil” et l’autrel’etat d’une memoire. Etre en mesure de differencier ces concepts permet deles utiliser de la bonne facon.

Les concepts sont un ensemble de comprehension elementaire, qui setiennent, et que l’etudiant developpe. Ils sont aussi conditionnes aux pa-radigmes de developpement enseigne. Rares sont les ingenieurs qui peuventles remettre en question. Les remettre en question avec un ensemble de nou-veau concept fonctionnel tient du changement de paradigme.

Enfin la creativite est essentielle tant la complexite de la conception et del’implantation d’un circuit est grande. Les dimensions sont nombreuses, lescompromis et combinaisons encore plus. Cette creativite s’appuyant sur lesconcepts bien integres (dans la tete ceux-la, pas dans le circuit), vous offrecette aptitude a agencer les elements connus de maniere nouvelle et/ou acomposer de nouvelles fonctions elementaires.

22

Page 24: Notes de Cours VLSI

1.4 Les 10 commandements de la conception

de circuits numerique sur FPGA

Afin de commencer avec un peu de matiere et de mise en perspective,nous dictons les 10 “commandements” suivants :

1. Une seule horloge maıtresse tu auras et tu ne construiras point defausses horloges a partir de circuits astables.

2. L’horloge tu ne manipuleras point et tu ne transmettras point a traversune porte logique, car cela causerait des aleas, des fausses transitionset des montees lentes.

3. Un seul signal RESET global tu emploieras, et ce sera le signal dediefourni par l’architecture FPGA ciblee.

4. A partir d’un tampon global approprie les signaux globaux, y comprisl’horloge, tu passeras.

5. Tous les elements sequentiels tu raccorderas au RESET global afin quele circuit demarre toujours dans un etat connu et defini et que tessimulations ne demeurent point indefinies pour l’eternite.

6. Tu ne concevras point d’elements sequentiels sensibles aux deux tran-sitions de l’horloge.

7. Les entrees asynchrones impropres tu purgeras en les passant dans aumoins une bascule D avant de leur donner acces aux pures variablesd’etat.

8. Les structures non synthetisables et les variables tu eviteras.

9. Les machines a etats asynchrones tu eviteras.

10. Quiconque comprend parfaitement les motivations des precedents com-mandements saura aussi quelles libertes peuvent etre tolerees avec eux.Que celui qui les viole dans l’ignorance prenne garde !

Comme le dernier item le presente, il ne s’agit pas de regles fermes etstrictes. Ce n’est pas une religion. Il s’agit plutot de principes qui facilitent laconception, la verification et la correction du bon fonctionnement des designselabores, dans le paradigme de circuits numeriques synchrones.

Toutes ces notions deviendront plus claires au fil du cours.

23

Page 25: Notes de Cours VLSI

Chapitre 2

Vue d’ensemble

2.1 Concept de bases

2.1.1 Modules logiques

Definition Un module logique est une entite comprenant une ou plusieursentrees, et une ou plusieurs sorties obtenues en effectuant une ou plu-sieurs operations logiques sur les entrees.

Cette definition tres generale ne fait aucunement reference a la realisationphysique du module. Nous parlons d’une abstraction qui peut correspondreou non a une realisation en logiciel ou en materiel dans un format quelconque.Par extensions, des modules logiques sont des sortes de briques lego que nousassemblons pour obtenir d’autres modules logiques.

Nous pouvons diviser cette abstraction en deux types de modules : lesfonctions et les processus.

2.1.2 Fonctions logiques

Definition Une fonction logique est un module logique sans memoire, c.-a-d.

1. tout changement dans les entrees est immediatement reflete a lasortie ;

2. a tout instant, la sortie est uniquement fonction des entrees ac-tuelles.

Exemple 1 : y = log(x) est une fonction :– L’entree est continue ainsi que la sortie continue.

24

Page 26: Notes de Cours VLSI

– Tout changement dans x se repercute immediatement sur y– Et, y ne depend que de la valeur courante de x.

Exemple 2 : une porte logique ideale est une fonction : les portes ET, OU,NON, NON-ET, NON-OU, OUX, etc. Par ideal toutefois, nous sous-entendons que le delai entre l’entree et la sortie est nul (aucune latence),ce qui effectivement, ne se verifie pas en pratique.

Exemple 3 : une fonction continue y = sin(2πft+ x), avec parametre.

Exemple 4 : un convertisseur analogique/numerique est une fonctions aentree continue et sortie discrete.

2.1.3 Processus logiques

Par opposition aux fonctions, un processus implique une forme de memoire :

Definition Un processus logique est un module logique avec memoire, c.-a-d. La sortie depend non seulement des entrees actuelles, mais egalementdes entrees passees

La “memoire” des entrees passees peut etre une simple memoire d’un etatcourant dans lequel le module logique se trouve en consequence des entreespassees, comme dans une machine a etat. Cela peut aussi correspondre a unememoire explicite des entrees passees, comme dans un filtre FIR (filtre a lareponse a l’impulsion fini).

Exemple : Processus modal ou machine a etats– les sorties dependent non seulement des entrees, mais egalement de

l’etat courant / mode courant ;– certaines combinaisons d’entrees peuvent modifier l’etat / le mode,

ce qui altere le comportement subsequent du processus.

2.1.4 Types de circuits

Finalement, tous les types de modules logiques, fonction ou processus,peuvent se caracteriser en sous types de circuits, du plus general au pluscontraint (c.f. Figure 2.1) :

Les circuits analogiques fonctionnent a niveaux de voltage continu et entemps continu. A l’image d’un circuit RF (radiofrequence) qui moduleune information a transmettre par les ondes radios.

25

Page 27: Notes de Cours VLSI

Les circuits logiques asynchrones a niveaux de voltage discrets et tempscontinu, a l’image d’un jeu d’interrupteur va et-viens qui allument unelampe avec deux interrupteurs : le niveau (allume ou eteint) peut surve-nir a n’importe quel moment ou l’utilisateur change l’etat d’un des in-terrupteurs. Mais le premier avantage d’un circuit logique (numerique)est sa representation des signaux de facon quantitative, que ce soit dutout ou rien (binaire) ou des niveaux de voltage discrets, mais mul-tiples. Ceci permet une tolerance face au bruit, et une precision sur lavaleur des signaux.

Les circuits logiques synchrones sont a la fois discrets en niveaux de vol-tage et en temps. Le gros avantage tient dans le design qui s’en re-trouve simplifie, puisqu’il permet une systematisation et des methodesde conception robuste. Ceci limite les erreurs a la conception et lesfonctionnements imprevisibles de par un etat indetermine du systeme.

S’il existe des circuits analogiques dans pratiquement toutes les applica-tions, il est a noter que pour le traitement logique des donnees en masse,les circuits analogiques sont quasiment inexistants. Les circuits analogiquestraitant des donnees se limitent pour la vaste majorite a des applicationsde filtrage et d’amplification. Des que les systemes necessitent des prises dedecision (equivalent a des if () then {} else {}) les systemes deviennentnumeriques.

Pour information, les calculateurs analogiques sont essentiellement descalculateurs d’equations differentielles et ne rentre pas dans la categorie dessystemes VLSI puisqu’ils sont difficiles a miniaturiser. Aujourd’hui, de telssystemes pour resoudre ces equations sont modelises a l’aide de simulationnumerique dite a elements finis.

Pourtant, notre cerveau fonctionne sur un mode mixte numerique et ana-logique, dans lequel les neurones repondent autant a des informations codeesnumeriquement (frequence des impulsions nerveuses) qu’a des informationsanalogiques (amplitudes des impulsions), et ce, de facon completement asyn-chrone (bien qu’une forme de synchronisation emerge de l’ensemble des neu-rones, appele les ondes cerebrales alpha, beta, gamma, etc.). Il est donc phy-siquement possible de realiser des calculateurs de ce type.

En pratique, il y a avant tout une difficulte de design a realiser des cir-cuits analogiques pour ces applications. De meme, les circuits asynchronesrepresentent aussi des defis a realiser. Prenez l’exemple de la figure 2.2. Lessorties des modes logiques synchrones ne sont assurees valides que pendant

26

Page 28: Notes de Cours VLSI

synchrone

numerique

analogique, temps continu

numerique, asynchrone

Figure 2.1 – Representation des classes de sous-type de circuits

27

Page 29: Notes de Cours VLSI

un laps de temps, celui d’un front montant ou descendant de l’horloge. Lereste du temps, les signaux de sortie peuvent varier representant un resultatintermediaire de l’evaluation du module logique. Ainsi un module synchronesera garanti d’avoir un temps, dit de latence, inferieur a la periode d’horloge.

Toutefois, s’il n’existe pas de bascule en entree du circuit suivant (le cir-cuit asynchrone dans la figure), ce dernier executera son calcul sur l’etatcourant des sorties, qu’elles soient stabilisees ou non. Ainsi la sortie du cir-cuit asynchrone ne sera pas plus connue tant que les entrees ne seront passtabilisees. De plus, ce dernier circuit a sa propre latence. Ainsi, meme ensynchronisant le circuit suivant avec une periode trop courte pour tenir dutemps maximal de latence, nous ne saurions sur quoi dependra le resultatfinal.

Dans la Figure 2.3(a), l’exemple d’une latence importante fait dependreles signaux de sortie S(1), sur les signaux d’entree A(1). En revanche dansla Figure 2.3(b) la sortie depend de l’entree A(2). Le probleme vient que lalatence ne depend pas seulement du circuit, mais aussi des valeurs d’entrees.Par exemple, un additionneur aura une faible latence dans le cas ou l’additioncomporte peu de retenues, et inversement. Il n’est donc a priori pas possiblede predire le fonctionnement du circuit (du moins facilement).

Dans un troisieme cas (Figure 2.3(c)), la sortie C pourrait encore etreindefinie au moment ou le dernier module (sortie S) lit ses entrees, puisqu’iln’y a aucune guarantie que le circuit combinatoire du centre se soit stabilise.Le resultat en serait d’autant plus incertain.

Finalement, une facon de contourner le probleme est de definir une perioded’horloge suffisante. Ceci revient dans les faits a concevoir un circuit completementsynchrone.

Afin d’eviter tous ces aleas, un circuit asynchrone peut etre fonctionnel etpredictible s’il comporte en plus un circuit de validation des resultats. Ainsi,le circuit asynchrone possederait un signal de sortie dont le statut signifie queles signaux de sortie sont stabilises. En entree, ce circuit prendrait aussi unsignal equivalent. Tout cela implique un circuit supplementaire et un designplus complexe. Notamment, il faut specifier comment se fait cette validationdu resultat.

Dans l’industrie, certains processeurs sont ainsi concus en suivant desprotocoles pour l’echange de donnees, p. ex. l’architecture ARM AMULET.L’avantage de ces composants reside dans leurs faibles puissances de consom-mation en periode de veille, puisqu’aucun signal d’horloge n’active des tran-

28

Page 30: Notes de Cours VLSI

D Q D Q

Circuitcombinatoire

delai de 05-09TA

delai 0.5T

B S

latence < 1T

CLK* CLK

C

Figure 2.2 – Circuits numeriques integrant des composants asynchrones

sitions d’etats de transistors dans le circuit. La consommation en est reduite.En revanche, l’etat de l’art de la conception de ces processeurs ne leur offrepas d’avantages en plein fonctionnement, certainement de par un circuit pluscomplexe et une marge du design importante, puisque la conception de cescircuits est encore peu developpee.

2.2 Options de conception

Dans la realisation d’une fonction numerique en materiel, plusieurs op-tions sont disponibles :

1. l’utilisation de composantes discretes commerciales (p. ex. TTL) ;

2. puces VLSI concues sur mesure ;

3. composants programmable ;

4. microprocesseur / microcontroleur a architecture fixe (systeme em-barque) et logiciel approprie ;

5. processeur a traitement de signal (DSP) et logiciel approprie.

2.2.1 Composants programmables

Il existe deux grandes categories de composants programmables a hautedensite :

29

Page 31: Notes de Cours VLSI

latence

A(1) A(2) A(3)

B(1) B(2) B(3)

S(1) S(2) S(3)

CLK

CLK*

latence

C(1) C(2) C(3)

(a) Latence longue, S(1) depend de A(1)

A(1) A(2) A(3)

CLK

CLK*

latenceB'(1) B'(2) B'(3)

S'(1) S'(2) S'(3)latence

C'(1) C'(2) C'(3)

(b) Latence courte, S(1) depend de A(2)

A(1) A(2) A(3)

CLK

CLK*

latenceB'(1) B'(2) B'(3)

S'(1) S'(2) S'(3)latence

C'(1) C'(2) C'(3)

(c) Resultat indefini, S(1) est inconnue a priori

Figure 2.3 – Example de l’effet de la latence sans synchronisation adequate

30

Page 32: Notes de Cours VLSI

Les FPGA “Field Programmable Gate Arrays” sont caracterises par unearchitecture flexible et des ressources d’interconnexion abondantes ;

les CPLDs “Complex Programmable Logic Devices” qui sont caracterisespar une architecture plus rigide (essentiellement des descendants desPALs) destinee surtout a l’implantation de logique combinatoire.

Avantage des composants programmable

Ces proprietes remarquables rendent les composants programmables avan-tageux dans certaines applications :

Prototypage rapide et peu couteux , le composant programmable per-met de tester un circuit sans avoir a fabriquer un circuit integre specifique,ce qui demanderait la creation d’un masque de gravure et il est ineffi-cace de graver de faible quantite d’un CI (le temps de conception et lescouts de gravure en sont prohibitifs).

reconfigurabilitee (dans certains cas) un composant peut-etre redefini avolonte afin de tester differents correctifs ou ameliorations du circuit,avec relativement peu d’effort, si ce n’est un temps de recompilation etde synthese du circuit.

limiter la copie reverse ingeniering , a l’inverse de certains composantsreprogrammables qui garde leur programmation dans une memoire,certains ne le sont qu’une seule fois. Une technologie de fusible per-met d’inscrire le circuit en creant les connexions necessaires. Il n’estalors plus possible de voir le circuit, ni de “hacker” son code dans unememoire. Sous un microscope electronique, il est possible de retracer unCI traditionnel et de le copier. Le CI programmable, lui, n’offre qu’uneseule vue sous le microscope, quelque soit le circuit programme.

Rapidite : ces composants peuvent aisement etre plus rapides que les mi-croprocesseurs et DSPs. Ces derniers offrent une architecture rigide.Il faut optimiser le code qui tourne dessus. Et certaines applicationssont trop specifiques pour beneficier des techniques d’optimisation decode. En revanche, le composant programmable permet de “compiler”un circuit specifique pour l’application plutot.

Le cout des composants programmable est de plus en plus abordable. Ladiversification des modeles est aussi grandissante, et les performancesaugmentent. Il devient possible de trouver de tels composants pourtoutes sortes d’applications.

31

Page 33: Notes de Cours VLSI

2.2.2 Langages de description de materiel

A l’instar de la programmation d’un processeur ou d’un DSP, un compo-sant programmable dispose de methode de programmation. Pour commencer,des langages de description de materiels evolues sont disponibles (VHDL etVerilog). Ils permettent

1. de mieux gerer les designs tres complexes et

2. des descriptions de haut niveau (c.-a-d. de type comportemental).

3. Il standardisent la description des circuits a toutes les etapes de laconception ;

4. et permettent la creation de modules (noyaux ou “cores”) reutilisables.

2.3 Exemples de modules

2.3.1 le filtre FIR

Un filtre FIR (finit impulse response) a une reponse a l’impulsion finie.C’est-a-dire qu’un signal de 1 au temps 0, suivi de zero, va produire ensortie un signal fini en temps. Comme le filtrage est une operation lineaire, lefiltrage, a un temps t, est une somme de l’ensemble des reponses a l’impulsionproduites (decale en temps) et ponderees par les valeurs de l’entree a chaqueinstant. Ainsi un filtre FIR est completement caracterise par la serie finiede sa reponse a l’impulsion. La Figure 2.4 represente le diagramme de larealisation numerique d’un tel filtre, caracterise par la sequence de poids{w1, . . . , wn}, pour une reponse de longueur n. Ce filtre necessite, de plus,n cases memoires pour se souvenir des n valeurs passees de l’entre qui sontensuite ponderees puis additionnees pour donner la valeur de sortie.

FIR version DSP

Un DSP permettra de decrire la structure de la figure 2.4 sous une formesequentielle comme suit :

int w[L];

int tampon[L];

int nouveau;

...

32

Page 34: Notes de Cours VLSI

x

w1 w2 w3 wL

Σ

z

z−1 z−1z−1

Figure 2.4 – Diagramme d’un filtre FIR

for (i=L-1; i >= 0; i--)

tampon[i+1]=tampon[i];

tampon[0]=nouveau;

...

for (i=0; i<L; i++)

somme += w[i]*tampon[i];

Le compilateur pour le DSP sera alors en mesure de derouler les boucleset d’utiliser le plus efficacement possible les multiplicateurs et additionneursqu’il possede en fonction de leur accessibilite (qui depend de l’architectureen pipeline/cascade,...).

FIR version FPGA

En vue d’une implantation en un circuit, nous commencons par observerle diagramme du filtre FIR sous la forme de la Figure 2.5.

Ce diagramme comprend les modules logiques a un certain haut niveau.Par exemple il comprend des multiplicateurs, qui sont des fonctions logiquesen elles-memes complexes.

Une constatation plus fondamentale toutefois, tient dans le type de signald’entree. Sur DSP, nous specifions simplement dans le code si nous utilisonsun entier (int) ou autre (par exemple un entier code sur 16 bits, un nombre

33

Page 35: Notes de Cours VLSI

+

1 2 3 4 L

12

12

24

L + 24

w1 w2 w3 wL

×× × ×

Figure 2.5 – Diagramme d’un circuit de filtre FIR pour implantation surFPGA

a virgule fixe ou flottante). Il existe plusieurs formes de representation desnombres. Aussi pour une realisation materielle, il convient de la specifierassez tot.

Pour notre exemple, nous considerons un entier de 12 bits. Ainsi un vec-teur de 12 signaux binaires sont necessaire et sont representes par le schema12 .

Ce vecteur de signaux passe alors au travers d’un registre a decalage :une combinaison de 12 bascules D pour un registre 12 bit (memorisant les 12signaux), chacun suivit en cascade par L−1 bascules D. En d’autres termes,pour chaque 12 signaux, L bascules se succedent avec pour entree la sortiede la precedente. 12 × L bascules seront necessaires. La premiere ligne dugraphique 2.5 represente ce registre a decalage.

Finalement, ce registre nous permet de garder en memoire les L precedentesvaleurs d’entrees qui doivent a chaque iteration (a chaque arrivee d’un echantillonde 12 bits) etre multiplie par le vecteur de gain W , lui meme represente sur12 bits.

Plusieurs options sont alors possibles. Nous pouvons utiliser L modules

34

Page 36: Notes de Cours VLSI

N + M

2N cellules

de N + M bits

N

Figure 2.6 – Cellule de memoire utilisee comme table de multiplication

logiques de multiplication qui necessitera donc autant d’espace du circuitprogrammable. Ainsi chaque multiplication sera effectuee en parallele, ce quisera potentiellement plus rapide que ce que pourra offrir la capacite du DSP.

Une autre option consisterait a utiliser un module de multiplieur/accu-mulateur et d’y ajouter un circuit qui sequentiellement envoie les signaux dechaque registre a ce module. Nous gagnons en espace, et perdons en perfor-mances brutes.

2.3.2 Un multiplieur a tableaux

Considerons le module logique du multiplieur 12 bits necessaire dans ledesign precedent. Il existe differentes facons de concevoir un multiplieur. Pourl’essentiel, il s’agit d’algorithmes, le plus repandu etant probablement celuide Booth. Toutefois, le plus simple consiste en des tables de multiplication.

En circuit logique, une table peut se representer par une serie de cellulesmemoires (c.f. Figure 2.6). Une operande sert alors a selectionner la cellulememoire, la deuxieme sert a l’adresser, et le contenu de la cellule representele resultat.

Complexite du multiplieur a tableau

Il faut, pour deux valeurs de N et M bits respectivement, 2N tableaux de2M cellules de N +M bits. En effet, une multiplication de N bits par M bitspeut necessiter jusqu’a N +M bits pour coder le plus grand nombre possibleparmis l’ensemble des resultats.

35

Page 37: Notes de Cours VLSI

X24 · · ·X0

A11 · · ·A0

B11 · · ·B8 B7 · · ·B4 B3 · · ·B0×Y = A×B

C15 · · ·C0

D15 · · ·D0

E15 · · ·E0

Figure 2.7 – Decoupage d’une multiplication de deux valeurs sur 12 bits entrois sous operandes.

Un multiplieur a tableaux est tres peu efficace en terme de memoire. Parexemple, pour multiplier 2 operandes de 12 bits il faut un bloc de memoirede (N + M) × 2N+M = 24 × 224 octets soit 384 Mbits. En considerant queles cellules memoires de 64Ko etaient une avancee phenomenale dans lesannees 1980, et qu’un jeu video tenait entierement sur une telle capacite, nousimaginons bien que le systeme utilisait d’autres methodes de multiplication.

Toutefois, un tableau plus petit pour multiplier deux valeurs de 4 bits(p. ex. 24 tableau de 24 cellules de 8 bits soit 2 kbits) aura une taille plusraisonnable. Il convient donc de partitionner le probleme.

2.3.3 Multiplieur partitionne

Diviser pour regner s’applique particulierement en circuit logique. Or unemultiplication peut se subdiviser en sous-operande de differentes puissances.Ainsi 12 bits peuvent s’ecrire sous la forme de 3 termes de 4 bits avec despuissances respectives de 28, 24, et 20. La figure 2.7 illustre la multiplicationdecoupee. L’interet reside dans la facilite d’implantation d’une multiplicationpar une puissance de 2 : ce sont des decalages. Soit des decalages de 8,4 et 0bit, pour notre circuit represente a la figure 2.8.

La multiplication de A par B avec B = b8 × 28 + b4 × 24 + b0 est doncune addition de 3 multiplications de 12 par 4 bits plus deux operations dedecalage, comme l’illustre la Figure 2.7.

A ce niveau, nous avons encore besoin de 3 multiplieurs de 12 bits par 4bits (plus un additionneur, les decalages pouvant simplement etre realises par

36

Page 38: Notes de Cours VLSI

T1

T3

T2

16

16

16

20

24

25

X

24 × 16 bits

24 × 16 bits

24 × 16 bits

� 8

� 4 +D

C

E

Figure 2.8 – Representation du circuit d’un multiplieur partitionne en trois.

des connexions appropriees). Ceci nous demanderait encore 3×(12+4)×212+4

bits soit 3 Mbits de memoire. Nous avons reduit par un facteur 100 la memoireutilisee.

Cela reste toutefois encore trop important pour de la memoire morte uni-quement dediee a une operation. A titre de comparaison les processeurs lesplus evolues actuellement disposent de memoire cache a peine plus impor-tante. La memoire cache est une memoire integree au processeur, et doncrapide d’acces. Il n’est pas realiste d’utiliser autant d’espace sur un CI pourune simple multiplication.

Nous subdivisons donc encore la multiplication : une multiplication de12 par 4 en trois multiplications de 4 par 4 bits, comme illustre a la Figure2.9. Nous avons alors besoin de (4 + 4) × 24+4 soit 2 kbits de memoire. Enrevanche, nous avons besoin maintenant de 3×3 multiplieurs 4 bits. Ceci de-mande tout de meme 18 kbits a comparer au 3 Mbits ou 300 Mbits precedents.

Nous pouvons pousser la miniaturisation (en termes de complexite duCI, ou de surface utilisee sur le composant programmable) en n’utilisantqu’un seul de ces multiplieurs et en ajoutant une logique sequentielle. Ceciimplique un plus petit circuit, et une moindre performance puisque les sous-multiplications ne se font plus en parallele.

2.4 Materiel versus logiciel

Pour finir cette section sur les circuits logiques et avant de nous lancerdans la programmation de ces circuits, nous soulignons ici les differencesconceptuelles entre la programmation logicielle et materiel, oriente circuit.

37

Page 39: Notes de Cours VLSI

T1

8

8

T1a

T1b

T1c8

24 × 16 bits4× 12

4× 4

4× 4

4× 4

24 × 8 bits

24 × 8 bits

24 × 8 bits

� 4

� 8

Figure 2.9 – Partitionnement de la division en multiplieur de 4 par 4 bits

38

Page 40: Notes de Cours VLSI

Logiciel Materiel

Le logiciel est une suiteordonnee d’operationsdestinees a etre executeesequentiellement.

Un circuit logique est un ensemble desous-circuits (les modules) qui operent enparallele avec les memes operations serepetant a chaque coup d’horloge ad in-finitum.

la compilation d’un logicieltermine le processus et resulteen un produit fini.

la synthese d’une description de circuitproduit un circuit abstrait (c.-a-d. unedescription de bas niveau)...

... lequel doit encore etre “mappe” un amedium physique, ce qui :– est un processus long et couteux ;– inclut le placement et le routage ;– la resolution de problemes lies aux

proprietes physiques des compo-santes (delais de propagation, ”fan-out”, chemin critique, compatibiliteelectromagnetique).

39

Page 41: Notes de Cours VLSI

Chapitre 3

Circuits combinatoires

3.1 Logique combinatoire, rappel

3.1.1 Fonction logique en circuit

Une fonction logique, en circuit, implique une logique combinatoire.Une fonction en elle-meme ne possede pas de memoire. C’est-a-dire que sonresultat ne depend pas d’un etat passe.

Toutefois, elle peut

1. soit produire son resultat en un coup (latence minimale) ;

2. soit en plusieurs etapes (latence elevee).

Dans tous les cas, le resultat (final) ne depend que des entrees au momentou le calcul debute.

Une fonction logique est une application au sens mathematique qui attri-bue une valeur de sortie a chaque element possible de l’entree. Ainsi pour unecombinaison des n valeurs binaires d’entrees, la fonction produira m valeursde sorties. Eventuellement, elle peut etre indefinie.

Puisque le nombre d’entrees est limite par un nombre de signaux binairesfixe, l’ensemble des valeurs possible est fini. Les fonctions logiques sont doncdenombrables. Ainsi pour 2 valeurs binaires d’entree, il existe 22 = 4 elementspossible pour l’ensemble de valeurs d’entree. Pour un seul signal binaire desortie, il existe alors 222 = 16 fonctions differentes. C’est-a-dire autant devariation possible de sequence de 0 et 1 pour chaque valeur possible d’entrees.

40

Page 42: Notes de Cours VLSI

0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 10 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Table 3.1 – Enumeration des 16 fonctions pour un signal de sortie et deuxd’entrees

Pour m signaux binaires de sorties et n d’entrees, nous avons

Card(F) = (2m)2n (3.1)

fonctions differentes.

Illustration : fonctions logiques a deux signaux d’entree et unesortie

Le tableau 3.1 definit les 16 fonctions logiques possibles pour 2 signauxd’entrees.

Evidemment, parmi ces 16 fonctions, certaines sont inutiles, et ne dependentpas des valeurs d’entrees, comme la premiere et la derniere. En revanche,d’autres sont particulierement utiles, comme la septieme qui n’est ni plusni moins qu’un ou exclusif (c.f. Figure 3.2). Cette fonction logique se re-trouve dans bien des maisons lorsque deux interrupteurs servent a allumerou eteindre un meme luminaire comme illustre a la figure 3.1. En effet si lesdeux interrupteurs sont en position haute ou basse, le courant ne passe pas.Le courant passe lorsque les deux interrupteurs sont en opposition.

Les autres fonctions elementaires de l’algebre de Bool se retrouvent dansce tableau : ET, OU NON-ET,... Typiquement, ces fonctions ont une la-tence quasi nulle. La latence sera celle de la charge/decharge des capacitesparasite dans le changement d’etat des quelques transistors mis en jeux pourla realisation de ces fonctions. Necessairement dans un circuit logique l’hor-loge doit avoir une periode plus grande que cette latence. Sans quoi rien nepourrait fonctionner.

Illustration : un additionneur 3 entrees, 2 sorties

Pour compliquer les choses, nous considerons un additionneur a troisentrees, Re,A,B. L’addition peut generer une retenue et necessite donc une

41

Page 43: Notes de Cours VLSI

Figure 3.1 – Interupteurs a trois voies

��� ��� 00 11

12 03x1

x2

x2

yx1

Figure 3.2 – fonction OU exclusif

sortie supplementaire : au bit X de sortie est ajoute le signal R de retenue.La fonction est definie dans le tableau de la figure 3.3

s

3.1.2 Realisation en logiciel

Avant d’etre realisee en materiel, une fonction est souvent realisee en logi-ciel. En effet, ceci permet un niveau intermediaire d’abstraction ; par exemple,celui de ne pas avoir a specifier la precision numerique (comme nous l’avonsvu pour le filtre FIR sur 12 bits) ou les contraintes de latence.

Car meme les fonctions les plus simples sont souvent decomposees enetapes. Nous l’avons vu pour la multiplication : sur un microprocesseur, c’estune operation microprogrammee. Il y a donc un programme interne au pro-cesseur decoupant l’operation en plusieurs coups d’horloge. Les fonctions nonlineaires sont particulierement problematiques.

Exemple 1 : y = ln(x)

Prenons la fonction du logarithme naturel. En programmation informa-tique, nous utilisons generalement des librairies mathematiques fournies parle compilateur (C ou autre). En pratique, cette fonction est programmee.

42

Page 44: Notes de Cours VLSI

Rs

A

B

Re

Y

A B Re Rs Y0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Figure 3.3 – Plein additionneur, trois entrees

Qui plus est, pour des plateformes rudimentaires, tel un systeme embarque,la fonction est simplifiee pour un resultat rapide et efficace (mais limite).

Premierement, nous devons specifier la plage de valeurs sur laquelle nousallons operer. Pour l’exercice nous posons 0 < x < 4. Il faut comprendre quebien specifier cette plage est crucial pour l’application. La fusee Ariane-5 dugroupe EADS a du etre neutralisee, faute d’une erreur de depassement d’unetelle plage dans le calculateur de bord. Un depassement (overflow) de plagel’aura fait perdre sa trajectoire.

Nous nous basons generalement sur des representations en serie infinie,qui sont tronquees apres un certain nombre de termes. Tout ceci doit etrespecifie en fonction des besoins de precisions.

Pour notre exemple, nous nous basons sur la serie de Mercator :

y = ln(x) =∞∑n=1

(−1)n+1 (x− 1)n

n'

∞∑n=1

(x− 1)n

n(3.2)

En programmation logicielle de bas niveau, cela nous donne le code sui-vant

float ln(float x)

{int i;

float cumul, terme;

terme=(x-1);

for (i=1; i ≤ precision; i++) {

43

Page 45: Notes de Cours VLSI

cumul = cumul + terme/i;

terme =- terme * (x-1);

}return cumul;

}Nous remarquons qu’il y a deja suffisamment de travail a ce niveau,

avant de passer a la realisation materielle et la caracterisation de la precisionnumerique. Ici, nous nous contentons de definit un “float”.

3.1.3 Realisation en materiel

En materiel, la plus petite precision acceptable est generalement uti-lisee. Afin de consommer le moins de ressources possible, les representationsen virgule flottante sont rarement employees (celle-ci necessite beaucoupplus de logique pour gerer la virgule). Et le choix de la precision et de larepresentation des quantites est determinant pour la performance et lataille du circuit. Il faut s’assurer que la precision est suffisante pour l’appli-cation.

Precision et representation→ Le precision voulue est d’abord determinee.– Le nombre de bit necessaires est definit pour representer integralement

la plage d’entree.– Par exemple, pour 4 bits d’entrees, il faut,

– du binaire positif (4 bits de magnitude) ;– nous donne une magnitude de 0 a 4 ;– qui represente des valeurs de 0 a 4– soit un pas de 0.25

→ La plage de valeur possible de la sortie est aussi evaluee, ici de (−1.4, 1.4)et sa precision definie.– Avec 5 bits de sortie, il faut :

– un bit de signe : smmm (signe, + 4 bits de magnitude) ;– un magnitude de 0 a 1.4 ;– et un pas de 0.0875.

– Finalement, les cas particuliers doivent etre pris en compte :– il faudra prevoir en plus un bit d’erreur pour le ln(0).

44

Page 46: Notes de Cours VLSI

x x x y y err

0–0.25 0 00.00 −∞ XXXXX 10.25–0.5 0.25 00.01 −1.386 11111 00.5–0.75 0.5 00.10 −0.693 10111 00.75–1.00 0.75 00.11 −0.288 10011 0

......

......

......

3.75–4.00 3.75 11.11 1.322 01111 0

Table 3.2 – Table de verite partielle

Nous procedons a l’ecriture d’une table de verite partielle, comme illustrea la table 3.2.

De prime abord, la table de verite revele peu ou pas de structure. Contrai-rement a la multiplication par un coefficient, c’est une fonction non lineairequi ne peut etre partitionnee en blocs independants.

La methode brute consiste a implanter une telle fonction via un tableau(c.-a-d. memoire sans horloge, ni signaux de commandes) a l’image de cequi a ete vu pour le multiplieur 4 bits. Le tableau aura uniquement 4 lignesd’adresses et 6 lignes de donnees. En l’absence de memoire vive dediee, untel tableau est realise a base de multiplexeurs.

Pour des besoins en precision plus grande et des plages de valeurs plusgrandes, l’option du tableau deviendra vite prohibitive. C’est alors qu’ap-paraıt le compromis entre rapidite et complexite (superficie du circuit) : uncircuit sequentiel avec un multiplieur/accumulateur et des registres permet-tront de coder adequatement le microprogramme decrit precedemment. Ils’agira toutefois la encore de specifier les precisions pour chaque operation.Ceci afin de preserver la precision au cours du calcul et la garantir a la fin del’execution du microprogramme. Nous soulignons aussi que la latence maxi-male (nombre d’iterations) du microcode devra etre specifiee.

Pour l’exercice, nous procedons avec le tableau par multiplexeur pour enmesurer la complexite

Cout des multiplexeurs La figure 3.4 illustre un multiplexeur a 2 bits.Le bit A nous permet de choisir entre S0 et S1.

La realisation de ce circuit comporte 3 portes et un inverseur (cout de 3.5portes) comme l’illustre la figure 3.5

45

Page 47: Notes de Cours VLSI

S1

A

Y

S2

(a) Schema d’un multiplexeur

A S1 S2 Y

X 0 0 00 0 X 00 1 X 11 X 0 01 X 1 1

(b) Table de verite simplifiee

Figure 3.4 – Multiplexeur a 2 entrees

A

S0 S1

Y

Figure 3.5 – Schema du circuit d’un multiplexeur a 2 entrees

46

Page 48: Notes de Cours VLSI

S0

S0S1

S1

A0

A0

S2S2

S3S3

Y

Y

A1

A1

Figure 3.6 – Schema d’un multiplexeur a 4 entrees

A partir de multiplexeurs a 2 entrees, nous pouvons en realiser un a 4entrees ; comme illustre a la figure 3.6 Ainsi, il nous faut 3 multiplexeurs a2 entrees soit 3 × 3.5 = 10.5 portes. En generalisant la conception pour unmultiplexeur a 2N entrees et N lignes de selection pour les 2N entrees : lastructure logarithmique, en arbre, des multiplexeurs a 2 entrees nous donnesla formule du nombre de multiplexeurs necessaire :

N−1∑k=0

2k = 2N − 1. (3.3)

Soit un cout de (2N − 1)× 3.5 portes.La mesure en terme de nombre de portes est imparfaite. Mais elle a l’avan-

tage d’etre universelle (independamment de la technologie cible). Ainsi, untableau a N lignes d’adresses et M lignes de donnees correspond a 2N ×Mbits de memoire et M multiplexeurs a 2N entrees

Pour notre exemple de 4 lignes d’adresse et 6 lignes de sorties a un coutde 6 × 15 × 3.5 = 315 portes. Une petite astuce toutefois, en mettant lesinverseurs en commun (sur chacun des signaux d’entree qui n’ont besoind’etre inverse qu’une fois), seules 272 portes sont necessaires.

Nous pouvons pousser plus loin l’optimisation en considerant que pour les272 portes du tableau revienne a 45 portes par ligne de donnees. Aussi chaqueligne de sortie peut etre consideree comme une fonction logique distincte quipeut etre optimisee. Nous pouvons alors ecrire une table de verite pour chaqueligne et sans doute minimiser le nombre de portes.

47

Page 49: Notes de Cours VLSI

3.1.4 Realisation - Conclusion

En conclusion, pour realiser une fonction non lineaire, il faut tenir comptede la precision souhaitee pour choisir le mode de realisation :

– pour une implantation de maniere purement combinatoire (et non iterative),→ une faible precision limite le nombre d’entrees/sorties et la taille du

circuit.– En revanche, en augmentant la precision et donc, le nombre d’entrees

et de sorite binaires,– l’implantation par tableau devient impensable, car trop gourmande ;– l’implantation meme par tables de Karnaugh devient impossible a la

main au-dela de six entrees.

3.1.5 Synthese de circuit

Definition. La synthese est l’operation consistant a produire un circuitcompose de portes logiques a partir d’une specification (p. ex. table deverite).

Ce que nous venons de realiser, dans les exemples precedents, est doncune forme de synthese. Les tables de Karnaugh constituent une methodemanuelle de synthese, dite de la synthese a deux niveaux.

Toutefois, les logiciels modernes realisent des syntheses qui generalisentles tables de Karnaugh, comme la methode de Quine-McCluskey.

Deux ameliorations sont possibles a la synthese a deux niveaux :

1. lorsque plusieurs fonctions doivent etre generees, des parties de leurscircuits respectifs peuvent etre mises en commun. C’est ce que nousavons fait avec les inverseurs tres simplement, toutefois dans certainscircuits c’est le resultat d’un calcul intermediaire qui permet d’etre misen commun et de minimiser la complexite ;

2. la synthese multiniveaux (delai de propagation entree-sorite plus long,mais circuit potentiellement moins complexe) permet en plus d’uneoptimisation independante de la technologie (travaillant uniquementsur la factorisation), de realiser une optimisation materielle qui dependsde la disponibilite du reseau de portes dans une technologie cible donnee(differente selon les technologies de composants programmables).

Nous ne pouvons toutefois garantir l’optimalite de la solution, car leprobleme d’optimisation est NP-complet. Il faut essayer toute sorte de com-

48

Page 50: Notes de Cours VLSI

binaisons pour trouver comment assembler les elements ensemble, sous lacontrainte du circuit impose.

En pratique, ce qui permet d’obtenir de bonne optimisation depend dela specification d’une certaine structure (hierarchie, decomposition) dans lecircuit.

3.2 Element de memoire

Definition. Tout circuit sequentiel comporte des elements de memoire.– Ces elements sont de nature generique.– Ils sont constitues d’un dispositif de stockage (p. ex. capacitance,

retroaction combinatoire) et de circuiterie d’acces.– L’acces a la memoire est controle par l’horloge.– La sorite reflete la donnee stockee.

Classification des elements de memoire Differents modules logiquesde memoire peuvent etre classes par leur comportement, au regard de :

– leur facon de reagir a l’horloge (phase d’ecriture / lecture) ;– leurs facons de combiner la donnee en entree et la donnee stockee pour

mettre a jour cette derniere ;– le moment auquel ils font passer la donnee stockee a la sortie ;– et la presence ou l’absence d’un chemin combinatoire direct entre l’entree

et la sortie.

Classification entree-sortie A regarder la relation entree-sortie, ces mo-dules logiques se classent en

verrous (latches) qui sont transparents, c’est-a-dire que tout changement al’entree se propage directement a la sortie pendant la phase d’ecriture.

bascules (flip-flops) qui ne sont pas transparentes, c’est-a-dire que l’ecritureet la propagation a la sortie sont des operations decouplees.

Il en ressort que generalement les verrous sont sensibles au niveau del’horloge (haut ou bas) alors que les bascules le serons aux transitions del’horloge.

Classification selon le type d’entrees Nous remarquerons les elementsde memoire suivants

49

Page 51: Notes de Cours VLSI

Type D pour data, propage l’entreeD a la sortieQ lors de la phase d’ecriture.

Type T pour toggle, inverse son etat lorsque son entree est a ‘1’ en phased’ecriture.

Type SR pour set-reset, a eux entrees, l’entree S met la donnee en memoirea ‘1’ et l’entree R la met a ‘0’. Les deux entrees ne peuvent etre a ‘1’en meme temps.

Type JK , fonctionnent comme les elements SR, sauf que les deux entreespeuvent etre a ‘1’ simultanement, ceci provoque l’inversion d’etat.

Tous le s types d’elements-memoire peuvent etre construit a partir d’unelement JK.

3.3 Discipline d’horloge

Afin d’assurer une stabilite, une comprehension et une predictibilite ducircuit, il convient d’utiliser adequatement le signal d’horloge. En regle generale :

1. tous les circuits combinatoires doivent etre acycliques. Dans le cascontraire, le circuit combinatoire formant un cycle est un element dememoire primitif.

2. Toutes les composantes doivent avoir un delai borne.

3.3.1 Discipline d’horloge a 1 phase

Par circuit d’horloge, nous entendons un circuit de type bascules, danslequel une bascule agit sur un calcul combinatoire. Comme illustre a la fi-gure 3.7, le circuit combinatoire comporte des signaux d’entree, et de sortie.Mais une bascule (D dans la figure) agit sur ce circuit au travers de certainssignaux.

Discipline. Pour une horloge a une phase : les signaux ne peuvent chan-ger qu’apres la montree de l’horloge et doivent se stabiliser avant lamontee suivante.

Cette discipline implique que le circuit combinatoire doit debuter soncalcul au moment de la montee de l’horloge. Et surtout, le circuit doit avoirun temps de latence plus court que la periode de l’horloge qui gouverne labascule. Ceci afin que les signaux de sortie du circuit soient stables avant lamontee suivante. Ainsi, le circuit suivant en aval de celui-ci pourra lire lesdonnees des signaux sortant de facon predictible.

50

Page 52: Notes de Cours VLSI

combinatoire 1

D Q

Circuit

Figure 3.7 – Circuit sequentiel generique controle par une bascule

3.3.2 Discipline d’horloge a 2 phases

Parler d’horloge a deux phases traduit la notion de verrous. C’est-a-dire,un systeme qui “enferme” une information pendant un certain laps de temps.Deux etapes sont necessaires donc 1) une phase d’ecriture, 2) une phase delecture.

Pour realiser un circuit sequentiel a base de verrous avec une horloge aune phase, il faut :

1. que le temps d’ouverture des verrous soit plus court que le delaicombinatoire le plus court : en d’autres termes que le circuit n’aipas le temps d’effectuer aucun “calcul” et donc de changer le resultatde sortie, avant que le verrou ne se referme lors de la phase d’ecriture.

2. Que la periode entre les operations de verrouillage soit plus longueque le delai combinatoire le plus long. C’est-a-dire, que le tempsnecessaire et maximal du “calcul” (du circuit dans le verrou) soit res-pecte avant d’effectuer une operation de lecture a la sortie.

Il est possible de satisfaire ces deux contraintes, mais difficile de fairefonctionner de tels circuits. Certaines applications seront trop exigeantes dansleur variabilite de temps de latence que le circuit pourrait ne pas respecterl’une ou l’autre contrainte facilement.

La solution a ce probleme est d’introduire un formalisme base sur 2 phasesd’horloge sans chevauchement, a l’image de la figure 3.8

Afin de systematiser le design de circuit numerique, nous posons alors ladiscipline d’horloge a 2 phases pour regir le design des circuits cyclique :

Definition. La Discipline d’horloge a 2 phases requiere que tout cycledans le circuit soit entrecoupe d’un nombre egal de verrous de phase 1et de verrous de phase 2 (verrou controle par des signaux d’horloge adeux phases sans chevauchement).

51

Page 53: Notes de Cours VLSI

φ1

φ2

(a) signaux d’horloge sur phase sans chevauchement

DQ D

Q

Circuit

combinatoire 1

Circuit

combinatoire 2

φ2

φ1

(b) Circuit controle par un verrou avec les deux bascules etles deux phases d’horloges

Figure 3.8 – Discipline d’horloge a 2 phases

52

Page 54: Notes de Cours VLSI

3.4 Machines a etats

3.4.1 Formalisme

Definition. Les machines a etats (en anglais “Finite-State Machines” ouFSM), ou plus exactement les automate fini, sont des appareils abs-traits :– Un automate est constitue d’etats et de transitions.– Son comportement est dirige par des signaux fournis en entree– L’automate passe d’etat en etat, suivant les transitions, a la lecture

de chaque signal d’entree.– L’automate est dit “fini” car il possede un nombre fini d’etats : il ne

dispose donc que d’une memoire bornee.– Il se caracterise entierement par sa table de transition. Elle donne,

pour chaque etat et chaque signal d’entree, l’etat d’arrivee de latransition.

Les automates finis facilitent la conception de nombreux circuits avecmemoire (c.-a-d. sequentiels). Pour la logique numerique synchrone, les ma-chines a etats synchrones sont essentiellement composees de 4 elements :

– les signaux d’entrees ;– les signaux de sortie ;– les registres d’etat ;– l’horloge.

Et ils obeissent par definition aux regles suivante :

1. une “memoire” se rappelle de l’etat courant ;

2. une transition ne peut s’effectuer que sur la montee (ou la descente,mais pas les deux) de l’horloge ;

3. l’etat suivant une transition depend de l’etat courant et de l’etat desentrees ;

4. une transition d’un etat vers un autre peut entraıner un changementdes sorties.

3.4.2 Classification

Formellement, deux types de machine a etats se distinguent :

53

Page 55: Notes de Cours VLSI

Déc

odeu

r d'

entr

ées

Elé

men

t de

mém

oire

(reg

istr

e d'

état

)

Déc

odeu

r de

sor

ties

Entrées

Sorties

horloge

Figure 3.9 – Machine de Moore

Les machines de Moore , dans lesquelles les sorties ne dependent que del’etat courant. C’est-a-dire que l’etat definit entierement la sortie. Les entreesne servent qu’a gerer les transitions d’etats (c.f. figure 3.9)

Les machines de Mealy dans lesquelles les sorties dependent de l’etatcourant, et aussi des entrees. En d’autres termes, l’etat est caracterise par uncircuit logique qui s’active et prend en compte les entrees (c.f. figure 3.10).

Ou, dit autrement, une machine de Mealy est une machine de Moorea laquelle est ajoute un circuit combinatoire qui genere les sorties, commeillustre a la figure 3.11.

Une autre categorisation de ces machines offre trois classes :

Les machines de classe A correspondent aux machines de Mealy.

Les machines de classe B correspondent aux machines de Moore ordi-naire.

Les machines de classe C sont des machines de Moore sans decodeur desortie. L’encodage d’etat correspond donc directement aux sorties desirees(c.f. figure 3.12).

54

Page 56: Notes de Cours VLSI

Déc

odeu

r d'

entr

ées

Elé

men

t de

mém

oire

(reg

istr

e d'

état

)

Déc

odeu

r de

sor

ties

Entrées

Sorties

horloge

Figure 3.10 – Machine de Mealy

Déc

odeu

r d'

entr

ées

Elé

men

t de

mém

oire

(reg

istr

e d'

état

)

Déc

odeu

r de

sor

ties

Entrées

horloge

Déc

odeu

r de

sor

ties

2

Sorties

Figure 3.11 – Machine de Mealy equivalente (c.-a-d. machine de Moore +decodeur de sorties supplementaires) :

55

Page 57: Notes de Cours VLSI

Déc

odeu

r d'

entr

ées

Elé

men

t de

mém

oire

(reg

istr

e d'

état

)

Entrées

horloge

Sorties

Figure 3.12 – Machine de Moore sans decodeur de sorties (machine de classeC)

Generalisation

Il est possible de composer une machine a etats a partir d’autres machines.Le resultat est aussi une machine a etats qui respecte necessairement unnombre fini d’etats, et des changements d’etat sur transitions conditionneesaux signaux d’entree.

Theoreme. Un agregat de machines a etats interconnectees constitue egalementune machine a etats.

Corollaire. Une fonction sequentielle peut etre partitionnee en plusieursmachines de maniere a en simplifier la conception.

3.5 Design sequentiel

Dans le design d’operation complexe qui necessite de la logique combi-natoire et de la logique sequentielle, il convient de structurer la methode deconception. Ainsi, nous essayons de separer les deux formes de logiques, deles specifier separement et de les faire fonctionner ensemble.

3.5.1 Etape de conception

La conception des elements sequentiels en circuit logique repose sur lesetapes suivantes :

1. Formulation d’une specification, laquelle decrit le code sequentiel, oule pseudocode, le diagramme de sequence,...

56

Page 58: Notes de Cours VLSI

2. Identification des elements fonctionnels requis (decodage/logique com-binatoire des pour les sorties).

3. Identification (a partir de la specification) de la sequence d’operationsdevant etre executee par les elements fonctionnels.

4. Elaboration d’une machine a etats capturant ladite sequence et quipilotera les elements fonctionnels.

3.5.2 Exemple : design d’un multiplieur

Nous avons vu qu’il est possible de realiser un multiplieur avec une table.Mais des que les operandes impliquent de grandes valeurs, il faut decouperla fonction, voir ajouter une logique sequentielle pour n’utiliser qu’un seulmultiplieur de sous-operande. En poussant cette fragmentation, la multipli-cation peut se realiser en n’utilisant que des multiplications par 2 (registre adecalage) et des additions, et le besoin de tableau et elimine.

Specification du probleme

Le code sequentiel d’une telle multiplication ressemble a

m1 ⇐ multiplieur ; les entrees sont memorisees dans les re-gistres m1

m2 ⇐ multiplicande ; et m2accum ← 0 ; l’accumulateur est reinitialisefor pos in [0 :MAX BIT-1]{ pour chaque bit :

if m2[pos] == 1 then { si le bit de m2 en position pos est a 1accum ⇐ accum+m1 ; l’accumulateur additionne la quantite

dans le registre m1}m1¡= m1¡¡1 ; m1 est decale d’un bit

}resultat ⇐ accum ; la somme est placee dans les signaux

de resultats

Identification des elements fonctionnels

Dans l’algorithme enonce plus haut, nous identifions les elements fonc-tionnels : nous avons besoin de decaler, donc de registre a decalage, d’addi-

57

Page 59: Notes de Cours VLSI

tionner, mais aussi de controler cette addition. Finalement nous avons besoinde controle quand recopier le resultat sur les signaux de sortie du module lo-gique. Tous ces elements sont imbriques suivant une logique combinatoire,et doivent etre controles par des signaux (controle dicte par la sequenced’execution du code, qui sera decrit ensuite).

La figure 3.14 represente a hauts niveaux le circuit de multiplication etses modules logiques pour la partie fonctionnelle du circuit. Il s’y trouve desregistres a decalage, un additionneur, des bascules.

Nous retrouvons aussi des signaux qui doivent servir a controler les elements :signaux de decalage (DECALE), d’execution de l’addition (ADD), de fin(FIN) et de reinitialisation (CLEAR). Il y a aussi le signal BIT, issue duregistre a decalage du multiplicande, et qui doit servir a conditionner l’addi-tion, au travers de la machine a etats de controle.

La derniere bascule du circuit sert a verrouiller la sortie tant que l’ad-dition n’est pas finie. Une fois finie : si le signal FIN est a un niveau haut,alors un front montant de l’horloge doit declencher la copie des signaux del’accumulateur vers la sortie du multiplieur.

L’autre bascule doit controler ce qui est envoye a l’additionneur en fonc-tion de la condition d’addition, mais rester synchrone, d’ou le ET logiquesur le signal d’horloge et le signal ADD. Ces deux bascules utilisent unelogique combinatoire de base pour effectuer leur fonction. Or, dans cette lo-gique combinatoire, nous remarquons un probleme : la violation du deuxiemecommandement, celui de ne pas toucher au signal d’horloge.

Effectivement, il est preferable de ne pas toucher ce signal, afin de ne pascreer de latence dans ce signal qui pourrait causer des resultats imprevisibles,illustre a la figure 3.13.

Il vaut mieux utiliser les bascules differemment en tenant compte de si-gnaux d’entree dits asynchrones qu’elles possedent (signaux CLEAR, RE-SET, ou ici EN pour enable) et qui auront l’effet escompte sur la basculesans avoir besoin de toucher a l’horloge, comme illustre a la figure 3.15.

Identification de la sequence d’operation/controle

Il nous reste encore a elaborer le circuit de controle qui peut se resumer,pour notre circuit simplifie, a

for (pos = 0; pos < MAX_BIT; i++) {

58

Page 60: Notes de Cours VLSI

CLK

A

CLK.A

retard d'activation, ne garantie pas l'exécution du circuit logique dans un temps de latance sufisant

aléa

Figure 3.13 – Incertitudes liees a la modification du signal d’horloge

+

CLKADD

FIN

multiplicateur

multiplicande

produit

RD

RD D

BIT

SL

SR

DECALE

CLEARcommandementViolation du 2e

Figure 3.14 – Circuit des elements fonctionnels du multiplieur

59

Page 61: Notes de Cours VLSI

+

CLK

ADD

FIN

multiplicateur

multiplicande

produit

RD

RD D

BIT

SL

SR

DECALE

CLEAR

EN

CLR

EN

Figure 3.15 – Circuit des elements fonctionnels du multiplieur, corrige pourne pas toucher au signal d’horloge

60

Page 62: Notes de Cours VLSI

INIT

ADDITIONNE

DECALE

PSfrag replacements

Mettre accum a zero

Initialiser pos

RESET=’0’

RESET=’1’

Si m2(pos)=’1’ alors

Additionner m1 a accum

Decaler m1 vers la gauche

pos=MAX_BIT

Incrementer pos

Figure 3.16 – Graphe du multiplieur

if ( m2( pos ) == 1 )

accum += m1;

m1 <= m1<<1;

}

Une simple machine a etat peut gouverner la boucle autant que le condi-tionnement. Comme illustre a la figure 3.16, nous tracons d’abord un graphede ses actions, etats et transitions qui la caracterisent.

Ce premier jet nous permet de specifier ensuite la machine a etat enfonction des signaux de controles qui ont ete prevus dans les elements fonc-tionnels, comme illustre a la figure 3.18. Apres avoir gere les signaux desortie, nous nous occupons du signal d’entree que represente la variable pos.Or pour boucler sur cette variable il nous faut avoir la capacite de compter :nous ajoutons un compteur pour generer un signal qui servira de transitionsuivant son etat haut ou bas (c.f. figure 3.17). Ainsi, le signal DEBORDEpermet d’identifier les cas de depassement de la variable pos. La figure 3.19resume les modifications apportees au graph

Simplification A la toute fin, il est parfois possible de reduire le nombred’etats. Dans notre exemple, nous pouvons concatener les etats a et e, si nousacceptons que la bascule de sortie soit activee a l’etat initial. Or, ceci est tout

61

Page 63: Notes de Cours VLSI

horloge

entrées

LD

INC OVFLW

CHARGE

INCPOS

DEBORDE

PSfrag replacements

2N−MAX BITS

compteur a N bits

Figure 3.17 – Compteur a N bits

RESET=’1’

RESET=’1’

RESET=’0’

pos=MAX_BIT

pos<MAX_BIT

BIT=’0’

BIT=’1’

CLEAR=’1’DECALE=’0’ADD=’0’

FIN=’0’

FIN=’1’

CLEAR=’0’

DECALE=’1’

ADD=’0’FIN=’0’

DECALE=’0’pos=pos+1

ADD=’1’

e

b

d

ac

Figure 3.18 – Graphe de l’automate en fonction des signaux a fournir aumultiplieur.

62

Page 64: Notes de Cours VLSI

RESET=’1’

RESET=’1’

RESET=’0’

DEBORDE=’1’

DEBORDE=’0’

BIT=’0’

BIT=’1’

CLEAR=’1’DECALE=’0’ADD=’0’FIN=’0’

FIN=’1’

INCPOS=’0’CHARGE=’1’

CLEAR=’0’DECALE=’1’INCPOS=’0’CHARGE=’0’ADD=’0’FIN=’0’

DECALE=’0’INCPOS=’1’

ADD=’1’

e

b

d

ac

Figure 3.19 – Graphe final de l’automate en fonction des signaux a fournirau multiplieur.

a fait acceptable puisque la bascule de sortie est barree a l’etat b et qu’il netransferera donc aucune valeur transitoire. Cela nous permet d’economiserun etat. La figure 3.20 illustre cette simplification.

Elaboration de ladite machine a etats

Specification du decodeur d’entrees Nous procedons a la table deverite a partir de la figure 3.19, qui est resumee dans le tableau 3.3. Cettetable decrit les conditions de transitions d’un etat a un autre, en fonctiondes signaux d’entree.

RESET=’1’

RESET=’1’

RESET=’0’

DEBORDE=’1’

DEBORDE=’0’

BIT=’0’

BIT=’1’

CLEAR=’1’ CLEAR=’1’

DECALE=’0’ DECALE=’0’

ADD=’0’ ADD=’0’

FIN=’1’

FIN=’1’ FIN=’0’

INCPOS=’0’

CHARGE=’1’

INCPOS=’0’

CHARGE=’1’

CLEAR=’0’

DECALE=’1’

ADD=’0’

FIN=’0’

INCPOS=’0’

CHARGE=’0’

DECALE=’0’

INCPOS=’1’

ADD=’1’

b

e

d

a

a

c

Figure 3.20 – Graph simplifie de l’automate du multiplieur

63

Page 65: Notes de Cours VLSI

(a) table de transition

etat entrees etatcourant RESET BIT DEBORDE suivant

a 1 X X aa 0 X X bb X X 0 cb X X 1 ac X 0 X bc X 1 X dd X X X b

(b) Etats codes sur deux bits

etat courant entrees etat suivantE1 E0 RESET BIT DEBORDE F1 F0

0 0 1 X X 0 00 0 0 X X 0 10 1 X X 0 1 00 1 X X 1 0 01 0 X 0 X 0 11 0 X 1 X 1 11 1 X X X 1 0

Table 3.3 – Table de verite du decodeur d’entrees

Puisqu nous avons 4 etats, nous codons les etats sur 2 bits, E1, E0 (etatcourant) et donc deux signaux de sortie de apres transition F1, F0. a devient(0,0), b, (0,1)...

De ce tableau, nous pouvons deduire une reduction du decodeur d’entrees.Soit un signal G tel que

G =

RESET, si etat courant = a,DEBORDE, si etat courant = b,BIT, si etat courant = c,

(3.4)

Il s’agit simplement d’un demultiplexeur qui selectionne le signal necessaireen fonction de l’etat de l’automate. Nous n’avons plus alors que 2 fonctionscombinatoires a 3 entrees a realiser, au lieu de 2 fonctions a 5 entrees. Ce qui

64

Page 66: Notes de Cours VLSI

RESET

DEBORDE

BIT

E1

E0

F0

F1

Figure 3.21 – Circuit final du decodeur d’entree

etat courant sortiesE1 E0 DECALE ADD CLEAR FIN INCPOS CHARGE

0 0 0 0 1 1 0 10 1 1 0 0 0 0 01 0 0 0 0 0 1 01 1 0 1 0 0 0 0

Table 3.4 – Table de verite du decodeur de sorties

se traduit par :

F1 = GE0 +GE1, (3.5)

F0 = E1E0 + GE0, (3.6)

et dont la figure 3.21 donne le circuit

Attention ⇒ Il va de soit que le circuit obtenu doit etre controle parune bascule synchronisee sur l’horloge (c.f. figure 3.7). Il nous faudraevidemment autant de bascules que de bits pour coder l’etat.

Et il faut par ailleurs s’assurer que la periode d’horloge respecte lalatence maximale du circuit combinatoire obtenue.

Specification du decodeur de sorties De meme, nous procedons audecodeur de sorties. La table 3.4 donne la table de verite.

Et le circuit final est donne par la figure 3.22

65

Page 67: Notes de Cours VLSI

E1

E0

ADD

DECALE

INCPOS

CHARGE / CLEAR / FIN

Figure 3.22 – Circuit final du decodeur de sortie

3.5.3 Resume des etapes de conception d’un automatefini

Dans le design sequentiel, apres avoir caracterise les elements fonctionnelset les parties sequentielles de controle, nous procedons a l’elaboration del’automate fini suivant les etapes suivantes

1. Specification de la sequence d’operations (p. ex. pseudocode) en fonc-tion des elements fonctionnels a piloter.

2. Elaboration du graphe initial (conceptuel, actions)

3. Elaboration du graphe intermediaire (signaux et variable)

4. Elimination des variables par l’ajout d’elements fonctionnels appro-pries.

5. Elaboration du graphe final

6. Determination de l’encodage des etats

7. Conception du decodeur d’entree (et simplification/reduction)

8. Conception du decodeur d’etats (transitions en fonction des etats).

9. Conception du decodeur de sorties.

Note : le decodeur d’entree et d’etats dans l’exemple precedent etait com-bine en une entite. Sur de grandes sequences (de nombreux etats et si-gnaux) toutefois, il peut etre plus simple de separer les deux decodeurspour les optimiser plus facilement.

66

Page 68: Notes de Cours VLSI

Regles et conventions

Finalement, nous citons les conventions suivantes dans le but de simplifierconception, verification et correction des circuits :

1. Les transitions s’effectuent sur la montee (ou la descente) de l’horlogeuniquement.

2. Les conditions sont indiquees sur les branches du graphe.

3. Les sorties dependent de l’etat courant, et non d’une quelconque tran-sition.

4. Les valeurs des sorties sont indiquees dans une boıte rattachee a unetat.

5. L’effet du signal RESET (qui doit ramener la machine a son etat dedepart) est toujours indique.

6. Prevoir un comportement par defaut pour les etats invalides

En respectant ces regles, nous nous protegeons de beaucoup d’erreur etd’incertitude sur le design d’un circuit. Par exemple, faire dependre une sor-tie sur une transition est une grave erreur. Car l’etape transitoire n’est pasprecise. De par la latence du systeme, les transitions ne seront pas instan-tanees. Nous n’aurons aucune certitude que la sortie soit reellement active,et non pas activee a tort de par un changement non stabilise du signal detransition.

67

Page 69: Notes de Cours VLSI

Deuxieme partie

FPGA et VHDL

68

Page 70: Notes de Cours VLSI

Chapitre 4

Historique du VHDL

69

Page 71: Notes de Cours VLSI

Chapitre 5

Les types de technologieslogiques

5.1 Technologies logiques

5.1.1 Vue d’ensemble

Nous avons brievement vu un historique du VLSI. Au travers des developpementspasses, nous disposons aujourd’hui de toute une panoplie de ressources dansles technologies logiques. La Figure 5.1 resume ces developpements.

Nous pouvons classer les technologies logique dans deux grands axes : lalogique programmee et la logique cablee. Il faut noter toutefois que les objetsqui permettent la logique programmee sont le resultat de developpementsspecifiques de la logique cablee. Toutefois, pour l’ingenieur face a un problemede design, la premiere question sera de choisir entre directement utiliser descomposants permettant la logique programmee (haut niveau d’abstraction)ou la logique cablee.

Dans la logique programmee, il convient de selectionner l’objet le plus ameme de repondre a nos besoins : DSP, GPU, microprocesseur. Le plus ver-satile, le microprocesseur, permet certes toutes les applications imaginables,mais n’offre pas necessairement la puissance de calcul requise. Le cas echeant,il faut se tourner vers des processeurs specialises : GPU, DSP. Ceux-ci re-quierent un paradigme de programmation plus contraignant (conceptuelle-ment) dans la mesure ou il faut adapter une logique sequentielle pour lafaire tourner en parallele et de facon souvent specifique aux capacites duDSP/GPU. Ainsi, le temps de developpement peut etre plus long.

70

Page 72: Notes de Cours VLSI

Logique

logique programmée

microprocesseur DSP ASIC

“Gate Array” (GA) semi-dédié (SC) dédié (FC) PLDs

SPLDs CPLDs FPGAs

logique standard (TTL, CMOS. . . )

1

GIF4201 - Microélectronique

GIF4202 - Conception de systèmes VLSI

logique câblée

Figure 5.1 – Arbre des technologies logiques

71

Page 73: Notes de Cours VLSI

Dans la logique cablee, il est aussi possible de realiser l’ensemble des fonc-tionnalites de la logique programme, mais les couts en terme de developpementseront encore plus importants, puisqu’ils comportent encore moins d’abs-tractions que la logique programmee. Toutefois, tout depend de l’applica-tion. Si vous souhaitez realiser un module de controle pour votre grille-pain(controle du temps, de la temperature, du mode decongelation, des afficheursLED,...), il serait probablement plus couteux (financierement) d’utiliser unmicrocontroleur, meme le moins cher, de realiser un PCB adequat et d’y sou-der les modules requis (senseur et controleur de puissance). La logique cableeest alors probablement plus adequate.

Dans la logique cablee, il convient aussi de choisir la technologie adequate.Cette technologie evolue toutefois si rapidement, que les pratiques changentaussi. Ainsi, il y a dix ans, le plus abordable aurait ete de prendre des com-posants de la logique standard (TTL/CMOS) pour notre grille-pain. Aujour-d’hui, les puces de logique cablee programmable coutent si peu cher (pourles plus petits modeles) que ce serait sans doute le choix. Ainsi un PAL(composant de logique programmable simple) coute entre $1 et $3 piece,alors qu’un FPGA de base peut se trouver pour $0.50 piece. Il est cependantimportant de comprendre que sont ces elements de logique standard pourcomprendre l’evolution des composants programmable. La prochaine sectionva donc detailler ceux-ci.

Un autre aspect a prendre en compte est celui du marche de notre appli-cation. Si nous esperons vendre notre grille-pain a 1 milliard d’exemplaires,une puce programmable peut revenir plus chere qu’une puce dediee : c’est-a-dire, une puce sur laquelle tout le design au niveau du transistor est realise.Tout simplement, plus la technologie choisie est elaboree, et moins standar-disee, plus le cout initial de developpement est important (financierement eten temps de conception) ; mais plus elle est rentable sur de grands nombres.

Une exception a cette regle tient dans les applications specifiques : mi-litaire, aerospatiale. Ces applications ont parfois besoin de petite quantite,mais de technologies si specifiques (resistance aux rayons cosmiques, ou autrescontraintes physiques) que la logique cablee programmable n’est pas necessairementdisponible. La encore, le marche des puces logique programmable est en pleindeveloppement, et cette realite est en train de changer.

Voyons maintenant un apercu des technologies de logique cablees.

72

Page 74: Notes de Cours VLSI

Logique standard. Traditionnellement, les circuits logiques sont construitsen formant un agregat de circuits integres simples et generiques. Differentesfamilles sont en usage :

– TTL (transistor-transistor logic) et ses variantes (74, 74L, 74S, 74LS00,74ALS00, 74AS00, 74F00) ;

– CMOS (complementary metal-oxide semiconductor) et ses variantes(4000, 4000B, 74C, 74HC, 74HCT, 74AC, 74ACT) ;

– ECL (emitter-coupled logic) ;Chacune de ces technologies definisses les aspects physiques et les modes

de fonctionnements, la facon de coupler ou d’assembler les elements, etc.

Reseaux de portes. Les reseaux de portes, ou Gate Arrays (GA), representeune technologie semi-dediee. Ces puces sont generiques et apparentees auxROMs. Leur fonctionnalite est specifiee en usine. Et a l’instar des ROMs, nepeut etre modifie.

A la base, il s’agit d’un arrangement physique standard d’elements lo-giques. Une premiere etape de fabrication y ajoute un masque d’intercon-nexion metallique qui va lui specifier la fonction.

Cellules standards De l’anglais Standard Cell (SC), ces circuits sontconcus en assemblant et en interconnectant des elements predefinis. Lestraces physiques des cellules sont predefinis. Les circuits sont semi-dedieset fabriques en usine.

ASIC Full Custom. Un ASIC ( application specific integrated circuit, cir-cuit integre pour une application specific) est, a la difference des puces delogiques standard, un circuit dedie. Il ne definit pas un standard, mais direc-tement une fonctionnalite, comme un processeur, une puce memoire...

Le terme Full Custom (FC) est pour le differencier des formes precedentesqui sont des ASICs non specifiques. A l’inverse de ces derniers, la concep-tion se fait directement au niveau du transistor. Le trace physique dans sonintegralite est specifique a l’application. C’est effectivement l’option la pluscouteuse au niveau de la conception. Mais elle permet une plus grande opti-misation en taille et en performance.

Dispositifs logiques programmables (PLDs).

73

Page 75: Notes de Cours VLSI

Definition. Un PLD, programmable logique device est un circuit integre quicontient– des elements distribues de logique sequentielle et combinatoire (portes,

bascules, cellules de memoire, etc.) ;– un reseau d’interconnexion partiellement ou totalement configurable.

De la meme facon que pour les GA ou SC, c’est le masque de connexionsqui specifie la fonctionnalite, le “programme”, dans un PLD est la configu-ration du reseau d’interconnexions qui permet de specifier un circuit et safonctionnalite.

Les PLDs se classent suivant leurs complexites ou leur technologique, cequi sera detaille a la section 5.1.2

Logique programmee, l’option DSP ou microprocesseur. Dans beau-coup d’applications (le traitement d’image, le “software radio”, le traitementacoustique, le controle moteur), les DSP, digital signal processor, sont encompetition directe avec les FPGAs, les CPLD et les ASICs FC. Il s’agit deprocesseur optimise pour le traitement du signal. Ils sont dotes d’une united’arithmetique rapide qui inclut un ou plusieurs multiplieurs paralleles.

Contrairement a l’architecture classique dite de Von Newman des proces-seurs (ou la sequence d’instructions et celle des donnees sont conjointes dansune cellule de memoire), les DSP epousent le plus souvent l’architecture ditede Harvard pour une plus grande performance (les donnees et les instructionssont separees dans des memoires dediees distinctes). L’objectif est de garantirle plus possible que le DSP dispose toujours de donnees a traiter sans qu’ilait a attendre l’acces aux donnees.

Dans une architecture de microprocesseur conventionnel au contraire,il faut user d’astuce d’architecture pour compenser les temps d’acces a lamemoire. Un processeur aura ainsi une memoire cache.

Tableau comparatif

Le tableau 5.1.1 resume les differences des differentes technologies.

5.1.2 Classification des dispositifs logiques program-mables (PLDs)

Les PLDs peuvent etre classes suivant

74

Page 76: Notes de Cours VLSI

Technologie DSP FPGA SC ou FCDeveloppement tres rapide rapide lent ou tres lentExecution lente rapide tres rapideCout d’une compo-sante (pour une forteproduction)

$$$—$$$$ $$$—$$$$$ $-$$

Cout initial(developpement, etfaible production)

$$ $$$$ $$$$$$$

Reconfigurabilite facile (firm-ware logiciel)

eventuellement,selon la tech-nologie

inexistante

– leur architecture / structure interne ;– la technique de programmabilite ou de reprogrammabilite employee.

Classification structurale

Suivant leurs architectures, nous distinguerons

PLDs simples, ou SPLD regroupe les premiers elements programmables,tels les PALs, les PROM, ou les PLA, qui seront decrits a la section5.1.3. Leurs caracteristiques sont :– un ensemble d’elements logiques sur un bus unique d’interconnexions ;– une faible densite (de portes logiques) ;– peu ou pas de logique sequentielle.

Les PLDs de complexite moyenne se caracterisent par :– un ensemble d’elements logiques sur un bus unique d’interconnexion ;– une densite moyenne ;– ils maintiennent la structure de bus unique des SPLDs.

Les PLDs complexes dit CPLD se caracterisent par :– une densite elevee ;– un assemblage de structures completes de PLD de complexite moyenne

pour qui forment leur bloc de base ;– Un bus d’interconnexions programmable additionnel qui relie les

blocs de base.

Les PLDs complexes dit FPGA se caracterisent par :

75

Page 77: Notes de Cours VLSI

CPLDs FPGAsstructure derivee des PALs s’apparente aux reseaux de portes

semi-dedies (GA)logique surtout combinatoire combinatoire et sequentielle

memoire distribuee non oui (dans certains FPGAs)delais de propagation previsibles difficiles a prevoir

Table 5.1 – Caracteristiques qui differencie les CPLDs des FPGAs

– une densite elevee ou tres elevee ; une matrice de cellules logiquesdans un “ocean” de ressources d’interconnexions diverse ;

– une plus grande versatilite que les SPLD et CPLD ;– une plus grande capacite a coder la logique sequentielle puisqu’ils

contiennent beaucoup plus de bascules que les CPLDs.

Il est a noter toutefois que la difference entre CPLD et FPGA est une ques-tion de strategie de technologie historique. Aussi, actuellement la frontiereentre ces entites devient de plus en plus floue.

Dans les grandes lignes toutefois, le tableau 5.1 resume les caracteristiquesqui les differencient.

Classification selon la programmabilite

Une interconnexion programmable dans un PLD correspond a– l’absence ou la presence d’un “fil”, c.-a-d. d’un element conducteur

entre deux points ;– un bit de memoire, ce qui est equivalent.Selon les types de PLDs, les donnees correspondant aux interconnexions

programmables peuvent etre ecrites de facon– permanente (fusible, antifusible) ;– semi-permanente (EPROM, EEPROM, EPLD, EELD) ;– volatile (SRAM).

Dans la programmabilite permanente, les interconnexions sont “brulees”lors de la programmation. Ainsi aucune modification subsequente n’est pos-sible.

Deux technologies sont en usage :

76

Page 78: Notes de Cours VLSI

substrat de type p

n+ n+

polysilicium

contact draincontact source grille 2

grille 1

Figure 5.2 – Schema d’un floating-gate MOSFET

– les liens-fusibles (fuse) sont des fils extremement minces qui peuventetre desintegres par l’application d’un voltage eleves (ce qui rompt laconnexion). Les PALs et PROMs utilisent generalement cette techno-logie.

– les antifusibles (antifuse) sont des connexions isolantes qu’un voltageeleve peut rendre conductrices. Certains FPGAs d’Actel utilisent cettetechnologie.

Pour la programmabilite semi-permanente (EPLD) , erasable pro-grammable logic device, un voltage eleve (comme pour les liens-fusibles) per-met de programmer une connexion. Cela active une memoire qui “sauvegar-de” la charge appliquee. La programmation est quasi-permanente, 70% de lacharge demeure apres 10 ans. Selon la technologie, la programmation peutetre effacee soit electriquement (EEPROM) soit par exposition a la lumiereUV. De tels circuits peuvent etre reprogrammes un grand nombre de fois(10000 et plus).

Technique de programmation

Programmation non volatile La programmation d’un EPLD s’effec-tue grace a un floating-gate MOSFET, soit un transistor MOSFET dont laconductivite de la grille est controlee par un champ electrique. La Figure 5.2illustre la double grille isolee par une couche de polysilicium. En fonction de lacharge presente, la grille sera conductrice (le transistor fonctionnera commeun MOSFET normal), ou ouverte : la grille n’agira pas sur le transistor quirestera un circuit ouvert.

Selon la technologie, l’application d’un voltage ou de rayons UV fera sedissiper la charge pour reinitialiser la programmation du transistor.

77

Page 79: Notes de Cours VLSI

+5V

+5V

+5V

+5V

grille flottante("floating gate")

Porte AND("Wired AND")

Figure 5.3 – Illustration du bus d’interconnexion de wired-AND, ou logiqueET cablee.

Ces transistors permettent de programmer la connexion d’un bus dansune technologie de CI, comme illustre a la Figure 5.3.

Programmation volatile D’autres circuits utilisent des SRAM static ran-dom access memory pour stocker la configuration du reseau d’interconnexion,tels les FPGAs de Xilinx. Dans ce cas, a chaque allumage et reset, ces cir-cuits doivent recuperer leur configuration a partir d’une composante externe(PROM serielle, microprocesseur hote, etc.). La memoire de la connexion estdonc l’equivalent d’un ET entre le fil d’entree, le fil de sortie, et l’etat de lamemoire, qui doit etre initialise a l’allumage.

L’avantage de cette technologie et sa modularite qui permet une re-configuration dynamique, ou en operation, du EPLD. La frontiere logiciel-materiel devient floue, puisque le materiel peut etre directement programmepar l’execution du logiciel, ou meme du circuit.

La reprogrammation du dispositif est facile et rapide. Il ne necessite pasde voltages eleves ni d’UV. Et le nombre de cycles d’ecriture est a toutes finspratiques infini.

5.1.3 Types de PLDs simples

Les PLDs simples se resument essentiellement au PROM (programmableread-only memory) et ses variantes (EPROM, EEPROM, OPT-ROM), les

78

Page 80: Notes de Cours VLSI

PALs (programmable array logic) et les PLAs (programmable logic array).

PROM

Une PROM est une plage de memoire. Elle peut servir a implanter unefonction de logique combinatoire. Elle sert simplement a stocker la table deverite exhaustive de la fonction desiree. Et en ce sens, une PROM est unPLD primitif.

Par exemple, une memoire de 16×1 positions peut servir a l’implantationde n’importe quelle fonction combinatoire a 4 entree et une sortie. Commenous l’avons vu pour le multiplieur 12 bits, cette solution bien que flexibleest gourmande en ressources logiques.

La structure d’un PROM est toutefois interessante en regard aux struc-tures des PAL et PLA. Elle dispose d’un plan ET fixe et exhaustif (in-cluant les entrees et leur inverse), afin d’adresser chacune des combinaisonsd’entrees. Il s’en suit un plan OU qui lui est programmable. C’est-a-dire qu’ilest possible de faire des liens qui definissent quelles combinaisons d’entrees ac-tivent la sortie. En cela une sortie est un OU de toutes les combinaisons (ET)des entrees qui l’active, comme illustre a la figure 5.4. L’expression ecrite estdonc une fonction disjonctive sous la forme S0 = Sx.Sy.Sz +Sn.Sm. · · ·+ · · · .

Le desavantage de la PROM est qu’elle ne factorise pas cette expressiondisjonctive, et demande donc des ressources en consequence pour la fonctiondesiree. Les PALs en revanche, permettent une factorisation, si la fonction lepermet et consomme donc moins de ressources.

Les PALs programmable arrays logic

A l’oppose des PROMs, les PALs ont un plan ET programmable et unplan OU. Une ressource d’un PAL permet de combiner une quantite finie determes dans un OU, mais chaque terme peut comprendre n’importe quellecombinaison de ET des entrees (incluant les inverses des entrees). La Figure5.5 represente un schema simplifie du PAL sur le meme modele que le schemad’une PROM (Figure 5.4) qui temoigne de la difference conceptuelle de cesdeux entites.

Les notations des composantes PALs refletent le nombre d’entrees et desorites. Un PAL 16L8 aura donc 16 entrees et un bus permettant toutes lescombinaisons, mais permettant un nombre limite de ses combinaisons d’etre

79

Page 81: Notes de Cours VLSI

I0I1I2

O0O1O2O3

Plan ET (fixe)

Plan OU (programmable)

Figure 5.4 – Shema d’interconnexion du plan OU et d’adressage exhaustifdu plan ET representant une PROM

I0I1I2

O0O1O2O3

Plan ET (programmable)

Plan OU (fixe)

I3I4

Figure 5.5 – Schema simplifie d’un PAL

80

Page 82: Notes de Cours VLSI

2

3

B

C

1

18F

A

B

C

F

Connexionsprogrammables

Figure 5.6 – Schema detaile d’un PAL 16L8, 10 entrees dediees, 2 sortiesdediees, 6 entrees/sorties, et 64 p-terms

2

3

B

C

1

18F

A

B

C

F

Connexionsprogrammables

Figure 5.7 – Exemple de configuration d’un PAL

additionne par le plan OU fixe pour chacune de ses 8 sorties. De meme, unPAL 22V10 aura 22 entrees et 10 sorties. La Figure 5.6 illustre le schema endetail de la PAL.

Exemple d’utilisation. La Figure 5.7 illustre la configuration d’un PALpour realiser la fonction

F = A+B.C (5.1)

Il suffit de realiser les liens adequats dans le bus d’interconnexion. Evidemment,des fonctions bien plus evoluees sont possibles. La realisation d’un tableaude Karnaugh sur une table de verite nous donnera directement l’ecrituresous forme factorisee disjonctive qui simplifie la programmation du PAL.L’elaboration de fonction plus complexe est aussi possible en utilisant leresultat d’une sortie qui est disponible sur le bus d’interconnexion. Attentiontoutefois aux boucles dans un circuit logique.

81

Page 83: Notes de Cours VLSI

D Q

Q

D Q

Q

D Q

Q

D Q

Q

16R4

PLA

64 p-termes

Certaines sorties

sont munies de bascules

Figure 5.8 – PAL 16R4 a bascules

Les PALs a bascule Certains PALs se voient rajouter des elements delogique sequentielle qui permettent la encore la realisation de fonction pluscomplexe. La famille 16RX de AMD dispose de bascule D avec une patte quipeut servir d’horloge. Elles permettent alors de realiser des machines a etatsrelativement simples. La logique combinatoire de la PAL pouvant servir audecodeur d’entree, et les sorties reinjectees dans la PAL qui permettent derealiser le decodeur de transition d’etat. Il suffira d’ajouter au besoin uneautre PAL pour le decodeur de sorties. La Figure 5.8 donne le schema d’untel composant.

Les PLAs progammable logic array

Il sont aussi appeles filed programmable logic array (FPLA). Ils sont unegeneralisation des PALs et PROMs : les deux plans ET et OU sont program-mables.

Etant plus flexibles, ils permettent une minimisation accrue des fonctions.Ils sont toutefois plus complexes et plus onereux que les PALs et PROMsequivalents. De plus, le delai entree-sortie est plus eleve que les PALs etPROMs a niveau de technologie physique (implantation des transistors, fi-nesse de gravure) equivalent.

82

Page 84: Notes de Cours VLSI

Macrocell 1

Macrocell 2

Macrocell 7

Macrocell 8

6 blocs de sortie

identiques

Figure 5.9 – Stucture du EPLD GAL 16V8 du fabricant Lattice.

5.1.4 PLDs de complexite moyenne

Les PLDs de complexite moyenne constituent une evolution incrementalepar rapport aux SPLDs. Ils sont generalement plus denses que les SPLDset plus sophistiques. Et la ou les SPLD sont le plus souvent programmablesune fois (fusible), ceux-ci sont generalement programmables electriquementet effacable soit par UV (EPLD) ou electriquement (EEPLD). Ainsi, lesPLDs de complexite moyenne sont souvent designes sous le vocable EPLDou EEPLD.

On retrouve dans les EPLDs, les Altera EP300, ou AMD 22V10. Et pourles EEPLDs, les Lattice GAL 16V8 ou AMD 22V10-CMOS.

Certains EEPLDs sont concus pour etre effaces et reprogrammes a l’interieurmeme du systeme cible. Quelques pattes sont alors employees pour la pro-grammation. De telles composantes sont designees ISP (In-System Program-mable).

On retrouve dans ces PLDs, l’architecture des SPLD, a bus unique surle plan ET. En revanche, le plan OU est suivit de macrocellules comprenantune logique sequentielle et/ou combinatoire programmable.

GAL 16PV8.

La Figure 5.9 donne le schema d’un EPLD 16VP8. A 16 entrees et 8sorties, avec ses macrocellules.

83

Page 85: Notes de Cours VLSI

D Q

Q

XOR

CLK

OE

XOR

XOR

+5V

Figure 5.10 – Les differents mode d’un macrocellule du GAL 16VP8

Les macrocellules sont des elements standard, configurables, qui per-mettent donc plusieurs modes. Ils disposent dans ce cas d’une bascule, quipeut etre court-circuitee, d’un inverseur de sortie qui peut etre actif oucontrole par une entree, d’une programmation de l’entree de la bascule pourla rendre active a niveau haut ou bas (soit un XOR sur l’entree de la bas-cule, avec le signal de configuration). Et bien sur, d’un signal (commun) del’horloge des bascules.

Les schemas a la Figure 5.10 illustrent les differents modes d’une macro-cellule du GAL 16VP8.

Famille EP3xx d’Altera

Un EPLD de la famille EP3xx d’Altera comprend la meme structure,bus ET d’interconnexion et macrocellules avec bascules et horloge globale.Elle ajoute cependant des bascules d’entrees qui permettent d’echantillonnerl’entree pour conserver sa valeur. Ces bascules sont controlees par une entreesupplementaire, qui peut aussi bien etre reliee a l’horloge. Le schema duEP3xx est donne a la Figure 5.11

Les macrocellules du EP3xx sont aussi complexes. Elles utilisent des mul-tiplexeurs pour choisir de court-circuiter la bascule, ou controler quels si-gnaux les gouvernent. L’entree de la bascule peut etre programmee pour etreactive sur niveau haut ou bas. Et il existe des liens programmables entre les

84

Page 86: Notes de Cours VLSI

Macrocellule 1

Macrocellule 2

Macrocellule 3

Macrocellule 4

Macrocellule 5

Macrocellule 8

Macrocellule 9

Macrocellule 10

Macrocellule 12

Macrocellule 6

Macrocellule 7

Macrocellule 11

Bus

Global

Bascules d’entree

Input Latch Enable / Input Clock / Input 2

Horloge globale

Horloge globale

Clock / Input 1

Figure 5.11 – Schema d’un EP3xx, avec son bus programmable, ses macro-cellules, ses bascules d’entrees et ses entrees/sorties.

85

Page 87: Notes de Cours VLSI

4

4

Bus global

A la macrocellule De la macrocellule

A la macrocellule suivante De la macrocellule suivante

Controled’allocation

precedenteprecedenteHorloge globale

PRN

D/T Q

CLK

Controle d’inversion

Multiplexeur de l’horloge

Multiplexeurde sortie

Activation de la sortie

Registreprogrammable

Plan ET programmable

Figure 5.12 – Schema d’une macrocellule du EP3xx.

macrocellules adjacentes. Le schema est donne a la Figure 5.12

5.1.5 Les CPLDs

Definition. Les CPLD sont des evolutions des SPLDs et des EPLDs dontla structure d’interconnexion est plus sophistiquee pour permettre deplus grandes densites.

La structure venerable des SPLDs (un plan ET programmable partagepar toute la puce) devient inappropriee lorsque le nombre de ressources lo-giques depasse un certain seuil. La solution consiste a ajouter une dimensiona la structure : la structure d’un SPLD ou EPLD est repliquee plusieursfois, et un bus additionnel de haut niveau permet l’interconnexion program-mable entre ces blocs. On realise donc dans un CPLD la meme chose qu’avecplusieurs SPLD/EPLD sur une carte routee, sauf que ceci est alors integredans une puce, pour un fonctionnement plus rapide, mais surtout pour unereprogrammabilite.

Ces CPLDs sont generalement programmables et reprogrammables electriquement.La technologie UV ayant tendance a disparaitre. Une technologie EEPROMet plus recemment de FLASH est alors employee.

86

Page 88: Notes de Cours VLSI

Bloclogique

Bloclogique

Bloclogique

Bloclogique

Bloclogique

Bloclogique

Bloclogique

BloclogiqueR

esea

u d’

inte

rcon

nexi

ons

prog

ram

mab

le

"Pro

gram

mab

le In

terc

onne

ct"

(PI)

I/O I/O

Figure 5.13 – Schema de haut niveau d’un CPLD.

La figure 5.13 represente la structure de haut niveau d’un CPLD avec sesblocs logiques (strucutre SPLD/EPLD), reseau d’interconnexion program-mable global et ses entrees/sorties.

La famille XC95xx.

Un exemple de CPLD a memoire FLASH, la famille XC95xx. La configu-ration etant stockee en FLASH. La memoire FLASH derivee des EEPROM(memoire effacable par l’application d’un voltage elevee) offre l’avantaged’une plus grande rapidite pour la reprogrammer. La technologie supportejusqu’a 10000 cycles d’ecriture. Ces puces se retrouvent en differente taille,de 36 a 288 macrocellules, et jusqu’a 64000 portes. Le tableau 5.2 resume lescaracteristiques des differents modeles.

Ses autres caracteristiques sont :– un delai de propagation entree-sortie et entre 5 a 10 ns ;

87

Page 89: Notes de Cours VLSI

3

1

2 ou 4

E/S

E/S

E/S

E/S

Blocs

d’E/S Matrice de commutationFastCONNECT

Blocfonctionnel 1

Blocfonctionnel 2

Blocfonctionnel 3

Blocfonctionnel 4

Port JTAG ControleurJTAG Controleur ISP

3

Horlogesglobales

Set / Resetglobal

GlobalTri-states

Figure 5.14 – Schema de haut niveau d’un XC95

9536 9572 95108 95144 95216 95288Macrocellules 36 72 108 144 216 288Portes 800 1600 2400 3200 4800 6400utilisablestPD (ns) 5 7.5 7.5 7.5 10 10Registres 36 72 108 144 216 288E/S max. 34 72 108 133 166 192

Table 5.2 – Les differents modele de la famille XC95xx.

– des signaux globaux : le RESET, l’horloge, et un controle de tri-state(haute impedance). Ce dernier permet de decoupler electroniquementune sortie du reste du circuit, comme si la sortie n’etait alors plusconnectee ;

– un controleur JTAGLa Figure 5.14 presente le schema du XC95xx. On y retrouve naturelle-

ment un bus d’interconnexion, ici denomme matrice de commutation Fast-CONNECT pour connecter les blocs fonctionnels (les SPLD/EPLD integres).Le bloc d’entrees/sorties peut aussi etre controle pas l’etat tri-state. En plusde ce schema traditionnel, on retrouve un controleur JTAG et un autre ISP.Le premier est un module de test, qui permet d’executer une sequence testdirectement dans la puce pour en valider son fonctionnement. Le second, lein-system programming permet de controler la programmation du CPLD etcomprend la memoire FLASH de sa configuration.

Le bloc fonctionnel (XC9500). Nous retrouvons dans les blocs fonction-nels (Figure 5.15(a)) la structure des EPLDs : Le reseau ET configurable, un

88

Page 90: Notes de Cours VLSI

Macrocellule 1

Macrocellule 18

36

En provenance deFastCONNECT

FastCONNECTVers

Horlogesglobales

GlobalTri-states

E/S

E/S

Distributeur

de p-termes

Reseau

ET

32 ou 4

(a) Schema d’un bloc fonctionnel du XC9500

36 entreesD/T Q

Bloc d’E/S

E/S

Bloc fonctionnelMatrice de commutationFastCONNECT

Wired ANDcapability

18

(b) Scehma de connexion d’u bloc avec le reseau d’interconnexionFastCONNECT

Figure 5.15 – Details des blocs fonctionnels du XC95.

distributeur p-termes (une serie de OU sur p termes en ET) et les macrocel-lules, avec trois horloges globales programmables et les signaux de Tri-statespour controler les sorties.

Les Xilinx Cool Runner XPLA3

Les XPLA3 sont autre exemple de CPLD, celui-ci destine au marche del’embarque (telephones cellulaires, ordinateurs portatifs ou de poche, etc.) Ilssont caracterises par une faible puissance, avec une consommation statiquede 100 µA. Par ailleurs, une autre caracteristique particuliere est le supportd’horloges locales : le minutage asynchrone. Celui-ci permet de controler desblocs de logique synchrone independamment et ainsi ne faire fonctionner quedes blocs specifiques a une certaine frequence, afin par exemple de diminuer

89

Page 91: Notes de Cours VLSI

XCR3032XL XCR3064XL XCR3128XL · · · XCR3512XLmacrocellules 32 64 128 · · · 512portes utilisables 800 1600 3200 · · · 12800registres 32 64 128 · · · 512TPD (ns) 5 6 6 · · · 7.5Fsysteme (MHz) 175 145 145 · · · 125

Table 5.3 – Les differents modeles du XPLA3.

la consommation globale. Ils disposent aussi naturellement d’une program-mabilite EEPROM jusqu’a 1000 cycles et une retention de 20 ans, un blocISP pour controler le EEPROM et un bloc JTAG de test sur puce.

Le XPLA3 est offert sur le marche suivant differentes complexites commeresume dans le tableau 5.3

5.1.6 Les FPGAs

Dans cette section, nous voyons un apercu des FPGA pour en soulignerles differences conceptuelles des CPLDs classiques. La section suivante 5.2detaillera ensuite cette technologie.

Premierement, les FPGAs font leur apparition en 1984 sous la forme desLCA (Logic Cell Array) de Xilinx.

Definition. Un FPGA est constitue d’une matrice de blocs logiques confi-gurable dans un “ocean” de ressources d’interconnexion.

Ainsi, dans un FPGA, nous ne retrouvons pas la structure de blocsSPLD/EPLD interconnectee. Les blocs logiques sont configurables et contiennentde la logique sequentielle et de la logique combinatoire. Surtout, les ressourcesd’interconnexion sont abondantes et diversifiees. Nous trouvons

1. des ressources locales (connections entre blocs adjacents),

2. distribuees (connections longues)

3. et aussi globales (p. ex. pour l’horloge).

La complexite d’un bloc, donc sa granularite peut varier d’une famille al’autre. Finalement, les entrees/sorties sont souvent programmables suivantles niveaux logiques (tri-state) inversion, latch, etc.

Cette particularite de la diversite du reseau d’interconnexion font que lesFPGA s’apparentent plutot aux reseaux de portes semi-dedies (GA), avec

90

Page 92: Notes de Cours VLSI

36 entreesD/T Q

Bloc d’E/S

E/S

Bloc fonctionnelMatrice de commutationFastCONNECT

Wired ANDcapability

18

Figure 5.16 – Illustration simplifiee d’architecture FPGA Xilinx

pour difference que le reseau et programmable ; tandis que les CPLDs sontderives des PALs. La Figure 5.16 illustre cette diversification.

Les FPGAs de plus particulierement doues en logique sequentielle puis-qu’ils contiennent normalement beaucoup plus de bascules que les CPLDs.Leur technologie de programmabilites peuvent aussi bien etre des SRAM,EEPROM ou antifusible.

Nous choisirons un FPGA pour une application cible, en fonction de l’ar-chitecture interne des cellules (la granularite) ainsi que de la nature et ladensite des ressources d’interconnexion disponibles.

5.2 Les FPGAs

5.2.1 Les FPGAs de Xilinx

Generalites

Les caracteristiques particulieres des FPGA Xilinxs sont– un maintient de la configuration en memoire vive SRAM ;– des blocs logiques configurables qui contiennent au moins

– deux bascules ;– des tableaux (LUTs, look-up table) servans a l’implantation de fonc-

tions combinatoires, ou bien de petits blocs de memoire vive syn-chrone a double port ou simple port.

Par ailleurs, l’implantation de SRAM l’aide de LUTs etant inefficace, cer-tains FPGAs de Xilinx contiennent des blocs de memoire dedies et distribuesa travers la matrice.

91

Page 93: Notes de Cours VLSI

Caracteristiques de programmabilite SRAM. L’avantage premier desSRAM est une reconfiguration rapide (moins d’une seconde) et un nombrede cycles d’ecriture illimite. Ainsi, la reconfiguration en fonctionnement estrendue possible, ce qui est beaucoup plus elabore que le module ISP re-trouve dans d’autres technologies CPLD. En revanche, cette technologienecessite un support externe pour la configuration et donc un encombrementsupplementaire.

En revanche, dans certaines applications ou les FPGAs peuvent etre sou-mis a des radiations (e.g satellites), la technique SRAM est consideree commemoins stable : la radiation peut entraıner une corruption de la configuration.Aussi, puisque la sequence de configuration est externe, elle peut etre inter-ceptee. Les designs sont susceptibles au reverse-engineering.

Finalement, les liens programmables via SRAM occupent beaucoup desuperficies et dissipent de la chaleur. Les FPGAs de Xilinx ont alors unegranularite grossiere. Les blocs logiques sont relativement complexes.

On considerera l’utilisation des FPGAs de Xilinx pour choisir– un volume faible et/ou– un design peu complexe (basse densite).La Figure 5.17 illustre les familles de FPGAs Xilinx. Nous detaillons

ensuite quelques une de ces familles

Famille 4000

Les familles XC4000E ou XC4000X representent une famille standard.C’est une famille intermediaire en option de routage qui en comporte plusque la famille Spartan, et moins que les Virtex. Elle comport entre 466 et7448 blocs logiques denommes CLBs (configurable logic bloc, bloc logiqueconfigurable) qui representent entre 10 milles et 180 mille portes, ainsi que112 a 448 entrees/sorites programmables. Le tableau 5.4 resume les differentsmodeles et leur complexite.

La famille XC4000XC rajoute des composantes de plus haute densite :entre 9728 et 20102 CLBs et 235 a 500 milles portes.

Cette famille est discontinuee depuis 2002, au profit des Spartan et Virtexqui sont derives de cette famille.

Nous retrouvons dans cette architecture des ressources specialisees,parmi lesquelles,

– des circuits de propagation de la retenue ;

92

Page 94: Notes de Cours VLSI

2006

2000

3000

4000

4000XLA

5200

Spartan Virtex

Spartan 2

1985

1991

1998

Virtex II

Spartan 3

Spartan 2E Virtex IIPro

Virtex 4

Virtex 5

Virtex 6

Spartan 6

faible cout famille standard haute performance FPGA plate−forme

2003

Figure 5.17 – Familles de FPGAs Xilinx.

Composantes Portes Max. RAM Max. No. d’elements Matrice E/S Max.(pas de RAM) (pas de logique) typique CLB

(logique+RAM)

XC4002XL 1600 2048 1000-3000 8 × 8 64

XC4003E 3000 3200 2000-5000 10 × 10 80

XC4005E/XL 5000 6272 3000-8000 14 × 14 112

XC4006E 6000 8192 4000-12000 16 × 18 128

XC4008E 8000 10368 6000-15000 18 × 18 144

XC4010E/XL 10000 12800 7K-20K 20 × 20 160

XC4013E/XL 13000 18432 10K-30K 24 × 24 192

XC4020E/XL 20000 25088 13K-40K 28 × 28 224

XC4025E 25000 32768 15K-45K 32 × 32 256

XC4026EX/XL 26000 32768 18K-50K 32 × 32 256

XC4036EX/XL 36000 41472 22K-65K 36 × 36 286

XC4044XL 44000 51200 27K-80K 40 × 40 320

XC4052XL 52000 61952 33K-100K 44 × 44 352

XC4062XL 62000 73728 40K-130K 48 × 48 384

XC4085XL 85000 100352 55K-180K 56 × 56 448

Table 5.4 – Membres de la familles XC4000 de Xilinx

93

Page 95: Notes de Cours VLSI

CLB

248464412

12

4

8

2

3

2

Quad Long Horlogeglobale

Long Double Single Horlogeglobale C

arry Direct

Connect

Quad

Single

Double

Long

DirectConnect

Long

Figure 5.18 – Illustration de la diversite de ressources de connexions dansun FPGA Xilinx.

– des signaux globaux sur bus dedie : reset, horloge, tri-state, etc ;– des circuits de generation d’horloges

Types de connexions

L’architecture Xilinx propose – comme caracteristique des FPGA – unevariete de ressources de connexion. Nous trouvons :

1. des connexions directes (serie XC4000X seulement)

2. des liens simples

3. des liens doubles

4. des liens quadruples (serie XC4000X seulement)

5. des liens longs.

La figure 5.18 illustre ce reseau de ressources de connexion qui entoure unCLB.

Les differents reseaux de connexions peuvent etre relie entre eux par desPSM programmable switch matrix, ou matrice de connexions programmable.Et certains sont relies directement aux CLB.

Les liens directs relient deux CLBs adjacents.

Les liens simples relient deux PSMs adjacentes.

94

Page 96: Notes de Cours VLSI

XC4000E XC4000XLiens vert horiz vert horizsimples 8 8 8 8doubles 4 4 4 4quadruples 0 0 12 12longs 6 6 10 6connections 0 0 2 2directesglobaux 4 0 8 0propag. de 2 0 1 0la retenuetotal 24 18 45 32

Table 5.5 – Nombre de ressources de connexions dans les XC4000

Les liens doubles relient deux PSMs separees par une PSM.

Les liens quadruples relient deux PSMs separees par 3 PSMs.

Les liens longs traversent la puce de part en part, soit horizontalementou verticalement (ils peuvent toutefois etres separes en deux moitiesindependantes de longueur egale).

Le tableau 5.5 resume le nombre des ressources de connexions de chaquetype.

Les connexions directes sont caracterise par des delais de propagationminimums. Leur utilisation n’affecte pas les ressources d’interconnexion glo-bales. La figure 5.19 illustre comment ce reseau relie differents CLBs voisins.

Les connexions simples offrent une grande flexibilite de parcours. Lepassage d’une connexion simple au travers d’une PSM entraıne un delai. Cetype de connexion se prete surtout aux liens de nature locale et pour ac-commoder les reseaux dont le fan-out est plus grand que 1. En d’autrestermes, cette ressource est utile pour connecter une sortie vers plusieursautres entrees d’autres blocs. La Figure 5.20 illustre la structure de cetteressource de connexion qui connecte les CLBs aux PSM.

Les connexions doubles offrent une plus grande rapidite que les connexionssimples pour les liens de longueur intermediaire. Elles maintiennent toutefois

95

Page 97: Notes de Cours VLSI

IOB

IOBCLB CLB CLB

IOB

IOB

IOB

IOBCLB CLB CLB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

Figure 5.19 – CLBs voisin relie par des connexions idrectes.

CLB

F4 C4 G4 YQ

Y

G3

C3

F3XQ F2 C2 G3

G1

C1

K

F1

X

Switchmatrix

Switchmatrix

Switchmatrix

Switchmatrix

Figure 5.20 – Schema de connexion des reseaux simples sur FPGA Xilinx.

96

Page 98: Notes de Cours VLSI

CLB CLB CLB

CLBCLBCLB

Figure 5.21 – Illustration du schema d’interconnexion double dans lesFPGA Xilinx.

une bonne flexibilite de parcours. La Figure 5.21 illustre ces reseaux connec-tant differents reseaux verticaux/horizontaux entre eux au travers des PSM.

De la meme maniere les connexions quadruples permettent des liensrapides un peu plus longs, mais entraınent une certaine penalite dans laflexibilite du parcours.

Les liens longs, finalement, sont des liens metalliques horizontaux ou ver-ticaux qui traversent la puce de part en part et relient directement les CLBscomme l’illustre la Figure 5.22. Il servent a l’implantation de reseaux :

– de fan-out eleve ;– qui sont distribues sur de grandes distances ;– dont le minutage (timing) est critique.

Ils peuvent etre divises en 2 (en 4 dans la serie XC4000X) sections egalesindependantes, couvrant chacune la moitie de la longueur de la puce. Dansla famille XC4000X, les liens quadruples sont preferables pour les reseauxa minutage critique puisque les tampons des PSM rendent ces derniers plusrapides.

Ce qu’il faut retenir de ces types connexions, c’est leur diversite a lafois qualitative/quantitative (pour leur application specifique) que structural(pour leur capacite de combinaisons elaboree). Necessairement les combinai-sons de routage sont nombreuses. Aussi, un logiciel approprie, le logiciel demappage, permettra la configuration du FPGA.

97

Page 99: Notes de Cours VLSI

CLB

F4 C4 G4 YQ

Y

G3

C3

F3XQ F2 C2 G3

G1

C1

K

F1

X

"Global"Long Lines

"Global"Long Lines

Figure 5.22 – Schema representant les interconnexions longues.

Les blocs logiques

Les blocs logiques sur Xilinx sont relativement elabores. Chaque bloccomprend 3 tableaux servant soit

– a implanter de la memoire vive, soit– a implanter des fonctions logiques combinatoires.

Chaque bloc comprend par ailleurs egalement 2 registres pouvant etre confi-gures soit

– comme bascule, soit– comme verrou.

La Figure 5.23 donne le schema typique d’un bloc logique Xilinx

Les tableaux LUTs Les Look-up table (LUTs) sont des tableaux a l’imagedes EPROM (a memoire volatile toutefois). Un bloc logique contient 2 LUTsa 4 entrees (nommees F et G) et une LUT a 3 entrees (nommee H). Ceux-cipeuvent servir a implanter toute paire de fonctions logiques combinatoiresa 4 entrees (LUTs F et G), ou des fonctions plus complexes en combinantles LUTs. Ils peuvent aussi servir de blocs de memoire vive, selon differentescombinaisons :

– 2 blocs a port unique de 16× 1 chacun (LUT F et G) ou ;– un bloc a port unique de 32× 1 ;– ou un bloc de memoire a double port 16× 1.

Les registres sont au nombre de 2 dans un bloc et peuvent etre configures– comme bascule ou verrou ;

98

Page 100: Notes de Cours VLSI

G1G2G3G4

G Func.Gen.

F1F2F3F4

F Func.Gen.

H Func.Gen.

K "1"

"1"

D

EC

QSD

RD

S/RControl

D

EC

QSD

RD

S/RControl

C1-C4

YQ

Y

XQ

X

3 Look-up tables2 bascules

4

H1DIN/H2 SR/H0 EC

DIN

DIN

F’G’H’

F’G’H’

G’

H’

H’

F’

Bypass

Bypass

Figure 5.23 – Schema d’un bloc logique Xilinx.

– pour se declencher sur une transition positive ou negative de l’horloge ;– pour etre dotes d’une entree SET ou RESET, lequel signal peut avoir

une provenance locale ou globale.

Les IOB finalement sont les blocs d’entrees/sorties (input/output blocks)et permettent une configuration elabore des sortie, pour les rendre synchronesavec l’utilisation de bascules, leur permettre un etat Tri-state, etc. La Figure5.24 donne le schema d’un tel bloc.

La famille Spartan IIE

La famille Spartan IIE, derivee de la famille d’origine XC4000, comprenddes ressources specialisees de plus :

– des blocs distribues de memoire vive de 4096 bits.– des DLLs (delay-locked loop) d’horloge pour la compensation des delais

d’horloge et le controle des domaines d’horloge.– Un routage plus elabore :

– 24 liens simples, 96 liens hex ;– 12 liens longs ;– des liens dedies ;– des liens globaux (4 ressources primaires et 24 ressources secon-

daires.)

99

Page 101: Notes de Cours VLSI

Q D

CE

QD

CE

Clock Enable

Input Clock

Q D

G

Delay Delay

Slew-rateControl

VccPassivePull-Up /Pull-Down

Pad

Output Buffer

InputBuffer

Fast Capture

Flip-Flop /Latch

Flip-Flop

01

Output MUXT

Out

Output Clock

I1

I2

2 bascules

Figure 5.24 – Strcuture d’un IOB.Les zones en bleu ne sont pas incluses dans

la famille XC4000E.

5.2.2 Les FPGAs d’Actel

Generalites

Il existe a l’heure actuelle 7 grandes familles de FPGAs chez Actel. Les4 premieres (ProASIC 3, Fusion, Smart Fusion, Igloo) sont a base memoireFLASH. Les autres (RTAX, ProASIC 3 RT et SX-A) sont a base d’antifu-sibles (technologie propre a Actel).

Les antifusibles occupent moins d’espace que les liens programmables abase de SRAM, ce qui permet une granularite plus fine. De plus, ils per-mettent une consommation de puissance plus faible en plus de reduire lacomplexite et le cout du de.

Contrairement au FPGA Xilinx, ceux d’Actel ont des cellules logiquessimples et specialisees et : soit combinatoires, soit sequentielles.

Famille SX-A / SX d’Actel

La famille SX-A/SX d’Actel est a base d’antifusibles. Ils se trouventavec des complexites allant de 12 a 108 mille portes. Ils operent jusqu’ades frequences de 330 MHz. Leur granularite leur permet de maximiser l’uti-lisation du FGPA tout en contraignant l’utilisation des entrees sortie (pinlocking). Ceci permet d’imposer les sorties en fonction du design d’un PCB(printed circuit board) et d’effectuer le routage et le placement des fonc-tions a l’interieur du FPGA sans nuire a la possibilite d’utiliser l’ensembledes ressources du FPGA. Leur consommation est relativement faible (moins

100

Page 102: Notes de Cours VLSI

de 1W a 200 MHz). Enfin, les antifusibles sont implantes en hauteur et neconsomment pas de surface entre les elements logiques ; ce qui permet demaximiser l’utilisation du substrat de silicium.

Avantages des antifusibles.

– Ils eliminent toute possibilite de corruption ou d’erreur lors du tele-chargement des bits de configuration.

– Ils “privatisent” le design et le protegent du reverse engineering :– il n’existe pas de serie de bits de configuration interceptable (lu entre

une memoire et le FPGA) ;– et il est a peu pres impossible de differencier par leur apparence les

antifusibles programmes et non programmes.– Ils sont pleinement operationnel des leur mise sous tension.– Ils sont plus rapide et robuste aux radiations (pour les applications

dans l’aerospatial).La famille SX d’Actel differe fondamentalement des autres FPGAs dans

les trois domaines :

1. les elements d’interconnexion programmables ;

2. les modules logiques ;

3. l’architecture de la puce ;

Les interconnexions programmables

La famille SX utilise plus efficacement la superficie du silicium 1) endeplacant les ressources d’interconnexions aux couches superieures (M2 etM3 ou M3 et M4, selon que la puce possede 3 ou 4 couches metalliques) ;2) en liberant l’espace entre les blocs logiques normalement occupe par leroutage et l’interconnexion.

Cette approche permet de dedier l’entiere superficie du de a une matriceininterrompue de modules logiques. Il en resulte une plus grande densite etdonc, a fonctionnalite equivalente, un plus faible cout du de. Et evidemment,la granularite est beaucoup plus fine, ce qui facilite le placement et routage.La Figure 5.25 illustre les differentes couches d’interconnexions par-dessus lesubstrat de silicium.

La tres petite taille des elements d’interconnexion (antifusibles et tracesmetalliques) permet de plus, une abondance de ressources d’interconnexion.

101

Page 103: Notes de Cours VLSI

Antifusible silicium amorphe / diélectrique

Métal 4

Traces métalliques

Via (tungstène)

Substrat (Si)

Métal 3

Métal 2

Métal 1

Figure 5.25 – Illustration des couches de connexions metalliques et des liensantifusible.

Leur capacitance et resistance sont plus faible que les technologies concur-rentes. Et ceci permet des delais de propagation plus faibles.

Les modules (blocs) logiques

L’architecture d’Actel est qualifiee “d’ocean de modules”. La Figure 5.26met en evidence les differences d’une architecture dite canalisee (a l’imagedes FPGA Xilinx) et celle d’Actel qui utilise les couches superieures pour lesinterconnexions.

La famille SX contient deux types de modules logiques :

1. La cellule-R (ou module de logique sequentiel) contient une basculeD avec signaux CLEAR, PRESET, CLOCK ENABLE, pouvant etredeclenchee sur la montee ou la descente de l’horloge. Son schema estdonne a la Figure 5.27

2. La cellule-C permet (Figure 5.28) la realisation de toutes les fonctionscomminatoires a 3 entrees et de certaines fonctions a 4 ou 5 entrees.L’entree DB qui permet de controler l’inversion des entrees choisiesoffre cette grande versatilite et facilite grandement l’etape de synthesedes fonctions combinatoire par les logiciels.

102

Page 104: Notes de Cours VLSI

Architecture canaliséeOcéan de modules

Figure 5.26 – Comparaison du placement des blocs logiques dans les archi-tectures FPGA.

Di r ectConnectI nput

HCLK

RCLKA, RCLKB

CKS CKP

S0Rout edDat a I nput

S1

Y

D Q

PSETB

CLRB

Figure 5.27 – Schema d’une cellule R

103

Page 105: Notes de Cours VLSI

D0

D1

D2

D3

DB

Sa Sb

A0 B0 A1 B1

Y

Figure 5.28 – Schema d’une cellule C

C R C C R C

Amas 1 Amas 1

C R R C R C

Amas 2 Amas 1

Superamas de type 1 Superamas de type 2

Figure 5.29 – Arrangement des cellules R et C en amas et superamas quiforment les colonnes de bloc logique de l’architecture SX.

Architecture

Les cellules R et C sont regroupes en amas (clusters en anglais) horizon-taux de trois cellules. Les amas de type-1 contiennent 2 cellules C et 1 celluleR. Ceux du type-2 en contiennent les proportions inverses.

Ces amas sont organises en superamas (superclusters) de deux colonnes.Un superamas de type-1 contient 2 colonnes d’amas de type-1. Les superamasde types-2 contiennent une colonne de chaque type d’amas. La Figure 5.29illustre ces regroupements

Cette architecture suppose que le concepteur requiert plus de ressourcescombinatoires que sequentielles.

Le routage dans l’architecture SX est structures en fonction des amas etsuperamas. Des liens directs permettent de relier les cellules dans un amas.

104

Page 106: Notes de Cours VLSI

EP2C5 EP2C8 EP2C15 EP2C20 EP2C35 EP2C50 EP2C70Les 4608 8256 14448 18752 33216 50528 68416

# de blocs 26 36 52 52 105 129 250de RAM M4Kbits de RAM 119808 165888 239616 239616 483840 594432 1152000

au totalmultiplieurs 13 18 26 26 35 86 150

dediesPLLs 2 2 4 4 4 4 4pattes 158 182 315 315 475 450 622

utlisables

Table 5.6 – Modele de la famille Cyclone-II et leur complexite.

Des liens rapides relient les amas de differents types dans un superamas,ainsi que les super amas voisins verticalement. Des liens de segment relientles colonnes de superamas directement jusque dans les cellules.

Les deux types de super amas offrent des possibilites de routage different,tel qu’illustre a la Figure 5.30

5.2.3 Les FPGAs d’Altera

Les familles de FPGA d’Altera se regroupent en 4 grandes lignees. LaFigure 5.31 les illustre. Nous detaillons l’architecture Cyclone II dans la suite.

La famille Cyclone-II

Les Cyclone-II ont ete introduits en 2004. Cette gamme va de 4608 a 68417elements logiques designes LE (logical element). De plus ils comportent desblocs de memoire M4K de 4 kbits (4096 bits plus 512 bits de parite). Ilsdisposent ainsi jusqu’a 1.1Mbits au total.

Par ailleurs, ils disposent d’elements specifiques dont 150 multiplieursdedies 18 × 18. Chacun est divisible en 2 multiplieurs 9 × 9. Enfin, jusqu’a622 pattes sont configurables en entrees/sorties.

Le tableau 5.6 resume les differents modeles et leur complexite.

105

Page 107: Notes de Cours VLSI

C R C C R C

C R C C R C

Superamas de type 1

lien directpas d’antifusibledelai 0.1 ns

lien rapide1 antifusibledelai 0.4 ns

lien segmentetypiquement 2antifusibles;maximum 5

(a) Routage dans un superamas de type 1

C R R C R C

C R R C R C

Superamas de type 2

lien directpas d’antifusibledélai 0.1 ns

lien rapide1 antifusibledélai 0.4 ns

lien segmentétypiquement 2antifusibles;maximum 5

(b) Routage dans un superamas de type 2

Figure 5.30 – Routage dans l’architecture SX.

106

Page 108: Notes de Cours VLSI

2010

2006

2005

2007

2008

2009

2010

FLEX 8000 1992

faible cout gamme moyenne haute performance FPGA plate−forme

FLEX 10K

APEX

APEX II

Cyclone Stratix2002 2002

Stratix GX

2004

2003

Stratix II 2004

2003

Cyclone II

Cyclone IV E/GX

Cyclone III /LS Arria GX

Arria II GX

Arria II GZ

Stratix II GX

Stratix III

Stratix IV

Stratix V

1995

1999

2001Excalibur

2006

Mercury

2005

2007

2008

2009

Figure 5.31 – Lignees des familles de FPGA d’Altera.

Architecture Cyclone-II

L’architecture des Cyclone-II offre des arrangements d’element logique(LE), de blocs de memoire M4K et de multiplieurs. Le tout est entoure desnecessaires elements d’entrees/sortie et de PLL. La Figure 5.32 illustre cetarrangement.

Les elements logiques du Cyclone-II

Un LE comprend– un tableau (LUT) a 4 entrees ;– un registre programmable (D,T,JK ou SR) ;– une capacite de chainage de retenue ;– une capacite de chainage de registre ;– une capacite de piloter tous les types de ressources d’interconnexion :

locales directes, de ligne, de colonne, chaine de registre ;– la possibilite de retroaction de la sortie du registre ;– la possibilite d’acces direct u registre (register packing.)

Le schema d’une LE est illustre a la Figure 5.33

107

Page 109: Notes de Cours VLSI

IOE

IOE

IOEIOE

PLL PLL

PLLPLL

blocs M4K

multiplieurs

mat

rice

logiq

ue

(LE

)

mat

rice

logiq

ue

(LE

)

mat

rice

logiq

ue

(LE

)

mat

rice

logiq

ue

(LE

)Figure 5.32 – Arrangement des elements de base dans un Cyclone-II

D Q

ENA

CLRN

Clear

synchrone

du LAB

Load

synchrone

du LAB Évitement

du registre

ligne, colonne

et lien direct

Routage de

ligne, colonne

et lien direct

Routage de

Retenue entrante LAB

Data4

Data3Data2Data1

Tableau

(LUT)

Chaine

retenue

Logique de

’clear’

asynchrone

selectionclock &

clock enable

labclkena2

labclkena1

labclk2

labclk1

reset global(DEV_CLRn)

labclr2

labclr1

registres du LEDe la chaine de

précédent

(load) et de chargement Logique de

clearsynchrone

programmableRegistre

Rétroaction de

la sortie du

registre

Routage local

Sortie chaine

de registres

Retenue sortante LAB

Figure 5.33 – Schema d’un element logique d’un Cyclone-II

108

Page 110: Notes de Cours VLSI

Lien direct dubloc adjacent

Lien direct vers le bloc adjacent

LABRoutage

local

Lien direct versle bloc adjacent

Lien direct dubloc adjacent

Routage colonne

Routage ligne

Figure 5.34 – Organisation des LAB dans l’architecture Cyclone-II.

La structure LAB

Les elements logiques sont organises en groupes verticaux de 16 appelesdes LAB (Logic Array Block). Chaque LAB comprend

– 16 elements logiques ;– des signaux de controle a l’echelle du LAB (2 horloges, 2 CLOCK ENABLE,

2 CLEAR asynchornes, 1 LOAD synchrone, 1 CLEAR synchrone) ;– une chaine de retenue ;– une chaine de registre ;– des ressources d’interconnexion locales.La Figure 5.34 illustre ces elements entoures de leurs reseaux d’intercon-

nexion.

Ressources de routage

Routage horizontal.

109

Page 111: Notes de Cours VLSI

Des liens directs relient un element logique aux interconnexions du LABvoisin (a gauche ou a droite).

Des liens R4 sautent directement 4 blocs plus loin (a gauche ou a droite).Tous les LABs ont leurs propres liens R4 permettant d’aller directementau 4ieme voisin vers la gauche ou la droite. Les Liens R4 peuvent sebrancher directement aux LABs, blocs M4k, multiplieurs, blocs IOEde ligne, liens R4, R24, C4 et C16.

Les Liens R24 permettent de traverser directement une distance de 24blocs horizontalement. Il ne peuvent piloter et etre pilotes que par desliens R4, R24, C4 et C16.

Routage vertical.

Les chaines de registres et de retenue se retrouvent a l’interieur d’unLAB (c.f. Figure 5.35).

Les liens C4 traversent une distance de 4 blocs ver le haut ou le bas.Chaque LAB possede son propre jeu de liens C4. Les liens C4 peuventpiloter ou etre pilote par tout type de bloc : LAB, M4K, multiplieurs,blocs IOE de ligne et de rangee, liens R4,R24, C4, C16.

Les liens C16 permettent de traverser directement une distance de 16 blocsverticalement. Ils ne peuvent piloter et etre pilotes que par des liensR4, R24, C4, C16.

110

Page 112: Notes de Cours VLSI

local

LE 13

LE 14

LE 15

LE 16

LE 1

LE 2

LE 3

LE 4

LE 5

LE 6

LE 7

LE 8

LE 9

LE 10

LE 11

LE 12

Chainage de

la retenue

Chainage des sorties de registre

Routage

Figure 5.35 – Chainage de registre dans les LABs.

111

Page 113: Notes de Cours VLSI

Chapitre 6

Introduction VHDL

6.1 Structures de bases

6.1.1 Description VHDL

Le VHDL decrit des modules logiques et permet de definir leur fonction-nement. Un module est defini en deux sections :

– une entite decrit les ports et donne un nom au module.– une section architecture decrit le fonctionnement du module nomme,

donne un nom a cette architecture, commence par des declarations(signaux, variables declarees) et est suivit d’un corps contenant le code.

Definition. Une description VHDL est composee d’une section entite etd’une section architecture

Une description s’ecrit sous le modele suivant :

library ieee ;use ieee.std logic 1164.all ;entity bloc is<< ports >>

end entity bloc ;architecture archbloc of bloc is<<declarations>>

begin<<corps>>

end architecture archbloc ;

112

Page 114: Notes de Cours VLSI

Dans l’exemple de structure de code VHDL ci-haut, on definit une entitebloc. Puis une architecture nommee archbloc qui caracterise le module bloc.Le tout sera generalement place dans un fichier ayant pour nom, le nom dubloc avec l’extension “.vhd”.

Les deux premieres lignes servent a inclure des definitions externes, al’image du #include en langage C. Ici, la librairie ieee est chargee. Ellerepresente une librairie standard comme ce qui se trouve en C. La ligne sui-vante precise que le sous-ensemble std logic 1164 est utilise. Cette librairieessentielle est typiquement utilisee par mesure de compatibilite entre codesVHDL. Elle est le resultat d’une volonte d’uniformiser les definitions et stan-dard par le comite responsable.

Dans les details et les profondeurs du VHDL, un binaire n’est pas seule-ment true ou false comme on l’imagine en langage informatique. En realite,il faut definir cette representation par une quantite physique. true est doncun etat d’un voltage sur un signal qui depasse un certain seuil. La technolo-gie cible va aussi influencer ces representations. Enfin, en VHDL, un binairen’est pas seulement vrai ou faux. Il peut etre incertain, non initialise, nonprecise et sans importance a l’etre... C’est tout cela que definit la librairieieee.

Voyons maintenant comment definir les ports, les declarations et le corpsd’un module.

6.1.2 Entite

Definition. L’entite decrit les ports du “bloc”, c.-a-d. son interface avec lemonde exterieur.

Simplement, c’est la facon de definir la boite sans rentrer dans les detailsa l’interieur de celle-ci. Il nous faut nommer les entrees et les sorties : cessignaux memes que nous utiliserons pour les connecter a d’autres moduleslogiques.

Exemple d’entite. Prenons l’exemple de la figure 6.1, deux entrees, A etB et une sortie Y. Il convient de specifier de quel type de signaux il s’agit.Pour cela le VHDL offre la possibilite de definir toutes sortes de signauxdirectement, sans avoir a traiter au niveau binaire. Pour le moment nousconsiderons des signaux binaires de type std logic defini dans la librairiechargee au prealable (ieee.std logic 1164). On declare aussi si ces signaux

113

Page 115: Notes de Cours VLSI

B

Y

A

Figure 6.1 – illustration d’un module.

sont pour une entree ou une sortie, puisque l’implantation physique en estdependante (question d’impedance). L’entite de la figure 6.1 s’ecrit alors :

entity bloc isport(

A, B : in std logic ;Y : out std logic ;

)end entity bloc ;

6.1.3 Architecture

Definition. L’architecture decrit le fonctionnement interne du bloc.

L’architecture contient la description interne du module. Afin de facili-ter la description de celui-ci, il peut etre necessaire de definir des signauxintermediaires. C’est ainsi que le bloc architecture comprend une zone dedeclaration, et est suivi de la zone de description apres le mot clef begin. Onnote qu’un nom est donne a l’architecture pour un nom d’entite donnee. C’estune declaration d’architecture, et il possible d’avoir plusieurs architecturespour une entite (leur nom permet alors de les differencier pour les utiliser).

Dans notre exemple, nous effectuons un NON-ET sur A et B. Pour l’illus-tration, nous utilisons un signal intermediaire nomme Z de type std logic

qui contient l’operation de ET logique avant d’effectuer sont inversion. Nousecrivons alors simplement :

114

Page 116: Notes de Cours VLSI

architecture archbloc of bloc issignal Z : std logic ;

beginZ <= a and b ;y <= not Z ;

end architecture archbloc ;

Attention ! ⇒ Les commandes dans le corps de l’architecture sont executeesen parallele

Il faut reellement comprendre en lisant ce code qu’a l’instant absolu T , Y estl’inverse devrait etre Z (avec un delai de charge/decharge de transistor dansla realite physique). Et cette operation s’effectue, meme si la precedente n’estpas finie. Ainsi, a l’instant T + 1, Y continu d’etre l’inverse de Z. Le code nedecrit pas des operations sequentielles executees une fois, l’une apres l’autre.

Dans une simulation comportementale, le simulateur part de l’hypotheseque les operations s’effectuent instantanement. Pour approfondir le fonction-nement physique, il faudra faire une simulation au niveau des portes logiques.On observera alors les delais qui se propagent. Et en simulation, c’est commesi la deuxieme ligne etait continuellement evaluee des que le signal Z change.Il s’agit bien d’une architecture, et non d’un code sequentiel : les deux lignessont traduites par des portes et des connexions, continuellement alimenteespar les signaux A, B et Z.

Ceci est donc fort different du modele de programmation informatique. Etil faut etre tres prudent en lisant du code VHDL pour bien garder a l’espritcette notion “d’execution en parallele”.

6.1.4 Processus

A l’interieur d’une architecture, il est toutefois possible de coder uneforme sequentielle : un contexte d’execution sequentiel.

Definition. Le processus est une commande qui permet d’inclure dans unearchitecture une description de type sequentiel, c.-a-d. elle fournit uncontexte d’execution sequentiel.

Structure d’un processus

115

Page 117: Notes de Cours VLSI

La description d’un processus commence par une etiquette, un nom, suivitde la declaration process et d’une liste de sensitivites. C’est-a-dire, une listede signaux dont un changement de valeur declenche la reevaluation du codedecrit dans ce contexte. La notion sequentielle provient de cette nuance surla sensibilite.

Comme precedemment, il est possible de specifier des signaux ou variables(des declarations), puis la description effective commence apres le begin, surle modele suivant :

<<etiquette>> : process( <<liste de sensitivite>>) is<< declarations locales >> ;

begin<<commandes sequentielles>> ;

end process <<etiquette>> ;

Il s’ensuit naturellement qu’un processus peut servir a decrire de la lo-gique combinatoire. Tous les signaux d’entree dans la liste de sensitivite sontalors inclus. Le code inclus serait alors “evalue” pour tout changement pos-sible. Ce qui revient a avoir un code sous la forme :

<<etiquette>> : process( <<entrees>> ) is<< declarations locales >> ;

begin<<sorties>> <= <<fonction des entrees>> ;

end process <<etiquette>> ;

Exemple de logique combinatoire

S’il ne semble pas avantageux d’ecrire de la logique combinatoire dans unprocess, comme pour l’exemple suivant de porte OU logique,

PORTE OU : process( A1, A2, A3 ) isbegin

Y <= A1 or A2 or A3 ;end process PORTE OU ;

Il n’en est pas de meme pour un element aussi simple qu’un multiplexeur.

116

Page 118: Notes de Cours VLSI

Exemple d’un multiplexeur

L’avantage du VHDL est sa capacite d’abstraction. Ainsi, il n’est pasnecessaire d’ecrire l’integralite de la logique combinatoire du multiplexeurpour en compiler un circuit. Il est beaucoup plus facile d’utiliser une condi-tion if then else :

MUX : process( A0, A1, S ) isbegin

if S=’0’ thenY <= A0 ;

elseY <= A1 ;

end if ;end process MUX ;

Ce code VHDL traduit effectivement un multiplexeur qui permet de choi-sir A0 ou A1 selon S, ceci de facon non sequentielle, mais le code a une formesequentielle. Il sera traduit par un circuit par le compilateur, qui s’occuperade faire les optimisations necessaires.

Nous venons par cet exemple de voir la declaration d’une structure decondition en VHDL, qui n’est pas bien differente du C. Nous remarqueronstoutefois, que le = dans la condition est bien un operateur de comparaison etnon une attribution de valeur. L’attribution, elle, se realise avec l’operateur<=.

Exemple : multiplexeur a 4 entrees

Pour les situations de selection de cas, plutot que d’utiliser une seriede structures if then else relativement inelegantes et illisibles, il convientd’utiliser une case :

117

Page 119: Notes de Cours VLSI

MUX4 : process(A0, A1, A2, A3, S0, S1) isbegin

case S1 | S0 iswhen ”00” =>

Y <= A0 ;when ”01” =>

Y <= A1 ;when ”10” =>

Y <= A2 ;when ”11” =>

Y <= A3 ;end case ;

end process MUX4 ;

Nous remarquons que la structure case peut tester differents signaux ala fois, qui forment alors des mots. Note S1|S0 les valeurs se donnent alorsentre guillemets.

6.2 Codage de modules sequentiels

Definition. En logique sequentielle on inclut seulement l’horloge et le RE-SET dans la liste de sensitivite.

Differents styles sont possibles selon la suite d’outils et la technologiecible.

Structure d’un processus sequentiel sur FPGA Xilinx

<<etiquette>> : process( RESET, CLK ) is<< declarations locales >>

beginif RESET=’1’ then<<operations d’initialisation>>

elsif CLK=’1’ and CLK’event then<<operations a effectuer sur la montee de l’horloge>>

end if ;end process <<etiquette>> ;

118

Page 120: Notes de Cours VLSI

INIT

ADDITIONNE

DECALE

RESET=’1’

RESET=’0’

NO_BIT=MAX_BIT

Si I2(NO_BIT) = ’1’ alorsAdditionner I1 a ACCUM

Decaler I1 vers la gaucheIncrementer NO_BIT

Mettre ACCUM a zeroInitialiser NO_BIT

Figure 6.2 – Diagrame de la machine a etats d’un multiplieur

Dans le code precedent, nous retrouvons une structure if/then/else. Lepremier cas : celui du RESET est donc asynchrone, puisque le signal RESETfait partie de la liste de sensitivites.

Le second cas, elseif CLK=’1’ and CLK’event , est une facon de condi-tionner l’execution du code sur l’evenement d’un front montant. Cette for-mulation fonctionne bien sur FPGA Xilinx autant qu’Altera. Toutefois, leVHDL permet de specifier directement un front montant de signal. Or cetteautre formulation n’est pas pris en compte dans les compilateurs FPGA etgenere une erreur “circuit non synthetisable”. C’est pourquoi il convient deconnaıtre la standardisation du VHDL, et les differentes versions supporteespar notre architecture cible.

6.2.1 Machine a etats en VHDL

L’implantation en VHDL d’une machine a etat est facilitee en utilisantune structure case dans un processus. Considerons par exemple un multi-plieur modelise par le diagramme d’etats a la figure 6.2. Cette representationde haut niveau, necessite deux vecteurs de bits I1 et I2 ainsi qu’un si-gnal RESET, et une constante MAX BIT. Elle possede de plus 3 etats INIT,ADDITIONNE et DECALE.

Entite de la machine a etats. Nous commencons par definir l’entite dela machine a etat. La constante sera traduite par le mot clef generic et estdefinie comme un type natural. Pour une constante specifiee, cela se traduira

119

Page 121: Notes de Cours VLSI

par un circuit. Nous faisons donc abstraction de cette constante dans le code.Ceci permettra de disposer d’un modele d’architecture qui pourra synthetiserdes multiplieurs a la precision souhaitee.

Pour la quantite (d’entier naturel) MAX BIT donnee nous avons alorsbesoin de deux vecteurs d’entree de MAX BIT bits qu’il faut aussi specifier,chaque bit doit pouvoir etre nommee. La ligne port definit ces vecteursde bits I1 et I2 et “numerote” les bits, du poids fort au poids faible :(MAX BIT-1) downto 0. Viennent ensuite la declaration des signaux RESET,

CLK et TERMINE. Le dernier signal traduira la condition de transition NO BIT=MAX BIT

en utilisant un compteur.

library ieee ;use ieee.std logic 1164.all ;entity multiplieur is

generic(MAX BIT : natural) ;port(I1, I2 : in std logic vector(MAX BIT-1 downto 0) ;

(Y : out std logic vector(2*MAX BIT-1 downto 0) ;RESET, CLK : in std logic ;TERMINE : out std logic) ;

end multiplieur ;

Nous venons donc de voir comment definir des constantes et de les utiliserpour definir une entite generique pouvant etre adaptee aux besoins futurs.

Architecture. L’architecture d’une machine a etats va reprendre la struc-ture if/then/else proposee precedemment pour gerer le signal de RESET.Ensuite, la logique sequentielle qui doit s’actionner sur front montant seraevidemment traitee dans le cas suivant (elsif).

Pour notre machine a etats, la structure de case convient parfaitementpour definir les actions a accomplir selon l’etat de la machine.

Le VHDL nous permet la encore une abstraction avec le mot clef type

qui permet dans notre cas de definir une enumeration

type type etat is (INIT, ADDITIONNE, DECALE) ;

Nous n’avons donc pas besoin de specifier les valeurs de registres qui definissentles etats. Nous pouvons les nommer directement. Apres les avoir definit avecun type d’enumeration, il nous faut encore un signal qui contienne l’etat cou-rant : nous declarons signal etat: type etat; . Le compilateur se char-gera de faire la correspondance entre les valeurs des signaux qui definissentl’ensemble des etats possible, et les etats eux-memes.

120

Page 122: Notes de Cours VLSI

Par la suite, une simple structure case permet de definir les actions dechaque etat.

Il reste a traiter les transitions. Nous verrons cela dans les exemples sui-vants selon le type de machine a etats, de Moore, ou de Mealy.

La structure du code pour l’instant se resume a

architecture machine a etats of multiplieur istype type etat is (INIT, ADDITIONNE, DECALE) ;signal etat : type etat ;

beginprocess(CLK, RESET)begin

if RESET=’1’ thenetat <= INIT ;

elsif CLK=’1’ and CLK’event thencase etat is

when INIT =>...when ADDITIONNE =>...when DECALE =>...

end case ;end if ;

end process ;end machine a etats ;

6.2.2 Methode des machines multiples

Une technique de design utile est celle qui consiste a implanter plusieursmachines a etats paralleles qui communiquent entre elles a l’aide de signauxcommuns.

Considerons par exemple une machine a etat DIVCLK qui genere une nou-velle horloge, laquelle sert a minuter les changements d’etat d’une deuxiememachine PROC, illustree a la figure 6.3.

Nous pourrions directement coder deux processus, pour les deux machinesa etats, sensibles a leurs horloges respectives. Dans chaque cas, il suffit dedefinir l’etat suivant et le signal de sortie CLK2. Comme suit :

121

Page 123: Notes de Cours VLSI

C2C1

C3

CLK2 <= ’1’ CLK2 <= ’0’

A B

C

Processus CLKDIV Processus PROC

Figure 6.3 – Machine a etats, multiples.

architecture machmult of machetat istype TYPE PROC is (A, B, C) ;type TYPE DIVCLK is (C1, C2, C3) ;signal etat divclk : TYPE DIVCLK ;signal etat proc : TYPE PROC ;signal CLK2 : bit ;

beginCLKDIV : process(CLK, RESET)begin

if RESET=’1’ thenetat divclk <= C1 ;

elsif CLK=’1’ and CLK’event thencase etat divclk is

when C1 => etat divclk <= C2 ;CLK2 <= ’1’ ;

when C2 => etat divclk <= C3 ;CLK2 <= ’0’ ;

when C3 => etat divclk <= C1 ;end case ;

end if ;end process CLKDIV ;...

122

Page 124: Notes de Cours VLSI

...PROC : process(CLK2)begin

if CLK2=’1’ and CLK2’event thencase etat proc is

when A => etat proc <= B ;when B => etat proc <= C ;when C => etat proc <= A ;

end case ;end if ;

end process ;end architecture machmult ;

Ceci est du VHDL legal, mais plusieurs pratiques de design recommandeesne sont pas respectees. En effet, un signal utilise est derive de l’horloge (com-mandements #1 et #2). De plus, le signal RESET est utilise dans une com-posante synchrone (commandements #5).

Il est toutefois possible d’arranger cela facilement en reecrivant le code dudeuxieme process, pour avoir une transition sensible a l’horloge maitresse.

Code VHDL corrige pour FPGA Xilinx

...PROC : process(CLK, RESET)begin

if RESET=’1’ thenetat proc <= A ;

elsif CLK=’1’ and CLK’event thenif CLK2=’1’ then

case etat proc iswhen A => etat proc <= B ;when B => etat proc <= C ;when C => etat proc <= A ;

end case ;end if ;

end if ;end process ;

end architecture machmult ;

123

Page 125: Notes de Cours VLSI

Dans cet exemple nous venons de voir techniquement comment restercoherent avec l’horloge principale dans l’ecriture du code VHDL. A l’imagedu correctif apporte entre les graphiques 3.14 et 3.15, ici, le compilateurprendra l’horloge principale CLK pour alimenter les bascules (definissant l’etatde la machine) plutot que de prendre l’horloge CLK2. Aussi, CLK2 pourradirectement etre connecte au enable des bascules, ce qui traduira la conditionif CLK2=’1’...

6.2.3 Machine de Moore

Les machines de Moore ont des sorties qui ne dependent que de l’etatcourant. Ainsi, il est possible de coder directement la machine a etat et l’etatdes signaux de sortie. Prenons la machine de Moore illustree a La Figure 6.4.Son code VHDL peut s’ecrire :

124

Page 126: Notes de Cours VLSI

architecture exemple of Moore istype type etat is (E1, E2, E3) ;signal etat : type etat ;

beginprocess(RESET, CLK)begin

if RESET=’1’ thenetat <= E1 ;

elsif CLK=’1’ and CLK’event thencase etat is

when E1 =>Y <= ”00” ;if S=’0’ then

etat <= E2 ;end if ;

when E2 =>Y <= ”01” ;if S=’0’ then

etat <= E3 ;end if ;

when E3 =>Y <= ”10” ;if S=’0’ then

etat <= E1 ;end if ;

end case ;end if ;

end process ;end exemple ;

6.2.4 Machine de Mealy

Dans le cas des machines de Mealy, les sorties dependent non seulementde l’etat courant, mais aussi des entrees du circuit.

L’objectif est de permettre le changement synchrone des etats, mais depreserver le changement asynchrone des sorties, en reaction a un changementd’entree. Pour realiser en materiel cette contrainte, il convient de separerl’encodeur d’etat et l’encodeur de sortie.

125

Page 127: Notes de Cours VLSI

E1 E2

E3

(S=’1’) (S=’1’)

(S=’1’)

(S=’0’)

(S=’0’)(S=’0’)

Y<=’00’ Y<=’01’

Y<=’10’

Figure 6.4 – Machine a etat de Moore

E1 E2

E3

(S=’1’) (S=’1’)

(S=’1’)

(S=’0’)

(S=’0’)(S=’0’)

Table de verite(sortie Y en fonction de l’entree S

et de l’etat courant)0 1

E1 00 01E2 10 00E3 00 11

Figure 6.5 – Machine de Mealy

Prenons la machine de Moore precedente et changeons la table de veritede la sortie Y en fonction de l’entree S et de l’etat courant, comme illustre ala Figure 6.5.

Nous realisons alors d’abord une machine de Moore synchronisee pourles changements d’etat, et dont l’etat futur sera determine par un signalresultant d’un bloc combinatoire separe definissant aussi l’etat des sorties.Bien que ces deux sous-ensembles (etat futur et etat des sorties) pourraientetre separes en deux modules, leur simplicite les rend faciles a coder ensembleet permet aussi au compilateur de minimiser une certaine redondance.

L’architecture de la machine de Mealy comprend alors deux processus.L’un est active sur les signaux RESET et CLK. Il est donc synchrone. L’autredepend de l’etat courant et de l’entree S. Il produit le signal nouvel etat

qui est partage par les deux processus et “lu” par le premier pour changerd’etat.

126

Page 128: Notes de Cours VLSI

Code VHDL d’une machine de Mealy

architecture exemple of mealy istype type mealy is (E1, E2, E3) ;signal etat courant, nouvel etat : type mealy ;

beginsequent : process(RESET, CLK)begin

if RESET=’1’ thenetat courant <= E1 ;

elsif CLK=’1’ and CLK’event thenetat courant <= nouvel etat ;

end if ;end process sequent ;...

...combinat : process(etat courant, S)

case etat courant iswhen E1 =>

if S=’0’ thenY <= ”00” ; nouvel etat <= E2 ;

elseY <= ”01” ;

end if ;when E2 =>

if S=’0’ thenY <= ”10” ; nouvel etat <= E3 ;

elseY <= ”00” ;

end if ;when E3 =>

if S=’0’ thenY <= ”00” ; nouvel etat <= E1 ;

elseY <= ”11” ;

end if ;end case ;

end process ;end exemple ;

127

Page 129: Notes de Cours VLSI

Chapitre 7

Methode

7.1 Modelisation en VHDL

7.1.1 Dimensions de modelisation des systemes numeriques

Le VHDL a pour objectif la modelisation de circuits integres, dans le butd’une realisation physique.

Cette modelisation comprends les facettes suivantes :

1. la specification,

2. la documentation,

3. les tests et les simulations,

4. la verification formelle,

5. la synthese.

Ainsi, le VHDL se trouve au centre de ces differentes dimensions. Celles-cipeuvent se categoriser en

1. dimensions de communications et

2. dimensions d’implantation,

comme la figure 7.1 l’illustre.

Dimension de communications

Premierement, la specification a effectivement pour objectif de definir lecircuit modelise. Pour cela, le VHDL offre differents niveaux d’abstraction. Ilest possible de decrire une architecture comportementale ou structurale.

128

Page 130: Notes de Cours VLSI

Modele VHDL

Specification

Documentation

Synthese

Simulation

Communication Implantation

Figure 7.1 – Les differentes dimensions de la modelisation en VHDL.

Il est aussi possible de developper du code de haut niveau non synthetisable,c’est-a-dire, qui ne peut etre traduit sous la forme d’un circuit logique par lecompilateur.

L’architecture comportementale permet de decrire le comportementdu module logique.

L’architecture structurale permet de decrire comment un module lo-gique est constitue d’autres modules logiques interconnectes.

Ultimement, l’ensemble de la specification d’un circuit se traduit par unearchitecture comportementale traduisible par un circuit.

Mais plus encore, le VHDL permet la specification de haut niveau, nonsynthetisable par un circuit, dont l’objectif est la simulation, et la comparai-son fonctionnelle avec un code de plus bas niveau, lui synthetisable.

Enfin, la specification comprend aussi la definition des entrees/sorties dumodule logique modelise et la possibilite de decrire une documentation decelui-ci. La documentation est cruciale pour les gros projets et le travail enequipe. Il s’agit d’une forme d’abstraction du module modelise, dont l’objectifest de permettre a autrui la reutilisation du module sans en connaıtre le code.

Dimensions d’implantation

A l’autre bout de la chaıne de modelisation se trouvent les dimensionsplus pratiques.

D’abord la simulation a pour objectif de verifier le circuit. S’il est pos-sible sur FPGA de tester directement le circuit, il peut etre particulierementdifficile de le verifier et le corriger. Du FPGA, nous disposons seulement

129

Page 131: Notes de Cours VLSI

les pattes d’entrees/sorties pour verification. De plus, les signaux peuventevoluer a grande frequence.

La simulation permet au contraire de verifier tous les signaux (internesautant qu’externes) en detail et en temps. Il sera ainsi plus facile de trouvera quel niveau le circuit devie du comportement souhaite. C’est aussi pour cesfins de tests et simulations que le code comportemental de haut niveau nonsynthetisable peut se trouver utile. Il permet de simuler un comportementsouhaite pour le comparer au modele de circuit realise.

Finalement, la synthese est la derniere dimension dans la modelisation.Elle a pour objectif de traduire un modele comportemental VHDL en uncircuit electrique au niveau des portes. C’est une dimension liee a celle dela simulation, puisque la simulation peut s’effectuer a differents niveaux deconception comme il sera decrit plus tard. Finalement, la synthese aboutit al’implantation finale apres le placement et routage qui permet d’aboutir aucircuit physique.

Objectifs de la modelisation

Ultimement, ces procedes ont pour objectif de structurer le design enVLSI afin de

– supporter le travail en equipe et de faciliter la gestion de projets agrande echelle (paralleliser le travail pour la realisation de gros projets) ;

– reduire le temps et le cout de conception, en systematisant et en faci-litant le proceder ;

– rendre le processus de modelisation plus fiable (permettant la verificationa differentes etapes du processus) ;

– d’eviter les erreurs de design ;– permettre la reutilisation des modeles pour differentes technologies

cibles.

7.1.2 Domaines et niveaux de Gajski et Kahn

Une autre facon d’observer le processus de modelisation, du concept a larealisation du circuit est decrit par les domaines de Gajski et Kahn et dudiagramme en ‘Y’ represente a la Figure 7.2.

Ce diagramme comporte 3 axes ou perspectives et un gradient d’abstrac-tion ou de niveaux de details.

130

Page 132: Notes de Cours VLSI

Fonction

Nous commencons habituellement par l’axe fonctionnel (Figure 7.2(b)).

1. A un haut niveau d’abstraction, nous pensons sous forme d’algorithmes :une succession d’etapes qui traduise l’accomplissement d’une tache (fil-trage, cryptographie, machine de Turing a.k.a. un microprocesseur,compression/decompression de donnees, etc. ).

2. De cet algorithme decrit, specifie, il faudra d’abord le traduire sousforme de Register-Transfer Language (ou Logic) RTL, logique de trans-fert de registres. C’est a dire sous une forme qui utilise des structuresmemoire-controleur-unite de traitement, processor-controler-memory (PCM).Cette description de plus bas niveau va specifier comment les informa-tions (series de bits) sont deplacees, traitees, stockees.

3. Une fois decrit le niveau RTL qui modelise les actions de bas niveaupour executer l’algorithme, il est alors possible d’ecrire les equationboleenes qui permettent effectivement de lire, deplacer, traiter, stockerles donnees.

4. Finalement, ces equations booleennes, pendant de tres bas niveaux de larepresentation algorithmique, sont encore une abstraction d’effet phy-sique. En effet, les operations booleennes sont realisees physiquementpar des circuits electriques composes de transistors, resistance, capaciteparasite et autre effet de deplacement d’electrons et du courant, qui eux(ces effets physiques) sont decrits par des equations differentielles.

Par exemple, le modele comportemental de haut niveau d’un processeurde traitement du signal (DSP) pourrait avoir l’algorithme de haut niveau(simplifie) suivant :

Modele algorithmique

131

Page 133: Notes de Cours VLSI

loop

for chaque port d’entree loop

lire la valeur en entree;

multiplier la valeur par le facteur d’echelle

courant;

convertir la valeur resultante en chaıne

decimale;

ecrire la chaıne a l’affichage de sortie;

end loop;

wait for 10 ns;

end loop;

A plus bas niveau, un extrait de la representation de logique de transfertde registre ressemblerait a

Modele RTLAM ← CP, lecture memoire ← 1

CP ← CP+1

wait until ready=1

IR ← donnees memoire

lecture memoire ← 0

En reference a la perspective structurale decrite ci-dessous et a la figure 7.4,on comprend que le modele fonctionnel du niveau RTL traduit la sequenced’ecriture/lecture des divers registres du processeur.

Structure

Dans une deuxieme perspective de developpement, nous pouvons observercomment l’ensemble fonctionnel offre une structure.

1. Ainsi, de l’algorithme, nous pouvons dessiner un diagramme structu-rel. Par exemple, pour un algorithme de traitement generique de l’in-formation : une machine de Turing, ou un ordinateur, nous pouvonsconsiderer le diagramme PMC processeur, memoire, controleur, a lafigure 7.3.

2. Cet algorithme se traduit suivant une description fonctionnel dites detransfert de registre. Il est encore possible de la schematiser, commel’illustre la figure 7.4

132

Page 134: Notes de Cours VLSI

structural

geometrique

fonctionnel

algorithmesRTL ("Register-Transfer Language")equations booleennesequations differentielles

(a) dimension fonctionnelle

structural

geometrique

fonctionnel

"floor plan"

"standard cell"

batonnets ("sticks")

polygones

(b) dimension geometrique

structural

geometrique

fonctionnel

processeur-memoire-commutateurTransfert de registre

Transistor

Porte

(c) dimension structurale

Figure 7.2 – Domaines de modelisation et niveaux d’abstraction, diagrammede Gajski et Kahn

133

Page 135: Notes de Cours VLSI

P C M

Pes

Pes

entree

sortie

Figure 7.3 – Diagramme processeur, memoire, controleur d’une machine detraitement de l’information.

3. A plus bas niveaux encore, les equations booleennes peuvent se representersous forme de schema de porte logique.

4. Et la derniere abstraction structurelle consiste en un circuit electriquerepresentant les transistors qui traduisent electriquement des porteslogiques.

Geometrique

D’un point de vue physique des materiaux, c’est la perspective geometriquequi prime. Elle ne modelise pas la dynamique des choses, mais la realisationmaterielle d’un circuit integre.

Ainsi sur le substrat de silicium, a haut niveau, nous allons retrouver unecertaine logique issue de la structure de haut niveau (et donc de la fonction).Et ceci se traduit jusqu’au plus bas niveau.

1. le floorplan est une representation du placement des entites structu-relles sur le substrat de silicium. Typiquement, nous retrouvons unbloc pour le processeur, un autre pour le controleur, et d’autres blocspour la memoire et la gestion des ports d’entres/sorties. La figure 7.5schematise un tel schema. Dans la realite, ils ne sont pas necessairementsi reguliers.

2. A plus bas niveau, nous retrouverons des entites standardise (standardcell) qui realisent des fonctions logiques, portes, bascules, verrou, latch,registres, multiplexeur, etc.

134

Page 136: Notes de Cours VLSI

Tampons de bus

section

controle

IR

(0−31)

Temp

CP

GPR

AM

DM

Figure 7.4 – diagramme de la logique de transfert de registre. Un GPR(general purpose register), registre tout usage permet de stoker des donneestemporairement. Eventuellement un tampon supplementaire (Temp) peutexister comme memoire cache. Un (CP), conteur programme memorise ou setrouve l’instruction a executer, un autre module contiens l’adresse memoire(AM) a acceder et adresse la memoire au travers du tampon de bus. Unememoire de donnees (DM) permet de stocker l’information lue depuis letampon de bus. Finalement, le registre d’instruction (IR instruction register)stocke l’instruction en cours d’execution et la section controle le multiplexeurqui permet de faire circuler l’information d’un des modules a un autre.

135

Page 137: Notes de Cours VLSI

P C

Pes

Pes

M

Figure 7.5 – Schema simplifie d’un eventuel placement de module logique(floorplan) sur le substrat de silicium.

3. Toutes ces cellules logiques sont toutefois constituees de transistor etde lignes de connexion, qui se traduisent par des batonnets (sticks) dedifferentes formes, chacun servant a une jonction, une grille, une lignede metal de connexion, etc.

4. Au plus bas niveau, tout le circuit n’est qu’une superposition de poly-gones.

7.2 Implantation a partir d’un modele VHDL

Comme en temoignent les domaines de modelisation et niveaux d’abs-traction vus precedemment, l’implantation en VLSI avec VHDL doit passerau travers un processus.

La figure 7.6 resume le graphe de conception, de la specification aux testsdu produit en passant par la modelisation, la simulation, la synthese, etc.

Voyons plus en detail ce processus. Apres avoir specifie la fonctionnalitedans un cahier des charges, il faut premierement ecrire un premier modele dehaut niveau en VHDL representant la fonction souhaitee. C’est la ou le VHDLpermet de coder du code de haut niveau, qui ne sera pas necessairementsynthetisable. Les variables VHDL peuvent par exemple y etre employeespour faciliter la tache du programmeur.

136

Page 138: Notes de Cours VLSI

specification

modele VHDL de haut niveau

elaboration

test

analyse

simulation

implantation

synthese

modele comportemental

modele RTL

placement et routage

modele au niveau des portes logiques

transfert dans le systeme-cible

Figure 7.6 – Processus de conception en VHDL, de la specification a unprototype physique.

De ce code de haut niveau, des etapes d’analyse, d’elaboration, desimulation, de synthese et d’implantation se succedent pour enfin arrivera un prototype a tester.

7.2.1 Analyse

L’analyse a pour but de verifier d’abord la syntaxe et la semantique ducode. La semantique est ce qui se rapporte a l’interpretation, a la significa-tion d’un systeme formel. L’avantage d’un langage fortement type et de lagrammaire elaboree du VHDL sont ici un atout.

Chaque unite du modele (design unit) est analysee separement et placeedans une bibliotheque (library).

Au besoin, cette etape demandera de revoir le code VHDL ecrit et de luiapporter des corrections necessaires.

137

Page 139: Notes de Cours VLSI

7.2.2 Elaboration

L’elaboration vise l’aplanissement de la hierarchie du projet : il s’agit depasser d’un modele comportemental a un modele RTL.

Chaque actualisation (instance) d’une entite est remplacee par sa definition.Le compilateur traduit donc un code VHDL structural, pour instancier chaqueentite avec leur modele comportemental. Il en resulte une collection de si-gnaux, de connexions et de processus (qui n’est autre que la logique de trans-fert de registre).

7.2.3 Simulation

La simulation vise a verifier le fonctionnement du systeme a different stadede son elaboration. Nous verifions ainsi que le modele de haut niveau fournibien le fonctionnement defini par le cahier des charges (la specification). Puis,nous verifions que le modele de plus bas niveau (RTL) repond lui aussi lesmemes attentes.

La simulation commence par une phase d’initialisation suivie d’un cycle desimulation repetitif. Initialement, le temps est mis a zero et tous les signauxsont initialises a leur valeur declaree (ou leur valeur par defaut). Le tempsavance par pas discrets. Lorsqu’un signal change de valeur, il y a evenementet les consequences de cet evenement sont simulees.

7.2.4 Synthese

Le passage d’un modele RTL a un modele au niveau des portes logiquesest l’operation de synthese. Il s’agit donc de la creation d’un circuit a partird’une description de plus haut niveau.

Dans cette phase, seul un sous-ensemble des commandes VHDL peutetre interprete par le compilateur. C’est pourquoi plusieurs descriptions (ouarchitecture) d’une entite peuvent etre definies. Une de haut niveau, nonsynthetisable, pour fournir une base de comparaison lors des simulations etune synthetisable, qui specifie plus directement les signaux, le code sequentielet le code combinatoire.

Par ailleurs, la portabilite n’est pas garantie, car differents outils desynthese supportent differents sous-ensembles du VHDL (dependamment del’architecture cible, FPGA, ou autre). Et certains compilateurs adoptent par-fois des conventions restrictives differentes.

138

Page 140: Notes de Cours VLSI

specification

modele VHDL de haut niveau

elaboration

analyse

synthese

implantation

test sur systeme-cible

simulation

simulation

simulation

Figure 7.7 – Processus formel de conception

7.3 Resume : flot de conception

7.3.1 Processus formel

Pour detailler le processus de la figure 7.6, la simulation est systematiquedes l’etape d’elaboration (c.f. figure 7.7) :

1. afin de verifier le fonctionnement avant et apres l’aplanissement dela hierarchie du projet (passage du modele algorithmique au modeleRTL).

2. Ensuite, au moment de la synthese pour s’assurer qu’avec un niveaud’abstraction bas (au niveau des portes logiques) la fonction est tou-jours preservee en tenant compte des effets de latence par exemple.

3. Et finalement, lors de l’implantation pour verifier la compatibilite avecl’architecture cible.

Seulement une fois toutes ces etapes validees, il est bon de passer ausysteme cible et de tester en pratique le circuit

7.3.2 Processus pratique de conception

Apres avoir detaille le processus de facon formel, considerons les aspectspratiques : avec la prise en compte du banc d’essai. Le banc d’essai est aussiune methode de validation qu’il faut developper au fur et a mesure du pro-cessus de conception.

139

Page 141: Notes de Cours VLSI

Analyse du système et partitionnement

Écrire description VHDL Écrire bancs d’essai

Simulation − code VHDL

Synthèse

Simulation − portes logiques

Simulation − minutage

Placement et routage

Test sur système−cible

Figure 7.8 – Processus pratique de conception

La figure 7.8 illustre comment celui-ci est concu en parallele pendantl’ensemble du processus : depuis l’elaboration et la simulation du code VHDLjusqu’au placement et routage et la simulation du minutage sur l’architecturecible.

140

Page 142: Notes de Cours VLSI

Chapitre 8

Elements lexicologiques ettypes de donnees

141

Page 143: Notes de Cours VLSI

Chapitre 9

Types et logique standard

142

Page 144: Notes de Cours VLSI

Chapitre 10

Commande parrallele

143

Page 145: Notes de Cours VLSI

Chapitre 11

Synthese de circuitsnumeriques

144

Page 146: Notes de Cours VLSI

Chapitre 12

Simulation comportementale

145

Page 147: Notes de Cours VLSI

Chapitre 13

Designs parametrisables etbancs d’essai

146

Page 148: Notes de Cours VLSI

Chapitre 14

Modularite et gestion deprojets complexes en VHDL

147

Page 149: Notes de Cours VLSI

Chapitre 15

VHDL avance

148

Page 150: Notes de Cours VLSI

Troisieme partie

Architecture

149

Page 151: Notes de Cours VLSI

Chapitre 16

Representation des nombres

Avant de passer en revue differente architecture de circuits arithmetiques,il faut considerer comment les nombres sont representes en pratique. En effet,un algorithme d’addition depend fortement de la representation du nombre,comme il sera vu a la section suivante.

Dans la representation ecrite des nombres, nous utilisons communementla base 10 et plus particulierement la notation arabique des chiffres. De plus,certaines typologies specifient le signe et la fraction du nombre entier. Parexemple, si le point “.” est utilise pour representer la fraction en Ameriquedu Nord, c’est la virgule qui est utilisee plus communement en France. Lepoint en revanche est parfois utilise en France pour separer des groupes de 3chiffres alors qu’un espace sera employe ailleurs. Nous comprenons alors queles notations ”1.000” ”1,000” ”1 000.0” peuvent etre interprete differemmentselon ce que le lecteur s’attend a decoder.

Par ailleurs, le signe moins “-” est utilise pour representer les nombresnegatifs. Par convention, il est place devant la serie de chiffres representantla magnitude. Supposons qu’une autre culture le place apres, il faudraitalors interpreter differemment les choses, surtout face a l’ecriture d’une seried’operations d’additions/soustractions.

Il est difficile d’imaginer aujourd’hui comment les Romains elaboraientdes calculs avec l’ecriture romaine des nombres. En realite, ils utilisaientleur representation uniquement pour denombrer des quantites. Les bases del’arithmetique n’etaient pas triviales dans cette representation. La culturearabe a d’ailleurs permis de plus amples progres en arithmetique grace aleurs notations des nombres. Pour un peu plus d’histoire, les nombres etaientcomptes souvent en base dix, le lien avec le nombre de doigts des deux mains

150

Page 152: Notes de Cours VLSI

semble evident. Mais certaines cultures (maya, celtique) utilisaient la base20 pour les nombres. Ce qui donne d’ailleurs dans certaine forme de francaisles expressions ”quatre-vingt, quatre-vingt-dix” pour 4 fois 20 = 80 et 4 foisvingt plus 10 pour 90, au lieur d’octante, ou huitante et nonante dans d’autrescultures francophones (Suisse/Belgique). Cette facon de compter avait pourbut de faciliter certaines operations.

Certaines cultures comptent d’ailleurs en base hexadecimale pour facilitercertaines divisions. C’est le cas du poids en anglais, avec la livre et l’once, ouencore la mesure en degre d’un angle.

Le point de cette illustration est que la representation n’est pas unique, etnon plus fondamentale : il en faut une. En revanche elle conditionne fortementla complexite de l’arithmetique qui s’en suit.

En circuit logique, il va de meme, et cette section passe en revue lesdifferentes formes utilisees.

16.1 Representation des nombres entiers

16.1.1 Binaire signe

Le binaire signe utilise la representation binaire pour la magnitude d’unentier et un bit supplementaire pour le signe. Il constitue la forme la plusevidente des numerations binaires. Le bit de poids fort (par convention) cor-respond au signe, les autres a la magnitude.

La magnitude est un entier naturel, positif donc, independante du signe.Par ailleurs, l’architecture cible doit definir l’ordre des bits de poids fort

a faible ou dans une architecture “little endian” de faible a fort.La representation binaire signee est donc aussi dependante du nombre de

bits qui represente la quantite. Il eut fallu placer le bit de signe avant le poidsfaible pour s’en affranchir. Toutefois, le nombre de bits d’une representationest fixe et defini au moment du design d’un circuit logique. Les contraintesphysiques des circuits logiques les limitent en ressources. Ils peuvent aussidifficilement etre reprogrammes pour gerer le depassement en augmentant laplage de la representation... quoique, avec les FPGAs, il faudrait mesurer lecout de la reprogrammation en temps reel qui ajouterait le bit manquant.

Sur 8 bits nous ecrirons par exemple :+4 -4

0000 0100 1000 0100

151

Page 153: Notes de Cours VLSI

Desavantage. Les operations d’addition et de soustraction sont distinctesavec cette numeration.

Avantage. Le depassement (overflow) est la consequence du nombre fixede bits dans la representation, et d’une addition depassant la quantite maxi-male representable. Il est facilement detectable en observant la retenue sor-tante de l’additionneur.

16.1.2 Complement a deux

Le Complement a deux “Ca2” est une forme tres utilisee dans les pro-cesseurs conventionnels. C’est la forme binaire des numerations dites de“complement a la base”.

Son avantage majeur reside dans l’unification des operations d’additionet de soustraction.

Pour une quantite signee dont la magnitude occupe N − 1 bits,

1. la magnitude est initialement representee normalement par un vecteurde N − 1 bits.

2. Un N ieme bit lui est ajoute, apres celui de poids fort pour tenir lieu debit de signe. Initialement mis a zero.

3. Pour une quantite negative, tout les bits sont alors inverses et le toutest additionne de “1”.

4. Une quantite positive est directement represente par la magnitude, alaquelle est ajoute le bit zero de signe.

Cette representation permet alors de decrire tout nombre entier dansl’intervalle [−2N−1, 2N−1 − 1].

Magnitude. L’operation pour recuperer la magnitude d’un nombre en Ca2est la meme que celle d’inverser le signe pour obtenir un nombre negatif.

1. Si le bit de signe est zero, la magnitude est directement la quantiterepresentee, par les N − 1 premiers bits.

2. Si ce bit est a ‘1’, il faut inverser tous les bits et ajouter ‘1’ au resultat.

3. Par contre, l’ensemble des N bits (y compris le bit de signe qui n’en estplus un) donne la magnitude (bien qu’aucune valeur plus grande que2N−1 n’en resultera, evidement).

152

Page 154: Notes de Cours VLSI

Avantage. L’addition devient circulaire : toute paire de nombres de signesquelconques dans l’intervalle donnes representee en Ca2 peut etre additionneepar un additionneur ordinaire. La retenue sortante est simplement ignoree.

Desavantage. Si le resultat de l’addition depasse la plage, la retenue sor-tante ne donnera pas cette information. Cela necessite un peu plus de logique :

1. Si deux operandes sont de signes opposes, le depassement est impos-sible.

2. Si deux operandes sont de meme signe, il y a depassement si et

seulement si le resultat de l’addition est de signe different de celuides operandes.

Beaucoup de processeurs ne detectent pas les depassements pour lesnombres en Ca2. Il s’agit la d’une source d’erreur importante et difficilea diagnostiquer.

Par ailleurs, la magnitude n’etant pas immediate a obtenir, ceci peutconstituer un fardeau dans bon nombre de multiplieurs, puisque les algo-rithmes de multiplication traitent generalement les magnitudes et les signesseparement.

Pour resumer, par rapport au binaire signe, le Ca2- est plus complexe pour extraire la magnitude- plus complexe pour le passage au nombre oppose- et le depassement lors d’une addition est plus complexe.+ En revanche, le circuit d’addition est direct, sans avoir besoin de traiter

la soustraction, due a un nombre negatif ;+ et une soustraction ne necessite que d’opposer le nombre soustrait pour

additionner ensuite, sans autre circuit specifique de soustraction.

16.1.3 Numeration redondante

Les numerations redondantes considerent plusieurs facons de representerun meme chiffre. L’idee derriere cette duplication est avant tout d’eviter depropager la retenue. En effet, c’est la contrainte de propagation de la retenuequi limite les algorithmes d’additions a effectuer leur operation en un nombred’iterations dependant de la plage de nombre considere (la resolution ou laplage dynamique de la representation, ou encore, les N bits consideres). Ainsiplus les nombres a additionner sont grands, plus l’addition sera longue.

153

Page 155: Notes de Cours VLSI

La numeration d’Avizienis

Dans la numeration redondante, les numerations de la famille d’Avizie-nis sont considerees dans certains circuits logiques. Dans cette famille, lesnombres sont representes par les chiffres de la base ainsi que le complementdes ses chiffres, en realite, leurs opposes generalement notes .. Ainsi, il estpossible de completement specifier chaque nombre en base 10 avec les chiffres-5 a 4 note {5, 4, 3, 2, 2, 0, 1, 2, 3, 4}. Le nombre 1980 (litteralement 1× 103 +9 × 102 + 8 × 101 + 0 × 100), s’ecrit simplement 2020, ce qui equivaut a2× 103 + 0× 102 − 2× 101 + 0× 100.

Cette numeration permet de specifier completement tous les nombres en-tiers. Mais limitee a cet ensemble de chiffres, elle n’apporte aucune redon-dance. La redondance est possible si nous utilisons plus de chiffres que labase n’en a besoin. Par exemple, en utilisant les chiffres -6 a 6, plusieursrepresentations sont possibles pour 1456 :

– 1465– 2665– 2545– 2535– 2575– 2675– . . .Tout cela semble bien complexe toutefois, il faut garder a l’esprit que la

question n’est pas d’etre capable de traduire d’une representation a l’autre,mais de pouvoir calculer sans en evitant la propagation d’une retenue. Ilsuffira d’utiliser une representation qui evite la propagation, plutot qu’unequi la propage a travers tout le reste de l’addition.

Binaire. En binaire, la representation se limite necessairement aux chiffres{1, 0, 1}. Toutefois, en circuit logique binaire, nous n’utilisons donc pas designaux multiniveaux permettant de representer 3 etats completement definisdifferents (excepter les niveaux indetermines servant a la simulation MVL-9du standard ieee 1164).

Ainsi, il faut utiliser 2 bits pour representer les 3 chiffres, ce qui apporteune redondance supplementaire. Un standard utilise (qui est necessairementune convention), dite representation de borrow-save denomme les deux bitsx+ et x− et specifie le chiffre en binaire redondant comme

x = x+ − x− (16.1)

154

Page 156: Notes de Cours VLSI

Chiffre Representation (x+x− − 1)

1 (0,0)0 (1,0) et (0,1)1 (1,1)

Table 16.1 – Notation du binaire signe sur deux bits standards, pour l’ap-plication aux circuits arithmetique.

Ainsi, les chiffres se representent par

Chiffre Representation borrow-save (x−x−)

1 (0,1)0 (0,0) et (1,1)1 (1,0)

Nous verrons en revanche un autre standard dans les architectures presenteesa la section suivante :

x = x+ + x− − 1. (16.2)

Ceci se traduit par la notation donnee a la table 16.1.Les differences de conventions changent la structure du circuit puisqu’elles

changent les conditions. Certaines sont utilisees lorsqu’elles simplifient cesstructures.

L’avantage direct de cette notation signee est la representation des nombresnegatifs qui sont alors directement representes, contrairement au Ca2 ou seulle bit de poids fort definit le cas d’un nombre negatif ou non. Aussi, le pas-sage d’un nombre a son oppose est direct. Il suffit d’inverser le chiffre (1 et 1sont echange, 0 reste 0).

Avantage. La notation binaire redondante permet des additionneurs effi-caces, ce qui sera vu a la section 17.2.2.

Desavantage. Les conversions entre cette numeration et une notation conven-tionnelle (p.ex. Ca2) sont de complexite equivalente a un additionneur sequentiel.Il faut effectuer la conversion le moins souvent possible, essentiellement pourun resultat final a afficher ou utiliser dans un autre circuit.

155

Page 157: Notes de Cours VLSI

Notation a retenue conservee

La notation a retenue conservee est une forme redondante utilisee pourmemoriser des resultats intermediaires. Deux vecteurs de N bits sont utilisespour representer un nombre dans [0, 2N−1]. Un vecteur S pour “somme” etun vecteur R pour “retenue”. Ainsi, le nombre total s’ecrit :

x =N−1∑p=0

(sp + rp)× 2p. (16.3)

Ce systeme est avantageux lorsqu’on a plusieurs nombres a additionner(p.ex. les produits partiels d’une multiplication). L’addition d’un nombreen retenue conservee et d’un nombre en representation conventionnelle peuts’effectuer en parallele (sans propagation de retenue) et restitue un resultaten retenue conservee.

Nous pouvons ainsi additionner k termes a la suite de quoi, une seuleoperation d’addition conventionnelle (c.-a-d.. avec propagation de retenue)est necessaire pour restituer un resultat en notation conventionnelle.

Ainsi cette forme a des avantages et inconvenients equivalents a la numerationprecedente.

16.1.4 Autres notations

Le complement a 1

La forme binaire des numerations dites de “complement diminue” estaussi appelee complement a 1. Elle est nettement moins employee que leCa2.

L’avantage de taille toutefois tient dans le passage d’un nombre a son op-pose qui est immediat, car il ne necessite pas l’operation “+1” du complementa deux (operation couteuse en latence et portes logiques), mais seulement l’in-version de tous les bits. Le bit de poids fort initialise a zero pour un chiffrepositif devient donc 1 pour indiquer que la quantite est negative.

Le zero a deux representations 000 . . . 0 et 100 . . . 0. Les N bits permettentde representer [−2N−1, 2N−1].

Avantage. Comme pour le complement a 2, un algorithme unifie s’appliquepour l’addition et la soustraction. Il faut toutefois ajouter la retenue sortanteau resultat, ce qui implique une addition supplementaire.

156

Page 158: Notes de Cours VLSI

Desavantage. Les operations arithmetiques sont legerement plus compliqueesqu’en Ca2.

Notation logarithmique

L’idee d’une notation logarithmique est proposee en 1975 par Swartz-lander et Alexpoulos. Elle consiste a representer un nombre par un sym-bole indiquant le signe et par le logarithme de sa valeur absolue. En binairenous utilisons normalement le logarithme en base 2. Un nombre x est alorsrepresente par un bit de signe s et une quantite m tel quel

x = (−1)s × 2m. (16.4)

L’avantage de cette notation est evidente dans les algorithmes compor-tant beaucoup de multiplications et divisions. Le logarithme transformantces operations en addition et soustraction, respectivement.

Desavantage. 1)les additions et soustractions deviennent d’autant pluscomplexes (essentiellement il faut revenir a une notation lineaire). 2) laconversion de, et vers cette notation est complexe puisqu’il faut faire in-tervenir des fonctions non lineaires, le logarithme et l’exponentielle.

Notation BCD

BCD, pour binary coded decimal est surtout utilise dans les calculatrice et“pico-ordinateur”. La volonte initiale est d’harmoniser le format des calculsinternes et celui de l’affichage decimal, evitant de nombreuses conversions.

Des groupes de 4 bits sont utilises pour representer un chiffre de 0 a 9.Les operations arithmetiques sont legerement plus complexes. La notationBCD est aussi plus gourmande en memoire puisque sur 4 bits necessairespour representer 10 chiffres, 6 possibilites de codage sont ignorees. Ainsipour 8 bits, les nombres [0, 99] sont represente, au lieu des nombres [0, 255].C’est comme si plus d’un bit n’etait pas utilise parmi les 8 bits disponibles.Asymptotiquement, la representation BCD demande

4log(2)

log(10)= 1.204... (16.5)

fois plus de place (de bits) qu’une representation binaire en base 2.

157

Page 159: Notes de Cours VLSI

Notation modulaire (par residu)

Dans les precedentes notations (redondante ou non), un nombre etaitdecompose en une serie de facteurs (de chiffre) multiplies par une puissancede la base. Dans la la notation par residu aussi appele RNS (residual notationsystem), un ensemble d’entiers {m1, . . . ,mN} premiers entre eux (deux adeux) est pose ainsi qu’un entier relatif a, servant de decalage. Un nombre xest alors represente par une serie de nombres qui sont les modulos du nombreet des N entiers initiaux.

C’est une notation complexe qui permet de specifier tout les nombresentre [a; a +

∏Ni=1 mi]. Cette numeration n’est pas non plus redondante :

chaque nombre dans l’intervalle aura une notation unique. Par exemple labase RNS {7, 11, 13} (et a = 0) permet de representer le nombre 29 : (29mod 7, 29 mod 11, 29 mod 13) = (1,7,3).

L’operation de conversion inverse, en revanche, est tres exigeanteL’avantage tient dans l’efficacite pour effectuer de grands nombres d’ad-

ditions et de multiplications. Il suffit d’additionner/ multiplier pour chaquenombre modulo independamment, et d’en prendre a nouveau le modulo

En revanche, la determination du signe et les comparaisons et divisionspose problemes. Il ne s’agit pas d’une numeration de position (qui indiquedirectement l’ordre croissant/decroissant des nombres soit la position d’unequantite par rapport aux autres plus grandes ou plus petites).

16.2 Representation des nombres a virgule

Binaire a virgule fixe

La representation des quantites reelles (par exemple analogique) par desvecteurs de bits recourt frequemment a la notation a virgule fixe.

La plage de valeurs a couvrir de meme que la precision doivent etreprealablement specifiees. Ceci permet de deriver la taille des vecteurs debit et la position de la virgule.

Le vecteur est ainsi divise en deux sous-vecteurs : la partie entiere et lapartie fractionnaire.

Pour une precision constante, la sortie des multiplieurs est tronquee, afinque la partie fractionnaire ait un nombre de bits constant.

L’inconvenient de cette notation est que la precision est fixe : elle n’est pasproportionnelle a la magnitude du nombre represente. Ainsi en proportion

158

Page 160: Notes de Cours VLSI

plus le chiffre est grand, moins il y a d’erreurs sur la precision. Mais la plupartdu temps l’imprecision est importante.

Binaire a virgule flottante

Pour representer une grande plage dynamique, il faut faire appel a lanumeration a virgule flottante

Un entier x est represente par deux vecteurs de bits : la mantisse etl’exposant. Il y a donc aussi deux vecteurs fixes de donnees. En revanche,la mantisse est normalisee a 1 et le facteur de normalisation se retrouve dansl’exposant :

x = (M × 2−Nm+1)× 2E+1 (16.6)

Ici Nm bits servent a representer la mantisse M ; les autres sont pourl’exposant E. Les deux quantites sont representees en Ca2.

De fait, a traduire ce nombre en virgule fixe, l’exposant donne la positiondu ‘1’ le plus significative. La mantisse peut-etre vue comme une quantite envirgule fixe comprise entre 0 et 1 et de precision 1/2Nm .

L’avantage de cette representation est de permettre la representation degrande valeur sans necessiter un nombre de bits proportionnel, mais avec uneerreur de precision, en revanche, proportionnelle.

159

Page 161: Notes de Cours VLSI

Chapitre 17

Circuits d’addition et deconversion

17.1 Additionneurs

17.1.1 Demi- et plein-additionneur

Demi-additionneur

Le demi-additionneur est l’addition de deux bits, et la sortie sur 2 bitsqui comprend necessairement un bit de poids fort, pouvant etre considereecomme un bit de retenue.

Sa table de verite est donnee par le tableau 17.1. La somme est simplementune operaition de OU-exclusif et la retenue, un ET logique, tel qu’illustre ala figure 17.1

L’inconvenient de ce circuit est qu’il ne permet pas de tenir compte d’uneretenue externe, d’ou le terme “demi”-additionneur qui signifie qu’en l’etatle circuit n’est pas complet.

A B R S0 0 0 00 1 0 11 0 0 11 1 1 0

Table 17.1 – Table de verite du demi-additionneur

160

Page 162: Notes de Cours VLSI

A

BS

R

Figure 17.1 – Demi-additionneur

HA

A

B

S

R

HA

A

B

S

RA

B

Re S

Rs

Figure 17.2 – Schema du circuit du plein additionneur.

Plein-additionneur

Le plein additionneur (full-adder FA) est un circuit d’addition de deuxbits pouvant s’inserer dans une chaıne d’addition. Il tient compte en plusd’une troisieme entree : celui de la retenue en provenance de bit de poidsplus faibles.

Il offre en sortie naturellement le bit de meme poids que ceux additionneset une retenue.

La table de verite du module logique est specifiee au tableau 17.2. Lageneration de la somme revient a deux operations de OU-exclusif sur lesentrees (les deux bits et la retenue d’entree),

S = A⊕B ⊕Re,

et un OU logique des deux retenues des resultats intermediaires qui sontsimplement deux demi-additionneurs,

Rs = AB +Re(A⊕B) = AB +Re(A+B)

Son circuit revient a celui de deux demi-additionneurs sequentiels, et d’uneporte OU, comme illustre a la figure 17.2.

17.1.2 Additionneur sequentiel

L’additionneur sequentiel (ripple carry adder) resulte du chaınage de cel-lules “plein-additionneur”, dans l’ordre croissant du poids des bits (c.f. Fi-

161

Page 163: Notes de Cours VLSI

A B Re Rs S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Table 17.2 – Table de verite du plein additionneur

A B

S

Rs ReFA

A B

S

Rs ReFA

A B

S

Rs ReFA

A B

S

Rs ReFA ’0’

B(0)B(1) A(0)A(1)B(2)A(2)B(3)A(3)

S(3) S(2)

R

S(1) S(0)

Figure 17.3 – Schema de l’additionneur sequentiel pour des mots de 4 bits.

gure 17.3). Sa complexite en nombre de composantes croıt lineairement avecla taille des operandes. Malheureusement, son delai de propagation aussi. Eneffet, la retenue peut etre propagee successivement du plein additionneur duplus faible poids, au suivant, jusqu’aux plus forts poids.

Malgre tout, c’est cette structure qui est favorisee par l’architecture desFPGAs de Altera et Xilinx (c.-a-d. lorsque le compilateur transforme uneoperation + sur un vecteur de bit, en serie d’elements logiques du FPGA).

Question d’optimisation. Dans tout circuit,

1. compose d’elements identiques, et

2. ou ces elements travaillent un apres l’autre de maniere sequentielle,

il est possible de :

1. soit reduire la surface (c.-a-d. nombre d’elements logiques du cir-cuit (implantation serie utilisant une meme composante successi-vement avec un circuit de controle) ;

162

Page 164: Notes de Cours VLSI

A B

S

Rs ReFA

D

Q

D

Q

A(0) B(0)A(1) B(1)A(2) B(2)A(3) B(3)

D Q

S(3)S(2)S(1)S(0)

Re(1) Re(2) Re(3) R

Figure 17.4 – Schema du circuit serie de l’additionneur sequentiel.

2. soit de reduire le temps global du calcul lorsque plusieurs operationssont a effectuer en lot (implantation en pipeline : utilisation suc-cessive de chaque element, iteration apres iteration en alimentantl’entree du pipeline avec les donnees suivantes).

Implantation en serie

Etant donne que les cellules d’addition fonctionnent une a la fois, nouspouvons implanter cet additionneur avec une seule cellule. Les operandesdoivent etre fournis bit par bit. La structure du circuit est illustree a lafigure 17.4

163

Page 165: Notes de Cours VLSI

Implantation en pipeline

La structure en pipeline permet d’accelerer le traitement si nous avons ungrand nombre d’additions a effectuer. Considerons les k sommes suivantes :

S0 = A0 +B0

S1 = A1 +B1

S2 = A2 +B2

...

Sk = Ak +Bk

Pipeline serie. Il est possible sans grande modification d’utiliser la struc-ture de l’additionneur sequentiel en mode pipeline serie.

L’illustration de cette utilisation du circuit d’addition est donnee a lafigure 17.5. Il convient d’avoir la logique sequentielle supplementaire permet-tant de realigner les bits de chaque mot de sorties, ainsi que la logique pourfournir en entree les bits en decale. Aussi, les bascules de synchronisationdoivent etre intercalees sur les signaux de retenues.

Structure en pipeline parallele Une autre structure utilisant une ma-trice de demi-additionneur est possible, celle-ci n’offre pas d’avantage enterme de quantite d’elements logiques utilises, ni de temps d’execution, enabsolue. En revanche, sa structure deja en treillis permet de s’affranchir de lalogique sequentielle necessaire a l’alimentation en decalage des mots a addi-tionner ; de meme la sortie est directement alignee. Aussi, sa grande regularitepermet une implantation facile et optimale sur un ASIC. Le schema de lastructure en pipeline parallele est donne a la figure 17.6

17.1.3 Circuit de soustraction.

– En Ca2, l’addition de deux nombres, peu importe le signe, s’effectueavec un additionneur ordinaire.

– Pour soustraire, il suffit d’inverser les bits de la seconde operande etd’injecter une retenue entrante de ’1’.

La figure 17.7 donne le schema de l’inversion du deuxieme operande viaun multiplexeur selectionnant les bits, ou l’inverse des bits, controle par lebit de signe. La meme fonction peut etre obtenue avec de portes OU-exclusif(Figure 17.8).

164

Page 166: Notes de Cours VLSI

A B

S

Rs ReFA

A B

S

Rs ReFA

A B

S

Rs ReFA

A B

S

Rs ReFA ’0’

A0(0) B0(0)A1(0) B1(0)A2(0) B2(0)

B3(0)A3(0)

A0(1) B0(1)B1(1)A1(1)

A2(1) B2(1)A0(2) B0(2)

B1(2)A1(2)A0(3) B0(3)

S0(0)S1(0)S2(0)S3(0)

S0(1)S1(1)S2(1)

S0(2)S1(2)S0(3)

Figure 17.5 – Utilisation en pipeline de l’additionneur sequentiel (sansrepresenter la synchronisation necessaire par les bascules).

A(3) B(3)

+ +

A(2) B(2)

+

A(1) B(1)

+

A(0) B(0)

+

+

+

+

+

+ D

D

DD

D

D

S(3) S(2) S(1) S(0)

DDQ

+ R S

A BHA

D D

Figure 17.6 – Strucutre en pipeline parallele du circuit d’addition.

165

Page 167: Notes de Cours VLSI

...

Sel Mux 2 a 1

Re Additionneur n bits

B(0)B(n-2)B(n-1)A(0)A(n-2)A(n-1)

...

...

signe

A +/- B

Figure 17.7 – Inversion du signe du 2e operande via un multiplexeur

...

Re Additionneur n bits

B(0)B(n-2)B(n-1)A(0)A(n-2)A(n-1)

...

signe

...

A+/-B

Figure 17.8 – Inversion du signe du 2e operande via des portes OU-exclusif.

166

Page 168: Notes de Cours VLSI

Figure 17.9 – Plan d’ensemble de la machine analytique de Charles Babbage. Cette machine,entierement mecanique, n’a jamais ete completee, mais est consideree comme le precurseur des ordinateursmodernes. Elle fut construite a partir d’idees en avance d’un siecle sur leur temps, y compris les premiersmecanismes d’acceleration de la propagation de la retenue.

17.1.4 Additionneurs a retenue bondissante

Les principes d’addition a retenue bondissante et a retenue anticipee re-montent a la machine aux travaux de Charles Babbage (1851) (c.f Figure17.9).

Principes

Suivant les principes de propagation et generation de la retenue, il y a atoute position binaire dans un additionneur,

1. soit propagation (de la retenue entrante vers la retenue sortante)

2. ou generation (la retenue sortante est independante des etages precedents)d’une retenue.

Ainsi, la propagation et la generation s’ecrivent chacune :

Pn = An ⊕Bn

Gn = AnBn.

ou ⊕ denote le ou-exclusif.En gardant ce phenomene en tete, constatons que l’additionneur peut

etre divise en blocs de taille egale ou inegale. Aussi, si toutes les positionsd’un bloc propagent la retenue, alors la retenue sortante du bloc est egale ala retenue entrante. Par exemple, dans l’addition en bloc suivante

167

Page 169: Notes de Cours VLSI

A(5)

B(5)

A(4)

B(4)

A(3)

B(3)

A(2)

B(2)

A(1)

B(1)

A(0)

B(0)

BOND

Re

BOND

RsRe (bloc suivant)

Figure 17.10 – Circuit de bond de la retenue

01010 101011 10101+ 01101 010100 11011

le premier bloc genere une retenue, le deuxieme la propage.Il est possible d’envisager un circuit de bond de retenue, pour la propager

plus rapidement que le mode sequentiel ne le permet. Celui est donne a laFigure 17.10.

Complexite

Dans un additionneur sequentiel, c’est la propagation de la retenue surde longues sequences de bits qui entraıne les delais les plus longs.

En retenue bondissante, le pire cas est donne lorsque le bloc de poidsfaible est generateur, alors que les autres sont propagateurs.

Si le nombre de blocs est K et que la taille d’un bloc est N (pour un totalde K ×N bits),

– le delai de propagation a travers un bloc est de 2N etages combinatoires(les deux demi-additionneurs pourNbits).

– le delai pour faire “bondir” la retenue au bloc suivant est de 3 etages(XOR + ET + multiplexeur)

– le delai du pire cas est alors de 3(K − 2) + 4N etages, pour K − 2propagations (premier et dernier bloc) plus 4N pour le premier et ledernier bloc.

168

Page 170: Notes de Cours VLSI

Ceci est a comparer avec le delai d’un additionneur sequentiel equivalent soit2KN etages.

Pour K = N = 4, le facteur d’acceleration est de 3222≈ 1, 45. Pour

K = N = 8 il est de 12850≈ 2, 56.

17.1.5 Additionneurs a retenue anticipee

La retenue a chaque position d’un additionneur est une fonction combina-toire des operandes. Il est par consequent possible de la generer directementsans la propager au travers des cellules d’addition. C’est le principe de retenueanticipee (carry look-ahead ou CLA).

Les fonctions combinatoires introduisent un nombre reduit d’etages dedelai. En principe, le temps de calcul est independant de la largeur des vec-teurs d’entree. Cependant, les fonctions de generation des retenues exploitentdes portes avec un grand nombre d’entrees (fan-in eleve), ce qui ralentit lecircuit. En effet, il faut qu’une source (un bit) soit capable d’alimenter chaqueentree de chaque porte qu’elle alimente. Or, en tenant compte de chaque capa-cite parasite et resistance, nous comprenons que ceci constitue une contrainteelevee et ralentit l’activation ou le changement d’etat des portes en question.Ainsi, ceci est seulement realisable pour de petits additionneurs.

La Figure 17.11 donne son schema. Le circuit traite chaque bit de poidsindependamment pur produire le signal G (generation) ou P (propagationde retenue). Le circuit CLU carry look-ahead unit ou circuit de generation deretenue genere la retenue et en fonction des produits G et les retenues sontcombinees avec les signaux de propagation de retenue P par un OU-exclusif.

Le schema 17.12 represente le CLU. Les fan-in eleve y est apparent des4 bits traites. Autrement, il n’y a que deux niveaux de portes logiques.

17.1.6 Additionneur a retenue conditionnelle

Une derniere strategie d’addition consiste a dupliquer les cas :Pour un bloc, deux circuits sont utilises, l’un additionne sans retenu,

l’autre avec. Il suffit ensuite de selectionner le resultat en fonction du resultatde la retenue.

Cette strategie toutefois implique une propagation de la retenue, d’unbloc a l’autre. Mais cette propagation en est neanmoins accelere, puisque letemps de traitement des k bloc precedent de N bits s’executerons en 2Netages (le nombre de demi additionneur) puis la propagation de la retenue

169

Page 171: Notes de Cours VLSI

GP GP GP GP

CLU

S0S1S2S3

Rs

Re

R4 R3 R2 R1

G0 P0

A0B0A1A2A3 B1B2B3

Figure 17.11 – Additionneur a retenue anticipee

R1R2R4 R3

Re(R0)

G0P0P1G2P2G3P3 G1

Figure 17.12 – Structure d’un CLU a 4 bits

170

Page 172: Notes de Cours VLSI

s’effectuera en k − 1 etages donc pour K blocs de N bits, la latence est deK − 2 + 2N . En contrepartie, 2×K − 1 addition de N bits sont necessaire

Retenue conditionnelle recursive. En supposant que le principe de laretenue conditionnelle soit applique sur un mot divise en deux blocs, il fauttrois additionneurs qui eux aussi peuvent utiliser le principe de la retenueconditionnelle.

Ainsi, pour 2L ×N bits, il faut– 3 additionneurs de 2L−1N bits– qui eux peuvent etre compose de 3 additionneurs de 2L−2 bits et du

circuit de generation de retenue

–...

– qui peuvent eux-memes etre compose de 3 additionneurs de 20N = Nbits et du circuit de generation de retenue.

– Pour N = 1, il y a 2L bits, le circuit se resume a 2 additions par bit avec2 generateurs de retenues, ainsi que l’ensemble de l’arbre du circuit deretenue.

Le nombre d’etages est proportionnel au logarithme du nombre de bits : ilfaut log2(2L) = L etages. La retenue peut donc etre acceleree non pas en unfacteur de ratio lineaire du nombre de bits (K blocs de N bits dans le casprecedent), mais en un facteur logarithmique du nombre de bits. La figure17.13 illustre le processus.

Cependant, l’implantation d’un tel additionneur est couteuse a cause dela duplication des additionneurs. Par ailleurs, il existe des additionneurs plusefficaces qui operent egalement en O(log(N)), avec N le nombre de bit total(p.ex. additionneur de Brent et Kung).

17.1.7 Additionneurs sur FPGAs

Les architectures de Xilinx et d’Altera sont optimisees pour favoriser lesadditionneurs sequentiels. Elles possedent des ressources de routage dedieesa la propagation de la retenue. Ces ressources sont construites a partir deveritables portes logiques, c.-a-d. de la logique non-reconfigurable.

Aussi, cette logique est beaucoup plus rapide que la logique a base detableaux. Il est donc tres difficile d’accelerer les additionneurs sur les FPGAsd’Altera et de Xilinx.

Le placement (lors de la synthese) impose aussi que les additionneurs

171

Page 173: Notes de Cours VLSI

Figure 17.13 – Illustration de l’additionneur conditionnel : chaque bit estsomme individuellement deux fois, soit avec une retenue d’entree nulle, ou aun, donnant deux couples, somme et retenue, de bit superieur. Pour chaquecouple de bits, il est possible de resoudre la retenue intermediaire, a l’etapesuivante, et obtenir un resultat sur trois bits (deux de sommes, une de rete-nue de bit superieure). De meme, pour chaque ensemble de 4 bits, on peutresoudre a l’etape suivante les retenues intermediaires. Dans notre exemple,les deux bits de poids faible peuvent se resoudre directement, car ils nedependent pas de la resolution en attente d’etape precedente, mais seule-ment de la retenue d’entree.

172

Page 174: Notes de Cours VLSI

soient implantes sur des colonnes de CLBs / LEs, de par les disponibilitesde routage de retenue. Enfin, les additionneurs dont la largeur depasse unecolonne voient leur performance se degrader abruptement.

17.2 Arithmetique redondante et Addition-

neurs avances

L’avantage de l’arithmetique redondante est avant tout de permettre desimplifier les operations. Le fait que plusieurs representations pour une memequantite soient possibles peut permettre d’eviter la propagation de la retenue.

Comme nous le comprenons dans la section precedente, la propagation dela retenue est le facteur limitant dans l’addition en representation classiquede nombre. Il est alors impossible de depasser O(log(N)).

Avec la redondance, nous cherchons a absorber la retenue au bit suivant,plutot que de la propager.

17.2.1 Additionneurs en notation somme plus retenue

La notation a retenue conservee (c.f. section 16.1.3) utilise deux fois plusde bits pour la representation : un bit de somme, un de retenue.

Supposons que nous avons un nombre note en retenue conserve sur Nbits :

X = {(rN−1, sN−1), . . . (r0, s0)} . (17.1)

La quantite x que cette serie X represente, s’ecrit mathematiquement :

x =N−1∑j=0

(rj + sj)2j. (17.2)

Avec ici, le ‘+’ designant bien l’addition arithmetique (et non pas le oulogique).

Nous additionnons alors a ce nombre, un nombre A en numeration simple :

A = {aN−1, . . . , a0} . (17.3)

Naturellement, la quantite a s’ecrit de meme sous la forme d’une sommed’exposant de 2 pondere par les ai.

173

Page 175: Notes de Cours VLSI

L’idee du developpement qui suit est de sommer de facon arithmetiquepour trouver une forme de somme sur deux termes qui sera analogue a laforme (somme + retenue). Ce developpement de plus va nous donner lastructure de l’additionneur rechercher :

X + A =N−1∑j=0

(rj + sj)2j +

N−1∑i=0

(ai)2i (17.4)

=N−1∑j=0

(rj + sj + aj)2j, (17.5)

(17.6)

a ce stade ci, on constate que la somme de trois bits (rj, sj, aj) s’ecrit toujourssur 2 bits : un bit de poids courant plus un bit de poids superieur (la retenuequi devrait se propager au nombre suivant). On pose donc

r′j+1 + s′j = rj + sj + aj. (17.7)

Ainsi, chaque somme de bit de poids j donne la somme courante et la retenuesuivante. Au bout de la somme, la retenue finale est un poids supplementaire(poids de 2N), et aucune retenue ne se sera propagee plus qu’une etape(ce qui n’est pas le cas de l’additionneur sequentiel). La retenue est doncsystematiquement absorbee au bit suivant. Cela nous donne :

X + A =N−1∑j=0

(2× r′j+1 + s′j)2j (17.8)

=N∑j=0

(r′j + s′j)2j, (17.9)

Avec r′0 = 0 et sN = 0. Nous avons seulement besoin de N additionneurspleins (full adder), adequatement connectes, tel qu’illustre a la figure 17.14.Remarquons que la retenue de sortie des FA n’est qu’une connexion, et n’estdonc pas reellement une propagation qui implique un delai.

Le meme circuit nous donne l’addition de deux nombres en notationconventionnelle pour un resultat en somme plus retenue, puisqu’un nombreen somme plus retenue avec tous les chiffres de retenue a ‘0’ revient a cettenotation.

174

Page 176: Notes de Cours VLSI

+ + + +

FA

+

’0’ ’0’

a3 a2 a1 a0

A B

S

Rs Re

s3r3 s2r2 s1r1 s0r0

s′0r′1 r′0s′1r′2s′2r′3s′3s′4 r′4

Figure 17.14 – Additionneur somme/retenue.

Malheureusement, pour revenir en notation classique (depuis une notationsomme/retenue), il faut utiliser un additionneur conventionnel sur les deuxnombres que representent les series de somme et de retenue separement.Ainsi, cette notation permet de differer la propagation de la retenue. Cecipeut s’averer utile lorsqu’il est necessaire d’additionner plusieurs nombres.

17.2.2 Additionneurs en notation Avizienis, binaire signe

Pour des besoins arithmetiques plus exigent (traitement de la soustrac-tion ou de nombres negatifs), la notation precedente peut s’averer limite. Lanotation Avizienis, donc en binaire signe offre beaucoup plus de potentiel. Lenombre negatif est directement encodable puisque le repertoire de chiffres est−1, 0, 1, ainsi, tous les bits peuvent contribuer a obtenir un nombre negatif(contrairement au binaire Ca2 ou seul le bit de poids fort permet de l’enco-der).

L’astuce de l’addition en binaire signe qui permet d’eviter la propagationtient dans le fait que

dans la sequence d’addition poids faible a poids fort, le chiffresuivant peut prendre une notation differente pour absorber laretenue.

175

Page 177: Notes de Cours VLSI

Exemple

0000 1111 1000 (17.10)

+ 0000 0000 1000 (17.11)

va propager une retenue sur 4 bits, en notation conventionnelle. En revancheen notation signee, si on choisi de recoder le premier nombre comme suit :

0001 0000 1000,

la retenue ne se propagera pas, elle sera absorbee.Dans cette perspective toutefois, la propagation existe avant l’addition

puisqu’il nous faut detecter d’abord les suites de ”1” pour les renoter, nousne sommes pas plus avances. Malgre tout, en regardant le probleme commeprecedemment, avec un resultat non pas sur un bit signe, mais sur deux bitssignes, un de somme et un de retenue de poids superieure, il devient possiblede traiter ensemble le choix de la notation adequat et celui de l’addition, sanspropagation :

Nous avons deux nombres signes As et Bs dont les chiffres asj et bsj doiventetre sommes :

asj + bs + j = 2rsj+1 + ssj (17.12)

le s signifie que le chiffre ou le nombre est en representation signee, afin dele differencier de la section precedente.

Nous remarquons que la somme de deux chiffres signes, peut prendre unresultat dans {−2,−1, 0, 1, 2}.

– Pour un resultat de -2, ou 2, rsj+1 prend necessairement la valeur 1 ou -1(qui est multiplie par deux). Et une retenue est propagee d’un bit. Maisaussi, la somme ssj est nulle : ceci implique qu’elle peut alors absorbern’importe qu’elle retenue qui arrive du bit de poids plus faible !

– Si la somme est nulle, rsj+1 est nul et aucune propagation n’a lieu, etla somme est nulle, elle peut donc absorber une retenue venant du bitj − 1.

Nous avons fait la moitie du travail, reste a savoir ce qu’il se passe dans lesautres cas :

– si la somme est 1 ou -1, les choses se corsent : les possibilites d’encodage

176

Page 178: Notes de Cours VLSI

sont :resultat rsj+1 ssj

11 −10 1

-1−1 10 −1

(17.13)

La forme choisie de la somme (ssj = −1 ou 1) peut permettre d’absorberla retenue en provenance du bit precedent. Il suffit que rsj (venant del’addition de asj−1 + bsj−1) plus sj, ne depasse pas les chiffres possibles(-1, 0 ou 1).

On choisit donc la forme avec ssj = −1 si la retenue entrante est 1, oula forme avec ssj = 1 si la retenue entrante est -1.Or, la retenue entrante, donc propagee par le bit (somme) precedent,sera 1 si asj−1 + bsj−1 = 2 et eventuellement si asj−1 + bsj−1 = 1 (puisquedans ce dernier cas, il faut choisir une forme). Aussi, si la retenue dubit precedent (j − 2) s’additionne, aj−1 + bj−1 + rj−1 au plus est egalea deux. Ainsi, la retenue du bit j − 2 n’influencera pas le choix dela notation au bit j. Seuls les bits asj−1 et bsj−1 influence le choix de(rsj+1, s

sj).

Le meme raisonnement tient pour le choix lorsque la retenue entrante seraou pourra etre -1.

Il s’ensuit la liste de choix donnee au tableau 17.3. Evidement, dans lecas ou asj−1 + bsj−1 = 0, le choit d’une notation ou l’autre ne change rien.

Avec cette methode, l’addition se fait, avec pour seul contrainte, unedependance sur les bits sommes precedents, mais pas sur leurs resultats ef-fectifs. Ainsi tout se fait en parallele et la propagation de retenue est absorbeea chaque bit suivant.

Addition de nombres signes en binaire

La question se pose de savoir comment tout cela se traduit en binairesigne sur deux bits (x+, x−) (c.f. Tableau 16.1).

De la meme facon que nous avons developpe l’addition pour la notation

177

Page 179: Notes de Cours VLSI

aj bj aj−1bj−1 rj+1 sj-1 -1 — -1 01 1 — 1 00 0 — 0 01 -1 — 0 0-1 1 — 0 01 0 aj−1 + bj−1 > 0 1 -10 1 aj−1 + bj−1 > 0 1 -11 0 aj−1 + bj−1 ≤ 0 0 10 1 aj−1 + bj−1 ≤ 0 0 1-1 0 aj−1 + bj−1 < 0 -1 10 -1 aj−1 + bj−1 < 0 -1 1-1 0 aj−1 + bj−1 ≥ 0 0 -10 -1 aj−1 + bj−1 ≥ 0 0 -1

Table 17.3 – Choix de la representation en binaire signe pour l’addition avecabsorption de la retenue.

somme plus retenue, nous posons

X =N−1∑j=0

(x+j + x−j − 1)2j (17.14)

=N−1∑j=0

x+j 2j +

N−1∑j=0

x−j 2j −N−1∑j=0

2j (17.15)

= X+ +X− − (2N − 1) (17.16)

Ansi, on peut remarquer qu’un nombre en binaire signee sur deux bits, s’ecritsous une forme de deux nombres en binaire positif classique plus une quantitea retrancher qui depend de N .

Nous allons chercher une forme equivalente en sommant deux nombres X

178

Page 180: Notes de Cours VLSI

A B

S

Rs ReFA

+

+ + + +

+ + + +

’0’

’1’

x3 y3 x2 y2 x1 y1 x0 y0

z0z1z2z3z4

Figure 17.15 – Additionneur en binaire redondant.

et Y :

X + Y = X+ +X− − (2N − 1) + Y + + Y − − (2N − 1), (17.17)

nous regroupont les termes

= X+ +X− + Y +︸ ︷︷ ︸W++W−

+Y − + 1

︸ ︷︷ ︸Z++Z−

+ (2N − 1 + 2N)︸ ︷︷ ︸2N+1−1

, (17.18)

= Z+ + Z− + 2N+1 − 1 (17.19)

On retrouve donc la structure d’un nombre binaire signe sur deux bits,avec un bit de poids fort supplementaire. W+ + W− est un resultat in-termediaire qui code l’addition de trois nombres binaire positif, et le reduitsur deux. Il permet d’absorber les bits {y+

j } note Y + et ceux de X. Ladeuxieme etape permet d’absorber les bits {y−j } note Y −. Chaque etape four-nit un resultat sur deux bits par bits signes. Notons au passage que ces deuxetapes sont directement equivalentes avec l’additionneur a retenue conservevu precedemment : on additionne deux nombres binaire positif (celui de re-tenue et de somme) avec un troisieme (qui sera d’abord Y +). Puis on prendce resultat et on le passe au travers d’un autre additionneur (de type R+Saussi) pour additionner cette fois Y −. Ainsi, on peut voir Z+ et Z− commeune retenue et une somme.

Ainsi, la structure de l’additionneur en binaire redondant se derive de cedeveloppement et est donnee a la figure 17.15. Elle comprend deux etapesd’addition par des FA.

179

Page 181: Notes de Cours VLSI

bit 6 5 4 3 2 1 0 ReAs – 0 1 -1 0 1 1 0 = +16 -8+2+1 = 11Bs – 1 -1 -1 0 1 0 – = 32 -16 -8+2 = 10

asj + bsj – 1 0 -2 0 2 1 0{rsj+1, s

sj} – {0,1} {0,0} {-1,0} {0,0} {1,0} {0,1} –

Rs 0 0 -1 0 1 0 0 –Ss 0 1 0 0 0 0 1 –

Rs + Ss 0 1 -1 0 1 0 1 – = 32-16+4+1 =21

Table 17.4 – Illustration d’une addition de deux nombres en binaire signe.Pour chaque bit, nous regardons la somme des bit precedents (pour lebit de poids 0, il faut considerer la retenue d’entree) afin de choisir unerepresentation {rsj+1, s

sj}. Nous posons rs0 = Re, ssN+1 = 0. Finalement nous

additionnons les deux vecteurs Rs + Ss et remarquons que jamais il n’y adepassement de la plage {−1, 0, 1} : donc pas de propagation de la retenue.

Cet additionneur peut directement traiter les nombres negatifs et doncles soustractions.

17.2.3 Additionneur hybride

Il peut etre interessant dans un circuit, de travailler en notation de binaireredondant en interne, et d’accepter des notations en Ca2 en entree/sortie.

Se pose alors la question de la conversion. Plus particulierement, peut-onadditionner directement un nombre en Ca2 et un autre en binaire redondant ?

Nous posons A sur N chiffres signes,

As =N−1∑j=0

(a+j + a−j − 1)2j, asj ∈ {−1, 0, 1}, (17.20)

= A+ + A− − (2N − 1) (17.21)

et un autre nombre en Ca2 sur N bits,

Bc2 =N−2∑j=0

bj2j − 2NbN−1, bj ∈ {, 0, 1} (17.22)

(17.23)

Remarquons qu’en prenant l’oppose du bit N − 1 de B, nous pouvons

180

Page 182: Notes de Cours VLSI

+ + + +

a3 a2 a1 a0

A B

S

Rs ReFA

+

’0’

c0c1c2c3c4

b4 b3 b2 b1 b0

Figure 17.16 – Additionneur hybride

facilement integrer ce bit dans la somme et soustraire 2N :

B =N−2∑j=0

bj2j + 2N bN−1︸ ︷︷ ︸B′

−2N (17.24)

(17.25)

Developpons :

C = A+B (17.26)

= A+ + A− − (2N − 1) +B′ − 2N (17.27)

= (A+ + A− +B′)︸ ︷︷ ︸C++C−

−(2N − 1)− 2N (17.28)

= C+ + C− − (2N+1 − 1) (17.29)

(17.30)

Nous obtenons ainsi un nombre sous la forme d’un binaire signe (representesur le double de bits) de N + 1 de longueur.

Implicitement, la structure de cet additionneur reprend celui discute pourl’additionneur somme plus retenue, injecte un ‘0’ pour le chiffre c−0 et inversele bit de poids fort du terme B pour le chiffre c+

N . Le schema 17.16 illustecela pour N = 4 bits.

181

Page 183: Notes de Cours VLSI

+ + +

c0c1c2

+

c3

+

c4

’1’

’0’

’1’ r3

s3

r2

s2

r1

s1

r0

s0

Figure 17.17 – Conversion d’un nombre en binaire redondant a une notationen Ca2.

17.2.4 Conversions

Binaire redondant a Ca2

Il sera necessaire de convertir, tot ou tard, de convertir le resultat enbinaire redondant vers du Ca2.

On developpe simplement le nombre en binaire redondant :

X =N−1∑j=0

(x+j + x−j − 1) (17.31)

=N−1∑j=0

x+j 2j +

N−1∑j=0

x−2j − 2N + 1 (17.32)

un bit de poids N est ajoute pour absorber le − 2N (17.33)

=

(−2Nx+

N +N−1∑j=0

x+j 2j

)+(−2Nx−N +

∑j = 0N−1x−2j

)+ 1 (17.34)

avec x+ = 1 et x− = 0. (17.35)

Nous obtenons donc deux nombres X+ et X− en complement a deux surN + 1 bits avec une retenue d’entree a 1. Un simple additionneur sequentielpermet alors la traduction comme illustree sur 4 bits dans la figure 17.17

Ca2 a binaire redondant

Outre l’utilisation un additionneur hybride, il est possible de convertirdirectement du Ca2 en binaire redondant :

182

Page 184: Notes de Cours VLSI

Soit X en Ca2 sur N = 1 bit.

X = −2NxN +N−1∑j=0

xj2j. (17.36)

Comme dans le cas de l’additionneur hybride (pour le nombre B en Ca2),nous considerons l’oppose du bit de signe, ceci afin de faire apparaıtre le terme2N . Ainsi,

X = 2N xN−1 − 2N +N−1∑j=0

xj2j. (17.37)

Il reste a faire apparaitre X+, et X−. Soit X+ = {x+j } = 0111 . . . 1 et X− =

{x−j } = xNxN−1 . . . x0. Alors pour le bit de poids fort N :

x=xn − 1 = x+N + x−N − 1 (17.38)

et pour tous les autres bits :

xj = +x− + j − 1 = x+j + x−j − 1. (17.39)

Finalement

X =N∑j=0

(x+j + x−j − 1

). (17.40)

Ce qui est une notation en binaire redondant. Le circuit sur 4 bits est illustrea la figure 17.18

183

Page 185: Notes de Cours VLSI

’0’ ’1’ ’1’ ’1’...

(x+N−2, x

−N−2)

x0xN−2xN−1xN

(x+N , x

−N) (x+

0 , x−0 )(x+

N−1, x−N−1)

Figure 17.18 – Conversion directe du Ca2 en binaire redondant.

184

Page 186: Notes de Cours VLSI

Chapitre 18

Multiplieur

Nous avons vu dans la premiere partie des notes, des algorithmes demultiplications utilisant une succession d’addition et de decalage. Nous avonsaussi pour des fins academiques d’illustration discuter d’un multiplieur partable de multiplication 3.5.2.

Nous voyons dans les prochaines sections differentes techniques et astucespour la multiplication, permettant chacune de traiter des donnees plus com-plexes.

18.1 Multiplieur serie

La multiplication serie consiste en une serie de multiplication bit parbit et de decalage. Sa logique (son algorithme) est tres efficace en espace(complexite du circuit), mais son temps de calcul et proportionnel a la tailledes operandes.

Pour deux vecteurs de bits A = {a3, a2, a1, a0} et B = {b3, b2, b1, b0}, lamultiplication se developpe comme dans le tableau 18.1

18.1.1 Multiplication de binaire positif

En considerant uniquement des vecteurs en binaire positif sur N bits.Definissons A comme la multiplicande et B comme le multiplicateur.

Le resultat sera sur 2N bits. A priori, il faut un registre a decalage 2Nbits pour contenir la somme partielle, et deux registres de N bits pour lesoperandes.

185

Page 187: Notes de Cours VLSI

a3 a2 a1 a0

× b3 b2 b1 b0

a3b0 a2b0 a1b0 a0b0

a3b1 a2b1 a1b1 a0b1

a3b2 a2b2 a1b2 a0b2

a3b3 a2b3 a1b3 a0b3

p7 p6 p5 p4 p3 p2 p1 p0

Table 18.1 – Multiplication serie pour deux vecteurs de bits.

Y

multiplicande (A) multiplieur (B)

NN1

Additionneur

R1 RD1 RD2

N + 1

1 N

RD2(0)

R

ADDITIONNE

Figure 18.1 – Architecture serielle de multiplication

Une petite simplification toutefois, permet de reduire le tout a 2 registresa decalage de N bits et un registre supplementaire, pour contenir la sommepartielle et le multiplicateur. En effet, la somme partielle grossit au memerythme que les bits de poids faible du multiplicateur sont traites (et doncplus necessaire a memoriser).

Nous proposons donc l’architecture illustree a la figure 18.1. Celle-ci ad-ditionne si le registre final du multiplieur est a ‘1’, 2 series de N bits pourun resultat sur N + 1 bits, ecrit dans N + 1 registres. Le tout est decale adroite dans les 2N registres, eliminant le bit denue du multiplieur et implici-tement decalant la somme partielle, a chaque iteration. Au final, l’ensembledes 2N registres (excepte le registre final controlant l’addition, mais incluantle premier registre additionnel) contienne le resultat final de la multiplication.

A cela s’ajoute la necessite d’un compteur comme element fonctionnelpour determiner la fin de la multiplication. L’algorithme se resume a :

186

Page 188: Notes de Cours VLSI

COMPTE ← Ntant que COMPTE > 0 faire

debutSi RD2(0) = 1

additionne ;decalage en bloc de 1 bit vers la droite de R, R1, R0 ;decrementer COMPTE ;

fin

Finalement, le binaire signe se traite par cette architecture en gerant lesN − 1 bit de poids faible pour la magnitude et le bit de signe separementavec un simple ou exclusif yN = aN ⊕ bN .

Cette architecture est limitee en performance par l’additionneur sequentielqui doit sommer a chaque iteration avec une complexite au mieux deO(log(N)).La complexite totale est donc au mieux de O(N log(N)).

18.1.2 Optimisation de l’additionneur

Afin d’optimiser l’architecture proposee precedemment, nous procedonsa deux modifications.

Utilisation d’un additionneur a retenue conservee.

Puisque plusieurs additions doivent etre realisees successivement, il s’en-suit que la notation en retenue conserver sera avantageuse pour briser lalimite de performance de l’addition.

La contrepartie est celle de doubler les registres de stockage de la sommepartiel. Le resultat final sera bien sur en notation somme plus retenue.

La figure 18.2 fournit le schema. Nous retrouvons la meme structure, saufqu’un registre de 2N plus 1 permet de stocker en plus la somme ou la retenue(au choix, cela ne change rien au calcul).

Le resultat a ce moment est en retenue conservee. Aussi, il necessiteun additionneur sequentiel pour retrouver une notation conventionnelle, cequi nous avancerait que peu, ajoutant au mieux log(N) operations apres Niteration (ou au pire N avec l’additionneur sequentiel strict).

187

Page 189: Notes de Cours VLSI

2N

RD2

N

R1

N

N

N

RD3

R2

R3

multiplicande (A)

N + 1

r s

N + 1

N

1

1

Additionneur a retenue conservee

multiplieur (B)

RD1

RD4

RD2(0)

1

ADDITIONNE

Additionneur sequentiel

r s

Figure 18.2 – Multiplieur serie optimise en vitesse avec un additionneur aretenue conservee.

Optimisation de la conversion de sortie

Il est toutefois remarquable que la multiplication fournie les bits sequentiellement :le poids faible a la premiere iteration, puis le second a la deuxieme... Ainside suite jusqu’a N (les N bits suivants arrivent alors ensemble). Il est doncpossible de placer l’additionneur de conversion, en cascade, afin d’accelererle processus et de traiter au plus vite les premiers bits.

L’additionneur de conversion pour la sortie aura alors la structure del figure 18.3. La complexite finale sera reduite a N iterations d’additions,pendant lesquels les N − 1 premiers bits seront convertie. S’en suivra les bitsrestants, soit au plus 2N + 1 iterations. La complexite reste en O(N), ce quiest un gain sur le O(N log(N)).

18.1.3 Multiplicande en Ca2

Il est possible d’arranger le circuit autrement pour qu’il traite directementun operande (le multiplicande) note en complement a 2.

L’astuce consiste, si le multiplicande est negatif, a effectuer une exten-sion de signe. C’est-a-dire qu’au lieu de decaler le registre de la sommepartiel avec le resultat de la retenue de l’additionneur, le signe du multipli-

188

Page 190: Notes de Cours VLSI

+

+ +

c0c1c2

+

c3

+

c4

’1’

’0’

’1’

r3

s3

r2

s2

r1

s1

r0

s0

D

DD

D

D D

DDDD

Figure 18.3 – Convertisseur RC a Ca2 retemporise

cande servira a remplir la case decaler. Ainsi, la multiplication de -4 par 6est :

1 1 0 0 → -4× 0 1 1 0 → 6

0 0 0 01 1 0 0

1 1 0 00 0 0 01 0 0 1 0 0 0 → -56

en notation Ca2, donne un resultat errone avec l’architecture non modifiee.Mais en effectuant l’extension de signe comme suit :

1 1 0 0 → -4× 0 1 1 0 → 6

0 0 0 0 0 0 01 1 1 1 0 01 1 1 0 00 0 0 01 1 0 1 0 0 0 → -24

Le resultat devient valide.Le registre a decalage au poids fort precedemment utilise pour la retenue

est ici utilise pour injecter le signe du produit partiel.– Si le bit du poids fort du multiplieur est 1, un ‘1’ est injecte.

189

Page 191: Notes de Cours VLSI

+ + + +

+ + + +

’0’

’1’

x3

y3

x2

y2

x1

y1

x0

y0

z0z1z2z3z4

signe

Figure 18.4 – Additionneur/soustracteur redondant.

– Si il est 0, un ‘0’ est injecte.– simplement, lors du decalage a droite, il s’agit d’un decalage dit arithmetique :

le contenue du registre de gauche demeure invariante.

18.1.4 Multiplieur serie en binaire redondant

Evidement, l’architecture peut s’adapter au binaire redondant et fait gererles nombres negatifs quel qu’ils soient (multiplieur, multiplicande).

Le chiffre du multiplicateur qui controle l’addition (RD2(0), le bit depoids faible du deuxieme registre a decalage) peut prendre alors trois valeurs(qui serait alors code sur deux bits naturellement) :

– si RD2(0)=0 : il ne se passe rien.– Si RD2(0)=1 : le multiplicande est additionne a l’accumulateur (somme

partielle).– Si RD2(0)=-1 : le multiplicande est soustrait de l’accumulateur.Et directement, l’additionneur utilise est celui vu dans le chapitre precedent

pour les nombres en binaire redondant, ajoute d’un inverseur selon qu’il failleadditionner ou soustraire (c.f. figure 18.4)

18.1.5 Multiplieur serie pour operandes en Ca2

Nous avons vu comment gerer le cas du multiplicande en Ca2. Nous pou-vons utiliser une astuce du recodage de Booth dans le binaire redondant afin

190

Page 192: Notes de Cours VLSI

de traiter tous les cas, y compris celui d’un multiplieur (l’operande) en Ca2.La methode de Booth consiste a recoder en binaire redondant pour limiter

le nombre de ‘1’ dans un vecteur et ainsi, limiter le nombre d’addition ousoustraction dans l’execution de l’algorithme.

Il suffit de recoder le multiplieur : une serie de ‘1’ consecutif sera remplacepar un ‘1’ initial (au bit superieur) et un 1 au bit final (derniere position de‘1’). Par exemple :

011110011011110 = 100010101100010

Des ‘1’ isolees, ne sont pas change. Et finalement, un couple isole 11 estremplace par 01 et couple 11 est remplace par 01.

Ainsi l’exemple precedent se simplifie encore :

100010100100010

de telle sorte qu’il n’y a plus de ‘1‘ ou 1 qui se suivent.On note que pour un vecteur commencant par une serie de ‘1’, il faut

alors ajouter un bit de poids fort supplementaire, a 1. Ainsi, nous ajoutonsun registre au registre a decalage du multiplcande.

Dans le pire des cas, il n’y aura pas plus que dN2e de 1/1 et donc d’operation

d’addition/soustraction. Ce n’est donc pas une methode employee pour accelererla multiplication. En revanche, elle permet de traiter les operandes en Ca2.

Pour cela, considerons le vecteur X en Ca2, sur N bits. Pour le recoderen binaire redondant via la methode de Booth, on remarque d’abord que levecteur en Ca2 se traduit directement en complement a deux :

– Si X est positif, xN−1 = 0 (le bit de signe). yN le bit recode sera ‘0’.Aussi, les bits suivants de yj = xj, sont un encodage de X en binaireredondant, simplement les yj ne prennent les que valeurs 0/1 mais pasde signe negatif (1).

– Si X est negatif, alors xN−1 = 1, mais il correspond en fait a un bit depuissance N−1 mais de poids negatif (X = −2N−1xN−1 +

∑N−2j=0 xj2

j).Ajoutons, un 1 devant X de tel sorte que quelque soit le bit N − 2, nous

aurons un serie d’au moins deux 1. La regle de booth va alors remplacer lepremier bit de la serie par 1, mais ignorons tout les autres bits au dela de Nque la regle de Booth ajouterait (ignorons donc aussi le 1 deja ajoute)

Posons K le poids du premier bit de la derniere sequence de ‘1’ , Y recodesur N + 2 bits

191

Page 193: Notes de Cours VLSI

Y = 2N+1 − 2K +K−1∑j=0

yj2j (18.1)

on ajoute des bits et on les retranches pour faire apparaıtre X

= 2N+1 − 2K + (−2N−1 + 2N−1 + · · ·+ 2K)︸ ︷︷ ︸=−2N−1+

∑N−2j=K xj2j

+K−1∑j=0

yj2j

︸ ︷︷ ︸∑K−1j=0 xj2j

−(−2N−1 + 2N−1 + · · ·+ 2K)︸ ︷︷ ︸−(−2K)

Xapparait, on somme les autres bits qui finissent par s’annuler.

= 2N+1 − 2K − (−2K)−2N−1 +N−2∑j=K

xj2j +

K−1∑j=0

xj2j

︸ ︷︷ ︸=X

(18.2)

= 2N+1 +X (18.3)

Ainsi la conversion en binaire signe est immediate. Il suffit de ne pas tenircompte des bits additionnels du recodage (de Booth) pour obtenir l’equivalentde la quantie arithmetique de X (lui code en Ca2).

En pratique, il ne sera meme pas necessaire de se souvenir du doubledes chiffres pour du binaire redondant. Seul un registre additionnel, dont lavaleur est definit par des conditions specifiques, est necessaire afin de repererles ‘0’ ou ‘1’ isoles et donc de savoir si il faut additionner/soustraire et/oudecaler :

– En prenant les bits de X du poids faible au poids fort (comme pourl’algorithme de multiplication), nous regardons seulement les deux der-niers bits consideres (d’abord x0, puis x1).

– S’ils sont tous deux a 1 : c’est le debut d’une serie de ‘1’ (il ne s’agit pasd’un 1 isole). Nous mettons alors le registre c a 1, afin de se souvenirdu commencement de la serie de 1. Puis nous ferons une soustraction(l’equivalent du 1 de la reconversion).

– Le registre X est ensuite decale jusqu’a ce que x0 = 0 a nouveau (c estencore a 1). Nous faisons alors une addition pour le ‘1’ supplementaireen poids fort devant la serie de 1. Nous mettrons alors c a 0 pour noussouvenir que la serie de ‘1’ est finie.

192

Page 194: Notes de Cours VLSI

ci a1 a0 action a l’etape i ieme chiffres recode ci+1

0 0 0 rien 0 00 0 1 addition 1 00 1 0 rien 0 00 1 1 soustraction 1 11 0 0 addition 1 01 0 1 rien 0 11 1 0 soustraction 1 11 1 1 rien 0 1

Table 18.2 – Regles pour la multiplication de Booth

C A a1 a0

Ci+1

Ci

Additionneur complement a 2

Multiplicande

Figure 18.5 – Multiplieur Booth modifie.

– Dans tous les autres cas (x1 = 0, c = 0), nous avons soit a decaler(x0 = 0), soit nous traitons un ‘1’ isole’(x0 = 1) : nous ferons seulementune addition.

Eventuellement, il est possible d’ameliorer les conditions afin de repererles cas de couple 11/11.

– Si nous nous appretons a effectuer une soustraction (c = 1 et x0 = 0)et que x1 est a 1, c’est que nous creons un couple 11. Alors au lieu desoustraire, nous additionnons.

– A l’etape suivante nous serons dans une nouvelle serie de ‘1’ et doncnous decalerons, jusqu’au prochain x0 = 0 (ou il faudra a nouveauxsoit additionner, soit continuer une autre serie de ‘1’ , selon x1).

Le tableau 18.2 resume ces conditions d’addition/soustraction/decalage.

193

Page 195: Notes de Cours VLSI

18.2 Multiplier reseaux

18.3 Miltuplier en arbre

194

Page 196: Notes de Cours VLSI

Chapitre 19

Arithmetique specialisee

19.1 Generation de nombre aleatoire

19.2 Compteur

195

Page 197: Notes de Cours VLSI

Chapitre 20

Pipelinage, structures en arbreet en cascade

196

Page 198: Notes de Cours VLSI

Chapitre 21

integration de systemes

197