It does, that's the part under the 'Look-Up Tables' section. The key is there aren't any actual logic gates just lots of little RAMs. You implement an arbitrary blob of logic by having the inputs form the address then the RAM gives the result of the logical function.
This is incorrect. Modern FPGAs are composed of small, configurable blocks which contain all sorts of logic. The idea is that the configurable blocks can be (internally) wired-up to implement your logic of choice. The wiring configuration is "loaded" at power-on and retained in memories within each, configurable block.
The fact remains that you can implement any logic function with static RAM LUTs, and the early Xilinx chips (like from 30 years ago) were implemented with static RAM.
Fun fact: The Microchip [1] ProASIC3 logic area is mostly composed of core cells, each of which can be configured to be either one 3-input LUT or one D-flip-flop, so not even the flip-flops are dedicated hardware.
[1] Formerly Microsemi [2].
[2] Formerly Actel.
You can do other things with soft cores that are not possible with an off the shelf CPU like triple mode redundancy. This is when you run a lot of the logic in triplicate and vote on the results to prevent a bit flip from messing up the software. This is common for space-based CPUs that are running on FPGAs. It's expensive to design a new chip in a very small run so it's much cheaper to just put the core on an off the shelf FPGA and use the rest of the FPGA fabric for custom logic functions.
PYNQ transformed my experience on these boards.
I had a ZCU-104 on my desk for a year circa 2021. It took a while to wrap my head around given I have no background in embedded engineering, FPGA, or hardware eng. But that board was transformative to what I've seen over twenty years working around mobile, edge, and IoT products, particularly given the availability of the PYNQ stack and the fact that someone like me could take the same old Linux/GCC skills and port, run, and profile code there from x86 while getting wormhole effects from a few compiler switches that opened pathways to things none of us had ever seen before, at least not optimized the way they are there.
Not sure what you mean by that. Do you mean how a RAM is used as a lookup table to implement logic gates, how routing works, or how block RAM is integrated into the FPGA fabric?
> is there a SoC board, ARM or RISC-V based, with an FPGA on board?
Better yet, there are a number of FPGAs available with an ARM SoC on board. Xilinx Zynq, Intel Cyclone V SoC, various others.
There are PCIe compatible FPGAs that you can plug into your desktop like a graphics card to accelerate certain tasks. In general though, our workstation hardware just isn't specialized enough to require them, but can be extended to do so. If something is a large enough business model, they'll just make an ASIC.
It has been tried, but GPUs are so fast and efficient enough that it’s rarely worth it.
It’s very easy to attach an FPGA to the PCIe bus as an add-in card exactly like your GPU. In fact, many FPGA dev boards come in exactly this format. They’re available, they’re just not in demand.
> 2. is there a SoC board, ARM or RISC-V based, with an FPGA on board? The slower the CPU, the more useful an FPGA would be to accelerate compute tasks
Plenty of FPGA parts include ARM cores. It’s a fairly standard chip configuration.
You can also connect an FPGA and an SoC with PCIe or other interconnects. It’s really not an obstacle.
FPGAs just aren’t very efficient from a cost or dev time perspective for most applications. They’re indispensable when you need them, though.
DRAM is necessarily a grid.
SRAM, in e.g. the standard 6-transistor cell form, you can kind of dump individual bits anywhere you need one.
> why don't we have more user-programmable FPGAs in our fancy desktop mainboards
They tend to be horrifyingly expensive and there are few use cases you can't outperform with a GPU or even just vector instructions. Most of the interesting use cases for FPGAs are when you have direct access to the pins and can wire them up to high-speed signalling, which really isn't home user friendly.
Also all the tooling is proprietary.
> is there a SoC board, ARM or RISC-V based, with an FPGA on board
Buy a medium sized FPGA and download a CPU of your choice.
(I have a downloadable-CPU-sized FPGA board on my desk for testing not yet shipped ASIC designs. It costs about six thousand dollars and has a 48-week lead time on Farnell)
Damn, of course one would be able to download a CPU and "emulate it" in hardware.
I never imagined that would be possible. Now I'm thinking that I had infinite free time, I would buy an FPGA and design a modern Lisp CPU. A RISC-V based design with native Lisp support. Who needs hardware when you can just emulate it in an FPGA.
That's seriously cool technology.
>Who needs hardware when you can just emulate it in an FPGA.
I would go with something like "configure it into hardware" or "upload it into hardware".
It is important to be aware and spread awareness of FPGAs as configurable hardware. Once configured, it is the hardware you've configured into it, for all means and purposes. No emulation involved.
>Now I'm thinking that I had infinite free time, I would buy an FPGA and design a modern Lisp CPU. A RISC-V based design with native Lisp support.
There's even VRoom![0], a very high performance open microarchitecture effort. They were already at ~10.3 DMips/MHz a few weeks ago.
yosys/nextpnr/apio/icestorm isn't
> Buy a medium sized FPGA and download a CPU of your choice.
even a small fpga like the ice40-hx8k can fit picorv32 or serv, and it costs 13 dollars on digi-key https://www.digikey.com/en/products/detail/lattice-semicondu...
but it sort of seems like a waste of perfectly good luts if your objective isn't to develop a cpu but to use the cpu to script whatever heavy-duty data crunching the fpga is doing
https://www.crowdsupply.com/microchip/polarfire-soc-icicle-k...
Not cheap at $599.
In my mediocre understanding of digital circuits, RAM is usually addressable, so it has to be wired in a more direct manner to enable such a design.
I posted this article because someone mentioned some Ryzen chip having an FPGA in another post, and I am now left wondering:
1. why don't we have more user-programmable FPGAs in our fancy desktop mainboards
2. is there a SoC board, ARM or RISC-V based, with an FPGA on board? The slower the CPU, the more useful an FPGA would be to accelerate compute tasks