\documentclass[a4paper,french,12pt]{article}

\title{Logique Programmable}
\author{Catherine MARECHAL --- \href{mailto:catherine.marechal@efrei.fr}{\nolinkurl{catherine.marechal@efrei.fr}}}
\date{Dernière compilation~: \today{} à \currenttime}

\usepackage{../cours}

\begin{document}

\maketitle
\tableofcontents

\section{Prérequis}

    \subsection{Logique booléenne}

        Un composant discret n'a pas plus de 4 portes en alimentation continue.
        7400 (gamme commerciale) ou 5400 (gamme militaire)
        2 entrées et 1 sortie (3 broches) * 4 portes = 12 broches

        Plusieurs technologies sont possibles~:

        \begin{itemize}

            \item chimique

            \item hydrraulique

            \item pneumatique

            \item mécanique

            \item électromécanique

            \item éctrique

            \item électronique (ce qui nous intéresse)

        \end{itemize}

        On détermine un état bas et un état haut~:

        \begin{itemize}

            \item état bas < tension VIL (input low)

            \item état haut > tension VIH (input high)

        \end{itemize}

        Quand on passe de l'un à l'autre, c'est pour une très courte période.

        Pour les fonctions de base, voir \url{http://www.futurlec.com/IC74LS00Series.shtml}

        Avec \texttt{AND} et \texttt{OR} on peut fabriquer toutes les briques possibles.

        \subsubsection{Suiveur}

            sortie = entrée ($S = E$)

            Table de vérité~:

            \begin{tabular}{c|c}
                E & S \\
                \midrule
                L & L \\
                H & H \\
            \end{tabular}

        \subsubsection{Inverseur}

            La sortie est l'inverse de l'entrée ($S = \overline{E}$).

            Table de vérité~:

            \begin{tabular}{c|c}
                E & S \\
                \midrule
                L & H \\
                H & L \\
            \end{tabular}

        \subsubsection{OU logique (\texttt{OR})}

            pour que S soit vrai il suffit qu'une seule entrée soit vraie
            pour que S soit faux il faut que toutes les entrées soient fausses
            en notation booléenne, on associe le 0 à faux:
                + veut dire OU
                E1 = 0, E2 = 0 -> E1 + E2 = 0
                E1 = 0, E2 = 1 -> E1 + E2 = 1
                E1 = 1, E2 = 0 -> E1 + E2 = 1
            a + 0 = a
            a + 1 = 1
            a + a = a
            a + a barre = 1
    table de vérité: X Y | S
                     L L | L
                     L H | H
                     H L | H
                     H H | H
        H (high) = 1 = vrai
        L (low) = 0 = faux
ET logique (AND): inverse du OU: pour que S soit vrai il faut que toutes les entrées soient vraies
            en notation booléenne, le AND se note par un point médian
                E1 = 0, E2 = 0 -> E1 + E2 = 0
                E1 = 0, E2 = 1 -> E1 + E2 = 0
                E1 = 1, E2 = 0 -> E1 + E2 = 0
                E1 = 1, E2 = 1 -> E1 + E2 = 1
    table de vérité: X Y | S
                     L L | L
                     L H | L
                     H L | L
                     H H | H
XOR (OU exclusif): pour que S soit vrai il faut SOIT que E1 soit vrai SOIT que E2 soit vrai
            en notation booléenne, le XOR se note par un + dans un cercle
                E1 = 0, E2 = 0 -> E1 + E2 = 0
                E1 = 0, E2 = 1 -> E1 + E2 = 1
                E1 = 1, E2 = 0 -> E1 + E2 = 1
                E1 = 1, E2 = 1 -> E1 + E2 = 0
    table de vérité: X Y | S
                     L L | L
                     L H | H
                     H L | H
                     H H | L
    a XOR 0 = a
    a XOR 1 = a barre
    a XOR a = 0
    a XOR a barre = 1
NOR (non OU): on rajoute une barre sur le OU des entrées: pour que S soit vrai, il faut que E1 et E2 soient faux
    théorême de Morgan: (a+b)barre = a barre . b barre
                E1 = 0, E2 = 0 -> E1 + E2 = 1
                E1 = 0, E2 = 1 -> E1 + E2 = 0
                E1 = 1, E2 = 0 -> E1 + E2 = 0
                E1 = 1, E2 = 1 -> E1 + E2 = 0
    table de vérité: X Y | S
                     L L | H
                     L H | L
                     H L | L
                     H H | L
NAND (non ET): pour que S soit vrai il suffit qu'entrée soit fausse
    théorême de Morgan: (a.b)barre = a barre + b barre
                E1 = 0, E2 = 0 -> E1 + E2 = 1
                E1 = 0, E2 = 1 -> E1 + E2 = 1
                E1 = 1, E2 = 0 -> E1 + E2 = 1
                E1 = 1, E2 = 1 -> E1 + E2 = 0
    table de vérité: X Y | S
                     L L | H
                     L H | H
                     H L | H
                     H H | L
NO XOR (non OU exclusif): pour que S soit vrai il faut que les entrées soient identiques
                E1 = 0, E2 = 0 -> E1 + E2 = 1
                E1 = 0, E2 = 1 -> E1 + E2 = 0
                E1 = 1, E2 = 0 -> E1 + E2 = 0
                E1 = 1, E2 = 1 -> E1 + E2 = 1
    table de vérité: X Y | S
                     L L | H
                     L H | L
                     H L | L
                     H H | H

Il y a des temps de propagation. Ils peuvent être négligeables ou pas.
Ces temps de propagation vont limiter la fréquence d'utilisation.

le ET est prioritaire sur le OU

élément neutre      a.1 = a
                    a+0 = a
élément absorbant   a.0 = 0
                    a+1 = 1
idempotence         a.a = a
                    a+a = a
complément          a.a barre = 0
                    a+a barre = 1
commutativité       a.b = b.a
                    a+b = b+a
associativité       a.(b.c) = (a.b).c = a.b.c
                    a+(b+c) = (a+b)+c = a+b+c
distributivité      a.(b+c) = (a.b)+(a.c) = a.b + a.c
                    a+(b.c) = (a+b).(a+c)
théorême de Morgan  (a.b) barre = a barre + b barre
                    (a+b) barre = a barre . b barre
consensus           a.b+a barre . c + b.c = a.b + a barre . c

5. fonctions booléennes: on cherche à simplifier pour limiter le nombre de portes logiques utilisées
    Une fonction booléenne est une application de {0,1}n dans {0,1}.
    Elle peut être écrite par une table ou par un expression.
    x2 x1 x0 y
    0  0  0  0
    0  0  1  1
    0  1  0  0
    0  1  1  1
    1  0  0  0
    1  0  1  0
    1  1  0  1
    1  1  1  1
    par une expression: y = f(x2,x1,x0) = x2 . x1 + x2 barre . x0
soit f(x,y,z)
x barre . y     est un minterme
x . y . z barre est un minterme complet
x barre + y     est un maxterme
x + y + z barre est un maxterme complet

x y z   minterme associé                maxterme associé
0 0 0   x barre . y barre . z barre
        = 1
0 1 1   x barre . y . z
        = 0
1 0 1   x . y barre . z
        = 0
1 1 1   x . y . z

\end{document}
