\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.


