hello,
I am new member and a young university student.So I really need your help in this hard,big and mixed field.I want to learn fpga and I have three questions which makes trouble in my mind.
1.Which companies use fpga,so I want to draw my way accordingly.
2.Can I program fpga with C/C++ or I have to use verilog,vhdl?
3.Most important:where will I start to learn?
if you help me,I will appreciate you.
Thank you so much
1.) FPGA's are used in many industries for a variety of reasons. FPGAs tend to do well when a problem has a high degree of parallelism. Likewise, they do well when a problem requires a deterministic latency.
2.) For the above reasons, a large part of FPGA will require HDL of some sort. The goal is to describe the hardware. For example, in a normal microcontroller a SPI controller might be used to allow the uC to do more than just toggle IO lines. HDL could be used to describe an SPI controller that could be implemented in an FPGA. HDL could also be used to describe the microcontroller itself (a soft-core CPU). Following this same line of reasoning, other IO, memory, DSP, and other important things could be described by HDL to allow the system to do less work in software. At some point, a software-programmable aspect might end up doing nothing -- the dedicated hardware system might not need it for anything.
3.) I suggest Xilinx and Altera's documentation and whitepapers.
some examples of items from #2 might be:
1.) software defined radio. a system might take in 3,000,000,000 samples per second. at 3GHz, a CPU wouldn't have much time to do anything. However, a more general digital system could be formed as an array of multiplications/additions. These could be arranged in a specific order to perform some operations. eventually, the processed data might be at a low enough rate to allow processing by a CPU.
2.) high-bandwidth networking. performing operations on multiple 10GBe links. This is up to 1.25GB/s per link.
3.) image and video processing, for the same reason as #1.
4.) control. In this case, the FPGA's ability to have dedicated resource for a given problem allow for low, deterministic latency (assuming the HDL is written in such a manner).
keep in mind that not every task is well suited for an FPGA. one of the big mistakes is to try to avoid microcontrollers or microprocessors completely. Nearly every FPGA design i've done either has or would have benefited from a microcontroller. I also tend to favor external microcontrollers for designs where the microprocessor takes on a command/control/interfacing aspect.