É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 NombresModifier

Le système binaireModifier

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 BCDModifier

Lisez le code BCD

Les nombres signésModifier

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 à 1Modifier

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 à deuxModifier

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 SoustractionModifier

Addition binaireModifier

L'addition binaire est expliquée dans un autre WIKIBOOK.

Soustraction binaireModifier

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 bitModifier

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 1Modifier

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 bitsModifier

 
De l'addition 1 bit à l'addition 4 bits

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 2Modifier

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.

Arithmétique et VHDLModifier

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 transcodageModifier

Code de GrayModifier

Code de Gray est une 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 article 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émorisée.

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 3Modifier

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.

Codes décimauxModifier

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 4Modifier

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 5Modifier

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 5Modifier

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 à virguleModifier

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 externesModifier

Il est bon pour comprendre ce chapitre de lire :

Pour votre culture lisez aussi :