Électronique numérique : logique/Sorties multiples, addition, codes
Les simplifications dans le cas des sorties multiples sont encore plus complexes. Nous n'allons pas aborder ce problème de front mais plutôt des problèmes périphériques.
Représentation des Nombres
[modifier | modifier le wikicode]Le système binaire
[modifier | modifier le wikicode]Lisez le système binaire, particulièrement l'énumération des premiers nombres et dans l'expression d'un nombre, la partie sur la représentation des nombres positifs.
Vous pouvez aussi lire dans le WIKIBOOK Architecture des ordinateurs le chapitre Représentation des données qui vous explique les changements de base binaire vers décimal et décimal vers binaire.
Voir aussi Utiliser le système binaire.
Le système BCD
[modifier | modifier le wikicode]Lisez le code BCD
Les nombres signés
[modifier | modifier le wikicode]Les nombres signés sont des nombres qui peuvent être positifs ou négatifs.
Il existe plusieurs représentations de ces nombres. Nous en présentons deux ici (voir aussi Représentation des entiers négatifs).
Représentation en Complément à 1
[modifier | modifier le wikicode]Voir Complément à 1.
Ses propriétés arithmétiques ne sont pas suffisamment bonnes pour qu'on en fasse un standard de la représentation des nombres négatifs. En particulier, le zéro a deux représentations.
Représentation en Complémént à deux
[modifier | modifier le wikicode]Voir Complément à 2.
C'est essentiellement cette représentation que l'on utilisera par la suite. Une des raisons de cette utilisation est qu'elle permet de transformer une soustraction en addition comme on sait le faire depuis que l'on a découvert les nombres décimaux négatifs. Autrement dit, on attend d'une bonne représentation la propriété :
A - B = A + (-B)
qui exprime le fait qu'une soustraction est une addition d'un nombre négatif.
Addition et Soustraction
[modifier | modifier le wikicode]Addition binaire
[modifier | modifier le wikicode]L'addition binaire est expliquée dans un autre WIKIBOOK.
Soustraction binaire
[modifier | modifier le wikicode]La soustraction binaire est elle aussi expliquée dans un autre WIKIBOOK.
Nous allons maintenant nous intéresser à la matérialisation de l'addition en nous contentons dans un premier temps de l'additionneur sur 1 bit.
Du demi-additionneur à l'additionneur 1 bit
[modifier | modifier le wikicode]Ce problème est abordé en détail ici : Additionneur
Remarquons comme indiqué par la figure suivante que le schéma de l'additionneur est obtenu en n'utilisant pas les regroupements optimaux dans le tableau de Karnaugh. C'est une propriété des circuits à sorties multiples : la simplification ne consiste pas à simplifier chacune des sorties séparément. Mais nous ne traiterons pas ce problème dans le cas général ici.
Exercice 1
[modifier | modifier le wikicode]Implanter l'additionneur avec des OU exclusifs et des ET-NON seulement. Écrire la table de vérité d'un soustracteur (3 entrées : A, B et Ci et deux sorties D et Co). Le soustracteur sort sur 2 bits en complément à deux (Co,D) = A - B - Ci. Implanter ce soustracteur avec des OU exclisifs et des ET-NON seulement. Implanter un circuit qui fait soit une addition soit une soustraction avec une entrée de sélection.
De l'addition à 1 bit à l'addition à n bits
[modifier | modifier le wikicode]Ce problème est abordé en détail dans l'article déjà cité : Additionneur. Il faut à tout prix voir dans le schéma le côté mise en série de l'additionneur 1 bit en commençant par la droite (les poids faibles). Une addition en binaire s'exécute exactement comme on l'a appris à l'école primaire : on commence par additionner les poids faibles pour additionner ensuite les poids de plus en plus fort. Ce qui change par rapport à l'addition décimale, c'est la table d'addition qui est beaucoup plus simple ici.
Vous pouvez aussi lire le WIKIBOOK Architecture des ordinateurs, particulièrement la section additionneur.
Exercice 2
[modifier | modifier le wikicode]Quel est le temps de propagation de l'additionneur 3 bits (puis 4 bits) si un additionneur a lui-même un temps de propagation tp=10 ns.
Le calcul de R1 nécessite d'attendre 10 ns que la valeur de R0 soit calculée. Le calcul de R1 prendra lui aussi dix autres nanosecondes. Alors seulement le calcul de R2 peut commencer ce qui prendra 10 ns. Cela fera 30 ns en tout. Cela ferait 40 ns pour 4 bits ...
Arithmétique et VHDL
[modifier | modifier le wikicode]L'additionneur ci-dessus peut être facilement décrit en VHDL :
-- additionneur 3 bits VHDL
ENTITY add3 IS
PORT (a,b :IN INTEGER RANGE 0 TO 7;
s :OUT INTEGER RANGE 0 TO 15);
END add3;
ARCHITECTURE add OF add3 IS
BEGIN
s<=a+b;
END add;
En écrivant cela, on n'a aucune indication sur la façon dont il sera implanté : cela dépendra du compilateur VHDL et de la cible.
Codes et transcodage
[modifier | modifier le wikicode]Code de Gray
[modifier | modifier le wikicode]Le code de Gray est un code ayant une propriété particulière intéressante : il n'y a qu'une variable qui change lorsque l'on passe d'une valeur à une valeur contiguë. Cet section explique comment retrouver un code de Gray sur n bits par des symétries successives. On trouve aussi une méthode sous forme algorithmique qui peut être intéressante à mémoriser.
Remarque : Les entités en VHDL pour entrées et sorties multiples sont plutôt déclarées sous la forme :
-- Entrees et sorties multiples
ENTITY binGray IS
PORT (b :IN BIT_VECTOR(3 DOWNTO 0);
g :OUT BIT_VECTOR(3 DOWNTO 0));
END binGray;
Exercice 3
[modifier | modifier le wikicode]On a besoin d'un circuit combinatoire pour transcoder le code binaire en Code de Gray. Trouver les formes disjonctives simplifiées de G3, G2, G1, G0. Implanter avec des OU exclusifs. Écrire la partie architecture du programme VHDL correspondant.
Puisque la table de vérité est donnée un peu plus haut, il est facile de trouver les équations à l'aide de 4 tableaux de Karnaugh (1 par sortie).
Il vient
Codes décimaux
[modifier | modifier le wikicode]Un code décimal permet de représenter les dix valeurs 0 --> 9. On trouve le code DCB (Decimal Codé Binaire) ou BCD en anglais. Le Code Excess 3 est aussi présenté ici même s'il est peu utilisé.
Exercice 4
[modifier | modifier le wikicode]Un décodeur Excess 3 est un circuit qui entre le code 4 bits E3 E2 E1 E0 et valide une sortie parmi les 9. On évitera de confondre ce circuit avec un transcodeur BCD / Excess 3. Étudier un tel circuit, l'implanter. Écrire le programme VHDL correspondant.
Exercice 5
[modifier | modifier le wikicode]Trouver la table de vérité d'un transcodeur BCD vers Code de Gray (c'est à dire un code GRAY cyclique sur 10 valeurs).
Eléments de solution de l'exercice 5
[modifier | modifier le wikicode]- Table de vérité du code gray BCD cyclique
Entrées Sorties B3 B2 B1 B0 G3 G2 G1 G0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 Φ Φ Φ Φ 1 0 1 1 Φ Φ Φ Φ 1 1 0 0 Φ Φ Φ Φ 1 1 0 1 Φ Φ Φ Φ 1 1 1 0 Φ Φ Φ Φ 1 1 1 1 Φ Φ Φ Φ
Les nombres à virgule
[modifier | modifier le wikicode]Vous avez de quoi travailler dans les WIKI :
- Wikipédia vous propose un article sur les nombres à virgule flottante : la norme IEEE 754.
- WikiBook vous propose un chapitre sur les nombres à virgule flottante : la norme IEEE 754.
Liens externes
[modifier | modifier le wikicode]Il est bon pour comprendre ce chapitre de lire :
- Le système binaire
- Le code BCD
- Nombre négatif
- Complément à 1
- Complément à 2
- Code de Gray
- Code Excess 3
- L'afficheur sept segments
- Représentation des données
- La norme IEEE 754
Pour votre culture lisez aussi :