summaryrefslogtreecommitdiff
path: root/2004/n/fpga/doc/dcd/portserie/rxserie.tex
blob: ae840f688a8a9456fbdd58fbf8096370b21b4c61 (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
140
141
142
143
144
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.