The "Do Anything" Chip: FPGA
Vložit
- čas přidán 21. 08. 2024
- Learn about the FPGA, the reprogrammable silicon chip that can be made to do almost anything you can conceive of! For my book "Secrets of the Autistic Millionaire": amzn.to/3diQILq
FPGA Starter Kit: amzn.to/3z7OIkq
FPGA Dev Board: amzn.to/3ZaFePH
Orange Crab FPGA: amzn.to/3LOMgXq
Follow me on Twitter: @davepl1968
Discord Chat w/ Myself and Subscribers: / discord
Remember, any "Contact me on Telegram" comments are scams.
FPGA engineer for over 20 years, you did a great job of summarizing what they are and what they are for!
Great, now tell me what is the correct format to create a VHDL counter, seems people have different opinions, like reset condition should come first, others say the increment and then a simple if condition to reset it, what do you think?
@@engjds I think you should write your code in such a way that:
1) it implements the hardware you expect
2) the code leaves NO ambiguity as to how synthesis turns it into hardware
3) the result is timing clean and complete
What you describe doesn't sound like something that should have an impact, but I'm more a verilog person so when it comes to VHDL I've been surprised many times how 'specific' VHDL can be.
@@repatch43 Thanks, good tips, I have been playing with code and then viewing the RTL it generates and I can never get it to look how I think of it in hardware, it works ok, but for instance if I make a counter, it uses say a 25bit reg feeding back into itself through a sum block, problem is I work across platforms, currently on the nano littlebee 1k, but also used Altera, am I right in thinking you have to modify code for each fpga platform because of the CLB differences or is there standards out there that should compile efficiently on any fpga?
I am confused as to how many processes I should have in my design as well, am I right in thinking you would have one process per clock type?
@@engjds You shouldn't worry about the underlying architecture of the FPGA much when it comes to core logic, unless you're REALLY trying to optimize every last clock cycle or LUT out of it. It matters much more if you're trying to infer memories or math functions, since the same bit of RTL that infers say a block ram in one architecture might infer a see of flops in another (although if you stick with registered reads, writes and addressing you'll usually be fine). Also, keep your clock gating (if used) VERY simple, if you go at all complicated then you'll have to start writing architecture aware code to properly infer the clock control blocks relevant to that architecture (unless you like hunting down REALLY hard to figure out timing issues).
I don't think the number of processes matters much, as long as each is exclusive (i.e. you're not driving the same reg in different processes). I personally prefer all the logic in a clock domain to be in a single block, and if that starts getting too big then start using modules to partition the logic appropriately (using modules in general is a good idea, makes code management and portability much better).
And no matter what, FULLY constraint your design. Make sure all your clocks are properly constrained, and CDCs are handled properly, and all IO related timing is specified. You should have NO timing warnings at all if you want to have a good time.
All i can add are what i wish for the Future...The FPGA Lobby meets the Right to repair people and get a rule...if you Stop selling your Product, IC or Controller you have to give the VHDL Files to replicate and keep Things going.
Greatz from Germany
and have a nice Day
opo
As a Xilinx (now AMD) employee focusing on embedded software in the SoCs I am glad to see content like this finally happening. I have been a believer for a while that embedded FPGAs is the next frontier of hobbyist computing
Agreed, I'm an engineer doing both hardware and embedded software. I enjoy the flexibility of fpga's but find myself using mcu or clpd more for costs
I wonder how much time will take until FPGAs are powerful enough to replicate the PS3.
Yeah except for the price, that refuses to come down...
@@jangelelcangry check out the MiSTer project. I am pretty sure there is already a PS3 core for it.
As an electronics hobbyist, when the hobby started moving into CPLD's and FPGA's I was stumped. Technology was leaving me in the dust, much the way older mechanics felt when computer controlled cars started coming onto the market in the 80's. A whole new set of tools and modes of thinking were required to work on them. Those of us who cut our teeth on 74ls logic and analog electronics were suddenly left scratching our heads. If someone can point me to a good tutorial on how to program these things and open source software or even inexpensive commercial software to build the VHDL/Verilog files needed and how to use the software, that would be great.
Used to work for a hedge fund (sorry). We used FPGAs in exchange-attached data-centers as custom network cards. They obeyed just enough of the network protocols to work with other devices, but stripped away any and all surplus code and functionality and trimmed every bit of timing down to the bone. All so that we could beat some other guy's trade onto the exchange by nanoseconds. Pointless arms race, but it kept a couple of large-brained coders busy for a year or two. Went to work for a health-oriented startup to cleanse my soul after this gig.
Why would you say sorry to that?
Maybe its a generational thing, but honestly jobs like finance, defence contracting, and whatnot, are genuinely good jobs that alot of young people would be in.
Google and Facebook are the litteral antichrist.
I hope you're healing well
As someone who will be interning for a similar gig this summer, can i ask you few questions?
@@tommyshelby2020 I was back-office (reconciliation, market info stuff etc) rather than on the HFT side. Our FPGA guys were recent maths graduates with encyclopedic knowledge of protocols. I never actually met them (they were 8 time zones away), but they were extremely focused! As far as my work, straightforward Postgres, web, FIX protocol parsing for reconciliation every day along with office support. Stay on your toes, be flexible, not all people in finance are alpha-males (but most are, even the females). Do the job well and you’ll go far, same as in any industry, but the bonuses can be fun if you ever get a paying gig.
@@tommyshelby2020 tried to reply with general background stuff and it kicked my comment. I was only on the back-office server-side (and office support). The FPGA guys were recent maths graduates 8 time zones east of me with encyclopedic knowledge of protocols, timings etc. . Traders were all good-sorts, although the boss was a little intense, if brilliant. They'll expect you to put in the hours, solve things without thanks (at the time) and generally excel invisibly. Goes without saying, but the numbers are the most important thing - never do anything that risks the accuracy of the data, or stops users seeing their figures at all times. If you get a paying gig then the bonuses can be fun. I got to work inside some excellent facilities (like the London Stock Exchange data centre several floors below the streets), similar setups in Frankfurt and less exotically, Slough. Though I was never a part of it (chronically socially inept), the out of hours social side was active. I left the game in 2017 I think and maybe everything's really dull and by the books now.
In 2005 I took a course in VHDL which I found so amazing... when I started to understand that the order of some rows of the code you wrote didn't matter as they would be "executed" in parallel. My C++ brain had a hard time accepting the lines of code didn't "execute" in the order that I wrote them but could be "executed" at the same time.
Currently taking my first Verilog course in University and this literally just clicked in my brain this week (8 weeks into class, our Professor didnt do much explaining and just threw us some half finished code lmao)
Does anyone of explore how that works???
Well even C++ code you do write is not executed in order. Most of the current cpu's does parallel pipelining so you can actually execute more instuctions in one clock.
The purpose of VHDL is not to execute.
It is NOT a sequence of instructions.
It's a language to create hardware.
Thanks, Dave! FPGAs have also found a niche in the retro gaming community, often cited as the gold standard of “emulation” versus software emulation.
Yeah, doing emulation when multiple chips/processors are involved can be incredibly difficult to do both accurately and quickly at the same time without an approach like that.
What's in the FPGA for emulation if not a microprocessor running code?
@@deang5622 The FPGA can emulate all the parts of the target system at the exact same time, so interactions between them that depend on the precise cycle things happened on still work properly. A software emulation approach usually has to make compromises in order to run fast enough, such as, for example, running a batch of CPU instructions in series, then emulating some of the GPU, then emulating some of the sound, etc.
@@deang5622 It's more like "hardware" emulation. (Fpga) Basically makes real time cycle accurate emulation accessable.
That's ... a really excellent use case that makes a lot of sense; can't believe I hadn't realized this sooner lol
Thank you for the edification!
Excellent topic, would love to see a part II where you implement something using FPGAs. This reminds me of using bit-slice processors, certainly far more limited than FPGAs but allowed us to build custom systems with off-the-shelf chips.
This would be awesome
Starts with an LED bar spectrum driver and ends with a full soft ESP32.
Fellow AMD bit slicer? (circa mid '80s)
It sounds like you've only just discovered FPGA's?
A similar technology from the 80s was called the Uncommitted Logic Array, where there would be a base chip made with a bunch of logic gates but no connections between them, so a company could cheaply customize it by creating a mask for JUST the connections they wanted. Was used to great effect in the ZX Spectrum, and was a powerful prototyping tool, but since it still required making new masks for each semi-custom design and they could only be used for their originally designed purpose, it was a much less powerful technique.
PCB designer here. In the 90's and early 2000's I layed out many boards with Altera FPGAs. 500 pins and up BGAs. The circuit design engineers were using Altera's rather expensive design software that was schematic based in addition to writing the Verilog/VHDL code.
The biggest project I worked on was a Reflective Liquid Crystal Display for a HDTV projection TV. The design task for the engineers was to take a DVI signal and and condition it for the LCOS chip. There were, if I remember correctly, were 16 differential outputs from the FPGA to the LCOS drivers. The engineer let the Altera software autoroute the output signals.
Recall that I said these were differential outputs. Differential signal pairs needed to be routed on the PCB with certain parameters to keep the signal timings and impedance correct.
The output signals were routed to random pins on the FPGA. I asked if the output pins could be routed to fan out from one side of the FPGA and each pair would be on adjacent pins.
The guy yelled at me "It WON'T work! The software picks the pinouts!"
I persisted. I gave him the desired pinout and asked him to run the software with the output pins I assigned. He grumbled about how long it would take for the software to recompile the design.
He ran it with the pinout I asked for and the simulation in the Altera software did not complain a bit!
The PCB layout had no problems with signal integrity.
What a shifty story that doesn't add any value to this comment section
@@jkf3169 *Shitty
@@jkf3169 im gonna touch you
Yet again Dave delivers video content that I already know about, or at least 99% of it, but I watched because it is a masterclass of clarity and precision description. I am no longer involved in the electronics industry (in London's Met Police), but I never quite got to the stage of needing an FPGA in my designs. Wish I had got to that level though because if anything, FPGA really sound like a solution looking for a problem. Would have been fascinating to work with such devices.
Real-time high performance imbedded devices…. They are pretty sick for that purpose. Currently on my list of things to learn in order to upgrade some medical devices.
I've used several FPGAs as glitch chips for game console home brew projects, they're fascinating.
Good evening, sir.
I'm working on a FPGA project. it involves a machine learning model. I am thinking of burning a Linux OS onto the board so I can run python on the Linux. or is there any way around it.
Thank you.
Thanks Dave! Glad more people are getting into FPGAs and hobbyists using them. Digilent also has some CMOD boards that are cheaper to get into and are bread board friendly. Altera (now Intel) has a MAX10 board on Digikey for about $50 that I’ve used in a project before.
This is one of the most significant inventions ever devised.
Hi Dave, I just wanted to tell you that your explanation of all the various logic gates is the best I have ever witnessed. Great Job! BTW, your mentioned in one of your earlier videos that one of the reasons you make them is an exercise to overcome some of the symptoms of Autism; I just wanted to let you know that you are doing great and I have noticed the change over the past years, and you have no issues communicating at all! Glad to see, and please keep up the great work.
This was a superb presentation.
Agreed! ✌️
i didn't even realise you were on the spectrum till you mentioned it at the end. i am also on the spectrum.
@@graemehoward4136a little bit of tism seems to help people excel but then you have to deal with the said effects
I used to work in ASIC (with Toshiba) now I work on Altera FPGA's, they are great chips and these days we are commonly working on designs running at 150 to 300Mhz. One comment to make, while we can optimise our designs for various logic gates in asic commonly we use 'standard cell' the technology in ASIC's is often full of frankenstein and-or gates that work better then individual cell gates that perform a single AND or OR, so I write the high level logic and let the compiler do the optimise it.
I take the same approach on FPGA's - a good design architecture is the key to small/fast :)
FPGAs are one of the most satisfying devices an electrical computer engineering can learn to use! They are the perfect interface between compute hardware and software!
One interesting advantage FPGAs have over ASICs is the fact that fewer people and companies have contact with your design. This is extremely important in areas like military electronics, where you don't want a chip design falling in the hands of an enemy country trough the IC manufacturer.
One place where FPGAs are often found is in the electronics lab equipment. Stuff like oscilloscopes, signal generators, spectrum analysers, etc. Those are relatively expensive and low volume products. In the past they were dominated by ASICs, but in time FPGAs took over.
The enemy is within - humanity should be co-operating towards ending conflict by lifting each other up. There is nothing new under the sun - if you can think it, it’s been thought of by someone else as well. A midnight change to a foundry lithograph to backdoor some innocuous looking JTAG function could be used to disable the whole die on command. Evil people buying off less evil people with counterfeit currency is how the world is ending, plain and simple...
Do people use them for block chain mining?
@@nosuchthing8 You could, but the power draw would be higher than a graphics card or an ASIC miner.
@Nikola Manolov good to know, thanks!
I’ve seen several CZcams videos of missile internals recovered from battlefields. Hobbyists buy these “dud” missiles from Ukraine and other regions to take them apart to see how they work. You can see big FPGAs on the circuit boards. Hopefully the configuration code is heavily encrypted.
One of the best introductions to FPGAs on CZcams! Thanks Dave!
You mentioned ASICs compared to FPGAs. I'd point out that while FPGAs are highly configurable compared to ASICs, ASICs tend to be faster and smaller since they are dedicated solutions that lack the delays inherent in programable circuitry.
I also think it would be interesting if you dived into how the logic blocks are implemented in differing FPGA architectures. Also an overview of PLDs / PALs / PLAs might be interesting as well.
Great timing! I'm learning digital design right now in college!
I have owned FPGA based computers for years now. My first was the MiST which is designed to be an Amiga or Atari ST computer (The name is a mix of the two computer names, Mi from the middle of Amiga). It can also be other computers like the BBC Micro, Sinclair Spectrum, C64, etc. by changing the FPGA configuration, known as cores.
I then got an FPGA dev board to learn how to program FPGAs which I gave up on, not motivated enough these days I guess.
My next one is the MiSTer which is the same idea as the MiST but uses a dev board instead of a custom board, though it does have custom boards to enhance the IO adding VGA output to use old CRT monitors for more authentic experiences. The dev board is the DE10-Nano from TerrasIC, those are very popular in retro computing and gaming these days and have many variations of addon boards including my latest the MiSTer Multisystem which turns it into a console.
My next FPGA based computer is the Spectrum Next! The latest officially licensed Sinclair based computer. I am waiting for the second revision of that to be shipped too. It's a modern implementation of the Sinclair Spectrum computers, what they think the next version of them would have been with enhanced sound and graphics. It can also switch into Spectrum 48 or 128 modes for backwards compatibility. Being FPGA based it also supports other cores to become other machines, though you have to try to use them with a Sinclair keyboard! lol (It does have PS/2 keyboard and mouse support if you don't like the Sinclair keys)
I also have a TerrasIC DE0-Nano dev board that I bought by mistake trying to order another DE10-Nano, I kept it anyway just in case I try again to learn on a simpler FPGA lol
I write C/C++, Assembly and Verilog now for around 4 years, I am happy that I have my own FPGA lab at home, I work as a C++ developer at my working day, but when I get home, this is my time, Thank you for this great content
Good Evening sir.
I'm working on a FPGA project. it involves a machine learning moel. i am thinking of burning a linux OS onto the board so i can run python on the linux. or is there anyway around it.
Thank you
@@usmanabdulsalamolanrewaju1435
Just get a SoC FPGA board and you are ready to go
FPGAs are amazing, and I have had a very happy early career based on them. They are huge in trading, as well. Programming them is still a huge pain, unfortunately.
One nitpick: FPGA CLBs do not actually contain logic gates - they contain lookup tables that can be configured to act as arbitrary combinations of logic gates with n inputs and 1 output. Modern FPGAs use 4- or 6-input lookup tables as their basic building blocks, often with some hardware to combine those lookup tables together to make wider functions.
Not sure about the "huge pain", I'd take an FPGA instead of an MCU for most of the projects (well, besides the cost considerations), because it's easier to program.
Oh.. that's what LUTs are.
In college, several times I just used an EPROM to implement moderately complex logic circuits by just storing the truth table. I couldn't (easily) use them for things with feedback, such as flip-flop circuits. But that is possible by looping one or more output lines back to an address input.
@@strehlow Yeah, it's kinda like, you could build a computer entirely out of SRAMs but you'd have a hell of a time booting it
Hehe, I had the same nitpick.
Also, CLB is not a standardized term, it's specific to Xilinx. Intel calls something similar an ALM.
FPGAs and CPLDs have revolutionized the retro gaming community. They've enabled everything from optical drive emulators and flash carts to video output mods to analog video scalers to entire FPGA-based game consoles like the MiSTer and Analogue's product lineup. This is because the cost of small FPGAs has finally come down to the point where it's practical to use these for small-run consumer goods like this. Right now the state of the art for implementing consoles in affordable FPGAs is the Sony Playstation and Sega Saturn, though the Analogue Pocket handheld FPGA-based game console also deserves a shoutout for the form factor.
This channel should be required for all Computer Science / Electronics students.
This is not an electronics channel.
@@stargazer7644 It is not a Computer Science channel either... but the information distributed here is value to young enthusiast despite it all.
Worked with a company that used these extensively. We were building custom interfaces to some archaic main-frames. Back in the day, an interface board was a 19-inch rack board loaded with 7400 series chips to handshake with the bus (32-bit data, 24 bit address and a dozen or so other hand-shaking signals). We still used the 19 inch form factor, but was reduced to just a half-dozen chips, two or three being FPGA.
During testing, have a glitch? slight timing issue? Tweek the design, attach the programming cable to upload the change and try again. Really fantastic devices.
Thanks for the in-depth explaination, I have a FPGA in the form of the Spectrum Next Computer, a FPGA tuned to a Z80 based system.
Wow. I am subscribed to quite few CZcams channels covering different computing topics, including your channel of course. You are actually the first that went through the effort to produce a video of FPGA's.
Do you have any plans to create some more in depth videos on the subject?
I also like your approach on these kind of subjects.
Check out asianomety.
Such a great timing! I just recently started learning about FPGAs and this is a fantastic introduction. Thanks a lot!
Definitely would like to see more like this. I've been interested in FPGAs for a while now but haven't had the time to dive into them the way I want -- I"m usually an all-in kind of learner...if I can't devote a lot of time to it, I wait until I can, otherwise I end up with a hodgepodge "patchy" knowledge I can't really use efficiently.
I really like the chips that combine a micro controller with a basic FPGA. This can give you the best of both worlds and can really open up your development options.
We find the Cypress PSOC indispensable in this regard.
As a board jockey with over 100 FPGA designs and 300 PLDs prior to that I will caution you that although the FPGA and its embedded enhancements have gotten really compelling they have never been the panacea that they advertise. The first and foremost issue is cost. In small volumes they are prohibitively expensive for products you intend to retail. Now I have built protos with them to enable the extended team to get moving on firmware/software development and then moved the design to an ASIC for volume but that's all. The ASIC solution is far more efficient and cheaper with lower power and heat. The second secret is that for any design you only use a small fraction of every macrocell (or whatever they chose to market them as). The spec sheet will call a part as having XXXXX equivalent gates but due to the nature of macrocell layout for a particular portion of logic only a small chunk of that full macrocell will be used. Fitting into an efficient cost effective design is a bit of labor. Finally, pinout. I do not know if they have fixed this nit. I certainly asked them on many occasions. Its not uncommon, given the above inefficiencies, to have a fit issue in a design. You'd love to be able to just bump up to the next price point/density and leave it at that, but the last I saw, and its been a while, moving from X macrocell to y macrocell changed the pinout which means a PCBA spin. You can go from 128M Flash to 256M Flash with no PCBA spin. It would be so nice to be able to do that with FPGAs. I will say the best fit I had for FPGAs was in cryptography. LFSR's just fit so nicely in an FPGA. The second best fit harkens back to their original intention - gobbling up combinatorial logic. Really good at that. Great for IO address decoders etc. For super high speed stuff (PCI-E, PAM, Nteworking, etc) the IO's are usually excellent BUT the cross chip routing CAN make the overall circuit slow down below the capability of that IO. That takes a good amount of pre-planning and paritioning to succeed. Much more than code the Verilog/VHDL and push "program" like a microcontroller. And of course every change/enhancements restarts that joy and God help you if you need to change pinout.
And lest I give it a bad name - these puppies are super useful in one critical place. Everyone knows that the way to win a market is with an ASIC. A single monolothic chip purpose built for the need in the most efficient way possible. ASIC changed the world. Your NVIDIA card is an ASIC. That same design done discretely would cost tens of thousands of dollars, draw 100 amps, be two feet square and need its own air conditioner. (This is how it was.) Well to make an ASIC takes a lot of effort and a large team of designers and verification people to shake it out. This is traditionally done with simulators. Simulators are slow - very slow. Depending on your CPU/CPU array setup this can mean minutes per nanosecond of realtime. Imagine decoding an MPEG4 stream using this. The solution, for those with the capital, is to build or buy an ASIC Emulator. This is a system with arrays of FPGA's interconnected. In some systems you can even put the actual real world IO into the mix with a custom built IO card. You take your big design, partition it across the array of FPGAs and run it there. ITs expensive but when you you need to compress the development cycle down to a minimum - winner. And in my experience it found bugs (humans can make mistakes - its okay) that would have taken months of simulation with a low probability if finding them even then. (Called corner cases. And these were almost always where one circuit was done by one designer and the other by another.) I can guarantee that the stream you are watching is traveling across a chip developed in this way.
Hey Dave! I have an old Digital Computer Corporation "Computer Lab" from 1968. it is a wooden frame wrapped around a sheet of glass with a bunch of holes in it where you have to insert jumper wires in appropriate locations in order to program it for various logical functions.
Almost all of the "chips" on the board are quad input nand gates, and you have to use them in clever ways to make them behave like all of the other logic gates. I have a copy of the "computer lab workbook" that accompanies it, and in the book they explain the cost of discrete transistors at the time, and how a quad input nand gate was just under ten dollars (10$ in 1968!) and a single transistor that performed any of the other operations was around 15. It would appear that the process to create nand gates was relatively easy and cheap to do at the time, but any of the other logical operations was cost prohibitive...
I have mine all wired up to demonstrate counting in binary, and I bring it off the shelf from time to time and show it to my students, especially when I start teaching them about IP addressing and bits and bytes.
These things came with an obscene price tag in 1968 as well. My favorite part in the book is where it says that "some day there will be a computer in every city."
Anyway, how's that laser tempest coming along? :D
my favourite activity is watching Dave’s videos at 0.75 speed, you get all the usual eloquence and terseness combined with the jolly spirit of your uncle at the holiday banquette.
Wow!! I love your videos so much, so comprehensive, scratches the pre-sleep learning itch quite well
Very cool. Thanks for the video. I'd always wondered why people used the more complicated and expensive FPGA's instead of just grabbing a microcontroller :)
Thanks Dave. This is exactly what I was looking for to bring me back up to speed so that I can get myself onto a new learning curve. I like the simplicity in the way you can explain what you are talking about. It's how I can make this comment within the first two minutes. I appreciate the fact that you know what you are talking about.
I compare FPGAs as the compliment of a microprocessor. Processors are really good at doing random thing sequentially while FPGAs do a really good job of doing the same task simultaniously. As an example FPGAs are inefficient at doing one time tasks like initialization but great at repetative tasks like applying a transform to an image. Processors on the other hand can breeze through one time tasks but can quickly bog down on repetative tasks where you need to do the same operations over and over again.
Very interesting. Thank you !! A great followup would be to compare FPGA's along with other items such as; SPLD, CPLD, ePROM, PLA, PAL, GAL. Cheers
Great Explanation! I am glad to see someone give some promotion to FPGAs. I always believed they could be a great tool for hobbyists but until recently, the cost has been pretty steep. I've been using Alter (now Intel) devices since about 1990-ish, primarily for video controllers and occasionally some special interfacing functions. Last year, when FLGAs were all but unobtainable, I looked at doing a board with LVC logic to replace one PFGA. That was the point where I fully realized how much time FPGAs have saved me over the years and in the end they make for a far less expensive solution. I have designed a number of building blocks over the years and I still use some of the ones from 1990s unchanged hey just get compiled into new devices. Need to make a circuit change, just reprogram. It isn't uncommon for our first rev of a board to work and be production ready.
For me, one of the things that defines needing an FPGA is when I need very precise timing, in my case video controllers are the main reason. While a few people have made general purpose processors produce video, it generally doesn't some close to meeting the stringent specs required or have good flexibility. FPGAs excel at this when a full blown GPU is overkill. They also work great when you have a lot of random logic that just needs to be condensed.
From a hobbyist standpoint, I see two major issues. The learning curve can be very difficult to get up and running quickly. I believe with more people promoting FPGAs to hobbyists, that could change. To get something simple up and running on a device like a MAX10 is actually pretty simple once you learn the process. But navigating the initial settings for a project can be very intimidating. But it isn't much more difficult than using a new microcontroller for the first time, there just aren't as many public resources. Perhaps the most difficult part is the physical package itself. Most FLPGs these days are in Ball Grid Array packages, not exactly the easiest to work with. I'd like to see some small, affordable development boards become available for getting started. I've seen a few int he $50 range now but the ones I have seen have some quirks. Even if they required a separate programmer, I think a small starter board could be done for maybe $30 and still have considerable power.
Thank you again for a great video!
Great video, Dave. With all the videos about microcomputers and microcontrollers it seems as though the glue logic has been forgotten. 30 years ago I used the Xilinx FPGA's as modules to interface the PC bus to card specific functions.
There are actually software libraries for FPGA's to emulate more complex hardware, microcontrollers being one group.
Imagine downloading the microcontroller that you would like to use.
This was 30 years ago. I'm just getting back into it now. Keep us posted with your great informative videos.
Must be the best video on an introduction to FPGAs.
Thank you very much for such a well structured and to-the-point introduction to the FPGAs!
FPGA's are fun. I've been designing on Xilinx FPGAs since 2005 and the XIlinx Zynq Series since 2013. Lots-o-fun. :D
About to complete my Digital Systems Lab course at college, we're learning about FPGA and Verilog. Glad you've made this video!
Extremely succinct introduction to FPGAs! Thank you Dave.
On outdoor LED signage, it’s common to see Altera FPGAs for the main communication board as well as the distribution boards just before the LED driver boards.
Thank you Dave!! A friend of mine just asked me what an FPGA is, and your explanation is much better than the one I gave him!
Cool summary. I appreciate your channel’s info density 👍
Great explanation and introduction to FPGAs.
Even though I only do some hobby programming, your videos are more understandable than most of my computer science classes back in university.
15min. video took me more than 30min. to understand well. Thanks a lot ❤
There have been some fascinating FPGA projects like the one in which an digital signal processing FPGA was developed iteratively with genetic algorithm and the resulting functional FPGA had internal circuitry that was not connected to any input or output, but if that extra circuitry was omitted the FPGA no longer functioned.
There are several types of logic gates, including:
AND gate: outputs a high signal (logic 1) only when both of its inputs are high.
OR gate: outputs a high signal (logic 1) when one or both of its inputs are high.
NOT gate (also called an inverter): outputs the opposite signal of its input (i.e., a high input becomes a low output and vice versa).
NAND gate: a combination of an AND gate followed by a NOT gate. It outputs a low signal (logic 0) only when both of its inputs are high.
NOR gate: a combination of an OR gate followed by a NOT gate. It outputs a low signal (logic 0) when one or both of its inputs are high.
XOR gate (exclusive OR gate): outputs a high signal (logic 1) only when one of its inputs is high, but not both.
XNOR gate (exclusive NOR gate): outputs a high signal (logic 1) only when both of its inputs are the same (both high or both low).
These logic gates are the building blocks of digital circuits and can be combined in various ways to create more complex logic functions.
One of the classes I’ve had at the university was programming a Xilinx FPGA using things like 7 segmented display or a model elevator to make something more tangible happen.
Looking through the comments it is great to see how many other fans of the MiSTer project commented on this video. This was my first introduction to and FPGA. With your love of classic computing I would think it would be very interesting for you to take a deeper dive into the project. I took a quick look and Tempest has not been added yet. It appears your surgery went well and as a father of a son on the Autistic spectrum I really appreciate your book. Great channel, thank you.
Thanks Dave...You've given an old man another avenue to explore. Excellent!!!
Brings back memories... I remember tinkering with these in college in the late 90's. Never touched one again but it's cool knowing they are still a thing.
Nice summary of FPGAs. Having Open Source tools to do the development work for these devices is fantastic.
I'm a big HiFi fan, and there's lots of new/newer gear using these. Like Chord from England makes really nice DAC's (digital to analog converter/external sound card) that use these for the whole process. And other companies, like Denafrips from China use them in their r2r DAC's (r2r uses resistor ladders to do the DAC) to basically control the resistors on the unit.
And there's plenty of other examples too. Most are not cheap though. And I've only seen them used by smaller companies, like the two I mentioned.
Either way. Thanks for the super video Dave. Very informative. You learn about these types of things, and you think that you know all about them. Until you watch a video like this, and realize there's a lot more to it. ✌️
Wow. I really appreciate you gathering organizing and sharing all of this information. You are my hero!
one reason FPGAs might become more common is that the extremely expensive NRE on modern processes can be spread over many many more chips, so they can take advantage of newer, faster, cheaper, processes
Cool, as a C# software developer (starting in BASIC on C64 back then) - I finally got a better understanding of what FPGA's are programmed. Excellent and clear explanation as always Dave.
Love the explanation of logic gates, wish I had so good of a lecture about them back in '83 when I started as a technician for Radio Shack.
I enjoyed programming FPGAs. I developed many single chip solutions for the telecom industry.
Pretty wild and we actually covered FPGAs in a recent course.
FPGA + ChatGPT might have some interesting applications
Thanks Dave, as always great information! Your work is much appreciated!
What we had before a microcontroller? A suitcaseful of TTL-circuits.
FPGA found in the "Ain't Miner" Cripto Curency engines, very costly to run banks of them in one module. and as soon as 6 to 7 months go by, upgrading to newer faster engines is a must to meet bank.
O fun, you can get those cheap now... desolder the many, many FPGA chips off the boards, for DIY, or whatever. Just a mention on saving a lot of money for a lot of working used FPGA chips.
I like hearing about this - I work with JS on the daily, so opposite side of the spectrum, so hearing about it put in this fashion makes a lot of sense for how it can fundamentally help with re-creating entire processors if you really wanted to
Fantastic video. Answered so many questions I had about FPGAs. Your video are very good.
Flashback to Uni, where we've implemented a MIPS processor on a Xilinx board and wrote some assembly for it. Best class that semester!
I'm in the process of designing a microprocessor to go onto an FPGA. The processor architecture isn't directly comparable, but I think the performance would be roughly the same as an Intel 486SX.
Nice overview, Dave. I'm a retired EE who has worked with microprocessors and microcontrollers but never FPGAs. Maybe I'll try one of your links below. Thank you!
I'm impressed because it's obvious he's not reading from a script!
Learning Boolean Algebra for logic gates was fun at first, but then became a bit mind numbing, thanks for the info! 🤖
Then we have the FPGA's wierd cousin: the field programmable analogue array. I have never seen one but read about them in an article about implementing model predictive control in analogue circuits.
One note on FPGAs being reprogrammable: Most are, but not all. One Time Programmable FPGAs exist. These use fuses that are burnt to program the FPGA.
Great overview and content around FPGAs. They're also used in retro game & computer implementations, e.g. Mega65 & MiSTer and the Commander X16 is using one for its graphics chip (VERA). On the logic gate descriptions, I think I want to be an OR gate, i.e. high most of the time. hahaha. Thanks Dave.
The parallelism is what made my college capstone project possible, because I needed to do Fast Fourier Transforms in real time
Love your videos Dave! Thank you for sharing with us.
Ha took me back to my first electronics projects , Fairchild gates flipflops , ittle round pills with eight legs , replaced a hand full of parts . You could build a digital clock the size of a shoe box but still needed driver cir units to control the nixie tube output. Gave off enough heat to toast bread. Take care.
I have been really considering getting into FPGA's . As some of the engineers have noted below, its about time this makes its way into the hobby space.
Dave, do you still stand by the Digilent Basys 3 you suggested?
Great video if I could hear it for my kids swinging from the curtains. Historically people used to use NAND gates because they are simple to make using early transistor logic - like two transistors and a resistor. Then you can make pretty much any combination of logic out of those, even state machines - and state machines are really the ancestors of the microprocessor. You can with a paper and pen minimise the Boolean logic and get an answer expressed as nand logic. Early on people twigged that if you have a huge array of these identical blocks and you could somehow wire the grid up by connecting or disconnecting the blocks to a large grid you could realise almost any combinatorial logic. Some are fuses which are blown at first program others are programable as mentioned in this video. I think nearly all load the "program" from serial flash on reset. They were less efficient than application specific designs because you might need to arrange your blocks in a convoluted way to achieve something that can be done in a proper design with a handful of transistors, and with NMOS all those gates were burning away power - even the unused ones, but today they contain all sorts of wonderful blocks and you can control the power usage precisely. You can even specify an FPGA derivative with a built in 8051 or ARM block so there is no compromise (except cost). The FPGA doesn't need an OS and complex outputs can respond immediately to inputs without having a "thinking" state machine in the middle. For most of us though, general purpose controllers are so cheap and so fast that FPGA's aren't necessary, you can get microcontrollers for 1 cent, and you can connect it directly to a 3v coin cell and off you go. But FPGA's are found in a lot of consumer equipment typically where signal processing is required in low power where a general purpose CPU would make a meal of it, tinkerers like to use them to realise replicas of long discontinued retro parts including entire processors complete with the bugs! They are however, in my opinion very hard to get started with and I reckon most of them tinkerers will already work with FPGA's as a day job. The minimum you'd need as an evaluation board, sdk and about a month free from interruptions and screaming kids. But, if you have an idea and you can come up with the design blocks you can take it to someone who would find it child's play.
The mandatory thumbnail face... 😂😂
Thanks. Finally I learned what FPGA means.
I would love to get into FPGAs however finding both information on how to develop these is very scarce especially on youtube. A lot seem to make 1 or 2 and promis more but are never heard from again. Would be great if someone made a complete youtube series on FPGA as a whole subject.
The NAND to Tetris course uses simulators rather than fpgas, but it teaches enough that transitioning to an FPGA shouldn't be too hard
Jeri Ellsworth posted some over a decade ago IIRC. There are a bunch of brands and toolchains, Apio might be of use.
Dave I really appreciate this video. Very clear and informative. Thank You
Excellent. I might be able to finish 'Robot Odyssey' now.
Wow... 😮
Are you my new hero ? This has to be the best video on the topic. Your shirt is epic. And you have a book on autism ? ❤
FPGA is the obvious stepping stone to a full VLSI, and can be very useful for projects that only need a small number of units (like cell phone base stations that can be sw upgraded to support new encoding standards), but over the last 20-30 years I have yet to see any problem where it is significantly faster than a well-written SW solution running on modern OoO CPU with 10x the clock frequency. For the few cases where it did break some new ground it was quickly overtaken by new cpu generations 2X to 10X faster than the CPU the original FPGA design was competing against.
I have personally looked into 4 or 5 of the "huge speedups with FPGA!" claims over this time period, and in every single instance, their base line turned out to be naive C code running textbook algorithms and data structures. I.e. I could always reach more or less parity with a pure SW/ASM optimized approach. One caveat: My SW solution would typically require more power!
In the retro Amiga community, fpga’s is driving the development of fantasic new expantions for amazing graphics, sound, networking and cpu accelrators at a resonal price. They are great
Yes. Thanks, Dave. 😊
There are pro audio analog to digital converters that use FPGA as a substitute for DSP. In this case to emulate various audio effects like EQ compression and limiting. Usually emulating a vintage piece of gear.
I wonder if they make things like a keyboard where the FPGA gets set up based on the instrument it's trying to replicate... so your "patch" consists of the samples and FPGA code to model the original sound?
@@DavesGarage the UDO Super 6 is the only FPGA based hardware synth I’m aware of, they’re designed to offer new oscillators etc through firmware update but I’m unsure of how this differs from a traditional digital VA synth. Definitely can’t think of anything that would work the way you describe but it’s a cool idea
About 10 years ago, there was a website that claimed you could configure an FPGA to be a rudimentary, but fast, oscilloscope. As I recall, they sold everything you needed to do it as a kit. I never pursued the idea even though I loved new electronics like that. Sadly, lost the url for the site, but it appears that CZcams has some videos suggesting similar things.
I did Ben Eaters hobbyist breadboard computer, and that was insane to me lol.
Now I wanna build my own computer outta purely FPGA's.
Man imagine running linux on something you built yourself.
FPGA stands for Field-Programmable Gate Array. It is a type of integrated circuit that can be programmed after it has been manufactured to perform specific functions. Unlike traditional logic circuits, which are hard-wired to perform a specific function, an FPGA is flexible and can be reconfigured to perform different tasks.
An FPGA is made up of a large number of configurable logic blocks, which can be programmed to perform different operations, such as arithmetic, logic, and signal processing. These logic blocks are connected by programmable interconnects, which allow them to communicate with each other and with the outside world.
FPGAs are used in a variety of applications, including digital signal processing, telecommunications, aerospace, automotive, and consumer electronics. They are particularly useful in applications where performance, power consumption, and flexibility are critical, as they can be optimized for specific tasks and can be reprogrammed as requirements change.
I was introduced to PLGAs (Programmable Logic Gate Arrays) a long time ago and found the concept intriguing, but I never quite got into them the same way I got into CPU controller circuits.
The way I understood them was there was a bed of zillions of interconnected gates that could be selectively burnt so that the remaining active and interconnected gates achieved their final function; you would wind up with a chip with many inputs and many outputs that would behave according to the customized functionality compiling of the circuit.
In a sense, from what I understood, it was like a hardware encoding of an excel spreadsheet, basically doing its work and calculations in one pass.
However, from this video it seems like it can do iterative calculations, multi-level decision making, intermediate number/value storage and basically everything that programmed cpu could do. -- That I did not understand it could do.
So there may be some fundamental I am not familiar about PGAs. Maybe because the technology has advanced from my first introduction to PGAs (Programmable Gate Arrays) to FPGAs (Field-programmable gate array), which may be an enhanced version of the original.
Wonderful. Enjoying that stuff.
My last but one job the initial development was done with FPGA but since we were shipping many many tens of thousands of boards the final design used ASIC, not only cheaper but also faster. The mantra with ASIC was no respins, ha if only. My last job a much smaller manufacturer where the number of units was maybe not more than 10,000 in total the final boards went out with the FPGA.
The FPGA is the baby of a PAL and a GAL getting CPLD. ❤
I'm totally new to that, but I've found a couple of resources to spend some of my time with the topic. Thanks for the great introduction!
Remember, any "Contact me on Telegram" comments are scams. --> Thanks for clarifying!