1 |
4 |
ktt1 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
2 |
|
|
%% _ _ __ ____ %%
|
3 |
|
|
%% / / | | / _| | __| %%
|
4 |
|
|
%% | |_| | _ _ / / | |_ %%
|
5 |
|
|
%% | _ | | | | | | | | _| %%
|
6 |
|
|
%% | | | | | |_| | \ \_ | |__ %%
|
7 |
|
|
%% |_| |_| \_____| \__| |____| microLab %%
|
8 |
|
|
%% %%
|
9 |
|
|
%% Bern University of Applied Sciences (BFH) %%
|
10 |
|
|
%% Quellgasse 21 %%
|
11 |
|
|
%% Room HG 4.33 %%
|
12 |
|
|
%% 2501 Biel/Bienne %%
|
13 |
|
|
%% Switzerland %%
|
14 |
|
|
%% %%
|
15 |
|
|
%% http://www.microlab.ch %%
|
16 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
17 |
|
|
\chapter{Bus transactions}
|
18 |
|
|
\label{appen:bus}
|
19 |
|
|
This appendix describes the timing diagram of valid bus transactions and
|
20 |
|
|
transactions containing errors. Although the timing diagrams are shown for a
|
21 |
|
|
three datum burst transaction, it also reflects the single datum transaction.
|
22 |
|
|
%-----------------------------------------------------------------------------
|
23 |
|
|
\section{Write transactions}
|
24 |
|
|
In the write transaction the data flows from the user FPGA towards the {\sc
|
25 |
|
|
GECKO4com}. The timing diagram of a correct write transaction is shown in
|
26 |
|
|
Figure~\ref{fig:write correct}.
|
27 |
|
|
A write transaction is initiated by activating the $\overline{\textbf{start
|
28 |
|
|
trans}}$ signal and sending the \emph{Transmission Control Word (TCW)} (see
|
29 |
|
|
Chapter~\ref{sec:bus prot} and Figure~\ref{fig:TCW}) over the \textbf{data
|
30 |
|
|
cntrl} lines.\\
|
31 |
|
|
\textit{Important: All signals are active for one clock period of the
|
32 |
|
|
\textbf{bus clock}.\important}
|
33 |
|
|
\begin{figure}[hb]
|
34 |
|
|
\centering%
|
35 |
|
|
\includegraphics[width=\columnwidth]{figs/write_transaction_no_bus_error}
|
36 |
|
|
\caption{A correct write transaction that causes no bus error. Here a 3-short
|
37 |
|
|
burst transaction is shown. The blue lines represent tri-stated FPGA pins.}
|
38 |
|
|
\label{fig:write correct}
|
39 |
|
|
\end{figure}
|
40 |
|
|
\\
|
41 |
|
|
After the initiation of the write transaction the user FPGA has to wait for the
|
42 |
|
|
{\sc GECKO4com} to activate the $\overline{\textbf{start send}}$ signal
|
43 |
|
|
(dependency \ding{'312}). Sending data before this dependency will result in
|
44 |
|
|
unpredictable results. After the reception of the $\overline{\textbf{start
|
45 |
|
|
send}}$ signal the user FPGA may start transmitting the data payload(shown by
|
46 |
|
|
\ding{'313}). The data payload may be a continues stream or chunk-ed into parts.
|
47 |
|
|
For each datum the user FPGA has to put the datum on the \textbf{data cntrl}
|
48 |
|
|
lines and activate both the $\overline{\textbf{valid lo}}$ and
|
49 |
|
|
$\overline{\textbf{valid hi}}$ lines to indicate valid data. After the sending
|
50 |
|
|
of the last datum, the user FPGA has to end the transaction by activating the
|
51 |
|
|
$\overline{\textbf{end trans}}$ signal as shown at \ding{'314}. The
|
52 |
|
|
$\overline{\textbf{end trans}}$ signal may be activated after or in parallel
|
53 |
|
|
with the sending of the last datum of the payload.\\
|
54 |
|
|
\textit{Important: the {\sc GECKO4com} does not check whether or not the user
|
55 |
|
|
FPGA sends the correct number of data. It assumes that the user FPGA does send
|
56 |
|
|
the number of data as announced in the Transmission Control Word (TCW).\important}
|
57 |
|
|
%-----------------------------------------------------------------------------
|
58 |
|
|
\section{Write transaction aborts}
|
59 |
|
|
Write transactions can be aborted under the conditions described in
|
60 |
|
|
Chapter~\ref{sec:mem map}. An aborted transaction is indicated by the {\sc
|
61 |
|
|
GECKO4com} by the activation of the $\overline{\textbf{error}}$ line. This
|
62 |
|
|
condition can occur anywhere during the transaction. Figure~\ref{fig:write
|
63 |
|
|
error 1} and Figure~\ref{fig:write error 2} show two examples of aborted write
|
64 |
|
|
transactions.
|
65 |
|
|
\begin{figure}[pt]
|
66 |
|
|
\centering%
|
67 |
|
|
\includegraphics[width=\columnwidth]{figs/write_transaction_bus_error_1}
|
68 |
|
|
\caption{An aborted write transaction before the reception of the
|
69 |
|
|
$\overline{\textbf{start trans}}$ signal.}
|
70 |
|
|
\label{fig:write error 1}
|
71 |
|
|
\end{figure}
|
72 |
|
|
\begin{figure}[pb]
|
73 |
|
|
\centering%
|
74 |
|
|
\includegraphics[width=\columnwidth]{figs/write_transaction_bus_error_2}
|
75 |
|
|
\caption{An aborted write transaction after the reception of the
|
76 |
|
|
$\overline{\textbf{start trans}}$ signal.}
|
77 |
|
|
\label{fig:write error 2}
|
78 |
|
|
\end{figure}
|
79 |
|
|
After the reception of the activated $\overline{\textbf{error}}$ signal the user
|
80 |
|
|
FPGA is required to activate the $\overline{\textbf{end trans}}$ signal to end
|
81 |
|
|
the transaction (as shown in dependency \ding{'315}).\\
|
82 |
|
|
\textit{Important: Failing to adhere to dependency \ding{'315} may leave the bus
|
83 |
|
|
in an undefined state.\important}
|
84 |
|
|
%-----------------------------------------------------------------------------
|
85 |
|
|
\section{Read transactions}
|
86 |
|
|
Simular to the write transaction a read transaction is initiated by activating the $\overline{\textbf{start
|
87 |
|
|
trans}}$ signal and sending the \emph{Transmission Control Word (TCW)} (see
|
88 |
|
|
Chapter~\ref{sec:bus prot} and Figure~\ref{fig:TCW}) over the \textbf{data
|
89 |
|
|
cntrl} lines. As during the read transaction the data has to flow from the {\sc
|
90 |
|
|
GECKO4com} to the user FPGA the controlling of the bi-directional signals, shown
|
91 |
|
|
in Table~\ref{tab:gecko4 bus signals}, need special attention.
|
92 |
|
|
Figure~\ref{fig:read correct} depicts a none-aborted read transaction for a
|
93 |
|
|
burst of three.
|
94 |
|
|
\begin{figure}[t]
|
95 |
|
|
\centering%
|
96 |
|
|
\includegraphics[width=\columnwidth]{figs/read_transaction_no_bus_error}
|
97 |
|
|
\caption{A correct read transaction that causes no bus error. Here a 3-short
|
98 |
|
|
burst transaction is shown. The blue lines represent tri-stated FPGA pins.}
|
99 |
|
|
\label{fig:read correct}
|
100 |
|
|
\end{figure}
|
101 |
|
|
One cycle after the initialization of a read transaction (\ding{206}) the user
|
102 |
|
|
FPGA has to tristate all bi-directional signals. The user FPGA has to keep the
|
103 |
|
|
bi-directional signals in tristate up to one cycle after receiving an activated
|
104 |
|
|
$\overline{\textbf{end trans}}$ signal (\ding{208}).\\
|
105 |
|
|
\textit{Important: Failing to adhere to dependency \ding{206} and dependency \ding{208} may
|
106 |
|
|
destroy the IOB buffers of either or both the user FPGA and the {\sc GECKO4com}
|
107 |
|
|
FPGA!\important}\\
|
108 |
|
|
Two cycles after the reception of a read transaction (\ding{206}) the {\sc GECKO4com} will
|
109 |
|
|
start driving the bi-directional signals. The {\sc GECKO4com} will send the
|
110 |
|
|
requested number of shorts in one continues burst (\ding{207}) over the \textbf{data cntrl}
|
111 |
|
|
lines and activates the $\overline{\textbf{valid low}}$ and
|
112 |
|
|
$\overline{\textbf{valid low}}$ as described in Chapter~\ref{sec:bus prot}. During the transmission of the last datum of the read transaction
|
113 |
|
|
the {\sc GECKO4com} ends the transmission by activation of the
|
114 |
|
|
$\overline{\textbf{end trans}}$ signal. The \textbf{bus clock} cycle after the
|
115 |
|
|
activation of the $\overline{\textbf{end trans}}$ signal the {\sc GECKO4com}
|
116 |
|
|
puts all the bi-directional signals in three-state.\newpage
|
117 |
|
|
\textit{Important: The user FPGA has to make sure it has enough buffer capacity
|
118 |
|
|
to store the requested amount of data, as there is no way to interrupt the data
|
119 |
|
|
flow coming from the {\sc GECKO4com}.\important}
|
120 |
|
|
%-----------------------------------------------------------------------------
|
121 |
|
|
\section{Read transactions abort}
|
122 |
|
|
Read transactions can be aborted under the conditions described in
|
123 |
|
|
Chapter~\ref{sec:mem map}. An aborted transaction is indicated by the {\sc
|
124 |
|
|
GECKO4com} by the activation of the $\overline{\textbf{error}}$ line together
|
125 |
|
|
with the activation of the $\overline{\textbf{end trans}}$ signal (\ding{209}).
|
126 |
|
|
Figure~\ref{fig:read error} shows an aborted read transaction.
|
127 |
|
|
\begin{figure}[t]
|
128 |
|
|
\centering%
|
129 |
|
|
\includegraphics[width=\columnwidth]{figs/read_transaction_bus_error}
|
130 |
|
|
\caption{An aborted read transaction. The blue lines represent tri-stated FPGA pins.}
|
131 |
|
|
\label{fig:read error}
|
132 |
|
|
\end{figure}
|