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