From c5655844e7e52f83c00fbfe9f717e007e2b532fc Mon Sep 17 00:00:00 2001 From: galmes Date: Thu, 11 Mar 2004 11:47:55 +0000 Subject: Début du rapport sur les gpio ! --- 2004/n/fpga/doc/dcd/gpio/gpio.tex | 87 +++++++++++ 2004/n/fpga/doc/dcd/gpio/images/entity.fig | 237 +++++++++++++++++++++++++++++ 2004/n/fpga/doc/dcd/rapport.tex | 3 + 3 files changed, 327 insertions(+) create mode 100644 2004/n/fpga/doc/dcd/gpio/gpio.tex create mode 100644 2004/n/fpga/doc/dcd/gpio/images/entity.fig (limited to '2004') 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{} -- cgit v1.2.3