Rapport ELYOUSFY CHAOUNI ELHASNAOUI FHAIL

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 52

Rapport

DATAPATH
SUBSYSTEMS

Microélectronique

Réalisé par :
EL YOUSFY ABDESSAMAD
CHAOUNI AYOUB
EL HASNAOUI BILAL
FHAIL ABDELOUAHAD

2022/2023
PLAN
I. Introduction
1. Contexte et importance des puces électroniques
2. Objectif du rapport

II-Les opérateurs de chemin de données


1. Addition/Soustraction
2. Multiplication/Comparaison

III-Les éléments de mémoire


1. Rôle des éléments de mémoire
2. Types d'éléments de mémoire

IV-Les structures de contrôle

V-Le calcul de préfixe parallèle

VI-Conclusion
I. Introduction
1-Contexte et importance des puces électroniques

Les puces électroniques permettent également de réduire la taille et la consommation


d'énergie des appareils électroniques, les rendant ainsi plus portables et plus
efficaces.

En effet, grâce à leur miniaturisation, les puces électroniques ont permis la conception
d'appareils électroniques toujours plus petits, tout en conservant des performances
élevées. Cette réduction de taille a également permis une augmentation de la densité
de composants, ce qui a permis de stocker davantage de données et de traiter des
calculs plus complexes. De plus, les puces électroniques sont devenues de plus en
plus économes en énergie, ce qui a contribué à l'amélioration de l'autonomie des
batteries des appareils portables tels que les smartphones et les tablettes. Ainsi, les
puces électroniques ont permis de répondre à la demande croissante de mobilité et
d'efficacité énergétique des appareils électroniques.

Le datapath subsystem est une catégorie importante de fonctions de la puce


électronique qui inclut les opérateurs de datapath, qui sont responsables de
l'exécution de calculs et d'opérations arithmétiques sur les données. Ces opérateurs
sont au cœur du traitement de données dans une puce électronique, et leur efficacité
est donc essentielle pour les performances globales de la puce électronique.

Les opérateurs de datapath sont souvent utilisés pour exécuter des calculs tels que
l'addition, la soustraction, la multiplication, la division et les opérations logiques. Ils
peuvent également être utilisés pour des tâches plus spécifiques, telles que la
conversion de données analogiques en données numériques.

Le datapath subsystem est souvent intégré à d'autres catégories de fonctions,


telles que les éléments de mémoire et les structures de contrôle, pour former des
systèmes de traitement de données complets. Ainsi, la qualité et l'efficacité du
datapath subsystem sont cruciales pour garantir des performances de traitement de
données optimales dans une puce électronique.
2-Objectif du rapport

L'objectif de ce rapport est d'étudier en détail les opérateurs de datapath des puces
électroniques, tels que l'addition, la soustraction, la multiplication et la
comparaison, en utilisant une approche pratique basée sur la simulation avec
Microwind. Ce rapport mettra également en évidence le rôle crucial des opérateurs
de datapath dans le traitement de données dans les puces électroniques, ainsi que
leur impact sur les performances globales de la puce électronique. Enfin, la
conclusion du rapport résumera les principales conclusions et offrira une
perspective sur les futures recherches dans ce domaine.

La conception de systèmes CMOS consiste à partitionner le système en sous-


systèmes des types énumérés ci-dessus. De nombreuses options existent qui font
des compromis entre la vitesse, la densité, la programmabilité, la facilité de
conception et d'autres variables. Ce chapitre aborde les options de conception pour
les opérateurs de datapath courants. Le chapitre suivant traite des tableaux, en
particulier ceux utilisés pour la mémoire. Les structures de contrôle sont
généralement codées dans un langage de description matérielle et synthétisées.
Les sous-systèmes spécialisés sont examinés dans le chapitre 13. Comme introduit
dans le chapitre 1, les opérateurs de datapath bénéficient des principes de
conception structurée tels que la hiérarchie, la régularité, la modularité et la localité.
Ils peuvent utiliser N circuits identiques pour traiter des données N-bit. Les
opérateurs de données connexes sont placés physiquement adjacent les uns aux
autres pour réduire la longueur des fils et les retards. Généralement, les données
sont disposées pour s'écouler dans une direction, tandis que les signaux de
contrôle sont introduits dans une direction orthogonale au flux de données. Les
opérateurs de datapath courants considérés dans ce chapitre comprennent les
additionneurs, les détecteurs de un/zéro, les comparateurs, les compteurs, les
unités de logique de Boole, les blocs de correction d'erreur, les décaleurs et les
multiplicateurs.
II-Les opérateurs de chemin de données
1. Addition/Soustraction
L'addition constitue la base de nombreuses opérations de traitement, des ALU à la
génération d'adresses en passant par la multiplication et le filtrage. Par conséquent, les
circuits d'additionneurs qui ajoutent deux nombres binaires sont d'un grand intérêt pour
les concepteurs de systèmes numériques. Une vaste et presque infinie gamme
d'architectures d'additionneurs sert à différentes exigences de
vitesse/puissance/surface. Cette section commence par les demi-additionneurs et les
additionneurs complets pour l'addition d'un seul bit. Elle considère ensuite une multitude
d'additionneurs de report de retenue (CPA) pour l'addition de mots multibits. Enfin, des
structures connexes telles que les soustracteurs et les additionneurs à entrées multiples
sont discutées.

1.1 Addition d'un seul bit


le demi-additionneur de la Figure 11.1(a) ajoute deux entrées de bit uniques, A et B. Le
résultat est 0, 1 ou 2, donc deux bits sont nécessaires pour représenter la valeur ; ils
sont appelés somme S et retenue C_out. La retenue correspond à une retenue d'entrée
pour la colonne suivante plus significative d'un additionneur multibit, elle peut donc être
décrite comme ayant le double du poids des autres bits. Si plusieurs additionneurs
doivent être en cascade, chacun doit être capable de recevoir la retenue d'entrée. Un
tel additionneur complet, tel que celui montré dans la Figure 11.1(b), possède une
troisième entrée appelée C ou Cin.
Les tables de vérité pour le demi-additionneur et l'additionneur complet sont données
dans les Tables 11.1 et 11.2.
Pour un additionneur complet, il est parfois utile de définir les signaux de Génération
(G), de Propagation (P) et de Suppression (K). L'additionneur génère une retenue
lorsque C_out est vrai indépendamment de Cin, donc G = A · B. L'additionneur
supprime une retenue lorsque C_out est faux indépendamment de Cin, donc K = A · B
= A + B. L'additionneur propage une retenue ; c'est-à-dire qu'il produit une retenue de
sortie si et seulement si il reçoit une retenue d'entrée, lorsque exactement une entrée
est vraie : P = A⊕ B.
La méthode la plus simple pour concevoir un additionneur est d'utiliser des portes
logiques. La figure 11.2 montre un demi-additionneur. Les figures 11.3 (a) et (b)
montrent un additionneur complet aux niveaux de la porte et du transistor. La porte de
retenue est également appelée porte majoritaire car elle produit un 1 si au moins deux
des trois entrées sont à 1. Les additionneurs complets sont utilisés le plus souvent, donc
ils recevront l'attention du reste de cette section.

Il existe plusieurs techniques pour réduidre le nombre de transistors dans la


conception des circuit :

Réduire la taille minimale de tous les transistors dans la logique de somme dont les
signaux de commande de grille sont connectés à l'entrée de retenue et à la logique de
retenue (1 unité, par exemple, 4 λ). Cela minimise l'effort de branchement sur le
chemin critique.
Maintenez le routage de ce signal aussi court que possible pour réduire la capacité
d'interconnexion.
Déterminez les largeurs des transistors en série par effort logique et simulation.
Construisez une porte asymétrique qui réduit l'effort logique de C à Cout au détriment
de l'effort pour S.
Utilisez des transistors relativement grands sur le chemin critique afin que la capacité
de câblage parasite soit une petite fraction de la capacité totale. Supprimez les
inverseurs de sortie et alternez la logique positive et négative pour réduire le retard et
le nombre de transistors à 24.
1.2 Addition de N bits
1.2.1 Carry-Ripple Adder
Un additionneur de N bits peut être construit en cascade en utilisant N additionneurs
complets, comme le montre la Figure 11.11(a) pour N = 4. Cela s'appelle un
additionneur à propagation de retenue (ou additionneur à propagation en cascade). La
retenue en sortie du bit i, Ci, est la retenue en entrée du bit i + 1. Cette retenue a deux
fois le poids de la somme Si. Le retard de l'additionneur est déterminé par le temps
nécessaire aux retenues pour se propager à travers les N étages, donc le retard
tC→Cout doit être minimisé.
Ce retard peut être réduit en omettant les inverseurs sur les sorties, comme cela a été
fait dans la Figure 11.4(c). Parce que l'addition est une fonction auto-duale (c'est-à-
dire que la fonction d'entrées complémentaires est le complément de la fonction), un
additionneur complet inversant recevant des entrées complémentaires produit des
sorties vraies. La Figure 11.11(b) montre un additionneur à propagation de retenue
construit à partir d'additionneurs complets inversants. Chaque deuxième étage
fonctionne sur des données complémentaires. Le retard de l'inversion des entrées ou
des sorties de somme de l'additionneur est hors du chemin critique de propagation en
cascade de la retenue.
1.2.2 Carry-Lookahead Adder

L'additionneur à anticipation de retenue (CLA) [Weinberger58] est similaire à


l'additionneur à saut de retenue, mais calcule des signaux de génération de groupe ainsi
que des signaux de propagation de groupe pour éviter d'attendre une propagation en
cascade pour déterminer si le premier groupe génère une retenue. Un tel additionneur est
illustré dans la Figure 11.21 et son réseau PG est présenté dans la Figure 11.22 en
utilisant des cellules noires de valence 4 pour calculer des signaux de groupe PG de 4
bits.
3D view
Pour plus de détails sur chaque type :
https://www.researchgate.net/publication/355208732_Design_Simulation_
and_Analysis_of_Different_Operational_Factors_of_a_4-bit_Carry_Look-
Ahead_Adder_Circuit_in_Microwind_at_Several_CMOS_Technology_Nod
es.

https://rgangadharreddy.files.wordpress.com/2015/04/datapath-
subsystems.pdf.
https://www.youtube.com/watch?v=6Z1WikEWxH0.
https://www.youtube.com/watch?v=9lyqSVKbyz8.
https://www.youtube.com/watch?v=b70ZQwci5sY
https://www.youtube.com/watch?v=HdYjhrbrXqA
https://www.youtube.com/watch?v=l_XqQyCxiQs
https://www.youtube.com/watch?v=FjyImOFBg3c
1.3 Les détecteurs Un/Zéro :
Un détecteur de zéro binaire est un type de capteur électronique utilisé pour détecter la
présence ou l'absence d'un signal binaire qui peut prendre deux états distincts : 0 ou 1. Le
détecteur de zéro binaire est conçu pour détecter les impulsions binaires qui ont une amplitude
proche de zéro, en dessous d'un certain seuil de détection.

Dans les systèmes de communication numériques, le détecteur de zéro binaire est utilisé pour
extraire les données binaires du signal reçu. En d'autres termes, le détecteur de zéro binaire
est utilisé pour identifier les instants où le signal est à l'état "zéro".
Dans un détecteur de zéro binaire typique, un seuil est défini pour déterminer si le signal est à
un niveau suffisamment bas pour être considéré comme un "zéro". Si le niveau du signal est en
dessous de ce seuil, le détecteur indique la présence d'un zéro. Si le niveau du signal est
supérieur au seuil, le détecteur indique la présence d'un "un".

Pour les mots binaires sur 8,16,32… bits, la détection de zéro/un est faite par un réseau des
portes logiques AND, NOR, OR, XOR en cascade ou en parallèle même.

1.3.1 Le détecteurs des 1 avec 7 étages :


Si le mot vérifié a une tendance naturelle dans l'arrivée des bits (comme à la sortie d'un
additionneur par propagation de retenue * ), le concepteur pourrait envisager une conception
asymétrique qui favorise les entrées arrivantes tard, comme le montre la Figure Ici, le retard à
partir du bit le plus récent A7 ne comporte qu'une seule porte logique.

Détecteurs de 1 logique par 7 étages.

1
Schéma d’un additionneur par propagation de retenue.

Le principe de fonctionnement de l'additionneur par propagation de retenue est de propager


la retenue d'un bit à l'autre lors de l'addition des deux nombres. Si la somme de deux bits est
égale à 2, une retenue doit être propagée au bit suivant.

1.3.2 Détecteurs de 1 avec réseau des portes AND & NAND :


Parmi les avantages de ce circuit de détection des Mots de 1 logiques sur N-bits (8 bits dans
cette example) est le temps de réponse. Dans cette example le temps de réponse de circuit
est minium est une fonction de nombre des bits.

𝟒
𝑬𝒇𝒇𝒐𝒓𝒕 = ( )𝐥𝐨𝐠 𝟐 𝑵 = 𝑵𝐥𝐨𝐠 𝟐 𝟒/𝟑 = 𝑵𝟎.𝟒𝟏𝟓
𝟑

Détecteurs de 1 logique par réseau des AND & NAND

Détecteur de 0 logique par réseu des AND.

2
1.3.3 Détecteurs des 0 logiques par un réseau des transistors nMOS :
Un autre détecteur rapide utilise une structure pseudo-nMOS ou NOR dynamique pour
effectuer le "OU-câblé", comme le montre la Figure 11.44(c). Cela fonctionne bien pour les
mots jusqu'à environ 16 bits ; pour les mots plus grands, les portes peuvent être divisées en
tranches de 8 à 16 bits pour réduire le retard parasite et éviter les problèmes de fuite de sous-
seuil.
• Un seul transistor pMOS est nécessaire dans ce circuit qui permet de jouer le rôle d’une
résistance.
• Le réseau des transistors nMOS, si A0 = A1 = A2 = A3 = 0 tous les nMOS sont bloqués et
l’état de sortie et relié à Vdd.

1.4 Les comparateurs :


Un comparateur binaire est un type de circuit électronique qui compare deux nombres binaires
et produit un signal de sortie indiquant s'ils sont égaux ou lequel est plus grand. Le circuit est
composé de plusieurs portes logiques qui effectuent des opérations logiques sur les signaux
d'entrée.

Les comparateurs binaires sont couramment utilisés dans les circuits numériques, tels que les
microprocesseurs, pour effectuer des opérations arithmétiques et logiques. Ils sont également
utilisés dans les systèmes de transmission de données, tels que les modems et les réseaux de
communication numériques, pour vérifier l'exactitude des données transmises.

De plus, les comparateurs binaires sont utilisés dans les systèmes de contrôle pour comparer
les signaux de rétroaction avec les signaux de référence et générer des signaux d'erreur qui
peuvent être utilisés pour ajuster la sortie du système.

Les comparateurs binaires peuvent être conçus à l'aide de différents types de portes logiques,
telles que les portes ET, OU et XOR, et peuvent être configurés pour fonctionner avec
différentes tailles de nombres binaires, d'un seul bit jusqu'à plusieurs bits.

3
1.4.1 Magnitude comparateurs :
Un comparateur de magnitude est un type de circuit électronique qui compare les magnitudes
de deux nombres binaires et produit un signal de sortie indiquant leurs tailles relatives. Le
circuit compare les bits individuels des deux nombres à partir du bit le plus significatif (MSB) et
en progressant vers le bit le moins significatif (LSB).

La sortie du comparateur de magnitude indique si les deux nombres sont égaux ou lequel est
plus grand ou plus petit. Le comparateur peut être conçu pour fonctionner sur différentes
tailles de nombres binaires, d'un seul bit jusqu'à plusieurs bits.

Les comparateurs de magnitude sont couramment utilisés dans les systèmes numériques, tels
que les microprocesseurs et les unités logiques et arithmétiques (ALU), pour effectuer des
opérations arithmétiques et logiques, telles que l'addition, la soustraction et la comparaison.
Ils sont également utilisés dans le traitement numérique des signaux (DSP), tels que les filtres
et les transformations, pour comparer les magnitudes de signaux numériques.

Dans cette example on vas travailler avec le comparateur 4bits 74HC85 qui permet de
comparer deux mots binaires sur 4 bits, et retourne le résultat.
• A = B est à 1 logique : donc les deux mots binaires A et B sont égaux.
• A > B est à 1 logique : donc A est plus grande que B
• A < B est à 1 logique : donc B est plus grande que A

Le résultat issu de comparaison des 4 bits de poids forts (MSB) est transférer aux deuxième
comparateurs 74HC85 pour comparer les 4 bits de plus faibles.

Pour simplifier la tâche ici, on prend les 4 bits des poids fort (MSB) égaux est tous à 0, suivant
l’état des 4 bits de poids faible on peut réaliser la fonction de comparaison come indiquer sur
le schéma de simulation :

• A = 0000 0011 et B = 0000 0011 ➔ le résultat est A = B.

• A = 0000 0001 et B = 0000 0000 ➔ le résultat est A > B.

4
• A = 0000 0000 et B = 0000 0010 ➔ le résultat est A < B.

1.4.2 Equality comparateurs :


Un comparateur d’égalité est le comparateur le plus simple à synthétiser en utilisant un port
XNOR et un détecteur de 1.

Comparateur d’égalité.

5
Comme example en prend A = 10101101 et B = 10101101 et avec le circuit précédant on
trouve le résultat suivant :

1.4.3 Le comparateur K = A + B :
Parfois on veut de terminer si A + B = K, par example comparer si la somme de deux registres
est égale à une adresse. Cette comparaison peut être effectuée plus rapidement que le calcul
de A + B car aucune propagation de retenue n'est nécessaire. La clé est que si vous connaissez
A et B, vous savez également quelle doit être la retenue dans chaque bit si K = A + B.

La table de vérité de comparateur K = A + B est :


Table de vérité de comparateur K = A + B

Par conséquent, vous n'avez besoin de vérifier que des paires de bits adjacents pour vérifier
que le bit précédent produit la retenue requise par le bit actuel.
• D’après la table de vérité on peut déterminer la fonction logique de retenue requis :

𝐶𝑖−1 = 𝐴𝑖 + 𝐵𝑖 + 𝐾𝑖

6
Comme example on prend le cas suivant :
A = 0101 et B = 1001 donc K = A + B = 1110 Retenus requis

A 0 1 0 1
+
B 1 0 0 1
= K 1 1 1 0
Le circuit suivant permet d’implimenter la fonction de comparateur. Le port XNOR permet de
verifier que le retenue produit est égale au retenu erquis pour chaque bit. Le port AND permet
de verifier que la condition est satisfaite pour toutes les bits.

K = A + B comparateur schéma.
1.5 les compteurs :
En microélectronique, les compteurs sont un type de circuit numérique qui compte le nombre
d'événements ou d'impulsions qui se produisent au fil du temps. Ils sont utilisés à diverses fins,
telles que la mesure de fréquence, la synchronisation et le contrôle du fonctionnement d'autres
circuits numériques.

Les compteurs en microélectronique sont généralement implémentés sous forme de circuits


intégrés (CI) et peuvent être conçus pour compter en montée ou en descente en fonction d'un
signal d'horloge. Ils peuvent également être préprogrammés avec des valeurs de départ
spécifiques et peuvent avoir des nombres de bits différents, ce qui leur permet de compter
jusqu'à différentes valeurs maximales.

Les compteurs sont largement utilisés en microélectronique pour une variété d'applications,
telles que dans les horloges numériques, les synthétiseurs de fréquence, les compteurs
d'événements et les minuteries programmables. Ils sont également utilisés dans les systèmes

7
à microcontrôleur pour effectuer des tâches telles que le comptage d'impulsions, la capture
d'entrée et la synchronisation.

Une application courante des compteurs en microélectronique est dans les synthétiseurs de
fréquence, qui génèrent des signaux d'horloge précis pour une utilisation dans des circuits
numériques. Dans cette application, un compteur est utilisé pour diviser une horloge haute
fréquence jusqu'à la fréquence désirée, permettant ainsi la génération de signaux d'horloge
précis à différentes fréquences.
1.5.1 Les compteurs binaires :
1.5.1.1 Les compteurs Synchrones :
Les compteurs synchrones sont un type de circuit numérique qui compte le nombre
d'événements ou d'impulsions qui se produisent au fil du temps, en utilisant un signal d'horloge
synchronisé. Contrairement aux compteurs asynchrones, qui dépendent de la propagation de
retournement de retenue pour mettre à jour leur compte, les compteurs synchrones mettent
à jour leur compte simultanément sur tous les bits, ce qui donne un comptage plus rapide et
plus précis.

Dans les compteurs synchrones, chaque bit est déclenché par le même signal d'horloge,
assurant que tous les bits changent d'état en même temps. Cela permet aux compteurs
synchrones de fonctionner à des fréquences plus élevées que les compteurs asynchrones et les
rend plus fiables pour les applications de synchronisation précises (figure b).

Les compteurs synchrones sont largement utilisés en microélectronique pour une variété
d'applications, telles que les synthétiseurs de fréquence, les compteurs d'événements et les
minuteries programmables. Ils sont également utilisés dans les systèmes de microcontrôleurs
pour effectuer des tâches telles que le comptage d'impulsions, la capture d'entrée et la
synchronisation avec d'autres circuits.

8
1.5.1.2 Les compteurs Asynchrones :

Pour les compteurs asynchrones les trois bascules sont en format cascade, la sortie de première
bascule JK est l’entrée de deuxième.
NB : Un compteur -Modulo N peut compter jusqu’à 2𝑁 .
Example de simulation d’un compteur synchrone avec ISIS/PROTEUS :

Compteur synchrone simulation avec ISIS.

1.5.2 Compteur avec Additionneur 74HC283 et 74HC574 IC :


Le même fonctionnement des compteurs synchrones et asynchrones peut être réaliser en
utilisant un additionneur 74HC283 (additionneur sur 4bits) et le circuit IC HC74574.

9
• L’additionneur 74HC283 permet de faire la somme de deux mots binaires sur 4bits on
prend B = 0000 et un retenu égale à 1, donc sur chaque opération l’additionneur fait
l’instruction suivant Sortie = A + 0001.
• Le circuit 74HC574 permet à chaque tick d’horloge de passer la sortie de l’additionneur
74HC283. (Après ajouter B = 0000).
• Sur la deuxième tick d’horloge, la sortie est 0001 donc l’additionneur fait une opération
de somme avec 0001 est la sortie est 0010 (2 en décimal) et ça se fait d’une manière
cyclique.
• Ici le compteur est modulo 16 (sortie sur 4bits), le compteur compte jusqu’à 1111 (15
en décimal) après 1111 + 0001 est sera 10000 le bit de poids forte est rejeté.
1.5.3 Les compteurs binaires rapides :
L’inconvénient des compteurs à base des additionneurs est le temps de propagation des bits,
cela peut être surmonté en divisent le compteur en deux segments ou plus. Par example, un
compteur 32 bits peut être divisé en 4 bits compteur en cascade avec un compteur de 28 bits.
Pour la première partie de comptage (de 0 à 16) seulement le compteur sur 4bits est en marche
vue que les bits de poids forts (de 3eme bits à 31) sont toujours à 0 pour le cycle (0,1,2,3…15).

10
1.5.4 Ring compteurs :
C’est le compteur le plus simple à implémenter dans un circuit numérique, comme son nom
indique (Ring counter) permet de compter d’une manière cyclique (comme un anneau).

Un compteur en cascade (ou ring counter en anglais) est un type de compteur numérique qui
utilise un registre à décalage pour créer une séquence d'impulsions qui circulent autour d'une
boucle de bascules. La sortie d'une bascule est connectée à l'entrée de la bascule suivante
dans une configuration en boucle, formant ainsi une boucle fermée.

Dans un compteur en cascade, une seule bascule est définie à un état logique haut à tout
moment, tandis que toutes les autres bascules sont définies à un état logique bas. Le signal
d'entrée est utilisé pour faire passer l'état logique haut d'une bascule à la suivante dans un
motif circulaire, créant ainsi une séquence d'impulsions qui se répète après un nombre fixe
d'états.

Dans un compteur en cascade, une seule bascule est définie à un état logique haut à tout
moment, tandis que toutes les autres bascules sont définies à un état logique bas. Le signal
d'entrée est utilisé pour faire passer l'état logique haut d'une bascule à la suivante dans un
motif circulaire, créant ainsi une séquence d'impulsions qui se répète après un nombre fixe
d'états. Lorsque le signal d'entrée est appliqué, l'état logique haut se déplace d'une bascule à
l'autre dans un motif circulaire. À mesure que l'état haut se déplace autour de la boucle, il
génère une séquence d'impulsions de sortie qui se répète après un nombre fixe d'états. Le
nombre d'états dans le compteur en cascade est égal au nombre de bascules dans la boucle.

Les compteurs en cascade sont couramment utilisés dans des applications où une séquence de
signaux est requise, telles que les horloges numériques, les registres à décalage et les diviseurs
de fréquence. Ils sont également utilisés dans les systèmes de communication numérique pour
générer une séquence d'impulsions qui représentent des bits de données. Un avantage d'un
compteur en cascade est qu'il peut fonctionner à des vitesses élevées et nécessite un matériel
minimal, car seule une bascule doit être activée à tout moment donné. Cependant, le principal
inconvénient d'un compteur en cascade est qu'il peut être sensible aux glitches et aux erreurs
de synchronisation en raison du retard de propagation dans les bascules.

11
1.5.5 Les registres à décalage à rétroaction linéaire :
Les registres à décalage à rétroaction linéaire (LFSR) sont un type de registre à décalage utilisé
en électronique numérique pour générer une séquence de bits pseudo-aléatoire. Un LFSR se
compose d'un registre à décalage, qui est un groupe de bascules connectées en série, et d'une
fonction de rétroaction linéaire, qui est une combinaison de portes logiques qui génèrent un
signal de rétroaction en fonction de l'état actuel du registre à décalage.

Dans un LFSR, la séquence de bits de sortie est déterminée par l'état initial du registre à
décalage et la fonction de rétroaction. Au fur et à mesure que les bits sont décalés dans le
registre, la fonction de rétroaction génère un nouveau bit qui est décalé dans le registre, créant
un nouvel état. Ce processus se poursuit jusqu'à ce que le registre à décalage revienne à son
état initial, moment où la séquence se répète.

Les LFSR sont largement utilisés dans des applications telles que la cryptographie, les
communications et le traitement numérique du signal. Ils sont particulièrement utiles pour
générer des séquences pseudo-aléatoires qui peuvent être utilisées pour chiffrer des données
ou pour étendre un signal sur une large bande de fréquences. Les LFSR peuvent également être
utilisés comme compteurs ou pour générer des signaux d'horloge.

Un avantage des LFSR est qu'ils peuvent être mis en œuvre avec une faible quantité de matériel
et peuvent fonctionner à des vitesses très élevées. Cependant, les LFSR sont vulnérables à
certaines attaques, telles que l'attaque de corrélation, qui peut être utilisée pour prédire la
séquence de sortie en fonction d'un petit nombre de bits précédents. Pour résoudre cette
vulnérabilité, des fonctions de rétroaction plus complexes et des éléments non linéaires
peuvent être utilisés.

Example :
Exemple des états successifs d'un LFSR à 4 bits avec une connexion des premier, second et
quatrième étage au niveau de la fonction de retour :

• À t = 0 l'état initial du LFSR est 0 1 1 0 ;


• à t = 1 le bit d'entrée vaut 1 (0xor1xor0) , l'état du LFSR est 1 0 1 1 et le bit de sortie
vaut 0 ;
• à t = 2 le bit d'entrée vaut 1 (1xor0xor1) , l'état du LFSR est 0 1 0 1 et le bit de sortie
vaut 1 ;

12
• à t = 3 le bit d'entrée vaut 1 (0xor1xor1) , l'état du LFSR est 0 0 1 0 et le bit de
sortie vaut 1 ;
• à t = 4 le bit d'entrée vaut 1 (0xor0xor0) , l'état du LFSR est 0 0 0 1 et le bit de
sortie vaut 0 ;
• à t = 5 le bit d'entrée vaut 1 (0xor0xor1) , l'état du LFSR est 1 0 0 0 et le bit de
sortie vaut 1 ;
• à t = 6 le bit d'entrée vaut 1 (1xor0xor0) , l'état du LFSR est 1 1 0 0 et le bit de
sortie vaut 0 ;
• à t = 7 le bit d'entrée vaut 1 (1xor1xor0) , l'état du LFSR est 0 1 1 0 et le bit de
sortie vaut 0 ;

Table d’états d’un LFSR et sa conception mathématique.

1.6 Les opérations booléen logique :


Les opérations logiques booléennes sont facilement effectuées en utilisant un circuit à base de
multiplexeurs, comme indiqué dans la figure. Le tableau montre comment les entrées sont
assignées pour effectuer différentes fonctions logiques. En fournissant différentes valeurs de
P, l'unité peut effectuer d'autres opérations telles que XNOR (A, B) ou NOT(A). Une Unité
Logique et Arithmétique (ULA) nécessite à la fois des opérations arithmétiques (addition,
soustraction) et des opérations logiques booléennes.

La fonction logique réaliser par ce circuit à base des


Multiplexeurs est :

𝑌 = (𝑃0 . 𝐵̅ + 𝑃1 . 𝐵)𝐴̅ + (𝑃2 . 𝐵̅ + 𝑃3 . 𝐵)𝐴

13
Suivant les valeurs de 𝑃0 , 𝑃1 , 𝑃2 , 𝑃3 on peut réaliser les fonctions logiques AND, OR, XOR …

Example :
Pour réaliser la fonction AND(A, B) on choisi 𝑃0 = 𝑃1 = 𝑃2 = 0 𝑒𝑡 𝑃3 = 1.
Donc la fonction logique précédente se simplifie et on aura : Y = A.B (fonction AND).

1.7 Le codage :
Les codes de détection et de correction d'erreurs sont utilisés pour augmenter la fiabilité des
systèmes. Les tableaux de mémoire sont particulièrement vulnérables aux erreurs douces
causées par les particules alpha ou les rayons cosmiques qui inversent un bit. De telles erreurs
peuvent être détectées, voire même corrigées, en ajoutant quelques bits de vérification
supplémentaires à chaque mot dans le tableau. Les codes sont également utilisés pour réduire
le taux d'erreur de bits dans les liens de communication.

1.7.1 Codage de parité :

La correction de code de parité est une technique simple de détection et de correction d'erreur
qui ajoute un bit supplémentaire, appelé bit de parité, à chaque mot transmis. Le bit de parité
est calculé de telle sorte que le nombre total de 1 dans le mot (y compris le bit de parité) soit
soit impair, soit pair. Si une erreur se produit pendant la transmission et que le mot reçu a un
nombre impair de 1 au lieu d'un nombre pair (ou vice versa), le récepteur peut détecter qu'une
erreur s'est produite.

Dans le cas de la parité paire, le bit de parité est réglé sur une valeur qui rend le nombre total
de 1 dans le mot pair. Par exemple, si les bits de données du mot ont trois 1, le bit de parité
sera réglé sur 1 de sorte que le nombre total de 1 devienne pair (c'est-à-dire quatre). Dans le
cas de la parité impaire, le bit de parité est réglé sur une valeur qui rend le nombre total de 1
dans le mot impair.

Si une erreur est détectée, le récepteur peut déterminer l'emplacement de l'erreur en vérifiant
le bit de parité. Par exemple, si le mot reçu a un nombre impair de 1 mais que le bit de parité
indique une parité paire, l'erreur doit être dans le bit de parité lui-même. Si le mot reçu a un
nombre pair de 1 mais que le bit de parité indique une parité impaire, l'erreur doit être dans
l'un des bits de données.
La détection de parité peut se faire par un simple circuit de XOR ports :

𝐴𝑛 = 𝑃𝑎𝑟𝑖𝑡𝑦 𝑏𝑖𝑡 = 𝐴1 ⊕ 𝐴2 ⊕ 𝐴3 ⊕ 𝐴4 ⊕ 𝐴5 ⊕ 𝐴6 ⊕ 𝐴7

14
La simulation de circuit nous donne :
 Le bit de parité = 0 donc le nombre des 1 est paires (4 ici).

 Le bit de parité = 1 donc le nombre des 1 est impaires (5 ici).

1.7.2 Les Codes de correction des erreurs :


La distance de Hamming [Hamming50] entre une paire de nombres binaires est le nombre de
bits qui diffèrent entre les deux nombres. Une erreur d'un seul bit transforme un mot de
données en un autre mot séparé par une distance de Hamming de 1. Les codes de correction
d'erreur ajoutent des bits de contrôle au mot de données de sorte que la distance de Hamming
minimale entre les mots valides augmente. La parité est un exemple de code avec un seul bit
de contrôle et une distance de Hamming.

"La distance de Hamming [Hamming50] entre une paire de nombres binaires est le nombre de
bits qui diffèrent entre les deux nombres. Une erreur d'un seul bit transforme un mot de

15
données en un autre mot séparé par une distance de Hamming de 1. Les codes de correction
d'erreurs ajoutent des bits de vérification au mot de données de sorte que la distance de
Hamming minimale entre les mots valides augmente. La parité est un exemple de code avec un
seul bit de vérification et une distance de Hamming de 2 entre les mots valides, de sorte que
les erreurs d'un seul bit conduisent à des mots invalides et sont donc détectables. Si plus de
bits de vérification sont ajoutés de sorte que la distance minimale entre les mots valides est de
3, une erreur d'un seul bit peut être corrigée car il n'y aura qu'un seul mot valide dans une
distance de 1. Si la distance minimale entre les mots valides est de 4, une erreur d'un seul bit
peut être corrigée et une erreur corrompant deux bits peut être détectée (mais pas corrigée).
Si la probabilité d'erreurs de bits est faible et non corrélée d'un bit à l'autre, de tels codes de
correction d'erreurs à correction d'un seul bit et à détection de double erreur (SEC-DED)
réduisent considérablement le taux d'erreur global du système. Des distances de Hamming plus
grandes améliorent encore le taux d'erreur au détriment de plus de bits de vérification.

En général, vous pouvez construire un code de Hamming de distance 3 d'une longueur allant
jusqu'à 2c-1 avec c bits de contrôle et N = 2c-c-1 bits de données en utilisant une procédure
simple [Wakerly00]. Si les bits sont numérotés de 1 à 2c-1, chaque bit dans une position qui est
une puissance de 2 sert de bit de contrôle. La valeur du bit de contrôle est choisie pour obtenir
une parité même pour tous les bits ayant un 1 dans la même position que le bit de contrôle,
comme illustré dans la Figure 11.58(a) pour un code à 7 bits avec 4 bits de données et 3 bits de
contrôle. Les bits sont traditionnellement réorganisés en bits de données et de contrôle
contigus, comme indiqué dans la Figure 11.58(b). La structure est appelée une matrice de
vérification de parité et chaque bit de contrôle peut être calculé comme le XOR des bits de
données surlignés.

Le décodeur de correction d'erreur examine les bits de contrôle. Si tous les bits de contrôle ont
une parité paire, le mot est considéré comme correct. Si un ou plusieurs groupes ont une parité
impaire, une erreur s'est produite. Le modèle de bits de contrôle ayant une parité incorrecte
est appelé syndrome et correspond à la position de bit incorrecte. Le décodeur doit inverser ce
bit pour récupérer le résultat correct.

16
1.7.3 Le Codage Gray :
Le code Gray (également connu sous le nom de code binaire réfléchi ou code binaire Gray) est
un système de numération binaire dans lequel deux nombres consécutifs ne diffèrent que d'un
seul bit. Il est nommé d'après Frank Gray, qui a breveté le concept en 1953. Le code Gray
présente plusieurs avantages en informatique et en électronique. L'un des principaux
avantages est qu'il minimise les erreurs causées par le bruit électrique ou les glitches, qui
peuvent provoquer la modification simultanée de plusieurs bits dans les systèmes binaires
traditionnels, conduisant à des résultats incorrects. Dans le code Gray, seul un bit change à la
fois, ce qui le rend plus fiable dans les applications nécessitant une grande précision et une
grande précision, telles que le traitement de signal numérique, les encodeurs rotatifs et les
convertisseurs analogiques-numériques.

Le code Gray est également utilisé dans


diverses applications où une transition en
douceur d'une valeur à une autre est
requise, comme dans les systèmes
mécaniques et électroniques qui
nécessitent un contrôle précis, tels que
les moteurs et la robotique. Par exemple,
le code Gray est souvent utilisé pour
coder la position d'un encodeur rotatif,
où le changement de position de
l'encodeur est représenté par une
séquence de valeurs de code Gray. Codage Gray vs Binaire
Un autre avantage du code Gray est qu'il peut être facilement converti en code binaire
traditionnel et vice versa. Cela en fait un choix pratique et flexible pour de nombreuses
applications en informatique et en électronique.

La conversion entre la représentation binaire B de N bits et la représentation en code Gray


binaire réfléchi G est remarquablement simple par la fonction logique suivante :

1.7.4 XOR/XNOR circuits :


L'une des difficultés chroniques de la conception de circuits CMOS est de construire une porte
XOR ou XNOR compacte, rapide et à faible consommation d'énergie. La figure 1.7.4 montre
plusieurs conceptions courantes de portes XOR statiques à simple rail à 2 entrées ; les
conceptions XNOR sont similaires. Les figures 1.7.4(a) et 1.7.4(b) montrent des
implémentations au niveau de la porte ; la première est astucieuse, mais la seconde est
légèrement plus efficace. La figure 1.7.4(c) montre une porte CMOS complémentaire. La figure
1.7.4(d) améliore la porte en optimisant deux contacts et est une conception de cellule
standard couramment utilisée. La figure 1.7.4(e) montre une conception de porte de
transmission. La figure 1.7.4(f) est la conception d'un "inverseur inversible" à 6 transistors.

17
Lorsque A est à 0, la porte de transmission s'allume et B est transmis à la sortie. Lorsque A est
à 1, l'entrée A alimente une paire de transistors qui inversent B. C'est compact, mais non
restaurateur. Certains simulateurs de commutation tels que IRSIM ne peuvent pas gérer cette
conception non conventionnelle. La figure 1.7.4(g) [Wang94] est une conception de passe-bas
compacte et rapide à 4 transistors, mais elle ne bascule pas de rail à rail.

XOR circuit a 2 entrées.

Les portes XOR avec 3 ou 4 entrées peuvent être plus compactes, bien qu'elles ne soient pas nécessairement plus
rapides qu'une cascade de portes à 2 entrées. La figure 1(a) montre une porte XOR CMOS statique à 4.

La fonction réaliser par ce circuit est :

𝑌 =𝐴 ⊕𝐵 ⊕𝐶⊕𝐷

18
Références :
• https://fr.wikipedia.org/wiki/Registre_%C3%A0_d%C3%A9calage_%C3%A0_r%C3
%A9troaction_lin%C3%A9aire
• https://www.eeinap.com/2021/06/electronique-numerique-compteur-modulo.html

19
III. SHIFTERS:
Un registre est un emplacement de mémoire interne à un processeur. Les registres se situent au
sommet de la hiérarchie mémoire : il s'agit de la mémoire la plus rapide d'un ordinateur, mais
dont le coût de fabrication est le plus élevé, car la place dans un microprocesseur est limitée.

Une architecture externe de processeur définit un ensemble de registres, dits architecturaux, qui
sont accessibles par son jeu d'instructions. Ils constituent l'état externe (architectural) du
processeur. Cependant, une réalisation donnée d'une architecture interne (microarchitecture)
peut contenir un ensemble différent de registres, qui sont en général plus nombreux que les
registres architecturaux. Ils stockent non seulement l'état externe du processeur, mais aussi celui
de sa microarchitecture: valeurs opérandes, indicateurs, etc. Ce dernier état est utilisé
exclusivement par la microarchitecture, et n'est pas visible par le jeu d'instructions
(architecture). Un processeur peut contenir plusieurs centaines de registres, mais, à titre
d’exemple, un processeur Intel 32 bits en contient seize2.
Chaque registre a une capacité de 8, 16, 32 ou
64 bits (couramment la taille d’un bus).

La plupart des architectures modernes sont qualifiées de load-store : les programmes transfèrent
d'abord des données de la mémoire centrale vers des registres, puis effectuent des opérations
sur ces registres, et enfin transfèrent le résultat en mémoire centrale.

Les registres Dans les microprocesseurs RISC classiques la mémorisation interne des données
se fait au moyen d'un banc de registres central à I'architecture, souvent multi-ports, chaque
registre ayantla même visibilité vis-à-vis des unités fonctionnelles. Du point de vue de la
programmation cela signifie que les registres sont complètement inteichangeables et forment
un jeu de registres homogènes. La stratégie utilisée dans les DSP est diftrente. Certains registres
sont dédiés à des opérateurs particuliers et ne peuvent êhe accédés que comme opérandesource
et résultat des instructions associées à I'opérateur. Historiquement, la raison d'être de ce type
d'architecture avec des registres hétérogènes se justifie par le coût matériel minimum.
La figure montre une architecture à jeu de registres homogènes équivalent à celle du DSP
5600X. Elle utilise un banc de registres multi-ports (3 ports d'entrées et 5 ports de sorties)
permettant de fournir suffisamment de données pour réaliser en parallèle une multiplication,
une addition et un décalage [Motorolag8]. À nombre de registres égal,La solution banc de
registres homogène est beaucoup plus coûteuse en performance et en consommation. - L"l
concepteurs ont donc choisi d'utiliser des architectures hétérogènes minimisant le matériel et
favorisant la performance. L'inconvénient de ce type d'aÈhitecture est son lnanque de souplesse
au niveau de la programmation. En d'auirls termes, la circulation des données dans ce type
d'architecture est plus complexe que dans les architectures homogènes p-al9e qle, par exemple,
tel registre n'est cônnectê qu'à telle unité, tel résultat doit aller obligatoirement dans tel registre
et pas un autre,etc. Ô'est pourquoi la programmation de ce type d'architecture est difficile èt
demande beaucoup â'attention et Oâpenence.

Les opérations de décalage et de test au niveau bit sont réalisées dans cette unité. Les opérations
de décalage sont utilisées généralement pour normaliser les valeurs dans les calculs à virgule
flottante. Les opérations de manipulation de bits sont utiles dans les applications incluant du
contrôle, ainsi que dans les algorithmes de traitement de données sous forme de flux de bits de
longueur variable. Cette classification n'est pas universellet la complexité, le type et le nombre
d'unités fonctionnelles varient selon les processeurs. Certains DSP disposent en plus d'unités
fonctionnelles spécialisées, pour un domaine d'application particulier, qui Ieur permettent
d'accélérer l'exécution de certains fonctions critiques. La plupart des DSP destinés à la
téléphonie mobile, par exemple, disposent d'un dispositif matériel pour le décodage de Viterbi
utilisé dans la nonne GSM
1. Les Types de shifts
1.1. Décalages logiques
Le décalage logique, aussi appelé logical shift, consiste à décaler tous les chiffres d'un ou
plusieurs crans vers la gauche ou la droite. Lors du décalage, des vides apparaissent dans la
représentation binaire du nombre : ceux-ci sont alors remplis avec des zéros.

Grâce à ce remplissage par des zéros, un décalage vers la gauche de n rangs est équivalent à
une multiplication par 2 pour des entiers non-signés ou pour des entiers signés positifs. Même
chose pour le décalage vers la droite qui revient à diviser un nombre entier par 2. Avec des
nombres signés,ce n'est pas le cas: on obtient un résultat qui n'a pas grand sens
mathématiquement.
Cette propriété est souvent utilisée par certains compilateurs, qui préfèrent utiliser des
instructions de décalages (qui sont des instructions très rapides) à la place d'instructions de
multiplication ou de division qui ont une vitesse qui va de moyenne (multiplication) à
particulièrement lente (division).

Il faut remarquer un petit détail: lorsqu'on effectue un décalage à droite -, certains bits de notre
nombre vont sortir du résultat et être perdus. Cela a une conséquence: le résultat est tronqué ou
arrondi. Plus précisément, le résultat d'un décalage à droite de n rangs sera égal à la partie
entière du résultat de la division par 2 .
1.2. Décalages arithmétiques
Les décalages arithmétiques sont similaires aux décalages logiques, à un détail près: pour les
décalages à droite, le bit de signe de notre nombre n'est pas modifié, et on remplit les vides
laissés par le décalage avec le bit de signe.

Ces instructions sont équivalentes à une multiplication/division par 2, que le nombre soit signé
ou non, à un détail près : l'arrondi n'est pas fait de la même façon pour les nombres positifs et
négatifs.

1.3. Rotations
Les rotations sont similaires aux décalages, à ceci près que chaque bit sortant est réinjecté à la
place libérée par le décalage.

Ces opérations sont très utiles en cryptographie, notamment dans certains algorithmes de
chiffrement. Les rotations sont aussi très utiles dans certains cas particuliers dans lesquels on
doit manipuler des données bit par bit. Par exemple, un calcul du nombre de bits à 1 dans un
nombre peut s'implémenter de façon naïve avec des instructions de rotation.

2. L’architecture de Shifters
Shifters

Funnel Shifter Barrel Shifter

Array Funnel Logarithmic


Shifter Funnel Shifter
2.1. Funnel Shifter

Funnel Shifter comprend une entrée, une sortie et une unité de multiplexeur comprenant un
certain nombre de niveaux de multiplexeur. L'unité de multiplexeur peut effectuer l'une d'une
pluralité d'opérations de décalage sur une valeur d'entrée et fournir une valeur de sortie en
réponse à la réception d'une valeur de décalage et d'une valeur d'opération de décalage. Un
premier niveau de multiplexeur peut être configuré pour formater et étendre la valeur d'entrée
en une valeur intermédiaire plus grande. Au moins un deuxième niveau de multiplexeur peut
être configuré pour effectuer un décalage linéaire de la valeur intermédiaire sans envelopper
aucun bit pour créer la valeur de sortie. Au moins certains des niveaux de multiplexeur peuvent
comprendre des signaux de sélection de multiplexeur qui peuvent être représentés comme une
pluralité de signaux N-Naire parmi N, où N est supérieur ou égal à deux, chacun de la pluralité
de signaux N-Naire étant mis en œuvre sur un ensemble de fils physiques.

Le Funnel Shifter crée un mot Z 2N – 1 bit à partir de A et/ou des valeurs kill, puis sélectionne
un champ N-bit à partir de ce mot en entrée,
comme le montre la figure . Il tire son nom de
la façon dont les entonnoirs mot large vers le
bas à un plus étroit. Tableau montre comment
Z est formé pour chaque type de décalage. Z
intègre la pré-rotation 1 bit pour les quarts de
travail à gauche.

Shift Type Z2N – 2:N ZN – 1 ZN – 2:0 Offset


Logical Right AN–2:0 AN–1 AN–2:0 k
Arithmetic Right 0 AN–1 AN–2:0 k
Rotate Right sign AN–1 AN–2:0 k
Rotate Left AN–1:1 A0 AN–1:1 ̅
𝒌
Logical/Arithmetic Left AN–1:1 A0 0 ̅
𝒌

Le milieu de la couche intermédiaire


Exemples :
On prend une information de 4 bit, alors N=4
Donc on a une couche intermédiaire de 7 bit (2n-1=7)

𝑘 = 2 = 10 = 𝑘1 𝑘0 𝑜𝑛 𝑣𝑎 𝑓𝑎𝑖𝑟𝑒 𝑢𝑛𝑒 𝑟𝑜𝑡𝑎𝑡𝑖𝑜𝑛 𝑣𝑒𝑟𝑠 𝑙𝑎 𝑑𝑟𝑜𝑖𝑡𝑒 𝑑𝑒 2 𝑏𝑖𝑡

𝑘 = 1 = 01 = 𝑘1 𝑘0 𝑜𝑛 𝑣𝑎 𝑓𝑎𝑖𝑟𝑒 𝑢𝑛 𝑑é𝑐𝑎𝑙𝑎𝑔𝑒 𝑙𝑜𝑔𝑖𝑞𝑢𝑒 𝑒𝑡 𝑎𝑟𝑖𝑡ℎ𝑚é𝑡𝑖𝑞𝑢𝑒 𝑣𝑒𝑟𝑠 𝑙𝑎 𝑔𝑎𝑢𝑐ℎ𝑒


𝑑𝑒 1 𝑏𝑖𝑡

𝑘̅ = ̅01
̅̅̅ = 10 = 2

2.1.1. Array funnel shifter

La conception la plus simple du Funnel Shifter consiste en un réseau de multiplexeurs d’entrée


N acceptant les signaux sélectifs 1-of-N-hot (un multiplexeur pour chaque bit de sortie). Un tel
levier de vitesse est montré dans la figure en utilisant des transistors nMOS pour un levier de
vitesse 4 bits. La quantité de décalage est inversée conditionnellement et décodée en signaux
sélectionnés qui sont alimentés verticalement à travers le tableau. Les sorties sont prises
horizontalement. Chaque rangée de transistors attachés à une sortie forme l’un des
multiplexeurs. Les entrées 2N – 1 s’exécutent en diagonale vers les entrées mux appropriées.
La figure montre un diagramme en bâtons pour l’un des transistors N2 du tableau. Les transistors
nMOS subissent une baisse de seuil, mais le problème peut être résolu en préchargeant les
sorties ou en utilisant des portes de transmission CMOS complètes.

1 multiplexeur pour chaque sortie Y


N multiplexeur de N:1, avec N le nombre de bit de notre information
Les adresses 𝑆𝑖 𝑎𝑣𝑒𝑐 𝑖 = {0,1, … , 𝑁 − 1}
i=nombre de bit qu’on veut décaler ,Exemple : si on veut décaler
vers la droite par 1 bit ,il faut choisir 𝑆1

2.1.2. Logarithmic funnel shifter

Le changeur de réseau fonctionne bien pour les petits métamorphes dans les conceptions de
niveau transistor, mais a une capacité parasitaire élevée dans les grands métamorphes,
conduisant à un retard excessif et de l’énergie. De plus, les manettes Y ne sont pas compatibles
avec les modèles de cellules standard. La figure montre un décalage logarithmique 4 bits basé
sur plusieurs niveaux de multiplexeurs 2:1 (qui, bien sûr, peuvent être trans mission de gates).
Les portes XOR sur les entrées de contrôle inversent conditionnellement la quantité de décalage
pour les décalages à gauche.

La figure montre un levier d’entonnoir 32 bits utilisant un multiplexeur 4:1 suivi d’un
multiplexeur 8:1 Z. Le générateur de source sélectionne le Z 63 bits. Le premier étage représente
un décalage droit grossier de 0, 8, 16 ou 24 bits. Le deuxième étage effectue un déplacement
fin de 0 à 7 bits. Le bloc de décodage de mux inverse conditionnellement k pour les décalages
gauches, calcule les sélections 1-hot, et les tamponne pour conduire les multiplexeurs larges.
Si left=1, on a Rotation / Décalage vers la gauche
Si left=0, on a Rotation / Décalage vers la droite
On a k=𝑘1 𝑘0

2.2. Barrel Shifter


Un barrel shifter est un circuit électronique capable d'effectuer des opérations de décalage et de
rotation binaires. Ce circuit est très souvent utilisé dans un processeur. Il peut être intégré dans
une unité de calcul, ou constituer une unité de calcul à part entière.

un barrel shifter Ceci est un circuit numérique destiné à exécuter des opérations de décalage
de bit (de décalage de bits) sur un mot de données (Composé d'un nombre spécifique de bits) à
un temps correspondant à un cycle d'horloge. Il peut être mis en œuvre comme une séquence
de multiplexeur dans lequel la sortie d'un multiplexeur donné est connectée à l'entrée de la
suivante.

Atitre d'exemple, considérons un décaleur à barillet qui fonctionne sur un mot de 4


bits ABCDLe circuit peut faire tourner l'ordre des bits ABCD effectuer un ou plusieurs
déplacements vers la droite, sans perte de bits, de manière à obtenir à la
sortie DABC, CCRDC, BCDA ou ABCD. Le décaleur à barillet est utilisé dans diverses
applications, en particulier en tant que composant microprocesseurs (Ainsi que les 'ALU).

La rotation vers la droite


Si left=1, on a Rotation / Décalage vers la (à gauche) par 𝑘 bit
gauche
Si left=0, on a Rotation / Décalage vers la droite
On a k=𝑘1 𝑘0
𝑁 − 𝑘 = 𝑁 + 𝐶𝑎2(−𝑘) = 𝑘̅ + 1

La rotation vers la gauche


(à droite) par 𝑘̅ + 1 bit
La figure(a) montre un simple Barrel Shifter de 4 bits qui effectue des rotations droites.
Remarquez que, contrairement aux manettes de vitesses Fun-Nel, les manettes de vitesses
contiennent de longs fils enroulables. Dans un grand shifter, il est avantageux d’augmenter la
taille ou de tamponner les conducteurs pour ces fils. La figure(b) montre une version améliorée
qui peut tourner à gauche en pré-tournant à droite par 1, puis à droite par k. Effectuer des
changements logiques ou arithmétiques sur barrel shifter nécessite un moyen de masquer les
bits qui sont tournés hors de l’extrémité du shifter, comme le montre la figure(c).

Rotate Right(a)
Rotate Right, Left(b)
Barrel shifters: (a) rotate right, (b) rotate left or

right,(c) rotates and shifts

3. La simulation de la rotation vers la droite


4. La simulation de la rotation vers la gauche
Left de 𝑘 = 3 = 𝑅𝑖𝑔ℎ𝑡 𝑑𝑒 𝑁 − 𝑘 = 4 − 3 = 1

Références:
https://fr.wikipedia.org/wiki/Barrel_shifter
https://fr.wikipedia.org/wiki/Registre_%C3%A0_d%C3%A9calage
http://www.ens-lyon.fr/ARCHI05/cours/archi05_sentieys_dsp.pdf
https://www.youtube.com/watch?v=UkangDc6gYI&t=32s
V. Le calcul de préfixe parallèle

V.1. Définition
Le calcul de préfixe parallèle, également connu sous le nom de scan ou de

somme de préfixe, est une opération courante en informatique parallèle où une

liste de nombres est traitée en parallèle pour calculer une nouvelle liste de

nombres, de telle sorte que chaque élément dans la nouvelle liste soit la somme

de tous les éléments précédents dans la liste d'origine.

Par exemple, étant donné la liste d'entrée [1, 2, 3, 4, 5], la liste de sortie serait [1,

3, 6, 10, 15]. Le calcul de chaque élément dans la liste de sortie est effectué en

parallèle en divisant la liste d'entrée en segments plus petits et en effectuant des

sommes de préfixes partiels sur chaque segment, puis en combinant les résultats

à l'aide d'une opération binaire telle que l'addition.

V.2. Domaines d'application


Les calculs de préfixe parallèle sont utilisés dans une large gamme d'applications

telles que :

Les simulations numériques

La compression de données

Le traitement d'images …

Ils sont particulièrement utiles dans les environnements de programmation

parallèle, où les données sont réparties sur plusieurs processeurs ou nœuds, et

les algorithmes parallèles efficaces sont nécessaires pour traiter rapidement de

grandes quantités de données.


V.3. Exemples d'application
V.3.1. Codeur de priorité :
Une application courante d'un circuit encodeur de priorité est d'arbitrer entre N unités
(tâches) qui demandent toutes l'accès à une ressource partagée (processeur).

Chaque unité i envoie un bit Ai indiquant une demande et reçoit un bit Yi indiquant
qu'elle a obtenu l'accès; l'accès ne doit être accordé qu'à une seule unité avec la plus
haute priorité.

A savoir que dans cet exemple, le bit de poids le


moins fort est le plus prioritaire
V.3.2. Codeur de priorité en utilisant les opérations de préfixe parallèles :

Nous pouvons exprimer l'encodage de priorité comme une opération de préfixe en


définissant un préfixe Xi:j indiquant qu’aucune des entrées Ai...Aj n'est activé.
Ensuite, l'encodage de priorité peut être défini avec un pré-calcul de bits, une
logique de groupe et une logique de sortie

Les encodeurs de priorité courts utilisent la structure en cascade (Ripple). Les


encodeurs de longueur moyenne peuvent utiliser une structure de saut (Skip), de
prévision (Lookahead), de sélection ou d'incrémentation. Les encodeurs longs
utilisent des arbres de préfixes pour obtenir un délai logarithmique N (Sklansky).
V.3.2.1. Short Priority Encoder : Ripple

Schéma et équations
Simulation et explications

Supposons que l'unité A3 demande le processeur en premier alors elle lui sera
attribué, on se trouve avec cet état :
Résultat 1

Maintenant, on suppose que A1 demande l'accés au processeur pour exécuter


ses tâches alors que A3 monopolise toujours le processeur, qu'est ce qu'il va se
passer ?
Résultat 2

Interprétation :
On remarque que A1 a pu accéder au processeur même si A3 avait toujours
besoin du processeur, c'est parceque A1 est plus prioritaire que A3, c'est à dire
les tâches que A1 doit exécuter sont plus critiques et immédiat à réaliser, c'est
le principe du codeur de priorité en utilisant la structure en cascade ou RIPPLE
V.3.2.2. Medium-Length Priority Encoder

Lookahead
Increment
V.3.2.3. Long Priority Encoder : Sklansky

Sklansky using AND gates

V.3.2. Binary-to-thermometer decoder :

Un décodeur binaire-thermomètre est un circuit numérique qui prend une entrée


binaire et la convertit en une sortie de code thermomètre.

Dans un code binaire, chaque chiffre ne peut avoir que deux états possibles : 0 ou
1. En revanche, un code thermomètre représente chaque valeur possible avec une
combinaison unique de "barres de thermomètre", qui sont essentiellement un
ensemble de chiffres binaires où chaque bit est 1 si la valeur correspondante est
inférieure ou égale à la valeur d'entrée et 0 sinon. Par exemple, un code
thermomètre à 4 bits aurait 4 barres de thermomètre, la première barre
représentant la valeur 8, la deuxième barre représentant la valeur 4, la troisième
barre représentant la valeur 2 et la quatrième barre représentant la valeur 1.
Un décodeur binaire-thermomètre prend une entrée binaire et génère une sortie
de code thermomètre correspondante. Cela est utile dans diverses applications
où la sortie doit être un code thermomètre, telles que les convertisseurs
numérique-analogique (DAC) ou les systèmes de contrôle. Le décodeur utilise
généralement une série de comparateurs pour comparer l'entrée binaire avec
des niveaux de tension prédéfinis correspondant à la sortie de code
thermomètre. Selon la valeur d'entrée binaire, le décodeur active les
comparateurs appropriés pour définir les bits correspondants dans la sortie de
code thermomètre.

Vous aimerez peut-être aussi