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