summaryrefslogtreecommitdiff
path: root/2004/n/fpga/doc/dcd
diff options
context:
space:
mode:
authorgalmes2004-03-19 08:56:03 +0000
committergalmes2004-03-19 08:56:03 +0000
commit2c77599e11c4e60441e18ebe5bfe67f1b3e7fa8d (patch)
tree5edc16cd606f3384a8d212d85bfa597a4eab3295 /2004/n/fpga/doc/dcd
parent7fa46cda17cfd73c0eae13e64c048e3074661b64 (diff)
GPIO doc : Ajout du schéma d'architecture physique et ajout du texte lié
Diffstat (limited to '2004/n/fpga/doc/dcd')
-rw-r--r--2004/n/fpga/doc/dcd/gpio/gpio.tex66
1 files changed, 63 insertions, 3 deletions
diff --git a/2004/n/fpga/doc/dcd/gpio/gpio.tex b/2004/n/fpga/doc/dcd/gpio/gpio.tex
index a6a30f9..91be3fb 100644
--- a/2004/n/fpga/doc/dcd/gpio/gpio.tex
+++ b/2004/n/fpga/doc/dcd/gpio/gpio.tex
@@ -106,9 +106,6 @@ comportementale du bloc d'entrées sorties.
\label{gpio_behav_simul}
\end{figure}
-% Ajouter le chronogramme du test des gpio.
-% Copier la suite dans le fichier de la gestion des interruptions !
-
Dans cet exemple, nous allons configurer puis utiliser le bloc d'entrée /
sorties. La première action à effectuer est une remise-à-zéro du bloc à l'aide
de son signal reset. C'est ce que l'on remarque lorsque le signal rst est à 1.
@@ -157,3 +154,66 @@ cs\_read\_output.
On remarquera aussi le signal d'interruption. Celui-ci passe à l'état haut
lorsque l'état des "capteurs" change. Le bloc d'entrées /sorties attend alors
que le PC demande à lire les entrées / sorties pour achever l'interruption.
+
+\subsection{Architecture physique}
+
+Nous allons dans cette partie étudier plus en détails le fonctionnement
+interne du module d'entrées /sorties. On pourra consulter l'architecture
+physique sur la figure \ref{archi_gpio} page \pageref{archi_gpio}.
+
+\begin{figure}[htbp]
+\caption{Architecture physique du bloc d'entrées / sorties}
+\begin{center}
+%\scalebox{0.7}{\includegraphics {./interrupt/images/archi_phy.pdf}}
+\includegraphics[width=\textwidth]{./gpio/images/archi_phy.pdf}
+\end{center}
+\label{archi_gpio}
+\end{figure}
+
+Comme on peut le constater, ce module est relativement simple. On peut le
+décomposer en deux parties : la configuration et la lecture / écriture des
+entrées et sorties. Nous commencerons par nous pencher sur la configuration du
+bloc.
+
+Nous avons vu précédement que pour la configuration d'un bloc d'entrées /
+sorties, il y avait deux registres de configuration, un registre contenant un
+masque déterminant la direction de chaque pin et un registre contenant un
+masque d'interruption. On retrouve bien ces deux registres sur le schéma
+directement connectés au bus de données.
+
+On trouve un troisième registre nommé registre de données. Celui-ci est chargé
+de mémoriser les valeurs à mettre sur les pins du bloc qui sont configurées en
+sortie.
+
+Pour revenir aux registres de configuration, ils sont alors connectés sur deux
+autres blocs. Le premier, est le gestionnaire de direction et a pour but de
+recopier les valeurs du registre de données uniquement sur les pins qui sont
+configurées en sorties. Le deuxième est le gestionnaire d'interruption qui est
+chargé de générer les interruptions. On voit que pour cela il s'aide du masque
+d'interruption.
+
+Finalement, pour la lecture des entrées / sorties on connecte directement sur
+les pins un bloc à trois états (état bas, état haut et haute impédance). Ce
+bloc dès qu'on le sélectionne à l'aide du signal cs\_read\_output recopie les
+entrées sorties sur le bus de données. On notera que ce module, de même que les trois registres, sont synchronisés sur l'horloge du bus ISA.
+
+\subsection{Décomposition RTL}
+
+
+Commençons par décrire le fonctionnement des registres nommés
+
+% Reg_rw
+
+% Module haute impédance
+Pour la lecture des valeurs sur les entrées / sorties, un composant nommé
+\textit{tristate} est utilisé. Ce composant est en fait un module synchrone
+composé de huits composants trois états. Son comportement est donc le suivant :
+
+\begin{itemize}
+\item{Si enable (représenté par cs\_read\_output sur le schéma) est à un état
+bas, les sorties sont dans un état haute impédance}
+\item{Si enable est à l'état bas on recopie les entrées / sorties sur le bus
+de données}
+\end{itemize}
+
+\subsection{Simulation du bloc}