Name

Digio64 Board

Summary

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.

Board Configuration

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.

Connector Configuration

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:

AddressHigh ByteLow Byte
P+CPort 2Port 1
P+C+0x02Port 4Port 3
P+C+0x04Port 6Port 5
P+C+0x06Ports 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+0x10Port 2 
P+C+0x12Port 4 
P+C+0x14Port 6 
P+C+0x16Ports 2,4,6
Configuration
 
P+C+0x18Reset
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:

bit151413 12 11 10 9 8 7 6 5 4 3 2 1 0
value                    Strobe
or
Enable

Port Configuration

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:

bit151413 1211109 8765 4321 0
value    port
2
  port
4
port
6
   port
1
  port
3
port
5

Design Configuration

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:

bit151413 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.

Software Configuration

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.