El programar una FPGA es programar Hardware, es decir, no le metes un código a la fpga para que esta siga instrucciones como en un microcontrolador sino que haces circuitos individuales dentro de la fpga que funcionarán como si fueran circuitos individuales, esto hace que una fpga funcione de forma paralela mientras que un microcontrolador funciona ejecutando instrucción por instruccion.
Para que te des una pequeña idea de las posibilidades, yo programé una memoria rom para una práctica. La memoria seguía las características que yo necesitaba, además tengo varios circuitos integrados que ya no necesité porque al tener un código que funciona igual era como tener ese mismo integrado dentro de la fpga las veces que yo quisiera.
Si tuvieras los conocimientos necesarios podrías incluso programar tu propio microcontrolador. Podrías implementar un PIC del modelo que quieras (Sin las características que no dependen de la lógica digital como una ADC o una memoria EEPROM o flash, esas si las pones aparte), y hacer sus características a tu disposición, si necesitas que el pic tenga más memoria RAM o que tenga más salidas digitales lo puedes hacer a tu antojos.