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