summaryrefslogtreecommitdiff
path: root/2004/n/fpga/doc/dcd/gpio/gpio.tex
blob: 50911e818742f651791cdc6152ba2a0dfa10d639 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
\subsection{Cahier des charges}

Voici les contraintes du bloc de d'entr�es / sorties :

\begin{itemize}
\item{Bloc de 8 entr�es / sorties}
\item{Chaque fils est configurable soit en entr�e, soit en sortie}
\item{Chaque fils est configurable pour g�n�rer ou non, une interruption lors
d'un changement d'�tat}
\item{Un signal de RAZ}
\end{itemize}


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

Les blocs d'entr�es / sorties ont plusieurs utilit�s. La premi�re est de
pouvoir brancher des capteurs renvoyant une entr�e binaire, par exemple la
sortie d'un comparateur. Ce bloc permettra aussi de commander, des sorties
comme par exemple l'allumage de LEDs. 

Finalement la troisi�me fonction de ce bloc sera de simuler un bus parall�le.
En effet, l'ann�e derni�re, nous utilisions un bus parall�le pour lequel nous
avons d�velopp� un certain nombre de cartes. A partir de blocs d'entr�es /
sorties, on peut donc r�utiliser les modules pr�c�dements d�velopp�s.

On pourra voir la figure \ref{entity_gpio} page
\pageref{entity_gpio} pour avoir une vue globale du module.

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

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. 

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. 

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.

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.

Pour r�sumer, voici quelques informations utiles :
\begin{itemize}
\item{La lecture (signal $R\bar{W}$) : active pour un �tat haut}
\item{La �criture (signal $R\bar{W}$) : active pour un �tat bas}
\item{Le masque d'interruptions : interruption active pour un �tat haut,
	inactive pour un �tat bas}
\item{Le masque de directions : en sortie pour un �tat haut, en entr�e pour un
	�tat bas}
\end{itemize}

% Voici un exemple pour illustrer les discours pr�c�dents. 

% 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 !

% Copier la suite dans le fichier de la gestion des interruptions !