
Build your own FPGA (2012) - Cieplak
http://blog.notdot.net/2012/10/Build-your-own-FPGA
======
zw123456
Funny, just the other day at work I was trying to explain to someone what an
FPGA was and I used the 7400 TLL example and said imagine if you had a crate
full of TTL chips and you could put them all onto a single die, arrange them
with the most common ones in little module called LUT's and then be able to
cross connect any input to any output using a memory type array. The guy I was
explaining it to was familiar with TTL from school and immediately the light
went on.

------
kenjackson
Is there a good idiots guide to understanding FPGAs and how to develop for
them? I have a CS background (so I've read both Hennessy & Paterson books) but
don't know FPGAs nor have an EE background.

Reading about FPGAs always confuses me, from the perspective of someone who
thinks as a normal SW developer. Like where does the FPGA begin execution,
etc...

TIA

~~~
gricardo99
FPGAs are synchronous digital logic. That may sound complicated but it's
actually conceptually quite simple. If I had a white board I could show you a
diagram in 10 seconds that would probably clear everything up. But instead
here's my attempt at a description.

1- digital logic. From your CS background you're familiar with AND, OR, NOT,
etc... imagine having a bunch of these simple functions and being able to
combine them and reorganize them to meet your needs. These functions are
"continuous " in that they always update their output when their inputs
change.

2 - synchronous: this essentially means "registers" that store values (flip
flops) are controlled by a global clock signal. When the clock "triggers"
(usually on the rising or falling edge) new values are loaded into the
registers.

So with those definitions in mind, an FPGA, or any other synchronous digital
system, can be thought of as: inputs feeding registers, feeding a cloud of
logic, feeding registers, etc... for as many stages as is needed (or possible)
until you get to the outputs.

Edits: clarifications (hopefully)

~~~
DigitalJack
That's actually a pretty good overview with an appropriate level of
simplifying. I don't see that much here with regards to digital logic.

------
adrianratnapala
One thing I've wondered is to what extent does discrete logic "scale
proportionally" to integrated logic.

I mean if you make a big machine out of these things, are the trade-offs you
make regarding e.g. signal fanout and propagation delay similar to those made
in an IC that did the same computation?

~~~
NotQuantum
One of the biggest issues is complexity. Sure you can make some fairly complex
things within an FPGA fabric, like a CPU or GPU. However, you'll see a slow
down in two areas. The first is routing, whereas an IC would just have a wire
between two components, FGPAs have to route further and through different
interchanges. Second, components can only be built up through the basic
components of the FGPA, typically a LUT and FFs. The more complex components,
the more small parts. Another aspect is memory; blockram works decent but it's
an explicit design choice, DRAM via DMA is also a pain too.

------
blackguardx
This is really cool, but I'm surprised they didn't try to make a CPLD. You
would at least have a shot at matching an IC for amount of logic gates.

~~~
arjo1
Out of curiosity what makes an CPLD different from an FPGA?

~~~
kevin_thibedeau
Originally CPLDs used arrays of PLDs/PLAs which use a wide network of
programmable AND-OR gates to implement logic equations with relatively sparse
routing resources between logic elements. FPGAs will use a more fine grained
element for implementing logic (SRAM LUTs or small clusters of muxes) with
denser routing resources.

That distinction is a bit blurred nowadays because Altera has "CPLD" products
that are using conventional FPGA architecture equivalent to what was state of
the art for FPGAs 25 years ago.

------
mutagen
With tongue firmly in cheek, I wonder how long before it becomes cost
effective to mine Bitcoin with raw 74xx logic?

~~~
nickpsecurity
Bitcoin miners are already using custom ASIC's on expensive, process nodes.
Anyone using discrete logic would be running at a snail's pace compared to
them.

~~~
tudorconstantin
What about mining ethereum on FPGA, would it be suited?

~~~
nickpsecurity
I don't know specifics on Ethereum. Basically, it has to be within the
hardware constraints of FPGA's where CPU's, GPU's, and ASIC's don't convey an
advantage.

