Hi i already have worked with the AVR and the Cortex-M for some purpose but now i need to a most powerful processor. So, i think the FPGA or Cortex-A is suitable but i can't compare these both because as you know, the FPGA is a field-programmable gate array processor but the Cortex-A is a RISC processor. well, now, i confused! Which is better really for high speed? and which has a good future? i hope to get a good answer.
-
3\$\begingroup\$ An FPGA is not a processor, what do you mean by a more powerful processor, what are you planning to do? \$\endgroup\$– AndresCommented Sep 14, 2013 at 14:27
-
\$\begingroup\$ What is the application? \$\endgroup\$– RenanCommented Sep 14, 2013 at 14:57
-
\$\begingroup\$ @Andres,Renan for interface Camera(high resulation), making RGB screen and ...etc \$\endgroup\$– brianCommented Sep 14, 2013 at 15:52
-
\$\begingroup\$ Not only is FPGA and ARM like comparing Apples and Oranges, but you should capitalize "I" when talking about yourself. \$\endgroup\$– JYeltonCommented Sep 14, 2013 at 18:18
-
\$\begingroup\$ How about LPC435x? It has an LCD interface and supports high-speed serial communication via its SGPIO unit. \$\endgroup\$– starblueCommented Sep 14, 2013 at 20:19
2 Answers
FPGA is massively fine-grain processor. It can emulate millions of logic gates in parallel. But, because your logic circuit is simulated/emulated rather than native/physical, it runs 10x slower than true ASIC (eg. ARM). So, if you want to program a single sequential process (I call it control-dominated computation), then you use a CPU. If you need to simulate a circuit of many tiny gates (they are also processes but very tiny and large in numbers) then you need an FPGA. If you can parallelize your task into a huge number of tiny processes then you need FPGA. If you have 1, 2 or 3 processes (how much cores do you have in your processor), take CPU. Basically, you need an FPGA when you need to simulate a logical (aka digital) circuit. The hint is: if you have its description in HDL, then you need and FPGA. If you have a C/ASM program, look for ARM.
If you did not need the high performance then, for instance, you plan 100 mln single logic operations every second and no more, then utilize ARM. On the other hand, if you need kilos and millions logic operations at every clock cycle (millions of cycles per second) then you need FPGA.
-
2\$\begingroup\$ Logic is not "simulated or emulated" in an FPGA. It really exists as logic. It's implemented as a look-up table, but I don't personally think that counts as an emulation! The performance loss compared to a full-custom ASIC mainly comes from the configurability of the device. \$\endgroup\$ Commented Sep 16, 2013 at 10:26
-
\$\begingroup\$ I do not personally think that simulation ever exists. Logic really exists in the computer and human brain. The configurability of device makes your logic that one layer further from true phisical gates, implemented in silicon. User gates are purely virtual. I call any emulation of virtual hardware "an emulation". Lookup tables is RAM. There are no real user gates in FPGA. User gates are emulated by FPGA. Emulation means "replacement". When you do not have the real thing you replace it with a functional equivalent. FPGA is a universal computer for emulating gates. \$\endgroup\$– ValCommented Sep 16, 2013 at 18:15
I don't know what size the images are or what camera are you trying to interface and what are your timing requirements but if you need to take high res images at high speed a FPGA should do the work but:
- A FPGA is NOT a proccessor
- You can't program a FPGA as you do with processors
- Interfacing a camera with a RGB screen at high speed is not a simple task
Other alternatives are some ARM processor that has interface to cameras and displays.
-
1\$\begingroup\$ The FPGA can be a processor. Soft processors are implemented on FPGAs all the time (NIOS, Microblaze, etc) \$\endgroup\$ Commented Sep 15, 2013 at 18:00