FPGA and Processor Combination - Page 1
Forum section: electronics / general

author: sanwal209
author_rank: Regular Contributor
timestamp: February 01, 2017, 08:00:08 pm
content: Hi,I have a question and i am not able to figure it out. I have seen many military boards which contains both fpga and mpu. what i dont understand why they need both. Could anybody refer me to some document which explain the above combination and their applications?Thanks

author: rstofer
author_rank: Super Contributor
timestamp: February 01, 2017, 08:13:44 pm
content: The MPU might provide a user interface or communications to other pieces of equipment. It might even provide the number crunching. The FPGA would do the high frequency signal processing or interfacing with sensors with a difficult protocol. In some cases, the FPGA may be doing the number crunching as a digital signal processor. Or crypto...Each technology has a place and that's why Xilinx brought out the Zynq chip which has a dual core ARM and FPGA fabric on the same device.https://www.xilinx.com/support/documentation/data_sheets/ds190-Zynq-7000-Overview.pdf

author: JPortici
author_rank: Super Contributor
timestamp: February 01, 2017, 08:14:26 pm
content: it's not that unusual, you may have tasks that can gain a lot of benefits from parallelization (so an fpga makes sense) and still have a processor for other tasks like handling an operating systeman oscilloscope is an example, without going to military stuff

author: suicidaleggroll
author_rank: Super Contributor
timestamp: February 01, 2017, 08:15:59 pm
content: FPGAs and MPUs/MCUs/etc work in completely different ways. They have very different strengths and weaknesses, and it's perfectly reasonable for a design to contain both types of chips to handle different aspects of the job, military or not.I suggest doing some reading on what an FPGA is, how it's programmed, and how it differs from "traditional" CPUs/MPUs/MCUs. The reasons why someone might want to use both in a design should be pretty clear.

author: james_s
author_rank: Super Contributor
timestamp: February 01, 2017, 08:19:29 pm
content: While you can implement a softcore processor within an FPGA, it's not a very efficient use of silicon. For old 8 bit stuff it works pretty well, but the more modern you get, the less efficient it is to do. Generally speaking, CPUs are cheap and FPGAs are expensive, for a commercial product it makes no sense to consume $50 worth of FPGA to implement a $2 microprocessor rather than use a smaller FPGA or fill the FPGA with logic that can better benefit from the strengths that an FPGA brings to the table.

author: AndyC_772
author_rank: Super Contributor
timestamp: February 01, 2017, 08:32:24 pm
content: It's a very powerful combination.I do a lot of designs in which a microcontroller takes care of the high level functions of the product, and an FPGA performs functions which are time critical, or which would result in a lot of data which might use a lot of CPU time to process.For example, suppose you want to generate a signal, then digitise the response of a system to that signal. Something needs to drive the ADC, at exactly the right time and at exactly the right speed, capture the results, then perform some pre-processing such as averaging, filtering, multiply-accumulate operations and so on. The amount of data which the CPU ever has to deal with can be dramatically less than it would be otherwise, if you have an FPGA to do the repetitive operations.Putting these functions into the FPGA also means that, while all this is happening, the CPU can be talking to the outside world, processing commands, talking on a serial bus, updating statistics or whatever.I've also used FPGAs to implement interfaces that are uncommon, or perhaps not available in sufficient quantity in an off-the-shelf CPU. Need to build an interface card with 32 serial ports, all of which are active simultaneously? No problem: write one in VHDL, instantiate it 32 times in your FPGA, and use a high speed interface between the FPGA and your CPU.

author: sanwal209
author_rank: Regular Contributor
timestamp: February 01, 2017, 08:37:39 pm
content: Thanks guys. I got the idea. I will study fpga and its programming first and then will move towards combination of MPU and FPGA. If you can refer to any documentation to kick start learning fpga that would be great.Thanks again

author: nctnico
author_rank: Super Contributor
timestamp: February 01, 2017, 08:48:12 pm
content: Don't write off softcores yet. If -for example- you have memory connected to an FPGA a softcore has much better (faster) access to this memory than from an external MCU which may rely on a UART or SPI interface. Modern FPGAs like Spartan 6 have plenty of resources to run a 32 bit softcore like the LM32 from Lattice.

author: tggzzz
author_rank: Super Contributor
timestamp: February 01, 2017, 08:56:59 pm
content: FPGAs excel w.r.t. low latency, predictable latency, many simultaneous predictable simple computations.Processors excel w.r.t. complex conditional serial processing and computations, with longer latency, and unpredictable latency.

author: james_s
author_rank: Super Contributor
timestamp: February 01, 2017, 11:38:18 pm
content: Nobody is suggesting to write off soft cores, we are only saying that in some cases it makes sense to have a separate CPU, it just depends on what you're trying to do. FPGAs are really good at parallelism, and reconfigurability. If your processor needs are relatively simple then using a softcore will give you maximum flexibility, I mean you are then free to modify the CPU any way you choose by simply changing some code. One has to look at it on a case by case basis.As far as learning about FPGAs, I got started with a free book called "Free Range VHDL" and found it to be an excellent tutorial. I also learned a lot by looking at existing projects out there, and after the basic stuff I started connecting together blocks of code others had written using my own glue logic code to make new things.