É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

Le système binaire

modifier

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

Lisez le code BCD

Les nombres signés

modifier

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

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

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

Addition binaire

modifier

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

Soustraction binaire

modifier

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

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

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

modifier

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 VHDL

modifier

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

Code de Gray

modifier

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

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écimaux

modifier

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

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

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

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

Il est bon pour comprendre ce chapitre de lire :

Pour votre culture lisez aussi :