The parallel port is much underrated; it may be old but it’s not dead yet. Where data rates don’t need to exceed a few megabits per second, it is a very efficient way of communicating between PC applications and external hardware. There are, or have been, many serial interface standards for moving data between a PC and its peripherals at increasingly higher speeds. If you are writing application software on for a PC, interfacing to them is well supported by software libraries. To the coder, a USB port can easily be made to look like a very fast serial port streaming data to and from the peripheral. To do any more than that, a customer driver needs to be defined and coded. But there needs to be a massive amount of extra complexity in the peripheral hardware. This may well all be in a single integrated circuit, but one which is too complex to control from hardware alone, hence a processor is required too. For a simple peripheral, or rather a peripheral or which can be simply controlled via a few registers, the logic required is not only much easier to implement than a USB interface, but it is likely to be completely withing the system FPGA.
We have seen a requirement to add a parallel port IP block into a system FPGA to support a legacy application, but most applications have centred on a what might be called a parallel port dongle, allowing PC applications to control and monitor external hardware through custom designed serial interfaces.