Re: fpga
FPGA's are Field Programmable Gate Arrays, and contain programmable logic, memory blocks, PLLs and can contain tranceiver blocks, processor cores, etc.
You describe the functionality you want to have in the FPGA using a hardware description language like Verilog or VHDL, then use the development tools to synthesize the code, map and assemble the logic, and time it. And the end of this, you have an image you can download into the FPGA. Once the image is downloaded into the device, it will have the functionality you described with your code. Thus it can do whatever you want it to do, as long as it has the required resources and can be routed and timed.
r.b.