Rapport ELYOUSFY CHAOUNI ELHASNAOUI FHAIL
Rapport ELYOUSFY CHAOUNI ELHASNAOUI FHAIL
Rapport ELYOUSFY CHAOUNI ELHASNAOUI FHAIL
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
VI-Conclusion
I. Introduction
1-Contexte et importance des puces électroniques
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.
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.
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.
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
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
Schéma d’un additionneur par propagation de retenue.
𝟒
𝑬𝒇𝒇𝒐𝒓𝒕 = ( )𝐥𝐨𝐠 𝟐 𝑵 = 𝑵𝐥𝐨𝐠 𝟐 𝟒/𝟑 = 𝑵𝟎.𝟒𝟏𝟓
𝟑
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.
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 :
4
• A = 0000 0000 et B = 0000 0010 ➔ le résultat est A < B.
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.
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 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 :
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 :
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 ;
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.
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).
"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.
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.
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.
𝑌 =𝐴 ⊕𝐵 ⊕𝐶⊕𝐷
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 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.
𝑘̅ = ̅01
̅̅̅ = 10 = 2
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
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.
Rotate Right(a)
Rotate Right, Left(b)
Barrel shifters: (a) rotate right, (b) rotate left or
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
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
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
sommes de préfixes partiels sur chaque segment, puis en combinant les résultats
telles que :
La compression de données
Le traitement d'images …
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é.
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
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
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.