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 main characteristics are:
EPP allows "address" and "data" transactions.
In other words, four types of EPP transactions can be issued from the PC:
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.