From 7fa46cda17cfd73c0eae13e64c048e3074661b64 Mon Sep 17 00:00:00 2001
From: galmes
Date: Thu, 18 Mar 2004 21:21:09 +0000
Subject: GPIO : Ajout d'un exemple dans la documentation pour aider à la
 compréhension du fonctionnement du module.

---
 2004/n/fpga/doc/dcd/gpio/gpio.tex | 108 +++++++++++++++++++++++++++++++-------
 1 file changed, 90 insertions(+), 18 deletions(-)

(limited to '2004/n/fpga/doc/dcd/gpio/gpio.tex')

diff --git a/2004/n/fpga/doc/dcd/gpio/gpio.tex b/2004/n/fpga/doc/dcd/gpio/gpio.tex
index 50911e8..a6a30f9 100644
--- a/2004/n/fpga/doc/dcd/gpio/gpio.tex
+++ b/2004/n/fpga/doc/dcd/gpio/gpio.tex
@@ -30,7 +30,7 @@ On pourra voir la figure \ref{entity_gpio} page
 \begin{figure}[htbp]
 \caption{Entity du bloc de gestion des interruptions}
 \begin{center}
-\scalebox{0.7}{
+\scalebox{0.6}{
 \includegraphics {./gpio/images/entity.pdf}
 %\includegraphics[width=\textwidth]{./interrupt/images/entity.pdf}
 }
@@ -38,35 +38,42 @@ On pourra voir la figure \ref{entity_gpio} page
 \label{entity_gpio}
 \end{figure}
 
-Du point de vue comportemental, son fonctionnement est le suivant. Au d�but,
+Du point de vue comportemental son fonctionnement est le suivant. Au d�but,
 le PC configure le bloc apr�s avoir envoy� un signal de remise � z�ro. Il
-commence par configurer les diff�rents fils soit en entr�es, soit en sorties.
-Ensuite le PC configure quels fils devront g�n�rer une interruption. Une fois
-cela fait, il peut lire et �crire des donn�es sur les entr�es et sorties. La
-configuration du bloc gpio est r�alis�es en �crivant dans des registres. 
+commence par configurer les diff�rentes pins du bloc soit en entr�es, soit en
+sorties. Ensuite le PC configure quelles pins pourront g�n�rer une interruption.
+Une fois cela fait, il peut lire et �crire des donn�es sur les entr�es et
+sorties. La configuration du bloc gpio est r�alis�es en �crivant dans des
+registres. 
 
 On remarque que ce module poss�de quatres signaux "chip select" :
 cs\_reg\_data, cs\_reg\_direction, cs\_reg\_it\_mask et cs\_read\_output.
 Le signal cs\_read\_output permet de lire l'�tats de 8 broches d'entr�es /
-sorties. Les autres signaux permettent d'acc�der aux registres contenant le
-masque des directions, le masque d'interruption et les donn�es � mettre sur
-les lignes en sorties. 
+sorties. Les autres signaux permettent d'acc�der aux registres contenant
+respectivement, le masque des directions, le masque d'interruption et les
+donn�es � mettre sur les lignes en sorties. 
 
 Ces trois registres ont la particularit� de pouvoir �tre �crit mais aussi lu.
 En effet, pour la phase de teste il nous semble utile que les registres
 puissent �tre relus. Ainsi on pourra s'assurer que la configuration est bien
-celle d�sir�e. Voici donc les proc�dures d'�criture et de lecture des
-registres.
+celle d�sir�e. 
+
+Voici comment se d�roule les proc�dures d'�criture et de lecture dans les
+registres. La proc�dure d'�criture est la suivante. Tout d'abord, le module
+dirigeant le bloc �crit sur le bus de donn�s l'octet lui permettant de
+configurer tel ou tel registre.
 
-La proc�dure d'�criture est la suivante. Tout d'abord, le PC �crit sur le bus
-de donn�s l'octet lui permettant de configurer tel ou tel registre.
 Simultan�ment, il positionne le signal $R\bar{W}$ en mode �criture (Write).
 Finalement, il s�lectionne � l'aide d'un des signal CS (Chip select) le
 registre dans lequel il veut �crire.
 
 La proc�dure de lecture s'effectue en positionnant le signal $R\bar{W}$ en
 lecture (Read), puis en s�lectionnant le chip select du registre auquel on
-d�sire acc�der.
+d�sire acc�der. 
+
+On notera que pour interfacer ce bloc et le bus ISA, il faut un module dont le
+r�le sera de convertir les signaux du bus ISA en les signaux $R\bar{W}$ et les
+signaux de "chip select" (CS).
 
 Pour r�sumer, voici quelques informations utiles :
 \begin{itemize}
@@ -78,10 +85,75 @@ Pour r
 	�tat bas}
 \end{itemize}
 
-% Voici un exemple pour illustrer les discours pr�c�dents. 
+\subsection{Exemple d'utilisation du module}
 
-% Ajouter le chronogramme du test des gpio.
-% Mettre en R / W_barre. si c'est cela. Ajouter quelle valeur est on a une
-% interruption et quelle valeur dis a pas !
+Voici un exemple pour illustrer les discours pr�c�dents. On pourra se reporter
+aux chronogrammes de la figure \ref{gpio_behav_simul} page
+\pageref{gpio_behav_simul}. Ce chronogramme repr�sente la simulation
+comportementale du bloc d'entr�es sorties.
+
+
+%% TODO : Se d�brouiller pour inclure l'image
+
+% Commande sympas : convert -rotate -90 fichier.tiff fichier.pdf
+\begin{figure}[htbp]
+\begin{center}
+%\scalebox{0.6}{
+%\includegraphics {./gpio/sim/gpio_behavior_simul.pdf}
+%}
+\includegraphics[height=0.7\textwidth,angle=90]{./gpio/sim/gpio_behavior_simul.pdf}
+\end{center}
+\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.
+Ce signal doit garder un �tat haut durant au moins une pr�riode d'horloge du
+bus ISA (clk\_i).
+
+On remarque que sur les entr�es /sorties, on simule le fait d'avoir branch�
+des capteurs sur les cinq lignes de poid fort. On voit donc appara�tre sur la
+la sortie les valeurs $00001ZZZ$. Cela signifie que l'on laisse les trois pins
+de poid fort dans un �tat de haute imp�dance.
+
+Une fois cela fait, on configure alors le bloc. Pour ce faire, l'ordinateur
+place tout d'abord sur le bus de donn�es le masque de direction. Dans
+l'exemple, le masque est $00000111$, ce qui signifie que l'on d�sire
+positionner les 3 pins de poid faible en sorties. On peut alors constater que
+les trois pins du bloc qui sont en sortie, prennent la valeur $0$. Cela vient
+du fait que lors du reset, on a remis le bloc � z�ro, et par d�faut, les
+sorties sont � z�ro d'ou les signaux obtenus.
+
+On remarquera aussi que la ligne $R\bar{W}$ est en �criture. Ainsi, d�s que
+la ligne de validation du registre de configuration des directions (ligne chip
+select : cs\_reg\_direction ) est � un �tat haut et qu'il y a un front
+montant de l'horloge (clk\_i) du bus ISA, on configure le bloc avec les
+signaux sur le bus de donn�es.
+
+De la m�me mani�re, on configure ensuite le masque d'interruption pour lequel
+on conserve la valeur $11111000$. On remarque que cet octet est le
+compl�mentaire du masque de direction. Dans cette configuration, on vient
+d'autoriser les interruptions sur les pins en entr�e du bloc. Ainsi, d�s qu'il
+y aura un changement d'�tat sur l'une des cinq pins de poid fort, une
+interruption sera g�n�r�e.
+
+Ensuite, on transmet au bloc les signaux que l'on d�sire voir sur les lignes
+en sortie du bloc. Dans notre cas on transmet $00000001$. Comme seules les
+trois pins de poid faible sont en sortie, on recopie en sortie $ZZZZZ001$ sans
+tenir compte des bits de poid fort. Comme les "capteurs simul�s" sur les cinq
+bits de poid fort g�n�rent les valeurs $00001ZZZ$, on retrouve sur la sortie
+un m�lange de ces signaux, d'o� la valeur de $00001001$.
+
+Dans la suite, on se propose de relire les valeurs affect�es. C'est ce que
+l'on fait. On v�rifie successivement le masque d'interruption, le registre de
+direction puis le registre de donn�es. Finalement le PC veut lire les valeurs
+situ�es sur les entr�es sorties, ce qui est r�alis� gr�ce au signal
+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.
-- 
cgit v1.2.3

