# HG changeset patch # User Florian Pose # Date 1218728940 0 # Node ID acb649738601b272243477dd5f5a27f825a8f6ee # Parent 91d190223daa47c53d549d4bab50ee8a226de2ad Some more documentation... diff -r 91d190223daa -r acb649738601 documentation/ethercat_doc.tex --- 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. %------------------------------------------------------------------------------ diff -r 91d190223daa -r acb649738601 documentation/graphs/Makefile --- 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 diff -r 91d190223daa -r acb649738601 documentation/graphs/fsm_change.dot --- /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"] +} diff -r 91d190223daa -r acb649738601 documentation/graphs/fsm_pdo_conf.dot --- 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] diff -r 91d190223daa -r acb649738601 documentation/graphs/fsm_pdo_entry_conf.dot --- 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] diff -r 91d190223daa -r acb649738601 documentation/graphs/fsm_pdo_entry_read.dot --- 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] diff -r 91d190223daa -r acb649738601 documentation/graphs/fsm_pdo_read.dot --- 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] diff -r 91d190223daa -r acb649738601 documentation/graphs/fsm_sii.dot --- /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"] +} diff -r 91d190223daa -r acb649738601 documentation/images/Makefile --- 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 \ diff -r 91d190223daa -r acb649738601 documentation/images/fsm-change.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 diff -r 91d190223daa -r acb649738601 documentation/images/fsm-sii.fig --- 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