summaryrefslogtreecommitdiff
path: root/2004/n/fpga/doc/dossierconception/portserie.tex
diff options
context:
space:
mode:
Diffstat (limited to '2004/n/fpga/doc/dossierconception/portserie.tex')
-rw-r--r--2004/n/fpga/doc/dossierconception/portserie.tex392
1 files changed, 0 insertions, 392 deletions
diff --git a/2004/n/fpga/doc/dossierconception/portserie.tex b/2004/n/fpga/doc/dossierconception/portserie.tex
deleted file mode 100644
index 944ed60..0000000
--- a/2004/n/fpga/doc/dossierconception/portserie.tex
+++ /dev/null
@@ -1,392 +0,0 @@
-\section{Le TXserie}
-\subsection{Cahier des charges}
-Le cahier des charges du transmetteur série est le suivant :
-
-\begin{itemize}
-\item Transmission série 8 bits, 1 start, 2 stop
-\item Vitesse : paramétrable 9600 et 115200 bauds
-\item Fifo de stockage avant transmision
-\item Interruption activable signalant que la pile est pleine
-\end{itemize}
-
-
-\subsection{Schéma-bloc}
-
-\begin{figure}[htbp]
-\caption{Schéma-bloc du TXserie}
-\includegraphics[width=\textwidth]{images/txserie.pdf}
-\label{schematxserie}
-\end{figure}
-
-Le schéma modulaire est visible sur la figure \ref{schematxserie} page \pageref{schematxserie}.
-
-\subsection{Descritpion des modules}
-\label{descriptmodules}
-
-\subsubsection{La fifo}
-
-C'est une fifo générée avec coregen. Elle contient des mots de 8 bits en
-mémoire distribuée (car les BRAMs du FPGA seront utilisés à d'autres fins).
-
-Elle possède une entrée avec son horloge ckin, une sortie avec son horloge
-ckout, et un pannel de flags en sortie.
-
-L'entrée ckin est la combinaison du csData et de la clock du bus. Ainsi, dès
-qu'on écrit à son adresse mémoire, la fifo charge la donnée présente sur le
-bus.
-
-
-\subsubsection{Le TXcever}
-
-C'est un transmetteur série qui reçoit en entrée les données provenant de la
-fifo. Dès qu'il est vide, il agit sur le signal ckout de la fifo, ce qui
-dépile un élément, et le charge dans le transmetteur, qui peut alors le
-transmettre.
-
-\subsubsection{Le générateur de clock}
-
-C'est un prédiviseur de la fréquence d'horloge du fpga. Il a pour but de
-fournir l'horloge de référence pour le transmetteur (égale à 16 fois le
-baudrate).
-
-Il est paramétrable, pour pouvoir choisir la fréquence utilisée parmis les 4
-baudrates disponibles.
-
-Pour avoir la bonne fréquence en sortie, on doit avoir en entrée une fréquence
-multiple de 16 fois 115200 (le baudrate maxi). Les quartz qui sont utilisables
-sont : 14.7456MHz, 29.4912MHz (14.7456*2), et 44.2368MHz (14.7456*3),
-
-\subsubsection{Registre config}
-
-C'est un registre de 8 bits branché sur le bus, en lecture/écriture, dans
-lequel le PC vient déposer les bits de configuration du port série.
-La sortie du registre controle le générateur de clock (pour fixer le
-baudrate), et le gestionaire d'IRQ.
-
-\subsubsection{Registre flag}
-
-C'est un registre de 8 bits branché sur le bus en lecture seule dans lequel le
-PC vient lire l'état des flags de la fifo. Son entrée est branchée sur les
-sorties flag de la fifo.
-
-\subsubsection{IRQ}
-
-Le gestionaire d'IRQ est tout simplement un activateur d'interruptions. Il
-déclenche des IRQ sur front montant, et ceci à condition que le signal IntEn
-soit activé.
-
-
-\subsection{Fonctionalités et utilisation}
-Ce port série utilise 3 registres : TxData, Flag, et Config
-
-\subsubsection{Txdata}
-Ce registre 8 bits sert à recevoir les données à envoyer. On les écrit
-séquentiellement, et chaque écriture dans ce registre empile la donnée en haut
-de la fifo.
-
-\subsubsection{Flag}
-C'est le registre d'état. il donne essentiellement des informations sur l'état
-de remplissage de la pile de transmision.
-
-Structure :
-\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}
-\hline
-bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0
-\\ \hline
-nom & x & x & x & x & Empty & Full/Int & FLI1 & FLI0
-\\ \hline
-\end{tabular}
-
-\begin{description}
-\item [FL1/FL0] : Fifo Level 1/0. Ces bits donnent le niveau de remplissage de
-la fifo.\\
- \begin{tabular}{|c|c|c|}
- \hline
- FL1/FL0 & Tx de remplissage
- \\ \hline
- 00 & < 25\%
- \\ \hline
- 01 & 25\% < Tx < 50\%
- \\ \hline
- 10 & 20\% < Tx < 75\%
- \\ \hline
- 11 & 75\% < Tx
- \\ \hline
- \end{tabular}
-\item [Full/Int] : indique que la pile est pleine, ce qui déclenche une
-interruption
-\item [Empty] : indique que la pile ET le transmetteur sont vides, que la
-transmission est donc terminée.
-\end{description}
-
-\subsubsection{Config}
-Ce registre sert de configuration pour la transmission.
-
-Structure :
-\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}
-\hline
-bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0
-\\ \hline
-nom & x & x & x & On/Off & Purge & IntEn & BdR1 & BdR0
-\\ \hline
-\end{tabular}
-
-\begin{description}
-\item [BdR1/BdR0] : BaudRate1/0. Ces bits paramètrent la vitesse de
-transmission. \\
- \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}
- \hline
- BdR1/BdR0 & Vitessse
- \\ \hline
- 00 & 9600
- \\ \hline
- 00 & 9600
- \\ \hline
- 01 & 19200
- \\ \hline
- 10 & 57600
- \\ \hline
- 11 & 115200
- \\ \hline
- \end{tabular}
-\item [Int/En] : active ou non l'interruption de fifo pleine
-\item [Purge] : vide la fifo de toutes ses données
-\item [On/Off] : active ou non la transmission
-\end{description}
-
-\subsection{Procédure d'utilisation}
-Pour utiliser ce port série, on doit pouvoir effectuer les actions suivantes :
-
-\begin{itemize}
-\item Mettre le bit On/Off à 1 pour activer la transmission
-\item Paramétrer la vitesse à l'aide des bits BdR1/0
-\item Il est conseillé d'activer l'interruption de fifo pleine en mettant à 1
-le bit IntEn.
-\item Ecriture dans txdata pour charger les données dans la fifo. Elles sont
-alors automatiquement transférées, au plus tôt. Dès que le registre à décalage
-est vide, il dépile le dernier élément de la fifo et le transmet à nouveau.
-\item On peut lire en permanence l'état de la fifo grâce aux bits FL1/0.
-\item Quand la fifo est pleine, le flag Full/Int passe à 1, et le front
-montant de ce bit génère une interruption.
-\item Il est possible de vider la fifo en mettant Purge à 1. Il faut le
-remettre à 0 pour qu'il puisse être à nouveau actif, car la purge de la fifo
-ne s'effectue que sur front montant de ce bit.
-\end{itemize}
-
-
-\subsection{Interfaçage vhdl}
-
-Voici le code vhdl de l'entité txserie :
-\begin{verbatim}
-entity txserie is
-generic(adr : integer);
-constant adr_w : integer :=10;
-port(
- databus: inout std_logic_vector(7 downto 0);
- rw: in std_logic;
- busck: in std_logic;
- rst: in std_logic;
- masterck: in std_logic;
- txout: out std_logic;
- intout: out std_logic;
- csData: in std_logic;
- csFlag: in std_logic;
- csConfig: in std_logic;
- );
-end txserie;
-\end{verbatim}
-
-Voici une description de ces signaux :
-
-\begin{description}
-\item [databus] : bus de données
-\item [rw] : ligne Read/Write\_
-\item [busck] : horloge bus
-\item [rst] : patte de reset
-\item [masterck] : horloge générale du fpga
-\item [txout] : patte de sortie série
-\item [intout] : sortie d'interruption
-\item [csData] : chip select du registre de data
-\item [csFlag] : chip select du registre de flag
-\item [csConfig] : chip select du registre de configuration
-\end{description}
-
-
-
-
-
-% Deuxième partie : le RXserie
-
-\section{Le RXserie}
-\subsection{Cahier des charges}
-Le cahier des charges du récepteur série est le suivant :
-
-\begin{itemize}
-\item Réception série 8 bits, 1 start, 2 stop
-\item Vitesse : paramétrable 9600 et 115200 bauds
-\item Fifo de stockage des données reçues
-\item Interruption activable signalant que la fifo est pleine
-\item Interruption activable signalant qu'on a reçu une donnée
-\end{itemize}
-
-
-\subsection{Schéma-bloc}
-
-Le schéma modulaire est visible sur la figure \ref{schemarxserie} page \pageref{schemarxserie}.
-
-\begin{figure}[htbp]
-\caption{Schéma-bloc du RXserie}
-\includegraphics[width=\textwidth]{images/rxserie.pdf}
-\label{schemarxserie}
-\end{figure}
-
-
-\subsection{Descritpion des modules}
-\subsubsection{Le RXcever}
-
-C'est un récepteur série qui présente ses données à l'entrée de la fifo
-Dès qu'il a reçu un octet, il agit sur le signal fifockin de la fifo
-ce qui empile l'octet reçu.
-
-\subsubsection{Autres modules}
-
-Les autres modules utilisés sont les mêmes que pour le transmetteur. Voir
-chapitre \ref{descriptmodules}.
-
-
-\subsection{Fonctionalités et utilisation}
-Ce port série utilise 3 adresses mémoire :
-\subsubsection{Rxdata}
-Ce registre 8 bits permet de récupérer les données reçues. On les lit
-séquentiellement, et chaque lecture dans ce registre dépile la donnée en bas
-de la fifo.
-
-\subsubsection{Flag}
-C'est le registre d'état. Il donne essentiellement des informations sur l'état
-de remplissage de la pile de réception.
-
-Structure :
-\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}
-\hline
-bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 \\
-\hline
-nom & x & x & x & x & DR & FFull & FL1 & FL0 \\
-\hline
-\end{tabular}
-
-\begin{description}
-\item [FL1/FL0] : Fifo Level 1/0. Ces bits donnent le niveau de remplissage de
-la fifo. \\
- \begin{tabular}{|c|c|c|}
- \hline
- FL1/FL0 & Tx de remplissage
- \\ \hline
- 00 & < 25\%
- \\ \hline
- 01 & 25\% < Tx < 50\%
- \\ \hline
- 10 & 20\% < Tx < 75\%
- \\ \hline
- 11 & 75\% < Tx
- \\ \hline
- \end{tabular}
-\item [FFull] : indique que la pile est pleine. Chaque front montant de ce
-bit déclenche l'interruption FifoFullInt
-\item [DR] : DataReady. Indique que la fifo n'est plus vide, et donc qu'une
-donnée est arrivée dans le récepteur. Chaque front montant de ce bit déclenche
-l'interruption DRInt
-\end{description}
-
-\subsubsection{Config}
-Ce registre sert de configuration pour la transmission.
-
-Structure
-\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}
-\hline
-bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0
-\\ \hline
-nom & x & x & x & On/Off & DRIE & FFIE & BdR1 & BdR0
-\\ \hline
-\end{tabular}
-
-\begin{description}
-\item [BdR1/BdR0] : BaudRate1/0. Ces bits paramètrent la vitesse de
-transmission. \\
- \begin{tabular}{|c|c|c|}
- \hline
- BdR1/BdR0 & Vitessse
- \\ \hline
- 00 & 9600
- \\ \hline
- 01 & 19200
- \\ \hline
- 10 & 57600
- \\ \hline
- 11 & 115200
- \\ \hline
- \end{tabular}
-\item [FFIF] : FifoFull-Int-Enable. Active ou non l'interruption FifoFull
-(actif à 1)
-\item [DRIE] : DataReady-Int-Enable. Active ou non l'interruption
-DataReady (actif à 1)
-\item [On/Off] : active ou non la réception de données
-\end{description}
-
-\subsection{Procédure d'utilisation}
-Pour utiliser ce port série, on doit pouvoir effectuer les actions suivantes :
-\begin{itemize}
-\item Mettre le bit On/Off à 1 pour activer la réception des données.
-\item Paramétrer la vitesse à l'aide des bits BdR1/0
-\item Il est conseillé d'activer l'interruption de fifo pleine (FFInt) en
-mettant à 1 le bit FFIE.
-\item On peut également activer l'interruption de donnée reçue DRInt en
-mettant à 1 le bit DRIE.
-\item Tester si une donnée est présente dans le buffer en testant le bit DR.
-S'il est à 1, lire la donnée dans rxdata. La donnée est alors automatiquement
-dépilée de la fifo.
-\item On peut lire en permanence l'état de la fifo grâce aux bits FL1/0.
-\item Quand la fifo est pleine, le flag FFI passe à 1, et le front
-montant de ce bit génère une interruption. Il faut alors lire les 512 octets
-de la fifo pour la vider.
-\end{itemize}
-
-
-
-\subsection{Interfaçage vhdl}
-
-Voici le code vhdl de l'entité rxserie :
-\begin{verbatim}
-entity rxserie is
-generic(adr : integer);
-constant adr_w : integer :=10;
-port(
- databus: inout std_logic_vector(7 downto 0);
- rw: in std_logic;
- busck: in std_logic;
- rst: in std_logic;
- masterck: in std_logic;
- rxin: in std_logic;
- DRIout: out std_logic;
- FFIout: out std_logic;
- csData: in std_logic;
- csFlag: in std_logic;
- csConfig: in std_logic
- );
-end rxserie;
-\end{verbatim}
-
-\begin{description}
-\item [databus] : bus de données
-\item [rw] : ligne Read/Write\_
-\item [busck] : horloge bus
-\item [rst] : patte de reset
-\item [masterck] : horloge générale du fpga
-\item [rxin] : patte de sortie série
-\item [DRIout] : sortie d'interruption DRInt
-\item [FFIout] : sortie d'interruption FFInt
-\item [csData] : chip select du registre de data
-\item [csFlag] : chip select du registre de flag
-\item [csConfig] : chip select du registre de configuration
-\end{description}
-
-