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

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

            \item pneumatique

            \item mécanique

            \item électromécanique

            \item électrique

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

        En notation booléenne~:

        \begin{itemize}

            \item H (high) = 1 = vrai

            \item L (low) = 0 = faux

        \end{itemize}

        \subsubsection{Suiveur}

            \begin{multicols}{2}

                \includegraphics[width=0.2\linewidth]{./img/suiveur.png}

                La sortie est égale à l'entrée ($S = E$).

            \end{multicols}


            \begin{center}

                Table de vérité~:

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

            \end{center}

        \subsubsection{Inverseur}

            \begin{multicols}{2}

                \includegraphics[width=0.2\linewidth]{./img/inverseur.png}

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

            \end{multicols}

            \begin{center}

                Table de vérité~:

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

            \end{center}

        \subsubsection{OU logique --- \texttt{OR} ($+$)}

            \begin{multicols}{2}

                \includegraphics[width=0.2\linewidth]{./img/or.png}

                \columnbreak{}

                Pour que $S$ soit vrai il suffit qu'\emph{une seule} entrée soit vraie.

                Pour que $S$ soit faux il faut que \emph{toutes} les entrées soient fausses.

            \end{multicols}

            \begin{center}

                Tables de vérité~:

                \begin{multicols}{2}

                    \begin{tabular}{c|c|c}
                        $E_1$ & $E_2$ & $E_1 + E_2$ \\
                        \midrule
                        0  & 0  & 0 \\
                        0  & 1  & 1 \\
                        1  & 0  & 1 \\
                    \end{tabular}

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

                \end{multicols}

            \end{center}

            \begin{align*}
                a + 0 &= a \\
                a + 1 &= 1 \\
                a + a &= a \\
                a + \bar{a} &= 1 \\
            \end{align*}

        \subsubsection{ET logique --- \texttt{AND} ($\cdot$)}

            \begin{multicols}{2}

                \includegraphics[width=0.2\linewidth]{./img/and.png}

                C'est l'inverse du OU\@.
                Pour que $S$ soit vrai il faut que toutes les entrées soient vraies.

            \end{multicols}

            \begin{center}

                Tables de vérité~:

                \begin{multicols}{2}

                    \begin{tabular}{c|c|c}
                        $E_1$ & $E_2$ & $E_1 \cdot E_2$ \\
                        0 & 0 & 0 \\
                        0 & 1 & 0 \\
                        1 & 0 & 0 \\
                        1 & 1 & 1 \\
                    \end{tabular}

                    \columnbreak{}

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

                \end{multicols}

            \end{center}

        \subsubsection{OU exclusif --- \texttt{XOR} ($\oplus$)}

            \begin{multicols}{2}

                \includegraphics[width=0.2\linewidth]{./img/xor.png}

                Pour que $S$ soit vrai il faut \emph{soit} que $E_1$ soit vrai \emph{soit} que $E_2$ soit vrai.

            \end{multicols}

            \begin{center}

                Tables de vérité~:

                \begin{multicols}{2}

                    \begin{tabular}{c|c|c}
                        $E_1$ & $E_2$ & $E_1 \oplus E_2$ \\
                        \midrule
                        0 & 0 & 0 \\
                        0 & 1 & 1 \\
                        1 & 0 & 1 \\
                        1 & 1 & 0 \\
                    \end{tabular}

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

                \end{multicols}

            \end{center}

            \begin{align*}
                a \oplus 0 &= a \\
                a \oplus 1 &= \bar{a} \\
                a \oplus a &= 0 \\
                a \oplus \bar{a} &= 1 \\
            \end{align*}

        \subsubsection{Non OU --- \texttt{NOR} ($\overline{+}$)}

            \begin{multicols}{2}

                \includegraphics[width=0.2\linewidth]{./img/nor.png}

                Pour que $S$ soit vrai, il faut que $E_1$ et $E_2$ soient faux.

            \end{multicols}

            Théorême de Morgan~: $\overline{a + b} = \bar{a} \cdot \bar{b}$

            \begin{center}

                Tables de vérité~:

                \begin{multicols}{2}

                    \begin{tabular}{c|c|c}
                        $E_1$ & $E_2$ & $\overline{E_1 + E_2}$ \\
                        \midrule
                        0 & 0 & 1 \\
                        0 & 1 & 0 \\
                        1 & 0 & 0 \\
                        1 & 1 & 0 \\
                    \end{tabular}

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

                \end{multicols}

            \end{center}

        \subsubsection{Non ET --- \texttt{NAND} ($\overline{\cdot}$)}

            \begin{multicols}{2}

                \includegraphics[width=0.2\linewidth]{./img/nand.png}

                Pour que $S$ soit vrai il suffit qu'entrée soit fausse.

            \end{multicols}

            Théorême de Morgan~: $\overline{a \cdot b} = \bar{a} + \bar{b}$

            \begin{center}

                Tables de vérité~:

                \begin{multicols}{2}

                    \begin{tabular}{c|c|c}
                        $E_1$ & $E_2$ & $\overline{E_1 \cdot E_2}$ \\
                        \midrule
                        0 & 0 & 1 \\
                        0 & 1 & 1 \\
                        1 & 0 & 1 \\
                        1 & 1 & 0 \\
                    \end{tabular}

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

                \end{multicols}

            \end{center}

        \subsubsection{Non OU exclusif --- \texttt{NO XOR} ($\overline{\oplus}$)}

            \begin{multicols}{2}

                \includegraphics[width=0.2\linewidth]{./img/xnor.png}

                Pour que $S$ soit vrai il faut que les entrées soient identiques.

            \end{multicols}

            \begin{center}

                Tables de vérité~:

                \begin{multicols}{2}

                    \begin{tabular}{c|c|c}
                        $E_1$ & $E_2$ & $\overline{E_1 \oplus E_2}$ \\
                        \midrule
                        0 & 0 & 1 \\
                        0 & 1 & 0 \\
                        1 & 0 & 0 \\
                        1 & 1 & 1 \\
                    \end{tabular}

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

                \end{multicols}

            \end{center}

    \subsection{Algèbre booléenne}

        Le ET est prioritaire sur le OU\@.

        \begin{tabularx}{\linewidth}{XX}
            \toprule
            \multirow{2}{*}{élément neutre}       & $a \cdot 1 = a$ \\
                                                  & $a + 0 = a$ \\
            \midrule
            \multirow{2}{*}{élément absorbant}    & $a \cdot 0 = 0$ \\
                                                  & $a + 1 = 1$ \\
            \midrule
            \multirow{2}{*}{idempotence}          & $a \cdot a = a$ \\
                                                  & $a + a = a$ \\
            \midrule
            \multirow{2}{*}{complément}           & $a \cdot \bar{a} = 0$ \\
                                                  & $a + \bar{a} = 1$ \\
            \midrule
            \multirow{2}{*}{commutativité}        & $a \cdot b = b \cdot a$ \\
                                                  & $a + b = b + a$ \\
            \midrule
            \multirow{2}{*}{associativité}        & $a \cdot (b \cdot c) = (a \cdot b) \cdot c = a \cdot b \cdot c$ \\
                                                  & $a + (b + c) = (a + b) + c = a + b + c$ \\
            \midrule
            \multirow{2}{*}{distributivité}       & $a \cdot (b + c) = (a \cdot b) + (a \cdot c) = a \cdot b + a \cdot c$ \\
                                                  & $a + (b \cdot c) = (a + b) \cdot (a + c)$ \\
            \midrule
            \multirow{2}{*}{théorême de Morgan}   & $\overline{a \cdot b} = \bar{a} + \bar{b}$ \\
                                                  & $\overline{a + b} = \bar{a} \cdot \bar{b}$ \\
            \midrule
            \multirow{2}{*}{consensus}            & $a \cdot b + \bar{a} \cdot c + b \cdot c = a \cdot b + \bar{a} \cdot c$ \\
                                                  & $(a + b) \cdot (\bar{a} + c) \cdot (b + c) = (a + b) \cdot (\bar{a} + c)$ \\
            \midrule
            \multirow{2}{*}{consensus généralisé} & $a \cdot b + \bar{a} \cdot c + b \cdot c \cdot d = a \cdot b + \bar{a} \cdot c$ \\
                                                  & $(a + b) \cdot (\bar{a} + c) \cdot (b + c + d) = (a + b) \cdot (\bar{a} + c)$ \\
            \midrule
            \multirow{2}{*}{fonction biforme}     & $a \cdot b + \bar{a} \cdot c = (a + c) \cdot (\bar{a} + b)$ \\
                                                  & $(a + b) \cdot (\bar{a} + c) = (a \cdot c) + (\bar{a} \cdot b)$ \\
            \bottomrule
        \end{tabularx}

    \subsection{Fonctions booléennes}

        On cherche à simplifier les fonctions pour limiter le nombre de portes logiques utilisées.

        Une fonction booléenne est une application de $\{0,1\}^n$ dans $\{0,1\}$.

        $x_1, x_2, \dots, x_n \rightarrow{} y = f(x_1, x_2, \dots, x_n)$

        Elle peut être écrite par une table~:

        \begin{center}

            \begin{multicols}{2}

                \begin{tabular}{cccc}
                    $x_2$ & $x_1$ & $x_0$ & $y$ \\
                    \midrule
                    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   \\
                \end{tabular}

                ou par une expression~:

                $y = f(x_2,x_1,x_0) = x_2 \cdot x_1 + \overline{x_2} \cdot x_0$.

            \end{multicols}

        \end{center}

        \subsubsection{Minterme, maxterme}

            Soit $f(x,y,z)$.

            $\bar{x} \cdot y$ est un minterme.

            $x \cdot y \cdot \bar{z}$ est un minterme complet.

            $\bar{x} + y$ est un maxterme.

            $x + y + \bar{z}$ est un maxterme complet.

            \begin{tabular}{ccc|cc}
                \toprule
                x & y & z & minterme associé                      & maxterme associé \\
                \midrule
                0 & 0 & 0 & $\bar{x} \cdot \bar{y} \cdot \bar{z}$ & $x + y + z$ \\
                0 & 1 & 1 & $\bar{x} \cdot y \cdot z$             & $x + \bar{y} + \bar{z}$ \\
                1 & 0 & 1 & $x \cdot \bar{y} \cdot z$             & $\bar{x} + y + \bar{z}$ \\
                1 & 1 & 1 & $x \cdot y \cdot z$                   & $\bar{x} + \bar{y} + \bar{z}$ \\
                \bottomrule
            \end{tabular}

        \subsubsection{Première forme canonique --- OU logique de mintermes (forme disjonctive)}

            On peut dire qu'une fonction est le OU logique des mintermes associés aux vecteurs pour lesquels la fonction vaut 1.
            Par exemple~:

            \begin{center}

                \begin{tabular}{ccc|l}

                    \toprule
                    $x$ & $y$ & $z$ & $f(x, y, z)$ \\
                    \toprule
                    0   & 0   & 0   & 0 \\
                    \midrule
                    0   & 0   & 1   & 1 $\quad \rightarrow \quad$ minterme associé~: $\quad \bar{x} \cdot \bar{y} \cdot z$ \\
                    \midrule
                    0   & 1   & 0   & 0 \\
                    \midrule
                    0   & 1   & 1   & 1 $\quad \rightarrow \quad$ minterme associé~: $\quad \bar{x} \cdot y \cdot z$ \\
                    \midrule
                    1   & 0   & 0   & 0 \\
                    \midrule
                    1   & 0   & 1   & 0 \\
                    \midrule
                    1   & 1   & 0   & 1 $\quad \rightarrow \quad$ minterme associé~: $\quad x \cdot y \cdot \bar{z}$ \\
                    \midrule
                    1   & 1   & 1   & 1 $\quad \rightarrow \quad$ minterme associé~: $\quad x \cdot y \cdot z$ \\
                    \bottomrule

                \end{tabular}

                $f(x, y, z) = \bar{x} \cdot \bar{y} \cdot z + \bar{x} \cdot y \cdot z + x \cdot y \cdot \bar{z} + x \cdot y \cdot z$

            \end{center}

        \subsubsection{Deuxième forme canonique --- ET logique de maxtermes (forme conjonctive)}

            On peut aussi dire que la fonction est le ET logique des maxtermes associés aux vecteurs pour lesquels la fonction vaut 0.
            Avec le même exemple~:

            \begin{center}

                \begin{tabular}{ccc|l}

                    \toprule
                    $x$ & $y$ & $z$ & $f(x, y, z)$ \\
                    \toprule
                    0   & 0   & 0   & 0 $\quad \rightarrow \quad$ maxterme associé~: $\quad x + y + z$ \\
                    \midrule
                    0   & 0   & 1   & 1 \\
                    \midrule
                    0   & 1   & 0   & 0 $\quad \rightarrow \quad$ maxterme associé~: $\quad x + \bar{y} + z$ \\
                    \midrule
                    0   & 1   & 1   & 1 \\
                    \midrule
                    1   & 0   & 0   & 0 $\quad \rightarrow \quad$ maxterme associé~: $\quad \bar{x} + y + z$ \\
                    \midrule
                    1   & 0   & 1   & 0 $\quad \rightarrow \quad$ maxterme associé~: $\quad \bar{x} + y + \bar{z}$ \\
                    \midrule
                    1   & 1   & 0   & 1 \\
                    \midrule
                    1   & 1   & 1   & 1 \\
                    \bottomrule

                \end{tabular}

                $f(x, y, z) = (x + y + z) \cdot (x + \bar{y} + z) \cdot (\bar{x} + y + z) \cdot (\bar{x} + y + \bar{z})$

            \end{center}

        \subsubsection{Simplification des fonctions booléennes --- Tableau de Karnaugh}

\end{document}
