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