I am assuming here that you are talking about DSP Processors.
FPGA (Field Programmable Gate Array) is a device which is used to simulate and test IC designs. They can be programmed by using Hardware Description Languages (VHDL/Verilog).
They are made of LUT's (Look Up Tables) and their internal structure is pretty much complex. Apart from that, they can perform more than one operation concurrently (as long as they are not linked). This is because each FPGA is made of sets of gates which are connected by your program. This enables multiple processes to run without time sharing (which is the case in any normal processor).
A DSP processor on the other hand is a normal processor optimized for faster floating point calculations to aid in signal processing. Not much of a change in that.
As far as a choice is concerned, FPGA is usually chosen when you are aiming to test/simulate an IC design while a DSP processor is usually used in an application to perform some signal processing. The DSP processor is appropriately programmed by Assembly( or maybe embedded C ).
Hope this clarifies your problem....