summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgalmes2004-03-11 11:47:55 +0000
committergalmes2004-03-11 11:47:55 +0000
commitc5655844e7e52f83c00fbfe9f717e007e2b532fc (patch)
treeab51198fa9420c0a86e72f66f9cb1bc5f3b3ffca
parentd1516b387bddec59ad53b611b724f81c4619cfae (diff)
Début du rapport sur les gpio !
-rw-r--r--2004/n/fpga/doc/dcd/gpio/gpio.tex87
-rw-r--r--2004/n/fpga/doc/dcd/gpio/images/entity.fig237
-rw-r--r--2004/n/fpga/doc/dcd/rapport.tex3
3 files changed, 327 insertions, 0 deletions
diff --git a/2004/n/fpga/doc/dcd/gpio/gpio.tex b/2004/n/fpga/doc/dcd/gpio/gpio.tex
new file mode 100644
index 0000000..50911e8
--- /dev/null
+++ b/2004/n/fpga/doc/dcd/gpio/gpio.tex
@@ -0,0 +1,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 !
diff --git a/2004/n/fpga/doc/dcd/gpio/images/entity.fig b/2004/n/fpga/doc/dcd/gpio/images/entity.fig
new file mode 100644
index 0000000..1e5b2c3
--- /dev/null
+++ b/2004/n/fpga/doc/dcd/gpio/images/entity.fig
@@ -0,0 +1,237 @@
+#FIG 3.2 Produced by xfig version 3.2.5-alpha4
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+0 32 #9c0000
+0 33 #8c8c8c
+0 34 #8c8c8c
+0 35 #424242
+0 36 #8c8c8c
+0 37 #424242
+0 38 #8c8c8c
+0 39 #424242
+0 40 #8c8c8c
+0 41 #424242
+0 42 #8c8c8c
+0 43 #424242
+0 44 #c2c2c2
+0 45 #6e6e6e
+0 46 #444444
+0 47 #8e8f8e
+0 48 #717171
+0 49 #aeaeae
+0 50 #333333
+0 51 #949395
+0 52 #747075
+0 53 #555555
+0 54 #b3b3b3
+0 55 #c3c3c3
+0 56 #6d6d6d
+0 57 #454545
+0 58 #8e8e8e
+0 59 #c6b797
+0 60 #eff8ff
+0 61 #dccba6
+0 62 #404040
+0 63 #808080
+0 64 #c0c0c0
+0 65 #e0e0e0
+0 66 #aaaaaa
+0 67 #d7d7d7
+0 68 #bebebe
+0 69 #515151
+0 70 #e7e3e7
+0 71 #000049
+0 72 #797979
+0 73 #303430
+0 74 #414141
+0 75 #c7b696
+0 76 #414541
+0 77 #dd9d93
+0 78 #f1ece0
+0 79 #e2c8a8
+0 80 #e1e1e1
+0 81 #d2d2d2
+0 82 #ededed
+0 83 #da7a1a
+0 84 #f1e41a
+0 85 #887dc2
+0 86 #d6d6d6
+0 87 #8c8ca5
+0 88 #4a4a4a
+0 89 #8c6b6b
+0 90 #5a5a5a
+0 91 #636363
+0 92 #b79b73
+0 93 #4193ff
+0 94 #bf703b
+0 95 #db7700
+0 96 #dab800
+0 97 #006400
+0 98 #5a6b3b
+0 99 #d3d3d3
+0 100 #8e8ea4
+0 101 #f3b95d
+0 102 #89996b
+0 103 #646464
+0 104 #b7e6ff
+0 105 #86c0ec
+0 106 #bdbdbd
+0 107 #d39552
+0 108 #98d2fe
+0 109 #8c9c6b
+0 110 #f76b00
+0 111 #5a6b39
+0 112 #8c9c6b
+0 113 #8c9c7b
+0 114 #184a18
+0 115 #adadad
+0 116 #f7bd5a
+0 117 #636b9c
+0 118 #f7f7f7
+0 119 #de0000
+0 120 #adadad
+0 121 #f7bd5a
+0 122 #adadad
+0 123 #f7bd5a
+0 124 #636b9c
+0 125 #526b29
+0 126 #949494
+0 127 #006300
+0 128 #00634a
+0 129 #7b844a
+0 130 #e7bd7b
+0 131 #a5b5c6
+0 132 #6b6b94
+0 133 #846b6b
+0 134 #529c4a
+0 135 #d6e7e7
+0 136 #526363
+0 137 #186b4a
+0 138 #9ca5b5
+0 139 #ff9400
+0 140 #ff9400
+0 141 #00634a
+0 142 #7b844a
+0 143 #63737b
+0 144 #e7bd7b
+0 145 #184a18
+0 146 #f7bd5a
+0 147 #dedede
+0 148 #f3eed3
+0 149 #f5ae5d
+0 150 #95ce99
+0 151 #b5157d
+0 152 #eeeeee
+0 153 #848484
+0 154 #7b7b7b
+0 155 #005a00
+0 156 #e77373
+0 157 #ffcb31
+0 158 #29794a
+0 159 #de2821
+0 160 #2159c6
+0 161 #f8f8f8
+0 162 #e6e6e6
+0 163 #21845a
+0 164 #cccccc
+0 165 #c9c9c9
+0 166 #dfd8df
+0 167 #f7f3f7
+0 168 #cdcdcd
+0 169 #6c6c6c
+6 3825 3825 4275 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+ 2 1 1.00 60.00 120.00
+ 4050 3825 4050 4275
+4 1 0 50 -1 0 12 0.0000 4 135 270 4050 4500 Rst\001
+-6
+6 450 675 900 1575
+6 450 1125 900 1575
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 675 1125 675 1575
+-6
+4 1 0 50 -1 0 12 0.0000 4 135 315 675 900 RW\001
+-6
+6 1350 450 1800 1575
+6 1350 450 1800 1125
+4 1 0 50 -1 0 12 0.0000 4 180 330 1575 675 Reg\001
+4 1 0 50 -1 0 12 0.0000 4 135 375 1575 930 Data\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 1575 1125 1575 1575
+-6
+6 2025 450 2925 1575
+6 2025 450 2925 1125
+4 1 0 50 -1 0 12 0.0000 4 180 330 2475 675 Reg\001
+4 1 0 50 -1 0 12 0.0000 4 135 765 2475 930 Direction\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 2475 1125 2475 1575
+-6
+6 2925 450 3825 1575
+6 2925 450 3825 1125
+4 1 0 50 -1 0 12 0.0000 4 180 330 3375 630 Reg\001
+4 1 0 50 -1 0 12 0.0000 4 180 645 3375 885 it_mask\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 3375 1125 3375 1575
+-6
+6 3825 450 4725 1575
+6 3825 450 4725 1125
+4 1 0 50 -1 0 12 0.0000 4 135 420 4275 675 Read\001
+4 1 0 50 -1 0 12 0.0000 4 180 570 4275 900 Output\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 4275 1125 4275 1575
+-6
+6 450 3600 1350 4725
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
+ 675 3825 900 3600 1125 3825
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 900 3825 900 4275
+4 1 0 50 -1 0 12 0.0000 4 165 795 900 4500 ISA clock\001
+-6
+6 1800 3600 3150 4725
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
+ 2250 3825 2475 3600 2700 3825
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 2475 3825 2475 4275
+4 1 0 50 -1 0 12 0.0000 4 165 1050 2475 4500 Master clock\001
+-6
+6 4500 2475 6525 3150
+2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+ 2 1 2.00 75.00 120.00
+ 2 1 2.00 75.00 120.00
+ 4725 2700 5625 2700
+4 0 0 50 -1 0 12 0.0000 4 180 435 5850 2700 Input\001
+4 0 0 50 -1 0 12 0.0000 4 180 570 5850 2955 Output\001
+-6
+6 1350 -225 4500 450
+3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 4
+ 1350 450 2250 225 3600 225 4500 450
+ 0.000 -1.000 -1.000 0.000
+4 1 0 50 -1 0 12 0.0000 4 195 990 2925 0 Chip selects\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 225 3150 -675 3150
+2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+ 2 1 2.00 75.00 120.00
+ 2 1 2.00 75.00 120.00
+ -675 2250 225 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 225 1575 4725 1575 4725 3825 225 3825 225 1575
+4 2 0 50 -1 0 12 0.0000 4 180 705 -900 3150 Interrupt\001
+4 2 0 50 -1 0 12 0.0000 4 150 705 -900 2250 Data bus\001
+4 1 0 50 -1 0 14 0.0000 4 225 2775 2475 2700 General purpose input-output\001
diff --git a/2004/n/fpga/doc/dcd/rapport.tex b/2004/n/fpga/doc/dcd/rapport.tex
index 9d0032c..313fa31 100644
--- a/2004/n/fpga/doc/dcd/rapport.tex
+++ b/2004/n/fpga/doc/dcd/rapport.tex
@@ -53,6 +53,9 @@ PC104}
\input{./interrupt/interrupt.tex}
\pagebreak
+\section{La gestion des interruptions}
+\input{./gpio/gpio.tex}
+\pagebreak
\section{Le bloc d'entrées / sorties}
%\input{}