Digio64 Board
The purpose of this document is to specify the functions of the Digio64 Digital Input/Output Board.
The primary function of the Digio64 board is to provide the capability for digital outputs (discrete commands qualified with a Command Enable) and digital inputs (status). Also, the Command Strobe or Command Enable line is routed from the subbus to its further destination.
Digio64 is intended to connect to the Subbus64 stack and interface with other devices via connectors.
I/O for Digio64 occurs at 8 bit ports. Digio boards are located within one address partition. We address a port by a 12 bit address A(11-0). The most significant 4 bits A(11-8) define a partition base address. For Digio64, the partition base address is 800 hex.
The limiting factors to the quantity of I/O per board are space and the number of I/O pins on programmable chips. A good fit at the moment seems like an XC4003H FPGA to drive 12 ports.
Digio64 interfaces to other devices via connectors logically divided into 50 pin units. Each 50 pin "unit" (connector) carries the I/O for 6 ports. To address the ports of a connector as we have in the past, we require 32 bytes of address space. This means there are 8 possible base connector addresses within our digio partition. Bits A(7-5) specifies a connector base address and selects all of it's ports. There are 3 FPGA pins JP[2:0] to select the base connector address of the first connector. Initial board design will be for 2 connectors per board, which allows for 4 boards within our digio partition. Therefore, 2 jumpers JP[2:1] specify A(7-6), a short is logical 1.
Bits A(4-1) address a port, a port pair or port configuration registers. If P is the partition base address and C is the connector base address, then port addressing for a connector is as follows:
Address | High Byte | Low Byte |
---|---|---|
P+C | Port 2 | Port 1 |
P+C+0x02 | Port 4 | Port 3 |
P+C+0x04 | Port 6 | Port 5 |
P+C+0x06 | Ports 2,4,6 Configuration |
Ports 1,3,5 Configuration |
P+C+0x08 | Port 1 | |
P+C+0x0A | Port 3 | |
P+C+0x0C | Port 5 | |
P+C+0x0E | Ports 1,3,5 Configuration | |
P+C+0x10 | Port 2 | |
P+C+0x12 | Port 4 | |
P+C+0x14 | Port 6 | |
P+C+0x16 | Ports 2,4,6 Configuration |
|
P+C+0x18 | Reset | |
P+C+0x1A | Connector Configuration | |
P+C+0x1C | ||
P+C+0x1E |
Reading and writing is done in 16 bit words so the information is contained in the high, low or both bytes as shown above. Either the Command Enable (0) or Command Strobe (1) can be distributed through the connector. The default configuration for a connector is that all ports are input and the command enable is distributed through the connector. Any connector is also reset to this default configuration when anything is written to the Reset address. The connector configuration is as follows:
bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
value | Strobe or Enable |
Each port is configurable to be either an input or an output port. Ports are readable or writable alone, or in pairs.
Each of the configuration bytes in the above table configures 3 ports for input (1) or output (0). The whole word configuration for 6 ports (1 connector) is as follows:
bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
value | port 2 |
port 4 | port 6 |
port 1 |
port 3 | port 5 |
There are 4 constants in the ViewLogic schematic (sch\digio.1) implemented as XBLOX FORCE components:
The version bits are read-only and contained in the port configuration bytes. They are located as follows in the configuration word:
bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
value | HI[1] | HI[0] | LO[1] | LO[0] |
Version bits should be read after initialization for operation or reset. In this case, VERSION_LO_CONSTANT distinguishes the Digio64 board from the DigioICC board whose LO bits would be read as 0 bin in the port configuration word.
If C is the first base connector address (defined by JP[2:0]) then only addresses in the range [C : C + (NUM_OF_CONNECTORS_CONST * 32)] are acknowledged (EXPACK) by a digio64 board on read or write.
The control program is at /usr/local/bin/dccc (Discrete Command Card Controller Program). The Command Enable is set by dccc. Strobed Commands are handled by the program /usr/local/bin/scdc (Strobed Command Device Controller). Refer to the documentation for dccc and scdc for more information. The diagnostic utility for Digio64 boards is /usr/local/bin/digital3 which also serves to test ICC Digio boards. Refer to the documentation for digital3 for more information.