For FPGA, you can put a USB mac in it, and connect it to a PHY outside. However, you don't have to reinvent the wheel. You could just get an IP from Altera or 3rd party.
But the usual approach is to use off-the-shelf USB controllers.
(1) You can get the USB to appear as a serial port in PC. For this, you can use the solution from FTDI
(2) You can use a full blown USB controller. such as the Easy USB from Cypress