From 273b35dc4e1accf4f3c702cdd5b2869305e8e7ef Mon Sep 17 00:00:00 2001 From: prot Date: Tue, 24 Feb 2004 10:05:25 +0000 Subject: Ajout des rapport de txserie et rxserie --- 2004/n/fpga/doc/dcd/portserie/rxserie.tex | 145 ++++++++++++++++++++++++++++++ 2004/n/fpga/doc/dcd/portserie/txserie.tex | 139 ++++++++++++++++++++++++++++ 2 files changed, 284 insertions(+) create mode 100644 2004/n/fpga/doc/dcd/portserie/rxserie.tex create mode 100644 2004/n/fpga/doc/dcd/portserie/txserie.tex (limited to '2004/n/fpga/doc') diff --git a/2004/n/fpga/doc/dcd/portserie/rxserie.tex b/2004/n/fpga/doc/dcd/portserie/rxserie.tex new file mode 100644 index 0000000..ae840f6 --- /dev/null +++ b/2004/n/fpga/doc/dcd/portserie/rxserie.tex @@ -0,0 +1,145 @@ +\section{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} + +\section{Architecture globale} +Voici le schéma modulaire du récepteur : + +\section{Utilisation} +Ce port série utilise 3 adresses mémoire : +\subsection{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. + +Adresse : \textit{adresse\_module} + 0 + +\subsection{Flag} +C'est le registre d'état. Il donne essentiellement des informations sur l'état +de remplissage de la pile de réception. + +Adresse : \textit{adresse\_module} + 1 + +Structure : +\begin{tabular} +bit ! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! 1 ! 0 +nom ! x ! x ! x ! x ! FNE ! FFull ! FL1 ! FL0 +\end{tabular} + +Signification des bits : +\begin{description} +\item [FL1/FL0] : Fifo Level 1/0. Ces bits donnent le niveau de remplissage de +la fifo. + \begin{tabular} + FL1/FL0 ! Tx de remplissage + 00 ! < 25\% + 01 ! 25\% < Tx < 50\% + 10 ! 20\% < Tx < 75\% + 11 ! 75\% < Tx + \end{tabular} +\item [FFull] : indique que la pile est pleine. Chaque front montant de ce +bit déclenche l'interruption FifoFullInt +\item [FNE] : FifoNonEmpty. Indique que la fifo n'est pas vide, et donc qu'une +donnée est arrivée dans le récepteur. Chaque front montant de ce bit déclenche +l'interruption FifiNonEmptyInt +\end{description} + +\subsection{Config} +Ce registre sert de configuration pour la transmission. + +Adresse : \textit{adresse\_module} + 2 + +Structure +\begin{tabular} +bit ! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! 1 ! 0 +nom ! x ! x ! x ! On/Off ! FNEIE ! FFIE ! BdR1 ! BdR0 +\end{tabular} + +Signification des bits : +\begin{description} +\item [BdR1/BdR0] : BaudRate1/0. Ces bits paramètrent la vitesse de +transmission. + \begin{tabular} + BdR1/BdR0 ! Vitessse + 00 ! 9600 + 01 ! 19200 + 10 ! 57600 + 11 ! 115200 + \end{tabular} +\item [FFIF] : FifoFull-Int-Enable. Active ou non l'interruption FifoFull +(actif à 1) +\item [FNEIE] : FifiNonEmpty-Int-Enable. Active ou non l'interruption +FifiNonEmpty (actif à 1) +\item [On/Off] : active ou non la réception de données +\end{description} + +\subsection{Utilisation} +\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 FNEInt en +mettant à 1 le bit FNEIE. +\item Tester si une donnée est présente dans le buffer en testant le bit FNE. +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} + + +\section{Interfaçage} + +Voici le schéma de l'entité txserie : + +Voici le code vhdl de l'entité rxserie : +\begin{verbatim} +entity rxserie is +generic(adr : integer); +constant adr_w : integer :=10; +port( + adrbus: in std_logic_vector((adr_w - 1) downto 0); + 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; + FNEIout: out std_logic; + FFIout: out std_logic; + ); +end rxserie; +\end{verbatim} + +\begin{description} +\item [adr : integer] : paramètre générique entier définissant l'adresse du +module (notée \textit{adress\_module}) +\item [adr\_w] : largeur du bus d'adresse. le code peut ainsi être modifié +pour s'adapter à plusieurs largeurs de bus d'adresse. +\item [adrbus] : bus d'adresse +\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 [FNEIout] : sortie d'interruption FNEInt +\item [FFIout] : sortie d'interruption FFInt +\end{description} + + +\section{Conclusion} +Ce récepteur est polyvalent, il intègre les fonctions les plus utilisées, +et permet de les utiliser facilement. + + diff --git a/2004/n/fpga/doc/dcd/portserie/txserie.tex b/2004/n/fpga/doc/dcd/portserie/txserie.tex new file mode 100644 index 0000000..20648fd --- /dev/null +++ b/2004/n/fpga/doc/dcd/portserie/txserie.tex @@ -0,0 +1,139 @@ +\section{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} + +\section{Architecture globale} +Voici le schéma modulaire du transmetteur : + +\section{Utilisation} +Ce port série utilise 3 adresses mémoire : +\subsection{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. + +Adresse : \textit{adresse\_module} + 0 + +\subsection{Flag} +C'est le registre d'état. il donne essentiellement des informations sur l'état +de remplissage de la pile de transmision. + +Adresse : \textit{adresse\_module} + 1 + +Structure : +\begin{tabular} +bit ! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! 1 ! 0 +nom ! x ! x ! x ! x ! Empty ! Full/Int ! FLI1 ! FLI0 +\end{tabular} + +Signification des bits : +\begin{description} +\item [FL1/FL0] : Fifo Level 1/0. Ces bits donnent le niveau de remplissage de +la fifo. + \begin{tabular} + FL1/FL0 ! Tx de remplissage + 00 ! < 25\% + 01 ! 25\% < Tx < 50\% + 10 ! 20\% < Tx < 75\% + 11 ! 75\% < Tx + \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} + +\subsection{Config} +Ce registre sert de configuration pour la transmission. + +Adresse : \textit{adresse\_module} + 2 + +Structure +\begin{tabular} +bit ! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! 1 ! 0 +nom ! x ! x ! x ! On/Off ! Purge ! IntEn ! BdR1 ! BdR0 +\end{tabular} + +Signification des bits : +\begin{description} +\item [BdR1/BdR0] : BaudRate1/0. Ces bits paramètrent la vitesse de +transmission. + \begin{tabular} + BdR1/BdR0 ! Vitessse + 00 ! 9600 + 01 ! 19200 + 10 ! 57600 + 11 ! 115200 + \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{Utilisation} +\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} + + +\section{Interfaçage} + +Voici le schéma de l'entité txserie : + +Voici le code vhdl de l'entité txserie : +\begin{verbatim} +entity txserie is +generic(adr : integer); +constant adr_w : integer :=10; +port( + adrbus: in std_logic_vector((adr_w - 1) downto 0); + 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; + ); +end txserie; +\end{verbatim} + +\begin{description} +\item [adr : integer] : paramètre générique entier définissant l'adresse du +module (notée \textit{adress\_module}) +\item [adr\_w] : largeur du bus d'adresse. le code peut ainsi être modifié +pour s'adapter à plusieurs largeurs de bus d'adresse. +\item [adrbus] : bus d'adresse +\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 +\end{description} + + +\section{Conclusion} +Ce transmetteur est polyvalent, il intègre les fonctions les plus utilisées, +et permet de les utiliser facilement. + + -- cgit v1.2.3