Turning An FPGA Into A Powerful Microcontroller Without External Memory

FPGAs can do things that CPUs cannot do as quickly, or as efficiently, or simply cannot do at all. The bottleneck on rapidly expanding market usage for a powerful FPGA, with hard CPU cores, is that almost all applications use Linux. 

This requires a lot of memory, most of all RAM, and insufficient built-in RAM means an external DRAM is needed. “Bare metal” usage of the device has been quite challenging.

Using Elprotronic FPGA as a microcontroller

FPGA with built-in CPU cores has been used in our latest J-Trace PRO for quite some time.

The device has 256 kB of RAM and 512 KB of L2 cache for the two ARM Cortex-A9 CPUs. It also features a built-in 1Gb Ethernet, high-speed USB host and device controllers, and many other peripherals. You can also get Flash Programmers for STMicroelectronics STM32, BlueNRG, and STM8 MCUs, and STM32MP1 MPUs.

Best of all, any peripheral not included can simply be added using Verilog, VHDL (or similar), i.e. implemented in the FPGA. This device offers so much more power than a simple microcontroller that it is simply a beast!

This process enabled us to build a trace probe that is capable of transferring captured trace data in real-time to the host, where it is analyzed and visualized in real-time. 

Streaming the data meant no trace buffer limit, eliminating a significant weakness of less capable trace probes, which is ideal. In this device, we do have external memory, but only as an intermediate buffer for the captured trace data. It is not required for the operation of the unit, except for short periods where there is a communication “hiccup”.

Designing 

We could not find an inexpensive evaluation board without external memory and felt that if this was something we would use, others might too. We wanted a high-speed CPU plus FPGA solution that “simply works”, without requiring external RAM, so, like many times before, we decided to build one ourselves.

Advantages of not using external memory

Eliminating external RAM saves the cost of the RAM, of course. But this also reduces EMI, lowers power consumption, allows for a simpler schematic, a simpler PCB design (with fewer layers), and a smaller PCB.  Finally, you also get a faster boot and fewer components mean higher reliability.