Les Composants Logiques

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(n)=k=0255hk.x(nk) \\ y(n)= \sum_{k=0}^{255} h_k.x(n-k) \\
  • 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 :

calcul_fir.svg

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 :

S=A.Bˉ+C S=A.\bar{B}+C

Ce qui donnerait avec des portes discrètes :

equation_logique_portes.svg

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 :

S=Aˉ.Bˉ.C+Aˉ.B.C+A.B.C+A.Bˉ.Cˉ+A.Bˉ.C S=\bar{A}.\bar{B}.C+\bar{A}.B.C+A.B.C+A.\bar{B}.\bar{C}+A.\bar{B}.C

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.

circuit_comb_univ.svg

avec_memoire.svg


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 :

gal.png

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.

conflit.svg

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.

haute_impedance.svg

Une porte 3 états permet de réaliser la connexion à un bus :

porte_3e.svg


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.

cpld.png

cpld_2.png


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.

fpga_1.png

fpga_2.png

fpga_3.png