CPLD: étendent le concept des SPLDs et permettent

publicité
CPLD: étendent le concept des SPLDs et permettent généralement d’intégrer
plusieurs PLDs (2 à 64) dans un même boîtier avec une densité meilleure à
capacité équivalente.
1
Limite des PLD/CPLDDans le cas du registre à décalage de 12 bits, il faut 1 entrée et 12 FF. Un
GAL 22V10 n’est pas suffisant.
i
Les équations
i
de
d chaque
h
macro-cellules
ll l sont des
d sommes d’un
d
terme produit unique n’exploitant qu’une variable au plus. On peut estimer la surface occupée à
1 entrée+12 feedback=13*2=26 lignes verticales(termes produits de 26
variables)*4 termes produits/cellule*12 cellules=1248 transistors.
13 transistors sur les 1248 disponibles dans le LAB,
LAB sont occupés,
occupés soit environ 1% de taux
d’occupation. Le gaspillage de ressources est donc important. D’une manière générale, il est très
difficile d’atteindre un taux de remplissage supérieur à 50% dans un PLD. D’autre part, les
phénomènes capacitifs, linkage de courant, etc font qu’une matrice ET d’une telle largeur voit ses
performances faiblir
2
Architecture des CPLD: Les CPLD distinguent 2 niveaux d’interconnexion:
* les macro-modules(LAB) qui peuvent être interconnectés par une matrice
(bus) globale, et dont la structure interne est similaire aux PLDs. Certains
constructeurs comme Xillinx proposent des structures de type PLA.
* Les macro-cellules internes au LAB qui sont généralement configurables en
bascules D ou T en plus de leur polarité. Les cellules d’E/S (et les entrées) sont
également programmables.
Certaines architectures proposent des feedback internes aux LAB, sans passer par
le PI. Les technologies d’interconnexions sont similaires à celles des SPLD.
Quelques familles de CPLD: Max ALTERA, CY7C371 Cypress,ispMACH
Lattice,XC9500 XILLINK)
3
Partitionnement: plutôt que de décrire globalement le registre 12 bits par ses équations,
on peut cascader 3 registre à 4 bits. On réalise une conception hiérarchique.
4
Implantation sur CPLD: il faut 5*2=10*4*4=160 T par bloc soit 160*3=480 T. Il faut 12 T par
entrée sur la
l matrice
i d’interconnexion
di
i soit
i 4*12=48
*
par bloc
bl soit
i 48*3
* soit
i 144. Au total,
l il faut
624 Transistors au lieu de 1248 soit 50% environ de la solution SPLD. Le taux de remplissage
sera finalement bien meilleur (23 T sur les 624)
5
Illustration: Le EPL 7032 contient 32 macro-cellules réparties sur 2 LAB, donc
16 macro-cellules par LAB. Le nombre d’I/O est de 36, dont 4 entrées dédiées :
CK1,GLCLR,OE1,OE2 (ce qui fait 16 E/S par bloc de ctrl des E/S). Le bus
global est un chemin rendant tout signal accessible à travers le circuit, que ce
signal soit dédié, qu’il s’agisse d’une entrée de CPLD ou qu’il s’agisse d’une
sortie de macrocellule. 36 signaux du PIA peuvent être routés au maximum vers
un LAB.L’interconnexion des entrées des LAB est réalisée à partir d’un MUX
dont les entrées de sélection sont programmées des EEPROM pour sélectionner
le signal de la matrice à propager dans le LAB. On parle de MUX-based
interconnection. Le délai induit par le PIA est FIXE et n’introduit aucun décalage
de signaux (avec de possibles glitches), quelque soit la configuration du PIA.
6
Macrocellule(7000E/7000S) : comme pour les PAL versatiles, elles peuvent être
configurées individuellement en combinatoire ou séquentiel. Un LAB est
similaire à un 36V16 PLD. La macro-cellule peut être décomposée en trois
parties:
1. La matrice logique ET programmable
2. La matrice de sélection des termes produits: les 5 termes peuvent être alloués aux
entrées
t é primaires
i i (portes
( t OU ou XOR) ou aux entrées
t é secondaires
d i (contrôle
( t ôl des
d
clear,preset,clock et enable). Une extension parallel expander arrive également en entrée
de la porte OU depuis la macro-cellule précédente(on parle de product term steering).
3. La macro-cellule: chaque registre peut être shunté ou configuré en bascule
D,T,JK,RS. IL peut être clocké selon 3 modes:
•Clock globale
•Clock globale + enable
•Clock issue du logical array.
Un patte I/O peut être connectée directement en entrée du registre, sans passer
par le PIA(temps de setup de 2.5 ns)
7
Shared/Parallel expanders: forment une sorte de poll de termes permettant
d’étendre les possibilités des macro-cellules.
* Les shared expanders sont des termes produits NAND qui peuvent être utilisés
et partagés par les macro-cellules. Chaque macro-cellule peut fournir UN terme
au plus parmi 5 de type shared expander (ce qui donne 16 shared expander au
maximum par LAB).
* Les parallel expanders permettent d’accélérer des fonctions nécessitant
plusieurs passes de logique en décomposant une porte OR complexes en plusieurs
portes OU sans passer par le logic array ou des shared expanders. Il est préférable
le réserver pour des chemins critiques car cela enlève néanmoins de la flexibilité
au moment du fitting. Les logiciels de synthèse de ALTERA
(Max+PLUSII,Quartus) permettent d’autoriser/inhiber leur utilisation.
L’extension de somme ne peut se faire que sur 4 macro cellules (dans l’ordre
croissant de N° avec deux chaînes reliant les cellules 1 à 8 et 9 à 15) ce qui donne
20 termes produits max (sorite d’un OR8 avec les 5 termes de la cellule plus 3*5
termes des cellules contiguës).
8
Illustration: L’implémentation d’un MUX-8 demande 8 termes produits dans
l’expression canonique. Or, le max7000 ne propose que 5 termes produits par cellule. Il
faut donc décomposer l’expression en introduisant une varaible booléenne intermédiaire.
9
Illustration: L’implémentation d’un MUX-8 demande plus de 5 termes produits. Une
première solution consiste à utiliser la matrice d’interconnexion (PIA)
10
Illustration(avec paralle expanders): Les parallel expanders autorisent la cascade de 2
portes OR pour cette fonction sans passage par la matrice globale PIA, la varaible V étant
directement implémentée grâce au multiplexeur permttant le routage du signal en entrée
de la porte OU de la cellule connexe.
11
Illustration n°2: implantation d’un additionneur de 2 bits avec retenue en entrée
(pas de retenue en sortie).
12
Illustration(shared expanders): L’implémentation de l’équation de S1 sous
forme d’une somme de produits demanderait un nombre de cellules OR et des
parallel expenders relativement conséquent. Avec des shared expenders, on ne
consomme que deux cellules car on ne fait qu’emprunter 1 terme à d’autres
cellules (éventuellement un terme des cellules S0 et S1). Les termes inutilisés
restent exploitables pour le calcul d’autres expressions. Les performances sont
bien entendu légèrement inférieures que dans le cas de l’utilisation de parallel
expenders.
13
Bloc de contrôle des E/S: Le bloc de contrôle des E/S permet à chaque patte
d’être configuré individuellement comme entrée,sortie ou entrée/sortie. Le
tampon 3 états peut être contrôlé par une des entrées globales oe ou fixé à la
masse(sortie à haute impédance) ou Vcc(sortie à basse impédance). Les
MAX7000E&S proposent plus de signaux de contrôle des tampons, signaux
pouvant être le résultat de l’évaluation d’expressions logiques (donc issus de
macro-cellules). Des entrées dites rapides
14
Paramètres de Timing des CPLD: L’estimation des performances sur CPLD
peut être aussi facile que pour les PLD (ex de la cypress CY7C371) mais peut
être plus compliqué pour d’autres, lorsque les performances sont fortement
dépendantes de l’utilisation des ressources. Les paramètres de timing externes
sont calculés à partir des paramètres de timing internes que sont les délais fixes
occasionnés par les éléments architecturaux internes: ils ne peuvent pas être
mesurés explicitement. Par exemple,
Tin: tps nécessaire à une pin d’entrée pour driver le signal dans le PIA ou le global
control array
TPIA: délai occasionné par le routage d’un signal au travers du PIA. Le nombre de
connexion est fixe.
Tcomb d’arrivée du signal en sortie de la macrocellule en bypassant le registre.
Todi: tps de traversée du buffer de sortie et du PAD avec différentes options de réglage du
slew
l rate et du
d niveau
i
de
d tension.Par
i
exemple,
l Tdo1 est le
l temps sii le
l slew
l rate est off.
15
Illustration: Si on détermine les temps d’arrivée des signaux en sortie de
l’additionneur 2 bits, on peut s’apercevoir que les temps de propagation ne sont
pas identiques; le temps de S2 est plus important à cause du passage dans les
shared expanders pour le second bit.
16
Téléchargement