Some more documentation...
authorFlorian Pose <fp@igh-essen.com>
Thu, 14 Aug 2008 15:49:00 +0000
changeset 1203 acb649738601
parent 1202 91d190223daa
child 1204 4e3e8400c338
Some more documentation...
documentation/ethercat_doc.tex
documentation/graphs/Makefile
documentation/graphs/fsm_change.dot
documentation/graphs/fsm_pdo_conf.dot
documentation/graphs/fsm_pdo_entry_conf.dot
documentation/graphs/fsm_pdo_entry_read.dot
documentation/graphs/fsm_pdo_read.dot
documentation/graphs/fsm_sii.dot
documentation/images/Makefile
documentation/images/fsm-change.fig
documentation/images/fsm-sii.fig
--- a/documentation/ethercat_doc.tex	Wed Aug 13 15:51:26 2008 +0000
+++ b/documentation/ethercat_doc.tex	Thu Aug 14 15:49:00 2008 +0000
@@ -603,7 +603,7 @@
 \begin{figure}[htbp]
   \centering
   \includegraphics[width=.8\textwidth]{images/app-config}
-  \caption{Master configuration structures}
+  \caption{Master Configuration}
   \label{fig:app-config}
 \end{figure}
 
@@ -658,26 +658,12 @@
 \chapter{Ethernet Devices}
 \label{sec:devices}
 
-%   Device Interface
-%   Device Modules
-%   Network Driver Basics
-%   EtherCAT Network Drivers
-%   Device Selection
-%   The Device Interface
-%   Patching Network Drivers
-
-The EtherCAT protocol is based on the Ethernet standard, so the master relies
-on standard Ethernet hardware to communicate with the bus.
+The EtherCAT protocol is based on the Ethernet standard, so a master relies on
+standard Ethernet hardware to communicate with the bus.
 
 The term \textit{device} is used as a synonym for Ethernet network interface
 hardware. There are device driver modules that handle Ethernet hardware, which
-the master can use to connect to an EtherCAT bus.
-
-Section~\ref{sec:networkdrivers} offers an overview of general Linux
-network driver modules, while section~\ref{sec:requirements} will show
-the requirements to an EtherCAT-enabled network driver. Finally,
-sections~\ref{sec:seldev} to~\ref{sec:patching} show how to fulfill
-these requirements and implement such a driver module.
+a master can use to connect to an EtherCAT bus.
 
 %------------------------------------------------------------------------------
 
@@ -725,7 +711,7 @@
 for received frames is set, frame data has to be copied from hardware
 to kernel memory and passed to the network stack.
 
-\paragraph{The \lstinline+net_device+ structure}
+\paragraph{The \lstinline+net_device+ Structure}
 \index{net\_device}
 
 The driver registers a \lstinline+net_device+ structure for each device to
@@ -770,7 +756,7 @@
 The actual registration is done with the \lstinline+register_netdev()+ call,
 unregistering is done with \lstinline+unregister_netdev()+.
 
-\paragraph{The netif Interface}
+\paragraph{The \lstinline+netif+ Interface}
 \index{netif}
 
 All other communication in the direction interface $\to$ network stack is done
@@ -814,7 +800,7 @@
 %------------------------------------------------------------------------------
 
 \section{EtherCAT Device Drivers}
-\label{sec:requirements}
+\label{sec:ethercatdrivers}
 
 There are a few requirements for Ethernet network devices to function as
 EtherCAT devices, when connected to an EtherCAT bus.
@@ -915,7 +901,7 @@
 
 %------------------------------------------------------------------------------
 
-\section{The Device Interface}
+\section{EtherCAT Device Interface}
 \label{sec:ecdev}
 \index{Device interface}
 
@@ -1370,8 +1356,8 @@
 (re-)configured.
 
 \item[Request handling] Requests (either originating from the application or
-from external sources) are handled. This can be SII accesses, Sdo accesses,
-etc.
+from external sources) are handled. A request is a job that the master shall
+process asynchronously, for example an SII access, Sdo access, or similar.
 
 \end{description}
 
@@ -1415,23 +1401,14 @@
 State change FSM (see section~\ref{sec:fsm-change}) to enable mailbox
 communication and read the Pdo configuration via CoE.
 
-\item[Pdos] The Pdos are read via CoE (if supported) using the Pdo FSM (see
-section~\ref{sec:fsm-pdo}). If this is successful, the Pdo information from
-the SII (if any) is overwritten.
+\item[Pdos] The Pdos are read via CoE (if supported) using the Pdo Reading FSM
+(see section~\ref{sec:fsm-pdo}). If this is successful, the Pdo information
+from the SII (if any) is overwritten.
 
 \end{description}
 
 %------------------------------------------------------------------------------
 
-%     SII
-%     Pdo assign/mapping
-%   Slave configuration
-%     State change
-%     Pdo assign/mapping
-%   CoE upload/download/information
-
-%------------------------------------------------------------------------------
-
 \section{The Slave Configuration State Machine}
 \label{sec:fsm-conf}
 \index{FSM!Slave Configuration}
@@ -1499,68 +1476,41 @@
 
 \begin{figure}[htbp]
   \centering
-  \includegraphics[width=.9\textwidth]{images/fsm-change} % FIXME
+  \includegraphics[width=.6\textwidth]{graphs/fsm_change}
   \caption{Transition Diagram of the State Change State Machine}
   \label{fig:fsm-change}
 \end{figure}
 
-% FIXME
-
 \begin{description}
-\item[START] The beginning state, where a datagram with the state
-  change command is written to the slave's ``AL Control Request''
-  attribute. Nothing can fail. $\rightarrow$~CHECK
-
-\item[CHECK] After the state change datagram has been sent, the ``AL
-  Control Response'' attribute is queried with a second datagram.
-  $\rightarrow$~STATUS
-
-\item[STATUS] The read memory contents are evaluated: While the
-  parameter \textit{State} still contains the old slave state, the
-  slave is busy with reacting on the state change command. In this
-  case, the attribute has to be queried again.
-  $\rightarrow$~STATUS
-
-  In case of success, the \textit{State} parameter contains the new
-  state and the \textit{Change} bit is cleared. The slave is in the
-  requested state.  $\rightarrow$~END
-
-  If the slave can not process the state change, the \textit{Change}
-  bit is set: Now the master tries to get the reason for this by
-  querying the \textit{AL Status Code} parameter.
-  $\rightarrow$~CODE
-
-\item[END] If the state machine ends in this state, the slave's state
-  change has been successful.
-
-\item[CODE] The status code query has been sent. Reading the
-  \textit{AL Status Code} might fail, because not all slaves support
-  this parameter. Anyway, the master has to acknowledge the state
-  change error by writing the current slave state to the ``AL Control
-  Request'' attribute with the \textit{Acknowledge} bit set.
-  $\rightarrow$~ACK
-
-\item[ACK] After that, the ``AL Control Response'' attribute is
-  queried for the state of the acknowledgement.
-  $\rightarrow$~CHECK ACK
-
-\item[CHECK ACK] If the acknowledgement has been accepted by the
-  slave, the old state is kept. Still, the state change was
-  unsuccessful. $\rightarrow$~ERROR
-
-  If the acknowledgement is ignored by the slave, a timeout happens.
-  In any case, the overall state change was unsuccessful.
-  $\rightarrow$~ERROR
-
-  If there is still now response from the slave, but the timer did not
-  run out yet, the slave's ``AL Control Response'' attribute is
-  queried again.  $\rightarrow$~CHECK ACK
-
-\item[ERROR] If the state machine ends in this state, the slave's
-  state change was unsuccessful.
+
+\item[Start] The new application-layer state is requested via the ``AL Control
+Request'' register (see ~\cite[section 5.3.1]{alspec}).
+
+\item[Check for Response] Some slave need some time to respond to an AL state
+change command, and do not respond for some time. For this case, the command
+is issued again, until it is acknowledged.
+
+\item[Check AL Status] If the AL State change datagram was acknowledged, the
+``AL Control Response'' register (see~\cite[section 5.3.2]{alspec}) must be
+read out until the slave changes the AL state.
+
+\item[AL Status Code] If the slave refused the state change command, the
+reason can be read from the ``AL Status Code'' field in the ``AL State
+Changed'' registers (see~\cite[section 5.3.3]{alspec}).
+
+\item[Acknowledge State] If the state change was not successful, the master
+has to acknowledge the old state by writing to the ``AL Control request''
+register again.
+
+\item[Check Acknowledge] After sending the acknowledge command, it has to read
+out the ``AL Control Response'' register again.
 
 \end{description}
 
+The ``start\_ack'' state is a shortcut in the state machine for the case, that
+the master wants to acknowledge a spontaneous AL state change, that was not
+requested.
+
 %------------------------------------------------------------------------------
 
 \section{The SII State Machine}
@@ -1573,65 +1523,106 @@
 
 \begin{figure}[htbp]
   \centering
-  \includegraphics[width=.9\textwidth]{images/fsm-sii} % FIXME
+  \includegraphics[width=.5\textwidth]{graphs/fsm_sii}
   \caption{Transition Diagram of the SII State Machine}
   \label{fig:fsm-sii}
 \end{figure}
 
-% FIXME
+This is how the reading part of the state machine works:
 
 \begin{description}
-\item[READ\_START] The beginning state for reading access, where the
-  read request and the requested address are written to the SII
-  attribute. Nothing can fail up to now.
-  $\rightarrow$~READ\_CHECK
-
-\item[READ\_CHECK] When the SII read request has been sent
-  successfully, a timer is started. A check/fetch datagram is issued,
-  that reads out the SII attribute for state and data.
-  $\rightarrow$~READ\_FETCH
-
-\item[READ\_FETCH] Upon reception of the check/fetch datagram, the
-  \textit{Read Operation} and \textit{Busy} parameters are checked:
-  \begin{itemize}
-  \item If the slave is still busy with fetching E$^2$PROM data into
-    the interface, the timer is checked. If it timed out, the reading
-    is aborted ($\rightarrow$~ERROR), if not, the check/fetch datagram
-    is issued again. $\rightarrow$~READ\_FETCH
-
-  \item If the slave is ready with reading data, these are copied from
-    the datagram and the read cycle is completed.
-    $\rightarrow$~END
-  \end{itemize}
+
+\item[Start Reading] The read request and the requested word address are
+written to the SII attribute.
+
+\item[Check Read Command] If the SII read request command has been
+acknowledged, a timer is started. A datagram is issued, that reads out the SII
+attribute for state and data.
+
+\item[Fetch Data] If the read operation is still busy (the SII is usually
+implemented as an E$^2$PROM), the state is read again. Otherwise the data are
+copied from the datagram.
+
 \end{description}
 
-The write access states behave nearly the same:
+The writing part works nearly similar:
 
 \begin{description}
-\item[WRITE\_START] The beginning state for writing access,
-  respectively. A write request, the target address and the data word
-  are written to the SII attribute. Nothing can fail.
-  $\rightarrow$~WRITE\_CHECK
-
-\item[WRITE\_CHECK] When the SII write request has been sent
-  successfully, the timer is started. A check datagram is issued, that
-  reads out the SII attribute for the state of the write operation.
-  $\rightarrow$~WRITE\_CHECK2
-
-\item[WRITE\_CHECK2] Upon reception of the check datagram, the
-  \textit{Write Operation} and \textit{Busy} parameters are checked:
-  \begin{itemize}
-  \item If the slave is still busy with writing E$^2$PROM data, the
-    timer is checked. If it timed out, the operation is aborted
-    ($\rightarrow$~ERROR), if not, the check datagram is issued again.
-    $\rightarrow$~WRITE\_CHECK2
-  \item If the slave is ready with writing data, the write cycle is
-    completed. $\rightarrow$~END
-  \end{itemize}
+
+\item[Start Writing] A write request, the target address and the data word are
+written to the SII attribute.
+
+\item[Check Write Command] If the SII write request command has been
+acknowledged, a timer is started. A datagram is issued, that reads out the SII
+attribute for the state of the write operation.
+
+\item[Wait while Busy] If the write operation is still busy (determined by a
+minimum wait time and the state of the busy flag), the state machine remains in
+this state to avoid that another write operation is issued too early.
+
 \end{description}
 
 %------------------------------------------------------------------------------
 
+\section{The Pdo State Machines}
+\label{sec:fsm-pdo}
+\index{FSM!Pdo}
+
+The Pdo state machines are a set of state machines that read or write the Pdo
+assignment and the Pdo mapping via the ``CoE Communication Area'' described in
+\cite[section 5.6.7.4]{alspec}. For the object access, the
+CANopen-over-EtherCAT access primitives are used (see
+section~\ref{sec:coeimp}), so the slave must support the CoE mailbox protocol.
+
+\paragraph{Pdo Reading FSM} This state machine (fig.~\ref{fig:fsm-pdo-read})
+has the purpose to read the complete Pdo configuration of a slave. It reads
+the Pdo assignment for each Sync Manager and uses the Pdo Entry Reading FSM
+(fig.~\ref{fig:fsm_pdo_entry_read}) to read the mapping for each assigned Pdo.
+
+\begin{figure}[htbp]
+  \centering
+  \includegraphics[width=.4\textwidth]{graphs/fsm_pdo_read}
+  \caption{Transition Diagram of the Pdo Reading State Machine}
+  \label{fig:fsm-pdo-read}
+\end{figure}
+
+Basically it reads the every Sync manager's Pdo assignment Sdo's
+(\lstinline+0x1C1x+) number of elements to determine the number of assigned
+Pdos for this sync manager and then reads out the subindices of the Sdo to get
+the assigned Pdo's indices. When a Pdo index is read, the Pdo Entry Reading
+FSM is executed to read the Pdo's mapped Pdo entries.
+
+\paragraph{Pdo Entry Reading FSM} This state machine
+(fig.~\ref{fig:fsm_pdo_entry_reading}) reads the Pdo mapping (the Pdo entries)
+of a Pdo. It reads the respective mapping Sdo (\lstinline+0x1600+ -
+\lstinline+0x17ff+, or \lstinline+0x1a00+ - \lstinline+0x1bff+) for the given
+Pdo by reading first the subindex zero (number of elements) to determine the
+number of mapped Pdo entries. After that, each subindex is read to get the
+mapped Pdo entry index, subindex and bit size.
+
+\begin{figure}[htbp]
+  \centering
+  \includegraphics[width=.4\textwidth]{graphs/fsm_pdo_entry_read}
+  \caption{Transition Diagram of the Pdo Entry Reading State Machine}
+  \label{fig:fsm-pdo-read}
+\end{figure}
+
+\begin{figure}[htbp]
+  \centering
+  \includegraphics[width=.9\textwidth]{graphs/fsm_pdo_conf}
+  \caption{Transition Diagram of the Pdo Configuration State Machine}
+  \label{fig:fsm-pdo-read}
+\end{figure}
+
+\begin{figure}[htbp]
+  \centering
+  \includegraphics[width=.4\textwidth]{graphs/fsm_pdo_entry_conf}
+  \caption{Transition Diagram of the Pdo Entry Configuration State Machine}
+  \label{fig:fsm-pdo-read}
+\end{figure}
+
+%------------------------------------------------------------------------------
+
 \chapter{Mailbox Protocol Implementations}
 \index{Mailbox}
 
@@ -1807,6 +1798,14 @@
 configure slaves and exchange data objects on application level.
 
 % FIXME
+%
+% Download / Upload
+% Expedited / Normal
+% Segmentung
+% Sdo Info Services
+%
+
+\ldots
 
 \paragraph{Sdo Download State Machine}
 
@@ -1874,28 +1873,27 @@
 
 % FIXME
 
-For the master runs as a kernel module, accessing it is natively
-limited to analyzing Syslog messages and controlling using modutils.
-
-It is necessary to implement further interfaces, that make it easier
-to access the master from user space and allow a finer influence. It
-should be possible to view and to change special parameters at runtime.
-
-Bus visualization is a second point: For development and debugging
-purposes it would be nice, if one could show the connected slaves with
-a single command.
-
-Another aspect is automatic startup and configuration. If the master
-is to be integrated into a running system, it must be able to
-automatically start with a persistent configuration.
-
-A last thing is monitoring EtherCAT communication. For debugging
-purposes, there had to be a way to analyze EtherCAT datagrams. The
-best way would be with a popular network analyzer, like Wireshark
-\cite{wireshark} (the former Ethereal) or others.
-
-This section covers all those points and introduces the interfaces and
-tools to make all that possible.
+For the master runs as a kernel module, accessing it is natively limited to
+analyzing Syslog messages and controlling using modutils.
+
+It is necessary to implement further interfaces, that make it easier to access
+the master from user space and allow a finer influence. It should be possible
+to view and to change special parameters at runtime.
+
+Bus visualization is a second point: For development and debugging purposes it
+would be nice, if one could show the connected slaves with a single command.
+
+Another aspect is automatic startup and configuration. If the master is to be
+integrated into a running system, it must be able to automatically start with
+a persistent configuration.
+
+A last thing is monitoring EtherCAT communication. For debugging purposes,
+there had to be a way to analyze EtherCAT datagrams. The best way would be
+with a popular network analyzer, like Wireshark \cite{wireshark} (the former
+Ethereal) or others.
+
+This section covers all those points and introduces the interfaces and tools
+to make all that possible.
 
 %------------------------------------------------------------------------------
 
--- a/documentation/graphs/Makefile	Wed Aug 13 15:51:26 2008 +0000
+++ b/documentation/graphs/Makefile	Thu Aug 14 15:49:00 2008 +0000
@@ -5,11 +5,13 @@
 #-----------------------------------------------------------------------------
 
 GRAPHS := \
+	fsm_change \
 	fsm_master \
 	fsm_pdo_conf \
-	fsm_pdo_read \
 	fsm_pdo_entry_conf \
 	fsm_pdo_entry_read \
+	fsm_pdo_read \
+	fsm_sii \
 	fsm_slave_conf \
 	fsm_slave_scan
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/documentation/graphs/fsm_change.dot	Thu Aug 14 15:49:00 2008 +0000
@@ -0,0 +1,34 @@
+
+/* $Id$ */
+
+digraph change {
+
+	start [fontname="Helvetica"]
+	start -> check [weight=5]
+
+	check [fontname="Helvetica"]
+	check -> status [weight=5]
+	check -> error [fontname="Helvetica", label="Response\ntimeout"]
+
+	status [fontname="Helvetica"]
+	status -> end [fontname="Helvetica", label="Success", weight=5]
+	status -> code [fontname="Helvetica", label="Refuse", weight=5]
+	status -> error [fontname="Helvetica", label="Change\ntimeout"]
+
+	code [fontname="Helvetica"]
+	code -> ack [weight=2]
+
+	start_ack [fontname="Helvetica"]
+	start_ack -> ack [fontname="Helvetica", label="Ack only"]
+
+	ack [fontname="Helvetica"]
+	ack -> check_ack [weight=2]
+
+	check_ack [fontname="Helvetica"]
+	check_ack -> end [fontname="Helvetica", label="Ack only"]
+	check_ack -> error [weight=2]
+
+	end [fontname="Helvetica"]
+
+	error [fontname="Helvetica"]
+}
--- a/documentation/graphs/fsm_pdo_conf.dot	Wed Aug 13 15:51:26 2008 +0000
+++ b/documentation/graphs/fsm_pdo_conf.dot	Thu Aug 14 15:49:00 2008 +0000
@@ -2,9 +2,6 @@
 /* $Id$ */
 
 digraph pdo_conf {
-    size="7,9"
-    center=1
-	ratio=fill
 
     start [fontname="Helvetica"]
     start -> action_next_sync [fontname="Helvetica",label="First SM",weight=10]
--- a/documentation/graphs/fsm_pdo_entry_conf.dot	Wed Aug 13 15:51:26 2008 +0000
+++ b/documentation/graphs/fsm_pdo_entry_conf.dot	Thu Aug 14 15:49:00 2008 +0000
@@ -2,9 +2,6 @@
 /* $Id$ */
 
 digraph pdo_entry_conf {
-    size="7,9"
-    center=1
-	ratio=fill
 
 	start [fontname="Helvetica"]
     start -> zero_entry_count [weight=10]
--- a/documentation/graphs/fsm_pdo_entry_read.dot	Wed Aug 13 15:51:26 2008 +0000
+++ b/documentation/graphs/fsm_pdo_entry_read.dot	Thu Aug 14 15:49:00 2008 +0000
@@ -2,9 +2,6 @@
 /* $Id$ */
 
 digraph pdo_entry_read {
-    size="7,9"
-    center=1
-	ratio=fill
 
 	start [fontname="Helvetica"]
     start -> count [weight=5]
--- a/documentation/graphs/fsm_pdo_read.dot	Wed Aug 13 15:51:26 2008 +0000
+++ b/documentation/graphs/fsm_pdo_read.dot	Thu Aug 14 15:49:00 2008 +0000
@@ -2,9 +2,6 @@
 /* $Id$ */
 
 digraph pdo_read {
-    size="7,9"
-    center=1
-	ratio=fill
 
 	start [fontname="Helvetica"]
     start -> action_next_sync [fontname="Helvetica", label="First SM", weight=5]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/documentation/graphs/fsm_sii.dot	Thu Aug 14 15:49:00 2008 +0000
@@ -0,0 +1,33 @@
+
+/* $Id$ */
+
+digraph sii {
+
+	start_reading [fontname="Helvetica"]
+	start_reading -> read_check [weight=5]
+
+	read_check [fontname="Helvetica"]
+	read_check -> error
+	read_check -> read_fetch [weight=5]
+
+	read_fetch [fontname="Helvetica"]
+	read_fetch -> error
+	read_fetch -> end [weight=5]
+	read_fetch -> read_fetch
+
+	start_writing [fontname="Helvetica"]
+	start_writing -> write_check [weight=5]
+
+	write_check [fontname="Helvetica"]
+	write_check -> error
+	write_check -> write_check2 [weight=5]
+
+	write_check2 [fontname="Helvetica"]
+	write_check2 -> error
+	write_check2 -> end [weight=5]
+	write_check2 -> write_check2
+
+	end [fontname="Helvetica"]
+
+	error [fontname="Helvetica"]
+}
--- a/documentation/images/Makefile	Wed Aug 13 15:51:26 2008 +0000
+++ b/documentation/images/Makefile	Thu Aug 14 15:49:00 2008 +0000
@@ -8,10 +8,8 @@
 	app-config.fig \
 	architecture.fig \
 	fmmus.fig \
-	fsm-change.fig \
 	fsm-coedown.fig \
 	fsm-eoe.fig \
-	fsm-sii.fig \
 	interrupt.fig \
 	master-locks.fig \
 	masters.fig \
--- a/documentation/images/fsm-change.fig	Wed Aug 13 15:51:26 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-#FIG 3.2
-Portrait
-Center
-Metric
-A4      
-100.00
-Single
--2
-1200 2
-0 32 #8e8e8e
-6 398 2378 2122 3112
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 1260 2745 855 360 405 2385 2115 3105
-4 1 0 50 -1 16 12 0.0000 4 120 960 1260 2790 CODE\001
--6
-6 2513 2378 4237 3112
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 3375 2745 855 360 2520 2385 4230 3105
-4 1 0 50 -1 16 12 0.0000 4 120 690 3375 2790 ACK\001
--6
-6 4523 2378 6458 3112
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 5490 2745 855 360 4635 2385 6345 3105
-4 1 0 50 -1 16 12 0.0000 4 120 1935 5490 2790 CHECK ACK\001
--6
-6 6705 2340 8505 3150
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 7605 2745 855 360 6750 2385 8460 3105
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 7605 2738 765 322 6840 2416 8370 3060
-4 1 0 50 -1 16 12 0.0000 4 120 1200 7605 2790 ERROR\001
--6
-6 2513 893 4237 1627
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 3375 1260 855 360 2520 900 4230 1620
-4 1 0 50 -1 16 12 0.0000 4 120 1170 3375 1305 CHECK\001
--6
-6 4628 893 6352 1627
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 5490 1260 855 360 4635 900 6345 1620
-4 1 0 50 -1 16 12 0.0000 4 120 1305 5490 1305 STATUS\001
--6
-6 6705 855 8505 1665
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 7605 1260 855 360 6750 900 8460 1620
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 7605 1261 748 315 6857 946 8353 1576
-4 1 0 50 -1 16 12 0.0000 4 120 705 7605 1305 END\001
--6
-6 360 855 2160 1665
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 1260 1260 855 360 405 900 2115 1620
-4 1 0 50 -1 16 12 0.0000 4 120 1080 1260 1305 START\001
--6
-1 3 0 1 0 0 50 -1 20 0.000 1 0.0000 495 675 101 101 495 675 585 720
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 2115 1260 2520 1260
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 4230 1260 4635 1260
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 6345 1260 6750 1260
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 4
-	1 1 1.00 60.00 120.00
-	 5670 900 5670 540 5400 540 5355 900
-	 0.000 -1.000 -1.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 2115 2745 2520 2745
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 4230 2745 4635 2745
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 6345 2745 6750 2745
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 4
-	1 1 1.00 60.00 120.00
-	 4905 1530 4365 1980 2610 2115 1755 2430
-	 0.000 -1.000 -1.000 0.000
-3 2 0 1 0 0 50 -1 20 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 540 765 675 990
-	 0.000 0.000
-3 2 1 1 0 7 50 -1 -1 4.000 0 1 0 4
-	1 1 1.00 60.00 120.00
-	 4050 1485 4500 1620 6120 1980 6930 2520
-	 0.000 -1.000 -1.000 0.000
-3 2 1 1 0 7 50 -1 -1 4.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 6165 1485 6750 1935 7110 2430
-	 0.000 -1.000 0.000
-3 2 1 1 0 7 50 -1 -1 4.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 3915 3060 5490 3285 6795 2925
-	 0.000 -1.000 0.000
-3 2 1 1 0 7 50 -1 -1 4.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 1890 3015 5355 3510 6975 3015
-	 0.000 -1.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 4
-	1 1 1.00 60.00 120.00
-	 5670 2386 5670 2026 5400 2026 5355 2386
-	 0.000 -1.000 -1.000 0.000
--- a/documentation/images/fsm-sii.fig	Wed Aug 13 15:51:26 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-#FIG 3.2
-Portrait
-Center
-Metric
-A4      
-100.00
-Single
--2
-1200 2
-0 32 #8e8e8e
-6 2235 893 4515 1627
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 3375 1260 855 360 2520 900 4230 1620
-4 1 0 50 -1 16 12 0.0000 4 150 2280 3375 1305 READ_CHECK\001
--6
-6 4388 893 6593 1627
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 5490 1260 855 360 4635 900 6345 1620
-4 1 0 50 -1 16 12 0.0000 4 150 2205 5490 1305 READ_FETCH\001
--6
-6 165 893 2355 1627
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 1260 1260 855 360 405 900 2115 1620
-4 1 0 50 -1 16 12 0.0000 4 150 2190 1260 1305 READ_START\001
--6
-6 6705 1710 8505 2520
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 7605 2115 855 360 6750 1755 8460 2475
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 7605 2116 748 315 6857 1801 8353 2431
-4 1 0 50 -1 16 12 0.0000 4 120 705 7605 2160 END\001
--6
-6 113 2648 2408 3382
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 1260 3015 855 360 405 2655 2115 3375
-4 1 0 50 -1 16 12 0.0000 4 150 2295 1260 3060 WRITE_START\001
--6
-6 2183 2648 4568 3382
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 3375 3015 855 360 2520 2655 4230 3375
-4 1 0 50 -1 16 12 0.0000 4 150 2385 3375 3060 WRITE_CHECK\001
--6
-6 4208 2648 6773 3382
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 5490 3015 855 360 4635 2655 6345 3375
-4 1 0 50 -1 16 12 0.0000 4 150 2565 5490 3060 WRITE_CHECK2\001
--6
-6 3555 1710 5355 2520
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 4455 2115 855 360 3600 1755 5310 2475
-1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 4455 2108 765 322 3690 1786 5220 2430
-4 1 0 50 -1 16 12 0.0000 4 120 1200 4455 2160 ERROR\001
--6
-6 360 540 675 990
-1 3 0 1 0 0 50 -1 20 0.000 1 0.0000 495 675 101 101 495 675 585 720
-3 2 0 1 0 0 50 -1 20 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 540 765 675 990
-	 0.000 0.000
--6
-6 360 2295 675 2745
-1 3 0 1 0 0 50 -1 20 0.000 1 0.0000 495 2430 101 101 495 2430 585 2475
-3 2 0 1 0 0 50 -1 20 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 540 2520 675 2745
-	 0.000 0.000
--6
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 2115 1260 2520 1260
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 4230 1260 4635 1260
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 2115 3015 2520 3015
-	 0.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2
-	1 1 1.00 60.00 120.00
-	 4230 3015 4635 3015
-	 0.000 0.000
-3 2 1 1 0 7 50 -1 -1 4.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 3375 1620 3465 1845 3735 1935
-	 0.000 -1.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 5490 1620 5445 1845 5220 1935
-	 0.000 -1.000 0.000
-3 2 1 1 0 7 50 -1 -1 4.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 3375 2610 3465 2385 3735 2295
-	 0.000 -1.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 5490 2610 5445 2385 5220 2295
-	 0.000 -1.000 0.000
-3 2 0 1 0 7 50 -1 -1 4.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 6255 1440 6750 1620 7020 1845
-	 0.000 -1.000 0.000
-3 2 0 1 0 7 50 -1 -1 4.000 0 1 0 3
-	1 1 1.00 60.00 120.00
-	 6210 2835 6750 2700 7020 2385
-	 0.000 -1.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 4
-	1 1 1.00 60.00 120.00
-	 5670 900 5670 630 5400 630 5400 900
-	 0.000 -1.000 -1.000 0.000
-3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 4
-	1 1 1.00 60.00 120.00
-	 5670 3375 5670 3690 5310 3690 5310 3375
-	 0.000 -1.000 -1.000 0.000