aboutsummaryrefslogtreecommitdiff
path: root/doc/protocol.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/protocol.txt')
-rw-r--r--doc/protocol.txt37
1 files changed, 37 insertions, 0 deletions
diff --git a/doc/protocol.txt b/doc/protocol.txt
new file mode 100644
index 0000000..3f86bde
--- /dev/null
+++ b/doc/protocol.txt
@@ -0,0 +1,37 @@
+PASSIVE SERIAL configuration mode
+---------------------------------
+
+In PASSIVE SERIAL configuration mode, an external controller passes
+configuration data to one or more devices via a serial data stream. The
+hardware resources required by the controller to configure such devices
+are very reduced, involving ony five lines: two bi-directional lines
+(CONF_DONE and nSTATUS), and three device input lines (DATA, nCONFIG
+and DCLK).
+
+PS configureation mode can be used to configure merely one device or a
+chain of devices; int he last case, the nCEO output pin from the first
+device is cascaded into the nCE pin of the second device and so on.
+
+It is a three steps process:
+
+1 - Start: the controller check that nSTATUS is high, put a zero on
+nCONFIG, waits until CONF_DONE and nSTATUS to go zero, then writes a
+one on nCONFIG and waits until the target device releases nSTATUS.
+
+2 - Data transfer: after the configuration process has started, the
+controller places the configuration data one bit a time, generation
+DCLK positive edges to input this data in the target devices, with a
+clock frequency up to 16MHz. Following the falling edge of DCLK after
+all it configuration bits are received, the device just configured
+release CONF_DONE and pulls down it nCEO output. While loading data,
+the controller must check the nSTATUS line, which is pulled down by the
+device under configuration if it detects some error. This error
+detection capability is obtained through checksum information embedded
+with the configuration data.
+
+3 - Initialization: after CONF_DONE goes high, DCLK must be clocked 40
+additionnal times for APEX devices, and 10 times for FLEX devices to
+initialize the device, going into user mode. When multiple devices are
+configured, the wired-AND CONF_DONE line remains low until the last
+device is configured, therefore all devices go to initialization mode
+at the same time.