Ideen — Projekte — Fachwissen




ATA IO: Using ATA Interfaces for General Purpose Input/Output Applications




 The basic idea: Using ATA interfaces to attach  application-specific circuitry.


  • Even the most contemporary motherboards support ATA ports.
  • As ATA is the mainstream drive interface, long-term availability should be taken for granted.
  • The ATA programming interface is simply a small register file, accessible by I/O instructions. ATA registers can be accessed directly (under DOS or Linux) or via comparatively simple port drivers.
  • The legacy ATA interface (Parallel ATA) is essentially a modified ISA bus. Hence it is easy to develop I/O adapter hardware.
  • Parallel ATA (PATA) is still supported on new motherboards in small form factors (like Mini-ITX or Nano-ITX), particularly as it is still a mainstream interface for optical drives. Such small form factor motherboards could be used instead of typical industrial platforms (like PC/104, EBX, EPIC, PICMG and the like) which are considerably more expensive.
  • Typical ATA I/O adapters will fit into  small CPLDs. Eventually, the application-specific circuitry proper could be implemented within the same CPLD, too.
  • It is possible to provide ATA interface adapters for attachment of widely available I/O hardware, like Opto 22 compatible racks, ISA or PCI I/O cards, and PC/104 modules.
  • Serial ATA (SATA) support can be provided (for example, by using  readily available protocol converter ICs).

I/O Board 05a

8255 Tester / Opto 22 Exerciser 06a


Industrial PC 06a

ATA IO Trainer  06a

ATA-to-ISA Board 07a



 This 1 U industrial PC contains a MiniITX motherbard and an ATA I/O card 05a. Here the system is being tested by means of the 8255 Tester / Opto 22 Exerciser 06a.






The small case contains a NanoITX motherboard and  a GPIO ATA adapter connected to a makeshift experimental platform.




The PicoITX motherboard is connected to an ATA-to-ISA bus adapter supporting ISA slots as well as PC/104 modules. The educational robot above is controlled via a legacy  ISA card. The vintage joysticks are attached via a PC/104 GPIO module.



Application examples:

  • ATA front end function blocks for attaching own application-specific circuitry.
  • ATA I/O port adapters behaving like typical microcontroller I/O ports.
  • ATA I/O adapters supporting attachment of industry standard peripheral circuits or emulating such circuits (the good old 8255 being an obvious example).
  • ATA I/O adapters emulating industry standard bus protocols, like ISA (PC/104) or PCI.

ATA IO projects:

Development platform: Xilinx ISE 8.1. IC family: Xilinx XC9500.

ATA IO Adapter 05a. Five general-purpose 8-bit-ports. Fits in XC95108. Project -- Schematic -- Description

ATA IO Adapter 05ax. Like 05a, but supports selective addressing completely. Requires at least XC95144. Project -- Schematic -- Description

 ATA IO Adapter 8255_01. Three 8-bit-ports. Emulates the vintage 8255 in mode 0. Project -- Schematic -- Description

ATA IO Adapter 8255_02. Five 8-bit-ports. The first three emulate the 8255 in a restricted mode 0 (control register cannot be read back). The remaining two are  general purpose ports similar to those of the adapter 05a. Project -- Schematic -- Description


-- Descriptions are still in German. Will be replaced by and by . . . . --

ATA-to-ISA Bus Adapter 06a. Emulates an 8-bit ISA Bus (I/O cycles and interrupt signalization). ISA timing controlled by software. Project -- Schematic -- Description -- Theory of operation

ATA-to-ISA Bus Adapter 06c. Emulates an 8-bit ISA Bus (I/O cycles and interrupt signalization). ISA timing controlled by hardware. Project -- Schematic -- Description -- Theory of operation

ATA front end 01a.   A functional block for attaching a parallel ATA (PATA) interface. Project -- Theory of operation

Useful macros. Project





A picture gallery

Additional  illustrations.  ATA I/O vs. well-established solutions.

Code examples:

A short introduction into the principles of ATA I/O programming

Declaration of physical ATA addresses (example related to attachment on the secondary (legacy) ATA port)

Declaration of port addresses (example related to the ATA I/O adapter 05a attached as slave device)

The basic I/O routines for accessing the ATA I/O adapter 05a

Schematics of experimental boards:

ATA-to-ISA Board 07a. This board accommodates an adapter ATA-to-ISA 06c, two ISA slots and one PC/104 connector

I/O Board 05a. This Board accommodates a CPLD which can be programmed freely (among others, to be an ATA I/O adapter 05a or an 8255 supplemented by two universal ports)

Descriptions of ATA I/O adapter circuits:

ATA I/O port adapter 05a / 05 ax. Five general-purpose 8 bit I/O ports.

ATA I/O adapter 8255a. Three 8255-like I/O ports. Optionally two additional general-purpose I/O ports.