From 9d60587c6b8cfbc278e105ca59586d02446ec8e5 Mon Sep 17 00:00:00 2001 From: Florian Pose Date: Thu, 14 Aug 2008 15:49:00 +0000 Subject: [PATCH] Some more documentation... --- documentation/ethercat_doc.tex | 280 ++++++++++---------- documentation/graphs/Makefile | 4 +- documentation/graphs/fsm_change.dot | 34 +++ documentation/graphs/fsm_pdo_conf.dot | 3 - documentation/graphs/fsm_pdo_entry_conf.dot | 3 - documentation/graphs/fsm_pdo_entry_read.dot | 3 - documentation/graphs/fsm_pdo_read.dot | 3 - documentation/graphs/fsm_sii.dot | 33 +++ documentation/images/Makefile | 2 - documentation/images/fsm-change.fig | 101 ------- documentation/images/fsm-sii.fig | 106 -------- 11 files changed, 209 insertions(+), 363 deletions(-) create mode 100644 documentation/graphs/fsm_change.dot create mode 100644 documentation/graphs/fsm_sii.dot delete mode 100644 documentation/images/fsm-change.fig delete mode 100644 documentation/images/fsm-sii.fig diff --git a/documentation/ethercat_doc.tex b/documentation/ethercat_doc.tex index eab98794..f460a8f0 100644 --- a/documentation/ethercat_doc.tex +++ b/documentation/ethercat_doc.tex @@ -603,7 +603,7 @@ section~\ref{sec:cyclic}). \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 @@ Section~\ref{sec:concurrency} gives an example, of how to implement this. \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 @@ by reading the device's interrupt register. For example, if the flag 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 @@ error happened, the appropriate counter in this structure has to be increased. 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 @@ network driver. %------------------------------------------------------------------------------ \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 @@ sysconfig file (see section~\ref{sec:sysconfig}). %------------------------------------------------------------------------------ -\section{The Device Interface} +\section{EtherCAT Device Interface} \label{sec:ecdev} \index{Device interface} @@ -1370,8 +1356,8 @@ monitored. If a slave is not in the state it supposed to be, the slave is (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 @@ image memory. 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 @@ in \cite[section~6.4.1]{alspec}. \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[Start] The new application-layer state is requested via the ``AL Control +Request'' register (see ~\cite[section 5.3.1]{alspec}). -\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 +\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. - 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 +\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. - 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[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[END] If the state machine ends in this state, the slave's state - change has been successful. +\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[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[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 @@ Slave Information Interface described in \cite[section~6.4]{dlspec}. \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[Start Reading] The read request and the requested word address are +written to the SII attribute. -\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[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. - \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} \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[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. -\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} \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 @@ The CANopen-over-EtherCAT protocol \cite[section~5.6]{alspec} is used to 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 @@ in figure~\ref{fig:fsm-coedown}. % FIXME -For the master runs as a kernel module, accessing it is natively -limited to analyzing Syslog messages and controlling using modutils. +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. +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. +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. +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. +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. +This section covers all those points and introduces the interfaces and tools +to make all that possible. %------------------------------------------------------------------------------ diff --git a/documentation/graphs/Makefile b/documentation/graphs/Makefile index 300ec900..4ec4b823 100644 --- a/documentation/graphs/Makefile +++ b/documentation/graphs/Makefile @@ -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 --git a/documentation/graphs/fsm_change.dot b/documentation/graphs/fsm_change.dot new file mode 100644 index 00000000..d774106d --- /dev/null +++ b/documentation/graphs/fsm_change.dot @@ -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 --git a/documentation/graphs/fsm_pdo_conf.dot b/documentation/graphs/fsm_pdo_conf.dot index 7f7612e1..2ad3eee6 100644 --- a/documentation/graphs/fsm_pdo_conf.dot +++ b/documentation/graphs/fsm_pdo_conf.dot @@ -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 --git a/documentation/graphs/fsm_pdo_entry_conf.dot b/documentation/graphs/fsm_pdo_entry_conf.dot index 7dacdf87..af1e7e31 100644 --- a/documentation/graphs/fsm_pdo_entry_conf.dot +++ b/documentation/graphs/fsm_pdo_entry_conf.dot @@ -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 --git a/documentation/graphs/fsm_pdo_entry_read.dot b/documentation/graphs/fsm_pdo_entry_read.dot index 1c4872d9..a375c627 100644 --- a/documentation/graphs/fsm_pdo_entry_read.dot +++ b/documentation/graphs/fsm_pdo_entry_read.dot @@ -2,9 +2,6 @@ /* $Id$ */ digraph pdo_entry_read { - size="7,9" - center=1 - ratio=fill start [fontname="Helvetica"] start -> count [weight=5] diff --git a/documentation/graphs/fsm_pdo_read.dot b/documentation/graphs/fsm_pdo_read.dot index 993937a7..7f8cb015 100644 --- a/documentation/graphs/fsm_pdo_read.dot +++ b/documentation/graphs/fsm_pdo_read.dot @@ -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 --git a/documentation/graphs/fsm_sii.dot b/documentation/graphs/fsm_sii.dot new file mode 100644 index 00000000..cf3a53f1 --- /dev/null +++ b/documentation/graphs/fsm_sii.dot @@ -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 --git a/documentation/images/Makefile b/documentation/images/Makefile index bee835fc..8d3eaf4b 100644 --- a/documentation/images/Makefile +++ b/documentation/images/Makefile @@ -8,10 +8,8 @@ FIGS := \ 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 --git a/documentation/images/fsm-change.fig b/documentation/images/fsm-change.fig deleted file mode 100644 index fc9aec1c..00000000 --- a/documentation/images/fsm-change.fig +++ /dev/null @@ -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 --git a/documentation/images/fsm-sii.fig b/documentation/images/fsm-sii.fig deleted file mode 100644 index 331a0820..00000000 --- a/documentation/images/fsm-sii.fig +++ /dev/null @@ -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