EEVblog #635 - FPGA's Vs Microcontrollers

preview_player
Показать описание
How easy are FPGA's to hook up and use use compared to traditional microcontrollers?

A brief explanation of why FPGA are a lot more complicated to setup and get working than microcontrollers.
A short video linking to several other FGPA videos.
NOTE: This is very old footage that was meant to be part of a series of videos on trying out some FPGA demo boards. It's been sitting around for too long, so I'm uploading all the footage I have now.

EEVblog Main Web Site:
EEVblog Amazon Store:
Donations:
Projects:
Electronics Info Wiki:
Рекомендации по теме
Комментарии
Автор

I have come to accept that Bob's my uncle now.

fieryfirevivin
Автор

As an FPGA Engineer, I have had these difficulties whilst learning how to get going with the tech. However these devices are not intended to be hobby friendly, they are for specific applications and recently are becoming more popular due to the concurrent nature of the tech, also because you can design pretty much anything digital in these devices they are great for recreating obsolete protocols. But yes the tool chain and documentation is a pain especially for xilinx (but hey its free unless you want a paid core). I'd encourage people to get involved with them though, as there is a world wide shortage of engineers who can use them, and generally it's a well paid job with good job security.

tombola
Автор

FPGA = speed (up to 250 MHz), can emulate embedded cores (e.g. MicroBlaze MCS), multiple-clock generators, parallel execution, ease of intellectual property integration such as FIFOs, DSPs, you name it. *_The moral? FPGAs for the serious electronics person_*. I battled with learning Xilinx for six months, cursing every step of the way. Almost went NUTS but in the end, it is worth every bit of headache I got.

ocayaro
Автор

I like the diagram of an FPGA controlling a single LED on the side.

tohopes
Автор

PIC: I'm consistently the same all the time.
FPGA: Who am I going to be next time I wake up?

imabeapirate
Автор

FPGAs are really great for those interesting in retro-computing or learning how a CPU works. I am implementing Ben Eater's 8-bit computer in an FPGA in a series of videos on my channel for anyone interested. Very cool stuff!

philipacovington
Автор

Your energy and the clarity of this presentation is stellar! The insight into attempting to experiment with a BGA package (as if the Quad Flat Pack was not difficult enough) is so "right on".

skydavid
Автор

FPGAs are harder to use than microcontrollers, but I don't consider FPGA hookups complicated. Same with the multiple voltage sources. If you're messing with FPGAs, surely you can build basic voltage reg circuits. It's not for beginners, true - however the applications aren't for beginners either. FPGAs can do some seriously hardcore stuff that AVR's can't dream about, but it's primarily about the numbers of IO's and total system performance. Obviously they're  going to use BGA packages - you need the IOs. A beginner doesn't need 1000 IO's that need to be processed in realtime and in parallel, because beginners aren't trying to create radar guidance systems and the like. ;)

Just to kind of throw some basics here though, this is what you can do with FPGAs which is impossible with microcontrollers:

-Multiple clock domains (different parts of the chip running at different frequencies)
-Multiple internal PLLs/DLLs - even a cheap FPGA can be a fantastic multiple clock source. Need 50 completely different clock outputs? No prob at all. Most inexpensive FPGAs can produce ~500MHz clock outputs as a maximum, unless you use a transciever as a clock output haha. If you want very low frequency clocks, just divide them down with user logic. PLLs are extremely easy to make/use - from starting up Altera's Quartus to having multiple clock outputs ready to go on a dev board - maybe 3-4 minutes? No coding even necessary. Don't be misled though! FPGAs are still huge time vampires for more general cases haha. :D
-Massively parallel processing - you can have individual circuits for processing each pixel/pixel group simultaneously for realtime/high framerate image processing.. whether it's convolution or other kinds of deep frame analysis like doing gradient analysis on frame stacks for vector motion estimation, general matrix operations etc
-Perfect for things like singular value decomposition or tensor analysis on multiple data lines for work.. I mean FPGAs are the #1 most used chip type for let's say deep packet network inspection hardware (Hi NSA!!)..
-FPGAs are fantastic "bridge" chips, in being able to allow realtime communication between completely different bus types. They can both buffer and restructure the bus to allow them to freely communicate. If you need to wire unusual data buses together, FPGAs can handle that better than anything else out there. At most, you'll just need some level shifter chips if the bus voltages aren't compatible with your FPGA.
-Transcievers!! FPGA transcievers are basically parallel to serial converters which are a "hard fabric" in a sense that they're pre-built onto the chips, and they can give you datarates of ~600Mbps to 20Gbps+ per pin. They're fully configurable and it's even possible to use them for low datarate stuff if you cheat a little. Even some inexpensive FPGAs can do 10Gbps+ throughput per chip.
-You can interface many FPGAs (almost) directly with the PCIe bus for true modular hardware acceleration for various APIs. The PCIe bus is full of its own complications but there are dev kits that handle all that for you if your body isn't ready lol. One of the issues is that the PCIe bus needs a very fast response from any board that's plugged into it upon computer bootup.. and the FPGA programming time often exceeds that, but you can dedicate other controller chips for this job...
-It's not hard to interface multiple FPGAs together for more power. This is very common for specialized applications where you need to achieve particular specifications, and no other hardware can provide it for you. You can keep shoving FPGAs into your design until it works. Horrible price/performance ratio but it will accomplish the goal when nothing else will! This is very common but rarely seen.
-FPGAs are fantastic learning tools since you're the one who will need to build data buses to communicate with any other chips you'd like your FPGA to talk to.. which involves understanding the data and timing structure of those other chips. This kind of knowledge and experience is invaluable for hardware engineers.. but hey it's not supposed to be easy, you know? However, computer hardware gets much more complex than this and you can't let every little thing intimidate you. Take your time, just be persistent. Giving up should not be an option if this is what you set your goal to. Once you get the hang of it, it won't seem all that impossible, just challenging in a fun way. To avoid being overwhelmed, just start with an inexpensive dev kit until you're comfortable with the basics and then try your own designs. I will shut up now. Sorry but I love FPGAs. <3

oriole
Автор

I FINALLY got my USB Blaster drivers for my Cyclone II to work on Windows 10.

DoktorJeep
Автор

This is all assuming that you would be using an FPGA to replace a uC, whilst they are completly different things designed for different applications.

tHaHxr
Автор

The Intel/Altera Max 10 FPGA seems a bit easier than most FPGA's. It has internal Clock, internal Flash and internal SRAM. Intel also deliver dedicated power solution for easy implementation. It also Comes with ADC, and even optional NIOS ARM configuration. It also has support for Different types of RAM, PCIE, and Flash memory. It offers up to 50.000 Logic elements. Can do some cool stuff with this thing.

Still micro controllers might be easier though. But it all comes down to the application you need it for I guess.

Robbinsffxi
Автор

I'm still trying to learn how to use my Abacus.

onjofilms
Автор

I love FPGAs - can't argue with the complexity though - I use bi-directional bus switches to handle voltage level conversion (the commonly used mosfet level translator affects rise and fall times which can be significant in some designs). An EEPROM eliminates the need to reprogram it after cycling power and there are Non-Volatile FPGAs available. But yeah - if you can get the job done with an AVR, PIC, etcetera, I agree with Dave 100% that would be the way to go. I am about to watch ALL of his FPGA videos - Dave is a Dynamic personality with a beautiful method of presentation (i.e. Genius)

robertturner
Автор

I have worked with Fpgas since 2 years ago, and I love to design my own system, I think that Fpgas are better than microcontrollers
because you can understand how to work the hardware. You think like a machine. A simple example. If you need to divide 2 numbers using software programming like C/C++ you only need to write the symbol "/" by the way in a Fpga you need to understand how to operate the mathematical function to implement a Vhdl module which realize your operation. You need to generate your own code to your system can difference between a signed or unsigned number, number of bits, etc. format: fixed point or floating point. There's so many things that you need to consider, but the thing becomes more interesting :)

lilianagonzalezarciniega
Автор

I would rather use an FPGA board and go through all the difficulty to program/map a simple function. Why? I get to learn all hardware works and how protocol is defined, but with micro-controller, you mostly use the existing library people wrote without needing to know how hardware works, that's not the spirit of electrical engineer. For example, who knows how a 16*2 hitach LCD actually works? Most of people just know how to use a command defined by others to display and scroll words...

FungSit
Автор

Dear Bob i love your videos. Fpga’s are superior products.i love them

mjidomaroc
Автор

"Bob's your uncle", love it!

ChrisLeeX
Автор

I think the only difficult part of an FPGA is doing all the connections. After that it is just as easy as programming a micro, but with a totally different perspective on what you are doing and a totally different way of thinking.

Fantasma
Автор

SPI is by for the easiest configuration memory to deal with assuming you are already hooking JTAG into the FPGA. To flash the SPI, the tool loads a special bitstream onto the FPGA that is used to program the SPI flash from the FPGA.

But yes, its a pain, if you screw up the program select pins, or the voltages, or the pullup/pulldown, etc, etc, etc., it won't work, and it won't be clear why.

russdill
Автор

Getting flash with the four screen end selection - well done !

myozone