summaryrefslogtreecommitdiff
path: root/2004/n/fpga/src/portserie/TXSERIE.TEX
blob: 20648fd71857050cef92232abcbee1e3fc92c7ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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.