fpga4fun where FPGAs are fun

EPP 1 - What is EPP?

EPP is part of IEEE 1284 (the parallel port standard).
IEEE 1284 also defines SPP and ECP, but EPP provides the best of both, i.e. speed and simplicity.

EPP's main characteristics are:

  • Provides bi-directional communication over a parallel port, i.e. a way to read-from and write-to a peripheral attached to your PC's parallel port.
  • Transactions are 8 bits wide, and atomic. The host (PC) is always the initiator of the transactions, reads or writes.
  • There is no concept of burst. You can send 1 byte, or 1000000 if you want, just use a software loop on the PC. You can also mix reads and writes in any order.

EPP allows "address" and "data" transactions.
In other words, four types of EPP transactions can be issued from the PC:

  • Write address
  • Read address
  • Write data
  • Read data

We are going to connect an FPGA to the EPP port. When the PC does a "write address" (or "write data"), it actually just sends 8 bits to the FPGA with the indication that it's an "address" or "data". The FPGA can do anything with the "address" or "data" values. The FPGA could implement a register bank (with 256 registers). Or it could use the "address" to blink LEDs, and the "data" to make sounds. The PC wouldn't know the difference.

Same thing for reads, the PC can read an "address" or "data", which might actually be any 8-bit value returned by the FPGA.