Vous êtes sur la page 1sur 60

----------------------------------------------------------------

-- Représentation des Chiffres Hexa sur AFFICHEUR 7segments --


-- Méthode de programmation par --
-- Table de Constantes "Vecteurs_7Segs" , + Pointeur --
----------------------------------------------------------------
-- [ Montre utilisation de la Fonction de "Transfert" : INTEGER( Vector ) ]

library ieee ;
use ieee.std_logic_1164.all ;
---------------------------------------------------------

ENTITY ChHx_Aff7 IS

PORT ( ChHx--: (voir


in Std_Logic_Vector(3
"Ordre" + bas ...)downto 0) ;
Aff7 : out Std_Logic_Vector(7 downto 0) ) ;

ATTRIBUTE pin_numbers of ChHx_Aff7 : entity is


-- Bouton Poussoirs BPs 3 à 0 :
ChHx(3):15 ChHx(2):16 ChHx(1):17 ChHx(0):18 &
-- Segments "a" ... "h" <--> Aff7(0) ... Aff7(7) :
Aff7(0):82 Aff7(1):83 Aff7(2):84 Aff7(3):85 & -- n°s de pin de
Aff7(4):86 Aff7(5):87 Aff7(6):88 Aff7(7):89 ; -- AFF 0 !!
END ChHx_Aff7 ; -- ~~~~~

---------------------------------------------------------

ARCHITECTURE ChHx_Aff7_arch OF ChHx_Aff7 IS

Type Tabl16x8 is array ( 0 to 15 ) of std_logic_vector(7 downto 0) ;


Constant Etat7Sgmts
-- pour ChiffresHexa
: Tabl16x8 : :=
-- 0 1 2 3 4 5 6 7
( x"af", x"a0", x"cd", x"e9" , x"e2", x"6b", x"6f", x"a3",
-- 8 9 A b C d E F
x"ef", x"eb", x"e7", x"6e" , x"0f", x"ec", x"4f", x"47" ) ;
Signal ChHxEnt : INTEGER range 0 to 15 ;

BEGIN
-- !! Soit définir ChHx ...vector(0 to 3) , puis "Transfert" ChHxEnt <= INTEGER( ChHx ) ;
-- !! °°°°°° °°°°
-- !! Soit Ordonner --> 0 1 2 3 (... rangs croissants ! ) :
ChHxEnt <= INTEGER( ChHx(0) & ChHx(1) & ChHx(2) & ChHx(3) ) ;
Aff7 <= Etat7Sgmts( ChHxEnt ) ;

--xx -- Méthode "classique" :


--xx with ChHx select
--xx -- Ex. Afficheur 0 (droit) , N° pin repérés :
--xx -- "hgfedcba" ChHx ChHex CodHx
--xx -- ---------- ---- ----- ----- +++++++++
--xx Aff7 <= "10101111" when "0000" , -- 0 x"af" + AFF 0 +(droit)
--xx "10100000" when "0001" , -- 1 x"a0" +++++++++
--xx "11001101" when "0010" , -- 2 x"cd" a 82
--xx "11101001" when "0011" , -- 3 x"e9" ----------
--xx "11100010" when "0100" , -- 4 x"e2" b / / h
--xx "01101011" when "0101" , -- 5 x"6b" 83/ g / 89
--xx "01101111" when "0110" , -- 6 x"6f" / 88 /
--xx "10100011" when "0111" , -- 7 x"a3" ----------
--xx "11101111" when "1000" , -- 8 x"ef" c / / f
--xx "11101011" when "1001" , -- 9 x"eb" 84/ d / 87
--xx "11100111" when "1010" , -- A x"e7" / 85 /
--xx "01101110" when "1011" , -- Bm x"6e" ---------- #e 86
--xx "00001111" when "1100" , -- C x"0f"
--xx "11101100" when "1101" , -- Dm x"ec"
--xx "01001111" when "1110" , -- E x"4f"
--xx "01000111" when "1111" ; -- F x"47"

END ChHx_Aff7_arch ;
2 sur 60 11049388.xls VHDL
3 sur 60 11049388.xls VHDL
4 sur 60 11049388.xls VHDL
Les entités (entity)

5 sur 60 11049388.xls VHDL


Les components

Exemple avec component : additionneur 16 bits

6 sur 60 11049388.xls VHDL


Nombres Premiers ( à chercher par Google … )
http://www.cnrs.fr/Cnrspresse/math2000/html/math10.htm
Prem(n) = 2 + n + 1/( 1 + Somme,p=2àn+1[ (n+2)/p - [ (n+1)/p ] ] ) Formule générant Tous les NbPrem , m
n= 11 ==> #VALUE!

' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 …
' 2 3 2 5 2 7 2 2 2 11 2 13 2 2 2 17 …
ormule générant Tous les NbPrem , mais très souvent 2 !
NUMERATION ( Représentations des Nombres )
A] Système ancien : Romain http://villemin.gerard.free.fr/Wwwgvmm/Numerati/RomainNu.htm
Pour montrer que la plus ou moins bonne conception d' un Système engendre
plus ou moins de difficultés d' utilisation , et surtout de réalisations d' automatismes (ex: Opérations) .
soustractible de soustractible de soustractible de
Conventions :
a) chiffre : I V X L C D M
valeur : un cinq dix cinquante cent cinq cents mille
b) Nbre : { suite de chiffres , des +signifiants à gauche aux -signifiants à droite , sauf ° }
° Sans doute par soucis de limiter la longeur des chaînes de caractères
représentant les valeurs numériques , convention de "soustraction'" :
un chiffre parmi les "soustractibles" (en RougeSouligné ) , placé à gauche
d' un chiffre de valeur juste supérieure ou suivante , s' en soustrait ( ! ) :
I placé à gauche de V ou X ; X placé à gauche de L ou C ;
C placé à gauche de D ou M .
c) Quelques Nombres en exemple :
Nombre : III IV VIII IX XIV XVIII XXXIX
valeur : 3 4 8 9 14 18 39
Nombre : XLVII XCIX CDXC XD Faux!! CMXCIX
valeur : 47 99 490 !!! 999
d) Opérations élémentaires : exemple de multiplication
X4 L 3 I 2 V1 réf. Chiffre multiplicande L4 X3 I 2 V1
* Vc I b I a réf. Chiffre multiplicateur * Vc I b Ia
X L I V a Tous les L X I V a
X L I V b "soustraits" L X I V b
X X V c1 en Rouge ! X X V c1
=0 =0
(!) - V c2 (!) - V c2
C C L c3 L c3
(!) - L c4 C C L c4
C C C V I I I C D X L V I I I

B] Systèmes (bien) stucturés "à Base B" : ( 'représentation' de Zéro => 'bonne' structure )
1) Chiffres : B chiffres à valeurs 0 jusqu'à B-1 .
représentations usuelles selon Valeur de B :
quatorze
chiffre

quinze
valeur

douze

Base
treize
deux

onze
neuf
zéro

sept
huit

dix

....
un

Deux "0" "1"


Huit "0" "1" "2" .... "7"
Dix "0" "1" "2" .... "7" "8" "9"
Douze "0" "1" "2" .... "7" "8" "9" "A" "B"
Seize "0" "1" "2" .... "7" "8" "9" "A" "B" "C" "D" "E" "F"

2) Conventions de Représentation d' un nombre Entier E ; Valeur correspondante :


Représentation : { en-1 en-2 . . . e1 e0 } B à n chiffres .
Rem.: dans un contexte "unibase" , on ne représente que la suite des ei à partir du
1er non nul , jusqu' à e0 , tous les chiffres nuls précédents étant "non significatifs" .

Valeur correspondante : = Σ i= 0 à n-1 (ei) *Bi ( rappel : B^0 = 1 )


Plage des Bn valeurs : de 0 à Bn -1 .

11049388.xls NUMERATION page 9 ( sur 60 ) 11/13/2009 19:17:20


Rem.: avec chiffre_max "y" (= B-1) , { y y .. y y } = { 1 0 0 .. 0 0 } - 1 .

3) Conventions de Représentation d' un nombre (non entier ) N , à partie "fractionnaire" , ou "à virgule"
Représentation : { ne-1 ne-2 . . . n1 n0 , n-1 n-2 . . . n-f } B à e + f chiffres .
Rem.: dans un contexte "unibase" , on ne représente que la suite des ni
à partir du non nul
de plus grand indice , jusqu' à n0 , et seulement les 1ers après la virgule … .
Les calculatrices n' affichent pas les derniers "0" après la virgule .
Valeur correspondante : = Σ i= -f à e-1 (ni) *Bi

"résolution" : 1 unité en position d' indice -f , soit B-f

C] Conversions d' une Base à une autre , méthodes :


1) Partie Entière :
Divisions Entières successives (dans la base "d' origine" ) par la valeur de la Base désirée :
chiffre suivant = reste ; quotient (entier!) utilisé pour la suite … .
2) Partie Fractionnaire :
Multiplications successives par la valeur de la Base désirée :
chiffre suivant = partie entière PE du résultat ; résultat - PE (donc <1 !) utilisé pour la suite … .
Rem. pour Base 2 :
méthode 1 : *2 ; chiffre suivant = partie entière PE du résultat , 0 ou 1 ;
si 1 le SOUSTRAIRE du résultat pour garder seulement la partie fractionnaire PF ;
méthode 2 : *2 ; chiffre suivant selon PARITé de la partie entière PE du résultat : Pair => 0 , Impair => 1 ;
on économise ainsi la manipulation de soustraction … ; mais la partie entière occupe de + en +
de la place allouée aux chiffres les plus significatifs , au détriment des derniers moins significatifs ,
qui sont alors progressivement perdus , faussant les calculs ! => "divergence" !
Conclusion : la méthode 1 est préférable . Essayer par ex. pour la conversion de PI -3 … .
3) Nombre N Très Grand ou Très Petit :
Il faut d' abord "situer" le Rang du "1er" chiffre significatif , de poids le + élevé :
a] Conversion vers Base 2 :
@ Evaluation à partir de : 2^10 = 1024 # 1000 = 10^3
Ex.: AnLumPrcs = 9.46E+015 un peu supérieur à 2^3 * (10^3)^5 ,
donc proche de 2^3 * (2^10)^5 soit 2^53
puis on compare AnLumPrcs à 2^54 , 2^53 ou 2^52 … ; c' est bien 2^53 la plus grande
puissance de 2 incluse dans la valeur de AnLumPrcs , et le Rang du 1er "1" est bien 53 .
@ Calcul par Logarithmes : Rang 1er "1" = P.Entière( Log N / Log 2 )
Ex.: pour AnLumPrcs : Log AnLumPrcs / Log 2 = 0,053… P.E. = 53

D] Codages techniques courants pour les valeurs numériques


1) DCB : Décimal Codé (sur support) Binaire
chaque chiffre de l' expression en Base10 est représenté par l' expression de sa valeur
en Base2 sur 4bits . Les 'groupes' de 4 bits sont repérés à partir de celui des unités .

2) Flottant Norme IEEE : [ b_Signe | 11b_P.Exp. | 52b_P.Mant. ]


Exposant : Valeur de {11b_P.Exp.}2 -1023 P.Exp. = Exp + 1023 sur 11b.
( calcul : Exposant = Int[ Log(Nb) / Log(2) ] )
Mantisse : = "1," suivi des 52b_P.Mant. P.Mant. = 52 ch. suivant le "1" de poids le +fort ..

11049388.xls NUMERATION page 10 ( sur 60 ) 11/13/2009 19:17:20


3) Entiers signés en Cà0 ("Cmplt à 2") , sur N bits
a. Problématique: simplifier les algorithmes de réalisation des opérations élémentaires
{ Addition, soustraction, multiplication .. } ; ex.:
Addition : avec Nombres en "S Vabs" , soit { b.S ; (N-1)b.ValAbs } ,
elle nécessite tests de signes, comparaison des Valeurs absolues … .
Algorithme détaillé Addition d' Entiers Signés ,
P { sP ; absP } = X { sX ; absX } Plus Y { sY ; absY } :
sX = sY => sP = sX ; absP = absX Plus° absY
sX=0,sY=1 : Comparer absX et absY =>
sP = s du Nbre de abs max ; absP = absMax Moins° absMin
b. Définitions ou conventions , propriétés :
Signe exprimé par Msb [ 0=>">0"; 1=>"<0" ]
X >0 : == Naturel ; X <0 : = Zéro Moins° X
Plage : -2^(N-1) à 2^(N-1)-1
Opérations : Plus° , Moins° .. ; ° <-> "Sans différencier le Msb(signe)"
Extension : recopie du Msb
c. Table de "correspondance" 4 bits de { sX ; absX } <-> SNCà0
Valeur de X { sX ; absX } Cà0( X )
(8)
7 0 111 0111
6
5
4
3
2
1 0 001 0001
0 0 000 0000
-1 1 001 1111
-2 1 010 1110
-3
-4
-5
-6
-7 1 111 1001
-8 1000

Exemples d Opérations "simples" , Additions et Soustractions :


+3 000011 +4 000100
Plus - 4 Plus° 111100 Plus - 3 Plus° 111101
-1 111111 +1 000001
+3 000011 -3 111101
Moins - 4 Moins° 111100 Moins + 5 Moins° 000101
+7 000111 -8 111000
d. Méthodes pour obtenir l'expression de l'opposé :
_ Complémenter les bits ; additionner 1 .
_ Depuis la droite recopier les bits jusqu'au premier 1; complémenter les suivants .
Périm.Terre = 40 000 000 m : 0000.0010.0110.0010.0101.1010.0000.0000
- Périm.Terre = - 40 000 000 m : 1111.1101.1001.1101.1010.0110.0000.0000

11049388.xls NUMERATION page 11 ( sur 60 ) 11/13/2009 19:17:20


11049388.xls NUMERATION page 12 ( sur 60 ) 11/13/2009 19:17:20
1] Conversions de représentations de Nombres
a) Représentation de la valeur de X en système de Numération à Base B :
Utilise B chiffres , à valeurs 0 à B-1 : "0","1", .. "9", "A", .. ; ex.: "0" à "F"(quinze) en Base seize .
Nombre Entier à e chiffres :
X = { xe-1 xe-2 .. x1 x0 } B { 1 0 .. 0 } = Σ (xi) *B^i pour i = 0 à e-1 pour i= 1 à e-1
Plage de valeurs : 0 à ( B^e -1 ) { 1 0 .. 0 }
Avec partie Fractionnaire à f chiffres :
X = { xe-1 .. x0 , x-1 x-2 .. x-f } B = Σ (xi) *B^i pour i = -f à e-1 pour i= -f à e-1
Résolution : 1 * B^-f
b) Application : Représentations et conversion en Bases 10, 2, 16, 8, 12

Vu TD Valeur Base 2 Gr4ch (1+60chMaxi) Base 16 Base 8 Base 12


Année act. 2009 #VALUE! analyse de la parité ... #VALUE! #VALUE! #VALUE!
Année suiv. 2010 #VALUE! #VALUE! #VALUE! #VALUE!
Entier Signé -134 #VALUE! #VALUE! #VALUE! #VALUE!
Fractionnaires 132.13 #VALUE! #VALUE! #VALUE! #VALUE!
Fractionnaires 132.12 #VALUE! #VALUE! #VALUE! #VALUE!
2^53 -2^50 -2^47 -17.74E+015 #VALUE! #VALUE! #VALUE! #VALUE!
X= 232,625 232.63 #VALUE! #VALUE! #VALUE! #VALUE!
X +0,0078125 232.63 #VALUE! #VALUE! #VALUE! #VALUE!
X +0,00390625 232.64 #VALUE! #VALUE! #VALUE! #VALUE!
1 + 2^-12 1 #VALUE! #VALUE! #VALUE! #VALUE!
-1232.63 #VALUE! #VALUE! #VALUE! #VALUE!
PI 3.14 #VALUE! #VALUE! #VALUE! #VALUE!
Grands Nombres : Exposant de 2 = ENT[ LOG10( ABS( Nombre ) ) / LOG10(2) ]
m/s Vlum 300,000,000 #VALUE! analyse de l'erreur systématique relative : #VALUE! #VALUE! #VALUE!
/2^28 1.12 #VALUE! ( Vlum - VLumPrcs ) / Vlum ~ 2/3000 #VALUE! #VALUE! #VALUE!
soit <1/1000 , et >0,5/1000 … ;
m/s VLumPrcs 299,792,458 #VALUE! donc 10 à 11 chiffres ok après le 1er . #VALUE! #VALUE! #VALUE!
/2^28 1.12 #VALUE! #VALUE! #VALUE! #VALUE!
m AnLumPrcs365,25j 9.46E+015 #VALUE! #VALUE! #VALUE! #VALUE!
/2^53 1.05 #VALUE! #VALUE! #VALUE! #VALUE!
m Périm.Terre 40,000,000 #VALUE! #VALUE! #VALUE! #VALUE!
/2^25 1.19 #VALUE! #VALUE! #VALUE! #VALUE!
m Diam.Terre 12732395.45 #VALUE! #VALUE! #VALUE! #VALUE!
/2^23 1.52 #VALUE! #VALUE! #VALUE! #VALUE!
Nbr Avogadro 6.02E+23 #VALUE! #VALUE! #VALUE! #VALUE!
/2^78 1.99 #VALUE! #VALUE! #VALUE! #VALUE!
Très Petits Nombres : Exposant de 2 = ENT[ LOG10( ABS( LC5 ) ) / LOG10(2) ]
Tm/A µ0=4Π10^-7 0 #VALUE! #VALUE! #VALUE! #VALUE!
*2^20 1.32 #VALUE! #VALUE! #VALUE! #VALUE!
Limites Zone A Imprimer pour TD !!
Val_B2 Base 16 Base 8
#VALUE! -100.1101.0000,1010.001 #VALUE! #VALUE!
#VALUE! 1000.0111,001 #VALUE! #VALUE!
#VALUE! 1110.1000,1010.0011 #VALUE! #VALUE!
#VALUE! 1,0000.0000.0001 #VALUE! #VALUE!
PI2 #VALUE! 11,0010.0100.0011.1111.0110.1010.1000.1000.1000.0101.1010.0011 #VALUE! #VALUE!
#VALUE! 10.0001.1001.1100.1000.1100.0010.0111.0100.1010.1000.0000.0000.0000 #VALUE! #VALUE!
#VALUE! 1100.0010.0100.0111.1110.1011,0111.0010.1000.0101.1010.0010.111 #VALUE! #VALUE!
#VALUE! 0,0000.0000.0000.0000.0001.0101.0001.0101.0011.0111.0000.1111.1001.1001.1111
#VALUE! #VALUE!

c) DCB Base 10 "complet"


PI2 #VALUE! 11, 0010.0100.0011.1111.0110.1010.1000.1000.1000.0101.1010.0011 #VALUE!
PI2tronq #VALUE! 11, 0010.0100.0011 #VALUE!
en DCB2 : {0011},{0001 0100 0001 0011 0101 0111 0100 0010 0001 1000 0111 0101} sur support binaire

11049388.xls NUMERATION.Calculs 13 sur 60 11/13/2009 19:17:21


d) Flottant, Norme IEEE: [ b_S | 11b_P.Exp. | 52b_P.Mant. ]
Exp = Val. {11b_P.Exp.}2 -1023 P.Exp. = Exp + 1023 sur 11b.
(calcul : Exposant = Int[ Log(Nb) / Log(2) ] )
Mant = "1," suivi des 52b_P.Mant. P.Mant. = 52 ch. suivant le "1" de poids le +fort ..
PI 3.14 #VALUE!
/2^1 1.57 #VALUE!
AnLumPrcs365,25j 9.46E+015 #VALUE!
/2^53 1.05 #VALUE!
m Périm.Terre 40,000,000 #VALUE!
/2^25 1.19 #VALUE!
m Diam.Terre 12,732,395 #VALUE!
/2^23 1.52 #VALUE!
µ0=4Π10^-7 0 #VALUE!
*2^20 1.32 #VALUE!
Nbr Avogadro 6.02E+23 #VALUE!
/2^78 1.99 #VALUE!

e) Entiers signés en Cà0 ("Cmplt à 2") , sur N bits


Problématique: simplifier les algorithmes de réalisation des opérations élémentaires
{ Addition, soustraction, multiplication .. } ; ex.:
Addition: tests de signes, comparaison des Valeurs absolues ..
Algorithme détaillé de l' Addition d' Entiers Signés :
P { sP ; absP P} { =sP X; {absP
sX ;} absX
= X} {Plus
sX ; YabsX
{ sY} ;Plus
absY Y} {: sY ; absY } :
sX=,sY => sP = sX ; absP = absX Plus° absY
sX=0,sY=1 : Comparer absX et absY =>
sP = s du Nbre de abs max ; absP = absMax Moins° absMin

Définition, propriétés :
Signe exprimé par Msb [ 0=>">0"; 1=>"<0" ]
Nb >0 : = Naturel
Nb <0 : = 0 moins° Nb
Plage : -2^(N-1) à 2^(N-1)-1
Opérations : Plus° , Moins° .. ; ° <-> "Sans différencier le Msb(signe)"
Extension : recopie du Msb
Méthodes pour obtenir l'expression de l'opposé :
1) Complémenter les bits; additionner 1 .
2) Depuis la droite recopier les bits jusqu'au premier 1; complémenter les suivants .
Périm.Terre = 40 000 000 m [32b] : 0000.0010.0110.0010.0101.1010.0000.0000
-Périm.Terre : 1111.1101.1001.1101.1010.0110.0000.0000
Table de "correspondance" 4 bits de { sX ; absX } <-> SNCà0

11049388.xls NUMERATION.Calculs 14 sur 60 11/13/2009 19:17:21


Algèbre de BOOLE

VARIABLES 2 valeurs : FAUX ou 0 VRAI ou 1


FONCTIONS dites "Booléennes" ou Logiques
Toute Fonction Logique est entièrement définie par une T.V. "Table de Vérité" :
Liste complète de toutes les combinaisons des Valeurs des Opérandes ,
et Valeurs de la Fonction en correspondance .
1) Simples ou de Base --> Opérateurs
a] à 1 Opérande : 2 Valeurs d'Opérande , => 2^2 T.V.s possibles
T.V.s X F1 F1 F1 F1
0 0 0 1 1
1 0 1 1 0
Nom "0forcé" Identité "1forcé" Compl.Log.
Le Compl.Log. est indispensable , et est représenté couramment par :
_ Sigles : NON , en anglais NOT
_ Symboles "graphiques" : le " ! " devant , la au-dessus , …
b] à 2 Opérandes : 4 Combinaisons d'Opérandes , => 2^4 T.V.s possibles
qq T.V.s X Y X.Y X+Y X/Y X↓Y X Y
0 0 0 0 1 1 0
0 1 0 1 1 0 1
1 0 0 1 1 0 0
1 1 1 1 0 0 1
Sigle : Fr. ET OU nET nOU OUEx
Angl. AND OR NAND NOR XOR
Symboles : "•" "+" "/" "↓" " "
Rem.: T.V. Avec tous "0" <-> "1" correspond au Complément_Logique
Valeurs Déterminantes , Valeurs Neutres , Particularités :
X • 0 = 0 X • 1 = X X + 0 = XX + 1 = 1
X / 0 = 1 X / 1 = !X X ↓ 0 = ! XX ↓ 1 = 0
X 0 = X X 1= . ! X
X • X = X X + X = X X / X = !X X ↓ X = !X
X • !X = 0 X + !X = 1 X / !X = 1 X ↓ !X = 0
2) Générales : Expression "canonique"
OU de termes en { ET 'entre des' Variables , complémentées ou non } .
ex.: X Y = X • !Y + !X • Y
L' expression canonique "de base" est le OU des termes en ET de toutes
les variables et qui correspondent à chaque "1" de la T.V. .
3) Simplifications , règles :
Le ET et le OU offrent les mêmes propriétés de "factorisations" que le • et le +
en algèbre classique . Rem.: habituellement on n' écrit plus le ET entre les variables
d' un terme , il est sous-entendu ; ainsi en représentant ET et OU par les symboles •
et + , on retrouve des formulations analogues à l' algègre classique .
ex.: Z = X • Y + X • !Y s' écrit X Y + X !Y , et alors
Z = X ( Y + !Y ) = X ( 1 ) = X
Des simplifications courantes : démontrer les suivantes ( toujours faisable par T.V.s )
a] X + !X Y = ( X + X Y ) + !X Y = X + [ X Y + !X Y ]
= X + [ ( X + !X ) Y ] = X + Y
b] règles de De MORGAN : (plus clair avec 'barre_au-dessus' au lieu de '!' )
X + Y = ! ! ( X + Y ) = ! ( !X !Y ) et X Y = ! ! ( X Y ) = ! ( !X + !Y )
TD x : Validation de bonne réalisation (préparation directe aux TPs)
Conception de ‘Simulation’ +explications associées qui soit « clairement démonstrative »
Du bon fonctionnement dans
rement démonstrative »
caractère code ASCII code
hexadécimal
NUL (Null) 0 0
SOH (Start of heading) 1 1
STX (Start of text) 2 2
ETX (End of text) 3 3
EOT (End of transmission) 4 4
ENQ (Enquiry) 5 5
ACK (Acknowledge) 6 6
BEL (Bell) 7 7
BS (Backspace)
TAB (Tabulation 8 8
horizontale)
LF (Line Feed, saut de 9 9
ligne)
VT (Vertical tabulation, 10 0A
tabulation verticale) 11 0B
FF
CR (Form feed)
(Carriage return, 12 0C
retour à la ligne) 13 0D
SO (Shift out) 14 0E
SI (Shift in) 15 0F
DLE (Data link escape) 16 10
DC1 (Device control 1) 17 11
DC2 (Device control 2) 18 12
DC3 (Device control 3) 19 13
DC4 (Device
NAK (Negative control 4) 20 14
acknowledgement)
ETB (End of transmission 21 15
SYN (Synchronous
block, fin de bloc deidle) 22 16
transmission) 23 17
CAN(End
EM (Cancel, annulation)
of medium, fin du 24 18
médium)
SUB (Substitute, 25 19
substitut)
ESC (Escape, caractère 26 1A
d'échappement)
FS (File separator, 27 1B
séparateur
GS de fichier)
(Group separator,
RS (Record separator, 28 1C
séparateur
US de groupe)
(Unit separator, 29 1D
d'enregistrement)
séparateur 30 1E
d'enregistrement) 31 1F
SP (Space, espace) 32 20
! 33 21
" 34 22
# 35 23
$ 36 24
% 37 25
& 38 26
' 39 27
( 40 28
) 41 29
* 42 2A
+ 43 2B
, 44 2C
- 45 2D
. 46 2E
/ 47 2F
0 48 30
1 49 31
2 50 32
3 51 33
4 52 34
5 53 35
6 54 36
7 55 37
8 56 38
9 57 39
: 58 3A
; 59 3B
< 60 3C
= 61 3D
> 62 3E
? 63 3F
@ 64 40
A 65 41
B 66 42
C 67 43
D 68 44
E 69 45
F 70 46
G 71 47
H 72 48
I 73 49
J 74 4A
K 75 4B
L 76 4C
M 77 4D
N 78 4E
O 79 4F
P 80 50
Q 81 51
R 82 52
S 83 53
T 84 54
U 85 55
V 86 56
W 87 57
X 88 58
Y 89 59
Z 90 5A
[ 91 5B
\ 92 5C
] 93 5D
^ 94 5E
_ 95 5F
` 96 60
a 97 61
b 98 62
c 99 63
d 100 64
e 101 65
f 102 66
g 103 67
h 104 68
i 105 69
j 106 6A
k 107 6B
l 108 6C
m 109 6D
n 110 6E
o 111 6F
p 112 70
q 113 71
r 114 72
s 115 73
t 116 74
u 117 75
v 118 76
w 119 77
x 120 78
y 121 79
z 122 7A
{ 123 7B
| 124 7C
} 125 7D
~ 126 7E
Touche de suppression 127 7F
Sommaire du cours de logique combinatoire et algèbre de Boole
sur le site : http://www.positron-libre.com/

exhaustif
Algèbre de Boole et logique combinatoire
Généralités et définitions
Table de vérité, forme canonique, chronogramme
Fonctions OUI, NON, OU, ET
Fonctions IMPLICATION, INHIBITION
Fonctions NOR, NAND, fonction UNIVERSELLE, OU exclusif, ET exclussif

Propriétés
Lois de DE MORGAN
Propriétés de l'algèbre de Boole

Tableau de KARNAUGH
Définition du Tableau de Karnaugh
Écriture dans un tableau de Karnaugh
Lecture d'un tableau de Karnaugh et cas particulier

Méthode de résolution
Résolution d'un problème en logique combinatoire

Résumé
Tableau résumé Fonction Logique

Numération
Sommaire
Principe des systèmes de numération
Changement de base
Représentation des nombres à virgule flottante
Représentation des nombres à virgule fixe
Représentation des nombres signés

Codes et trancodage

Principe du codage
Les codes décimaux
Le code binaire naturel
Convertisseur BCD décimal
Convertisseur décimal BCD
Code 2421
Code plus 3
Code AIKEN
Code GRAY
Code complément à 9
Codage des caractères
Code ASCII
Code EBCDIC
apprécie
Code 2421
Parmi la variété de codes possibles, le code 2421 est également utilisé. Dans ce code, les poids affectés aux variables b
ne sont plus 8, 4, 2, 1 mais 2, 4, 2, 1. Le tableau suivant nous présente une comparaison entre le code 2421 et le 8421.

Dans ce code il existe deux manières de représenter certain chiffres, ainsi :

7 peut s'écrire :
0111 ou 1101

ainsi que 5 :
0101 ou 1011

La première représentation est étudiée dans cette page, la seconde est connue sous le nom de code 2421 AIKEN.
Nous pouvons remarquer également que le 9 en décimal est représenté par quatre bits à 1 dans le code 2421. Ce qui ve

Convertisseur 2421 décimal

Le code 2421 n'a pas l'objet d'une version "circuit intégré". Le circuit pourra être câblé en technologie discrète avec des
Mais l'intégration "en dur" d'un tel convertisseur est possible avec un CPLD ou FPGA. Nous pouvons décrire notre circui
La description textuelle par un langage de description de type VHDL est aussi une possibilité non négligea
Nous pouvons alors disposer d'un convertisseur de code 2421 vers décimal sous la forme d'une brique log

La totalité des 16 combinaisons à 4 bits n'étant pas utilisées il est possible de faire des économies de plus

Le schéma de ce convertisseur de code est le suivant :


Convertisseur 8421 2421

Si nous observons les codes 8421 et 2421 représentés sur notre premier tableau nous nous apercevons q
Les positions A et A' ainsi que D et D' sont égales dans les deux cas. Les autres positions ne se distinguen

Le circuit logique correspondant est représenté sur la figure suivante :

Convertisseur 2421 8421


Les éaquations logiques pour la conversion du code 2421 en 8421 s'expriment de la même manière :

Avec l'ajout des deux termes B' D' et C' D', il est possible de compléter les équations afin d'utiliser un minimum de comp

On notera que le code 2421 est un code pondéré.

Voir la suite : Le code plus 3


les poids affectés aux variables binaires
on entre le code 2421 et le 8421.

e nom de code 2421 AIKEN.


à 1 dans le code 2421. Ce qui veut dire que l'on ne peut pas représenter une valeur supérieure à 9 avec 4 bits en 2421 contrairement

en technologie discrète avec des fonctions ET et INVERSE.


Nous pouvons décrire notre circuit intégré graphiquement avec un outils traditionnel de CAO permettant de connecter ensemble les por
i une possibilité non négligeable et d'actualité.
ous la forme d'une brique logiciel réutilisable à l'infini.

e faire des économies de plusieurs fonctions logiques. Les équations logiques du convertisseur de code 2421 décimal se
bleau nous nous apercevons qu'il existe entre eux une importante similitude.
res positions ne se distinguent que par les nombres 8 et 9. La converssion du code 8421 en code 2421 se traduit alors
nt de la même manière :

in d'utiliser un minimum de composant (fonction OU EXCLUSIF).


avec 4 bits en 2421 contrairement au code 8421 qui peut représenté 16 valeurs différentes.

tant de connecter ensemble les portes élémentaires nécessaires.

tisseur de code 2421 décimal seront les suivantes :


1 en code 2421 se traduit alors par les équivalences logiques ci-dessous :
Code plus 3
Le code plus 3 ou code excess 3 appelé aussi code STIBIZ du nom de son inventeur est un code non pondéré

Le code plus 3 est souvent utilisé sur des unités arithmétiques qui calculent en système numérique décimal plutôt qu'en sys
Ce code permet d'effectuer les opérations arithmétiques d'addition et de soustraction avec un minimum de fo
La complexité du code plus 3 pour d'autre applications nous dictera d'utiliser un transcodeur à l'entrée et à la sortie de l'unité
Le tableau suivant nous présente une comparaison entre le code 8421 et le code plus 3.

Convertisseur 8421 code plus 3

Le code plus 3 utilise les combinaisons de quatre chiffres du binaire pur compris entre les nombres décimaux
Chaque nombre s'obtient en ajoutant 3 à chaque chiffre du nombre décimal et en le codant en BCD 8421.
Dans ce système n'apparaissent pas les combinaisons 0000 et 1111. De plus ce code est auto complémentair
Exemple : le complément de 7 à 9 est 2
7 = 1010
2 = 0101.

En étudiant la table de vérité, nous allons obtenir les fonctions logiques pour le transcodage BCD 8421 vers le

Equation de A' :

Utilisons un tableau de Karnaugh et reportons les valeurs de A' pour les 9 combinaisons définies dans la table de vérité.
Aux combinaisons non définies nous ferons correspondre le symbole
.

On obtient ici l'expression la plus simple de A' en transformant les


des cases 6, 9, 10 en "1" et en transformant le
des cases 7, 11, 12 en "0". Le regroupement des cases 1, 2, 5, 6, 9, 10, 13 et 14 nous permet donc d'établir
A' = A.

Equation de B' :

Reportons les valeurs de B' dans un tableau de Karnaugh pour les 9 combinaisons valide de la table de vérité

On obtient l'expression simplifiée suivante :


B' = AB + A B
B' =

Equation de C' :

On obtient l'expression simplifiée suivante :


C' = AC + BC + C A B + AD
C' = C (A + B) + C (A + B) + AD
C' = [C (A + B)] + AD

Equation de D' :

D' = AC + BC + D
D' = C (A + B) + D.

Schéma du circuit convertisseur

En reprenant les équations logiques ci-dessus, nous sommes en mesure d'établir un logigramme pour construire le convertis
Nous avons vu que pour obtenir un nombre en code plus 3 on ajoute le nombre binaire 3 (0011) à ce nombre
Exemple :

Il est donc possible d'effectuer la conversion en sens inverse en soustrayant le nombre binaire 3 ou bien en a
Un additionneur complet à 4 bits du type SN74HC283 est tout à fait capable de réaliser ce genre d'opération.
Le schéma suivant représente le circuit pour les deux sens de conversion.

Voir la suite : Le code Aiken


venteur est un code non pondéré issu du code 8421 auquel on ajoute systématiquement 3 à chaque chiffre.

e numérique décimal plutôt qu'en système binaire.


straction avec un minimum de fonctions logiques.
odeur à l'entrée et à la sortie de l'unité arithmétique lorsque celle-ci est utilisée dans uns un système logique complexe.
code plus 3.

pris entre les nombres décimaux 3 et 12.


dant en BCD 8421.
s ce code est auto complémentaire.

le transcodage BCD 8421 vers le code plus 3.

s définies dans la table de vérité.

et 14 nous permet donc d'établir l'équation suivante :


aisons valide de la table de vérité.

gigramme pour construire le convertisseur en technologie discrète. Le circuit est complexe à cause du nombre de fonctions logiques différe
bre binaire 3 (0011) à ce nombre correspondant en code 8421.

le nombre binaire 3 ou bien en ajoutant le nombre binaire 13 (1101).


de réaliser ce genre d'opération.
t 3 à chaque chiffre.

logique complexe.
du nombre de fonctions logiques différentes mises en oeuvres.
Code Aiken
Le code Aiken étant fréquemment utilisé dans les automatismes industriels, il est par conséquent nécessaire de le conve

En étudiant le code 2421 nous avions observé qu'il était possible de représenter certains chiffres de deux
Par exemple le 7 peut s'écrire 0111 ou 1101.
C'est la deuxième représentation qui est en code Aiken.
C'est un code 2421 pondéré. Pour les chiffres décimaux 0, 1, 2, 3, 4, il correspond avec le code BCD 8421, tandis que p

Le code aiken 2421 à la propriété d'être autocomplémentaire.


Nous obtenons le complément à 9 des nombres codifiés en remplaçant les 0 par des 1 et les 1 par des 0

Exemple :
le complément à 9 de 6 est égale à 3.

6 = 1100
3 = 0011.

L'écriture du chiffre 3 est complémentaire du chiffre 6 ; les 0 du chiffre 6 deviennent des 1 pour le chiffre 3 et vice versa.

Nous remarquons également que la dernière variable pondérée 2 dans ce code est égale à 0 si le nombre

Convertisseur code 8421 vers code Aiken

La conversion du code 8421 en code Aiken s'effectue en étudiant la table de vérité ci-dessus. Nous obtenons les équatio

A' = A
B' = D + BC + ABC
C' = D + AC + BC = D + C(A + B)
D' = D + AC + BC = D + C(A + B)

Les logigrammes suivants révèlent les schémas des circuits électroniques possibles pour le trancodeur 8421 Aiken.
Le premier schéma est établie avec C' = D + C(A + B)
et D' = D + C(A + B)
Dans la version ci-dessous les équations ne sont pas simplifiées (pas de mise en facteur de C) mais le tran

Transcodeur 8421 AIKEN et AIKEN 8421 avec un additionneur

Une autre solution découle du fait que l'on obtient les valeurs B' et C' en ajoutant le nombre 6 (0110) au n
Cette fonction sera réalisée simplement avec un additionneur complet du type SN74HC283 à 4 bits.

Avec un circuit moins complexe il est possible d'effectuer le transcodage du code Aiken en code 8421. Pour D' = 1 on so

Voir la suite : Le code Gray


onséquent nécessaire de le convertir aux interfaces en code 8421 et inversement.

nter certains chiffres de deux manières.

c le code BCD 8421, tandis que pour les nombres décimaux 5, 6, 7, 8, 9, il concorde avec les nombres 11, 12, 13, 14, 15 du code binai

et les 1 par des 0

s 1 pour le chiffre 3 et vice versa.

de est égale à 0 si le nombre est inférieur à 5 et égale à 1 quand le nombre est supérieur à 5.

essus. Nous obtenons les équations suivantes :

ur le trancodeur 8421 Aiken.


e en facteur de C) mais le trancodeur paraît plus simple à réaliser.

utant le nombre 6 (0110) au nombre correspondant dans le code 8421, lorsque D' = 1.
pe SN74HC283 à 4 bits.

n en code 8421. Pour D' = 1 on soustrait du nombre en code Aiken le nombre 6 (0110) ou bien on lui ajoute le complément à 16 soit 10
res 11, 12, 13, 14, 15 du code binaire pur.
i ajoute le complément à 16 soit 10 (1010), afin d'obtenir le nombre correspondant en code BCD 8421.
Code Gray
Le code Gray est fréquemment utilisé dans les capteurs angulaires ou de positionnement, mais aussi lorsque l'on désire une
Le code Gray sert également dans les tableaux de Karnaugh utilisés lors de la conception de circuits logiques.

Code binaire réfléchi ou code Gray

Le code Gray est un code construit de telle façon qu'à partir du chiffre 0 chaque nombre consécutif diffère du précédent imm
En l'exprimant autrement nous pouvons également dire que l'on change un seul bit à la fois quand un nombre est augmenté
De plus, on opère de telle manière que le digit de transformation soit d'un poids faible. Si une erreur survient lors d'une trans
à un autre elle est ainsi minimisée.

Construction du code Gray

Commençons par un exemple simple et établissons le code gray pour les 4 premiers chiffres décimaux 0 à 3.
Deux bits suffisent et les combinaison en binaire BCD sont les suivantes :

Nous remarquons que pour aller du nombre (1)10 à (2)10 nous changeons les deux bits à la fois pour passer de (01)

En code Gray, pour passer d'une ligne à la suivante, on inverse un seul bit de telle manière qu'il soit le bit
Ce qui donne les combinaisons suivantes :

Construction par la méthode du code binaire réfléchi ou code REFLEX

Le nom code binaire réfléchi vient d'une autre méthode de construction. Elle est plus pratique ou plus visue

On établi un code de départ: zéro est codé 0 et un est codé 1 (1).


Puis, à chaque fois qu'on a besoin d'un bit supplémentaire (2),
on symétrise les nombres déjà obtenus (comme une réflexion dans un miroir)(3)
et on rajoute un 1 au début des nouveaux nombres (4) et un zéro sur les anciens.

Ci-dessous nous recommençons l'expérience pour les nombres (0)10 à (7)10.


Règle de formation du code Gray à partir du binaire pur

Soit un nombre N en binaire pur, pour obtenir son équivalent n en binaire réfléchi, il suffit d'effectuer l'opération suivante :

Exemple :
soit N = 0111,
nous avons 2N = 1110 (pour multiplier par 2 on effectue un décalage de la droite vers la gauche).
On effectue maintenant l'opération OU Exclusif de N et 2N :

Puis nous divisons par 2 le résultat soit 1001 / 2 = 0100 (pour diviser par 2 on effectue un décalage de la gauche vers la dro
Nous avons alors :
pour N = 0111 en binaire pur correspond n = 0100 en code Gray.

Convertisseur de code binaire en code gray

La construction du code Gray pour les nombres de 0 à 15 est représentée par le tableau suivant :
Etablissons un diagramme de Karnaugh pour G1, G2, G3, G4 à partir de B1, B2, B3 et B4.

Nous pouvons maintenant établir les équations de G1 à G4 :

Nous pouvons remarquer que le passage du binaire pur au code Gray se fait en effectuant une opération OU Exclusif.
Le circuit du transcodeur est très simple. En désignant par Bn (B1 = LSB) un bit quelconque en code binaire pur et pa

A partir de cette formule, il est tout à fait possible de concevoir sans difficulté le circuit représenté ci-dessous.

Convertisseur de code gray en code binaire

Pour la conversion du code Gray en code binaire la relation suivante s'apparente à l'équation vue pour le convertisseur inve

Là encore les fonctions OU Exclusif sont de mise pour la réalisation du circuit de transcodage.
Les circuit représentés ci-dessus peuvent être étendus au nombre de bit nécessaires ou souhaités.

Le code Gray en pratique

Ce code est surtout utilisé pour des capteurs de positions absolue , par exemple sur des règles optiques ou un codeur angu
En effet, si on utilise le code binaire pur, pendant le passage de la position cinq (101)2 à six (110)2

On remarquera que le passage du maximum (quinze sur 4 bits) à zéro se fait également en ne modifiant
Ceci permet par exemple d'encoder un angle, comme la direction d'une girouette ou la position d'un axe sur une machine au

Pour la construction d'un codeur angulaire solidaire d'un axe il faut de préférence établir des ensembles de position angulair
Pour une girouette à huit position (0=Nord, 1=Nord-Est, 2=Est, ... 7=Nord-Ouest) le passage de Nord-Ouest à Nord se fait é

Exemple de roue codeuse Gray :

Nous avons 16 positions angulaires détectées en 4 bits. La lecture s'effectue par 4 cellules photosensibles.

Voir la suite : Le code complément à 9


ent, mais aussi lorsque l'on désire une progression numérique binaire sans parasite transitoire.
ion de circuits logiques.

e consécutif diffère du précédent immédiat d'un seul digit.


fois quand un nombre est augmenté d'une unité.
Si une erreur survient lors d'une transformation d'un nombre

hiffres décimaux 0 à 3.

bits à la fois pour passer de (01)2 à (10)2.

manière qu'il soit le bit le plus à droite possible conduisant à un nouveau nombre.

e est plus pratique ou plus visuelle quand au choix du bit à inverser lors du passage d'un nombre au suivant.
fit d'effectuer l'opération suivante :

un décalage de la gauche vers la droite).


uant une opération OU Exclusif.
lconque en code binaire pur et par Gn le bit recherché en code Gray, nous avons alors :

eprésenté ci-dessous.

uation vue pour le convertisseur inverse.


u souhaités.

s règles optiques ou un codeur angulaire solidaire d'un arbre.


à six (110)2 (changement simultané de 2 bits) il y a un risque de passage transitoire par quatre (100)

ait également en ne modifiant qu'un seul bit.


position d'un axe sur une machine automatique ou un robot.

r des ensembles de position angulaire multiples d'une puissance de 2 (2, 4, 8, 16, 32...) si l'on veut que le changement du nombre le plus é
ssage de Nord-Ouest à Nord se fait également sans problème en ne changeant qu'un seul bit.

ules photosensibles.
n nombre au suivant.
e par quatre (100)2 ou sept (111)2, ce que le code Gray évite.

que le changement du nombre le plus élevé du groupe vers le nombre le plus faible se fasse avec un seul bit.