Les Composants Logiques
1 - Familles de Composants Logiques
ASIC [Application Specified Integrated Devices]
On distingue 2 familles de composants numériques :
- CUSTOM : Circuits sur mesure, grande série, architecture figée. Ex: Microcontrôleur
- PLD [Programmable Logic Devices] : petite série / prototypage. Ex: FPGA / CPLD
Constructeurs de PLD : Les leaders du marché sont Xilinx et ALtera-Intel
2 - Intérêt de l’utilisation des PLD
On peut trouver des FPGA/CPLD comme modules d’interfaces spécifiques pour l’utilisation de capteurs ou d’actionneurs.
( ex : Lattice Semiconductors )
Un FPGA/CPLD peut être également nécessaire pour répondre à des contraintes de performance.
Prenons l’exemple d’un filtre numérique pour lequel il faut réaliser l’opération suivante :
- y : échantillon de sortie
- h : coefficients du filtre
- x : 256 derniers échantillons d’entrée
Pour réaliser ce calcul avec un processeur classique, je dois réaliser, pour chaque nouvel échantillon acquis, 2 boucles de calcul :
x[0] = new_ech;
for( int i = 0 ; i++ ; i < FILTER_ORDER )
{
y = y + h[i]*x[i];
}
// Vieillissement des Echantillons d'Entrée
for( i = FILTER_ORDER-1 ; i>0 ; i--)
{
x[i] = x[i-1];
}Il me faudra donc 512 coups d’horloge pour traiter un nouvel échantillon.
Ce temps de calcul doit bien sûr être inférieur à la période d’acquisition des échantillons d’entrée ( période d’échantillonage ).
Un processeur de traitement du signal ( DSP ) peut disposer de plusieurs unités de calcul pour rendre ce calcul plus rapide.
Je peux alors diviser par 2 le temps de calul.
Si maintenant je dispose d’un FPGA/CPLD, et que je crée l’architecture suivante :
Je peux calculer un échantillon y en 1 coup d’horloge, cette solution est donc 512 fois plus rapide qu’un processeur traditionnel pour une même fréquence d’horloge.
En contrepartie, si je souhaite modifier par exemple l’ordre du filtre, il faut générer une nouvelle architecture dans le FPGA/CPLD, alors qu’une simple mise à jour du code d’un processeur serait suffisante.
3 - Réalisation d’une Equation Logique
3.1 - Equation Logique
Je souhaite réaliser l’équation logique suivante :
Ce qui donnerait avec des portes discrètes :
3.2 - Table de Vérité
Si j’établis la table de vérité pour cette équation :
| A | B | C | S |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
3.3 - Equation Logique Equivalente
J’en déduis l’équation suivante, en prenant toutes les combinaisons de ABC entrainant S=1 :
3.4 - Réalisation avec une mémoire
Je peux alors réaliser cette équation avec une mémoire, autrement dit un composant numérique à l’architecture modifiable ( et non volatile pour une mémoire de type ROM )
On peut alors parler de matrice d’interconnection.
|
|
|
4 - Evolution des Composants Logiques
4.1 - Circuits Séquentiels
Afin de réaliser des circuits séquentiels, en plus d’une matrice d’interconnexion, des bascules sont ajoutées :
4.2 - Porte 3 Etats
La connexion des sorties de plusieurs composants logiques sur un même fil nécessite l’utilisation de portes 3 états :
En effet un même fil serait susceptible d’être forcé par 2 états contradictoires, d’où un conflit.
Lorsqu’un élément connecté à un fil force la valeur logique de ce fil, les autres éléments doivent être transparents ( déconnectés ), on appelle cela l’état haute impédance.
Une porte 3 états permet de réaliser la connexion à un bus :
5 - Les CPLD ( Complex Programmable Logic Device )
On retrouve dans les CPLD des macrocellules contenant des bascules configurables, des multiplexeurs et des portes 3 états.
Ces macrocellules sont reliées à une matrice d’interconnexion.
|
|
|
6 - Les FPGA ( Field Programmable Gate Array )
On peut considérer les FPGA comme des CPLD de plus grande capacité, avec en plus des composants spécialisés ( unité de calcul pour les nombres réels par exemple ).
Les environnements de développement des FPGAs permettent de choisir une architecture de processeur et ses périphériques dans une bibliothèque, de concevoir un nouveau périphérique en VHDL,
puis de programmer le processeur en langage C/C++ avec éventuellement un système d’exploitation.
On parle alors de conception de systèmes sur puce.
|
|
|
|