\subsection{Cahier des charges}

Voici les contraintes du bloc de gestion des interruptions :

\begin{itemize}
\item{Gestion de 24 interruptions différentes}
\item{Transmission des interruptions par bloc de 8 bits}
\item{Un signal de RAZ}
\end{itemize}


% en gros c'est comment est vu le module côté userland.
\subsection{Vue comportementale}

Le bloc de gestion des interruptions a pour but de permettre aux différents
modules de la carte de prévenir l'ordinateur qu'ils ont des informations à
lui transmettre. On pourra voir la figure \ref{entity_interrupt} page
\pageref{entity_interrupt}.

\begin{figure}[htbp]
\caption{Entity du bloc de gestion des interruptions}
\begin{center}
\scalebox{0.7}{
\includegraphics {./interrupt/images/entity.pdf}
%\includegraphics[width=\textwidth]{./interrupt/images/entity.pdf}
}
\end{center}
\label{entity_interrupt}
\end{figure}


% TODO : Question
%
% TODO : Si garde 2 fils, changer entity.fig
%	 Si garde 1 fils, changer schéma global (toute la carte fpga)
%	 		  changer archi_phy.fig


Du point de vue comportemental, son fonctionnement est le suivant. Chaque bloc
ayant un fil d'interruption le relie au gestionnaire d'interruption.
Lorsqu'une interruption est émise par un bloc, notre module la détecte et
transmet le signal IRQ sur le bus ISA. Dès que l'ordinateur est prêt à traiter
l'interruption, il demande à accéder au gestionnaire. 

Pour cela, il va lire successivement trois registres. Chaque registre est
représenté par une addresse différente. Chacun de ces registres contient un
masque. Les bits de ce masque signalent si un bloc a généré une interruption
ou non. En retour à chaque demande du PC, le gestionnaire placera sur le bus de
données le masque correspondant. 

