Electronique numérique, Electronics


Electronique numériqueCH1 : Systèmes de numération et  de codes

Introduction en électronique numérique,

L'utilisation de systèmes digitaux et numériques est en grande utilisation, large application,...Il n'y a qu'à regarder autour de nous, et dans toutes les applications,

 L’explosion de la microélectronique et l’architecture complexe de systèmes.

 Un nombre de plus en plus grand de machines (caméra numérique, voiture, machine à laver, etc.) utilisent de l'électronique numérique.
Nous trouvions, jusqu'à l'apparition du microprocesseur, deux grands secteurs dans le domaine des systèmes digitaux.
Cette division a subsisté chez les fabricants d'ordinateurs où nous trouvons encore:

 • le département matériel (hardware)
 • le département logiciel ou programmation (software)

 L'apparition du microprocesseur a eu pour effet de diminuer l'importance du matériel et de provoquer un déplacement des moyens de traitement des circuits  et des signaux aux applications complexes.

 Ce qui fait que nous nous trouvons de plus en plus face à des programmes et aux applications électroniques  qui cernent la machine au plus près.

Cela oblige les programmeurs à connaître de mieux en mieux le matériel  (hardware, microcontrôleurs,….) pour mieux "coller" ou développer  de l'application avec le programme.

 Après avoir réduit le marché de la logique câblée, le microprocesseur est parti à la conquête de l'électronique basse fréquence.
 Il a fait son entrée dans un nombre important de secteurs (jeux, télécommunications, automatique, etc.).

L'augmentation des possibilités d'intégration (nombre de transistors par mm2 , avec technologie 0.35 µm2 micron mètre) conduit à une nouvelle évolution.

Les circuits logiques programmables (CPLD, FPGA,…) deviennent abordables et possibles.
 La programmation des petites applications se trouve remplacée par de la logique câblée dans ces circuits programmables et complexes.

Cette évolution permet d'envisager une augmentation de la vitesse de traitement des fonctions.

 Jusqu'à présent, l'apprentissage de la logique se faisait à travers la dé- couverte des fonctions logiques élémentaires contenues dans les circuits intégrés des familles 74xxx, dont on peut voir quelques types dans figure 1,

Les expérimentations se limitaient aux fonctions proposées par les fabricants de ces circuits.
La conception de fonctions logiques regroupant plusieurs de ces circuits nécessitait un câblage conséquent, et la réalisation d'un circuit imprimé de grande surface


Fig-1


Les expérimentations se limitaient aux fonctions proposées par les fabricants de ces circuits.

La conception de fonctions logiques regroupant plusieurs de ces circuits électroniques nécessitait un câblage conséquent, le développement et la réalisation d'un circuit imprimé de grande surface.

L'apparition des circuits logiques programmables de type PLD (Programmable Logic Device), CPLD (Complexe PLD, fig 2)

Fig-2


FPGA (Field Programmable Gate Array, figure 1- 2, page 3)
 a permis de s'affranchir de cette limitation. En effet, l'utilisateur peut créer, dans ces circuits, toutes les fonctions logiques qu'il souhaite avec comme seules limitations, la place disponible dans le circuit choisi et/ou la vitesse de fonctionnement de celui-ci.

La taille actuelle de ces circuits permet l’intégration d’un système à processeur complet.

En anglais, l’abréviation est SoPC (SOC System on chip programmable).
Les outils de développement mis à la disposition des utilisateurs doivent donc permettre de passer de la description du comportement d'une fonction logique à son câblage dans le circuit et cela de la manière la plus simple possible.

Au début des années 90, la description du comportement des fonctions logiques était faite par l'utilisation de langage dit de "description de matériel".

Parmi ceux-ci, on peut citer:
La première génération de ces langages permettaient des descriptions au niveau logique.
Il a existé deux langages:

• Le CUPL utilisé dans les années 1980 à 1994.

 • Le langage ABEL (Advanced Boolean Equation Language) utilisé dans les années 1990 à 1998 Ce langage a été créé par la société DATA I/O et utilisé ou imité par quasiment tous les concepteurs d'outils de développement pour ce type de circuit (XABEL pour XILINX, AHDL pour ALTERA, PLD pour ORCAD, XPLA pour PHILIPS, etc..)
Ce langage n'est plus utilisé actuellement.

 L'augmentation de la complexité des circuits programmable a nécessité de disposer de langage permettant des descriptions de plus haut niveau (comportementale).

Deux langages sont apparus au début des années 1990 pour la conception de circuits ASIC (circuit intégré spécialisé).
 Ils se sont imposées dés le milieu 1995 pour les circuits logiques programmables. Il s'agit:

• Le langage VHDL (Very High Speed Integrated Circuit, Hardware Description Language) qui a été créé pour le développement de circuits intégrés logiques complexes.
 Il doit son succès, essentiellement, à sa standardisation sous la référence IEEE-1076, qui a permis d'en faire un langage unique pour la description, la modélisation, la simulation, la synthèse et la documentation.

 • Le langage VERILOG qui est proche du langage VHDL et qui est surtout utilisé aux Etats-Unis.

• Le langage et Script Spice électrique pour le écriture et connexion électrique sur Orcad et Cadence.

• Le langage Bython, Script Shell,…

• Le développement aujourd’hui sur les microcontrôleurs (MPLAB par Langage C,…) aussi sur les microprocesseurs ARM7 et ARM 9
Par langage C (soit sur   Code blocks ou sur Visual C),…

Fig-3

........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................




Conversion Binaire – Décimal
Exemple 1 :
1             1               0              1               1                       (binaire)
1·24 + 1·23 + 0·22 + 1·21 + 1·20
16  + 8   + 0   + 2   + 1 = 27 10 (décimal)


Exemple2:
1      1     1    0      0
1.24 + 1.23 + 1.22 + 0.21 + 0.20    (binaire)
16   +  8    + 4      + 0   + 0  = 28  (décimal)

Ex3 :
1              0              1               1             0               1             0             1                         binaire
1·27 + 0·26 + 1·25 + 1·24 + 0·23 + 1·22 + 0·21 + 1·20
128 + 0    + 32  + 16  + 0   + 4   + 0   + 1 = 181   décimal


Ex4 :
1        0        0         1
 1.2+ 0.2+ 0.21 + 2.20    
8         + 0      +   0   +   2 =  10


Conversion Décimal – Binaire

1                5                 8                                                                   décimal
1·102 + 5·101 + 8·100                             num. position

en décimal
0001
·(1010)10 + 0101·(1010)01 + 1000·(1010)00 =

Système de numération Octal et hexadécimal.   

266/8 = 33 reste 2
33/8 = 4 reste 1
4/8 = 0 reste 4
26610
= 4128

Addition binaire :
0 + 0 = 0
1 + 0 = 1
1 + 1 = 10 = 0 +
report de 1 sur le rang de gauche
1 + 1 + 1 = 11 = 1 +
report de 1 sur le rang de gauche
………………………………………………………………………….

Portes logiques et algèbre booléenne

Tous les circuits numériques fonctionnent en mode binaire, c'est-à-dire un mode dans lequel les signaux ne peuvent prendre que deux valeurs, soit ’0’ ou soit ’1’.

 Les valeurs ’0’ et ’1’ correspondent à des plages de tensions définies à l'avance.

Cette caractéristique des circuits logiques nous permet de recourir à l'algèbre de Boole pour l'analyse et la conception de systèmes numériques.
Dans ce chapitre, nous étudierons les portes logiques, qui constituent les blocs élémentaires des circuits logiques et nous verrons comment il est possible de décrire leur fonctionnement grâce à l'algèbre booléenne.

 Aussi, nous vous apprendrons comment on réussit à construire des circuits logiques en combinant les portes et comment l'algèbre de Boole parvient à décrire et à analyser ces derniers, ces résulté.

L'algèbre booléenne se distingue principalement de l'algèbre ordinaire par des constantes et des variables qui ne peuvent prendre que les deux valeurs possibles 0 et 1.

Nous traduirons cela en indiquant que la lampe est soit à ’1’ (pour allumée) ou soit à ’0’ (pour éteinte). Nous pouvons faire de même avec un interrupteur qui est soit ouvert (’0’) ou soit fermé (’1’).
 La fonction logique OU (or) Nous utiliserons le symbole (#) Cette fonction est très souvent représentée par le symbole (+)
 La fonction logique ET (and) Nous utiliserons le symbole (.)
 La fonction logique d’inversion NON (not) Nous utiliserons le symbole ( ¯ )
……………………………………………………………………….....

Une porte OU à deux entrées est un circuit dont la sortie est active si l’une ou l’autre des entrées est actives. La figure 4  nous fait voir le symbole utilisé pour représenter une porte OU à deux entrées. De manière générale, la fonction de sortie d’une porte OU à n entrées est active (niveau 1) si une seule entrée est active (niveau 1).

La fonction de sortie est inactive (niveau 0) si toutes les entrées sont inactives (niveau 0).
Dans de nombreuses littératures, l’opérateur OU et représenté par le symbole de l’addition.

X = A + B 

Nous n’utiliserons pas cette symbolique afin de ne pas confondre l’opé- rateur logique OU avec l’opérateur arithmétique d’addition (+). Dans la suite de ce manuel nous utiliserons le symbole # ou or pour l’opérateur logique OU.


Fig - 4


Soit deux variables logiques indépendantes, A et B. Quand on combine A et B au moyen de la fonction logique ET, le résultat X s'exprime symboliquement par l’expression suivante :

X = A · B Dans cette expression, le signe · signifie l'opération booléenne ET, dont les règles d'opération sont données dans la table de vérité de la figure 5.
Fig-5

L'opération NON, contrairement aux opérations ET et OU, ne concerne qu'une variable d'entrée.

Par exemple, si la variable A est soumise à une opération NON, le résultat 

X est donné par l'expression: où le trait de sur alignement représente l'opération NON.

L'opération NON porte également le nom d'inversion ou de complémentation. On trouve un autre signe pour indiquer une inversion: il s'agit de point d’exclamation (!). Donc :

                                                       _
                                        !A = A

Le circuit INVERSEUR (NOT)
 On peut voir à la figure 6 le symbole d'un circuit NON, appelé plus couramment inverseur. Un tel circuit n'a toujours qu'une entrée, et sa sortie prend le niveau logique opposé du niveau logique de l'entrée.

L'opération NON, contrairement aux opérations ET et OU, ne concerne qu'une variable d'entrée. Par exemple, si la variable A est soumise à une opération NON, le résultat X est donné par l'expression:

                                                       _
                                         X  = A

Fig - 6


La porte OU-exclusif (XOR)
La sortie d'une porte OU-exclusif est au niveau haut seulement les deux entrées sont à des niveaux logiques différents. Une porte O clusif n'a toujours que deux entrées.

On peut dire par là qu'il n'existe portes OU-exclusif à trois ou quatre entrées.

Ces deux entrées sont nées pour que.
 Cette expression ainsi:


                                          X = A B

Fig-7


De manière générale, la fonction de sortie d’une porte OU-exclusif indique la différence entre les deux signaux d’entrées.
 La sortie est active (niveau 1) si l’état logique des entrées est différent.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Tout circuit logique, quelle que soit sa complexité, peut être décrit au moyen des opérations booléennes déjà décrites parce que la porte ET, la porte OU et la porte NON sont les circuits constitutifs élémentaires des systèmes numériques.


Fig - 8
X <= (A and B) or C,             (Script et écriture en VHDL) 
...........................................................................................................
Fig-9

X <= (A and B) or C,             (Script et écriture en VHDL)
Z <= (X and D) or E,             (Script et écriture en VHDL)
Y <= X and D,                       (Script et écriture en VHDL)

………………………………………………


Fig- 10

 X <=  not  A or B ;                (Script et écriture en VHDL)
         X <=  not (A or B) ;              (Script et écriture en VHDL)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Fig-11

Y <= (A.C) or ( B . not C) or (not A. B. C) ;             
(Script et écriture en VHDL)

Explication :
 en VHDL :
Y <= (A and C) or (B and C) ;  en VHDL :
Y  = AC # BC # ABC


Exemple
Y  =AC # BC
Y = (AC)
(BC)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

THÉORÈMES DE DE MORGAN

Deux des plus importants théorèmes de l'algèbre booléenne nous ont été légués par le mathématicien De Morgan.

Les théorèmes de De Morgan se révèlent d'une grande utilité pour simplifier des expressions comprenant des sommes ou des produits de variables complémentés. Voici ces deux théorèmes:
  _____     _    _
( X # Y) = X . Y
  _____    _     _
( X . Y) = X #  Y
…………………………………………………………………………+++++++++++++++++++++++++++++++++++++

Simplification algébrique

a.     Applications successives des théorèmes de De Morgan en vue d'obtenir une somme de produit b. Trouver des variables communes pour la mise en facteur de ces dernière.
b.    Trouver des variables communes pour la mise en facteur de ces dernières.




Fig- 12

………………………………………………………………………………………………
On voit qu'il y a trois combinaisons qui produisent une valeur 1 pour la sortie X.

 Les termes ET pour chacune de ces combinaisons figurent à droite de la table de vérité. Nous pouvons numéroter chaque ligne de la table de vérité. Nous parlerons de l’équation d’un minterme.

       _    _     _
X = CBA  # CBA # CBA


 L'expression complète s'obtient en effectuant des OU logique de ces trois mintermes, ce qui nous donne : 

Nous pouvons écrire cette expression logique sous une forme compacte en indiquant uniquement le numéro des mintermes à 1, soit :

X = Σ 2, 3, 7

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


On a parlé et j'ai discuté avec vous, les méthodes de karnough dans les autres articles concernant les circuits électroniques.

…………………………………………………….
Fig-13


Nous allons donner la description en VHDL synthétisable du décodeur présenté sur la figure

library IEEE;
use IEEE.Std_Logic_1164.all;

entity Dec_2in4 is
port(Sel_i : in Std_Logic_vector(1 downto 0);

-- Entrees de selection
EN_i : in Std_Logic ;
-- Entree de validation
Y_o : out Std_Logic_Vector(3 downto 0)
-- sorties
);
end Dec_2in4 ;

architecture Flot_Dec of Dec_2in4 is
signal Y_s : Std_Logic_Vector(3 downto 0) ;
begin

-- determination de la valeur de sortie
with Sel_i select
Y_s <= "0001" when "00",
"0010" when "01",
"0100" when "10",
"1000" when "11",
"XXXX" when others ;-- simulation
-- affectation de la valeur de sortie
Y_o <= Y_s when (EN_i = '1') else
"0000";

end Flot_Dec;

++++++++++++++++++++++++++++++++++++++++++++++++

                                 
 Fig-14, multiplexeur 4 in 1 

library IEEE;
use IEEE.Std_Logic_1164.all;

entity Mux_4in1 is
port(Sel_i : in Std_Logic_vector(1 downto 0);
-- Entrees de selection
EN_i : in Std_Logic ;
-- Entree de validation
D0_i, D1_i, D2_i, D3_i : in Std_Logic;
-- Entree de donnees
Y_o : out Std_Logic
-- sortie
);
end Mux_4in1 ;
architecture Flot_mux_mik of Mux_4in1 is

signal Y_s1 : Std_Logic ;

begin

-- determination de la valeur de sortie
with Sel_i select
Y_s1 <= D0_i when "00",
D1_i when "01",
D2_i when "10",
D3_i when "11",
'X' when others; -- simulation

-- affectation de la valeur de sortie
Y_o <= Y_s1 when (EN_i = '1') else
'0';
end Flot_mux_mik;
…………………………………………………………

Commentaires

Posts les plus consultés de ce blog

MATLAB and using matlab, utilisation de matlab, die arbiten für Matlab koncepten,

Modeling automatic systems using Matlab-simuliunk level 24

Développement informatique HTML