From e864d06fb1d4f4f9f7a2471a4b49a51aa2ed82d6 Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Mon, 16 Jun 2014 00:04:28 +0200 Subject: Update report --- report/project.tex | 245 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 222 insertions(+), 23 deletions(-) (limited to 'report/project.tex') diff --git a/report/project.tex b/report/project.tex index f98e892..5da7f30 100644 --- a/report/project.tex +++ b/report/project.tex @@ -8,9 +8,9 @@ FPGA, capable de commander un ventilateur et une alarme en fonction de l'état d différents capteurs et des entrées de l'utilisateur. \begin{figure}[h] - \centering - \includegraphics[width=0.8\textwidth]{resources/project-de2-io} - \caption{Capteurs/actionneurs autour de la carte Altera DE2} + \centering + \includegraphics[width=0.8\textwidth]{resources/project-de2-io} + \caption{Capteurs/actionneurs autour de la carte Altera DE2} \end{figure} \section{Matériel} @@ -19,12 +19,12 @@ Des contraintes matérielles ont été imposées dans le cadre de ce projet, qui réalisera autour des composants suivants : \begin{itemize} - \item Carte Altera DE2 équipée d'un FPGA Altera Cyclone II avec une horloge à - 50MHz et des interfaces utilisateurs (boutons, afficheurs, \ldots) - \item Microphone ELECTRET - \item Capteur de température LM35 - \item Haut-parleur (8 Ohm) - \item Ventilateur (12V/1W) + \item Carte Altera DE2 équipée d'un FPGA Altera Cyclone II avec une horloge à + 50MHz et des interfaces utilisateurs (boutons, afficheurs, \ldots) + \item Microphone ELECTRET + \item Capteur de température LM35 + \item Haut-parleur (8 Ohm) + \item Ventilateur (12V/1W) \end{itemize} \section{Méthodologie} @@ -38,9 +38,9 @@ Ainsi, la centrale domotique comprendra deux sous-systèmes : une partie alarme et une partie ventilation. \begin{figure}[h] - \centering - \includegraphics[width=0.85\textwidth]{resources/project-topdown-subsystems} - \caption{Découpage du système en sous-systèmes} + \centering + \includegraphics[width=0.85\textwidth]{resources/project-topdown-subsystems} + \caption{Découpage du système en sous-systèmes} \end{figure} \subsection{Validation \og{}bottom-up\fg{}} @@ -52,24 +52,223 @@ nouveau testé globalement. \chapter{Interface de commande} -\section{Contrôle} +L'interface de commande comprend les entrées et les sorties permettant à +l'utilisateur d'intéragir avec la centrale. -\subsection{Commande du ventilateur} +Celle-ci comprend un module de commande (utilisant les interrupteurs et les +ports GPIO de la carte DE2) et un module d'affichage (via les DELs, les +afficheurs 7-segments et l'écran à cristaux liquides). + +\section{Commande} + +Le module de commande prendra en compte les entrées des paramètres +utilisateurs, via les interrupteurs, et des paramètres environnementaux, via les +capteurs de bruit et de température connectés aux ports GPIO. + +\begin{figure}[h] + \centering + \includegraphics{resources/commande-interrupteurs-legende} + \caption{Actions des interrupteurs de la carte DE2} + + \centering + \includegraphics{resources/schema-commande-io} + \caption{Entrées/sorties du sous-système \og{}commande\fg{}} +\end{figure} + +Ce module a été décomposé en deux sous-modules semi-indépendants, l'un destiné à +contrôler l'alarme, et l'autre le ventilateur, ce dernier étant désactivé +lorsque l'alarme est déclenchée. + +\begin{figure}[h] + \centering + \includegraphics{resources/schema-commande-logic} + \caption{Schéma bloc du sous-système \og{}commande\fg{}} +\end{figure} + +\newpage \subsection{Commande de l'alarme} -\section{Afficheur 7-segments} +\begin{figure}[p] + \centering + \includegraphics{resources/schema-alarm-io} + \caption{Entrées/sorties du sous-sous-système \og{}alarme\fg{}} + + \centering + \includegraphics{resources/schema-alarm-logic} + \caption{Schéma du sous-sous-système \og{}alarme\fg{}} + \label{fig:alarm-logic} +\end{figure} +L'alarme doit être activée (state) dans les cas suivants : + +\begin{itemize} + \item Condition nécéssaire : l'utilisateur a activé l'alarme (enable) + \item Condition nécéssaire : un bruit est détecté (activate) + \item Condition suffisante : l'alarme est déjà activée (alarm) +\end{itemize} + +L'ensemble des situations possibles sont représentables par la table de vérité +~\ref{tab:tab-alarm}. + +\begin{table}[p] + \centering + \begin{tabular}{ c | c | c || c } + enable & activate & alarm & STATE\\ + \hline + 0 & 0 & 0 & 0\\ + 0 & 0 & 1 & 1\\ + 0 & 1 & 0 & 0\\ + 0 & 1 & 1 & 1\\ + 1 & 0 & 0 & 0\\ + 1 & 0 & 1 & 1\\ + 1 & 1 & 0 & 1\\ + 1 & 1 & 1 & 1\\ + \end{tabular} + \caption{Table de vérité de l'activation de l'alarme} + \label{tab:tab-alarm} +\end{table} + +De cette table, nous obtenons l'équation booléenne évidente : + +\begin{equation} + STATE = (enable \cdot activate) + alarm +\end{equation} + +Le circuit correspondant est ainsi celui de la figure ~\ref{fig:alarm-logic}. + + +%\newpage + +\subsection{Commande du ventilateur} + +\begin{figure}[p] + \centering + \includegraphics{resources/schema-fan-io} + \caption{Entrées/sorties du sous-sous-système \og{}ventilation\fg{}} + + \centering + \includegraphics{resources/schema-fan-logic} + \caption{Schéma du sous-sous-système \og{}ventilation\fg{}} + \label{fig:fan-logic} +\end{figure} + +La sortie $FAN\_AUTO$ indique l'activation du mode automatique lorsque +celui-ci est sélectionné et que la vitesse définie manuellement par +l'utilisateur est la vitesse 0. Cette dernière condition donnée sur $no\_manual$ +est vérifiée à l'aide d'un comparateur. + +\begin{equation} + FAN\_AUTO = fan\_auto\_user \cdot no\_manual +\end{equation} + +Un premier multiplexeur permet de choisir la valeur $fan\_auto\_value$ définie à +la vitesse 3 si le capteur de température est activé ($hot$). + +Un second multiplexeur permet la sélection entre la vitesse manuellement définie +par l'utilisateur ($fan\_speed$) ou la vitesse automatique déterminée par l'état +du capteur ($fan\_auto\_value$) en fonction de l'activation du mode automatique +$FAN\_AUTO$. + +Un troisième multiplexeur permet de désactiver le ventilateur, +quelque soit la vitesse définie manuellement ou automatiquement par l'état du capteur, +selon l'entrée $enable$. + +Le schéma synthétique est celui du ~\ref{fig:fan-logic} + + + +\newpage + +\section{Affichage} + +L'état de la centrale domotique est visible par l'utilisateur au travers de +multiples DELs ainsi que des afficheurs 7-segments. + +L'écran à cristaux liquide affiche quant à lui un message trivial en 32 +caractères. + +\subsection{Afficheurs 7-segments} + +\begin{figure}[h] + \centering + \includegraphics{resources/schema-display-io} + \caption{Entrées/sorties du sous-sous-système \og{}display\fg{}} +\end{figure} + +Les huit afficheurs 7-segments, à l'exception de HEX5, sont utilisés. Celui-ci +est donc éteint à l'aide d'une constante $7 \times 1$, puisqu'actif à +l'état bas. + +\subsubsection{Témoins d'activation} + +Les afficheurs HEX7 et HEX6 devant respectivement afficher les lettres +\og{}A\fg{} et \og{}F\fg{} quand le mode alarme et la ventilation +automatique sont activés, deux constantes ayant pour valeurs hexadécimales A et +F ont été créées. +Ces constantes sont ensuite traduites par le module +seven\_segment\_decoder pour être affichables. +Un multiplexeur pour chaque afficheur permet ensuite d'afficher la constante +associée ou bien de désactiver l'afficheur. +Le schéma associé est le ~\ref{fig:mode-indicator-logic}. + +\begin{figure}[p] + \centering + \includegraphics{resources/schema-display-af} + \caption{Schéma d'affichage des témoins d'activation} + \label{fig:mode-indicator-logic} +\end{figure} + + +\subsubsection{Vitesse du ventilateur} + +Le module seven\_segment\_decoder ayant une entrée sur 4 bits, et la vitesse du +ventilateur définie sur l'entrée $SPEED[1..0]$ étant codée sur 2 bits, une +constante binaire 00 a été concaténée en LSB. Le résultat de la conversion de la +valeur est ensuite directement affichée sur HEX4. +Le schéma associé est le ~\ref{fig:speed-indicator-logic}. + +\begin{figure}[h] + \centering + \includegraphics{resources/schema-display-speed} + \caption{Schéma d'affichage de la vitesse du ventilateur} + \label{fig:speed-indicator-logic} +\end{figure} + + +\subsubsection{Chenillard} + +\textit{\og{}Science isn't about WHY. It's about WHY NOT!\fg{}} - Cave Johnson + +Afin de ne pas laisser les afficheurs 0 à 3 inutilisés, et de rappeler des +mauvais souvenirs aux possesseurs de Freebox v5, un chenillard a été ajouté. + +Celui-ci a été créé en utilisant un registre à décalage de 12 bits (nombre de +segments en bordure), \og{}ralentit\fg{} à l'aide d'un module clock\_divider. +Les segments du milieu ont été désactivés. +Le schéma associé est le ~\ref{fig:speed-useless-logic}. + +\begin{figure}[h] + \centering + \includegraphics{resources/schema-display-useless} + \caption{Schéma du chenillard} + \label{fig:speed-useless-logic} +\end{figure} + -\section{LCD} +\subsection{LCD} +Les modules VHDL lcd\_message et message ont été modifiés pour afficher une +vérité établie. Pour ce faire, les lettres composants la phrase ont été +transcrite en code ASCII hexadecimal et introduits dans le code du composant +message. \chapter{Sous-système \og{}alarme\fg{}} \begin{figure}[h] - \centering - \includegraphics[width=0.9\textwidth]{resources/alarm-subsubsystems} - \caption{Découpage du sous-système \og{}alarme\fg{} en sous-sous-systèmes} + \centering + \includegraphics[width=0.9\textwidth]{resources/alarm-subsubsystems} + \caption{Découpage du sous-système \og{}alarme\fg{} en sous-sous-systèmes} \end{figure} \section{Detection du niveau sonore} @@ -95,10 +294,10 @@ nouveau testé globalement. \chapter{Sous-système \og{}ventilation\fg{}} \begin{figure}[h] - \centering - \includegraphics[width=0.9\textwidth]{resources/fan-subsubsystems} - \caption{Découpage du sous-système \og{}ventilation\fg{} en - sous-sous-systèmes} + \centering + \includegraphics[width=0.9\textwidth]{resources/fan-subsubsystems} + \caption{Découpage du sous-système \og{}ventilation\fg{} en + sous-sous-systèmes} \end{figure} -- cgit v1.2.3