# Électronique numérique : logique/Sorties multiples, addition, codes

* Fonctions logiques élémentaires
* Assemblage de fonctions
* Simplification et implantation de formes disjonctives
* Simplification et implantation de formes conjonctives
* Compléments sur la simplification
* Sorties multiples, addition, codes
* Tables de vérité généralisées (SI-ALORS)
* Ressources sur Wikipédia
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
### Le système binaire

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

Lisez le code BCD

### Les nombres signés

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

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

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
### Addition binaire

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

### Soustraction binaire

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

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

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

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

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

L'additionneur ci-dessus peut être facilement décrit en VHDL :
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
### Code de Gray

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 :

### Exercice 3

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
* $G_{0}=B_{0}xorB_{1}$
* $G_{1}=B_{1}xorB_{2}$
* $G_{2}=B_{2}xorB_{3}$
* $G_{3}=B_{3}$

### Codes décimaux

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

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

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
##### Table de vérité du code gray BCD cyclique

    EntréesSorties B3B2B1B0G3G2G1G0 00000000 00010001 00100011 00110010 01000110 01010111 01100101 01110100 10001100 10011000 1010ΦΦΦΦ 1011ΦΦΦΦ 1100ΦΦΦΦ 1101ΦΦΦΦ 1110ΦΦΦΦ 1111ΦΦΦΦ

## Les nombres à virgule

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

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 :
* Les Codes correcteurs
* Le code de Hamming
* Fonctions logiques élémentaires
* Assemblage de fonctions
* Simplification et implantation de formes disjonctives
* Simplification et implantation de formes conjonctives
* Compléments sur la simplification
* Sorties multiples, addition, codes
* Tables de vérité généralisées (SI-ALORS)
* Ressources sur Wikipédia