Para programar un FPGA a través de USB, recomiendo comprar un cable JTAG de imitación de eBay. Puede obtener una compatible con Xilinx por aproximadamente $ 40. Yo mismo tengo un par de ellos, y funcionan muy bien. Usted también debería poder obtener cables compatibles con Altera.
En términos de comunicación con un FPGA o microcontrolador, hay un par de posibilidades. Si todo lo que necesita es una comunicación con un ancho de banda realmente bajo, un chip de serie a USB como el de FTDI o Exar es bastante bueno. Sin embargo, no puede ir tan rápido con un puerto serie.
Si necesita un mayor ancho de banda, debe obtener un microcontrolador con un controlador USB incorporado. Para un FPGA, puede obtener chips USB PHY que toman la señal USB y la convierten en un bus paralelo. Con este tipo de configuración, puede utilizar todo el ancho de banda que proporciona USB.
Otra posibilidad es usar un chip FIFO FTDI. Esto parece una especie de puerto en serie, pero el chip no contiene un UART, solo saca los datos en un bus paralelo. Esto es mucho más eficiente al utilizar el ancho de banda del enlace que un UART. Esto se puede utilizar con un FPGA o un microcontrolador.