Skip to content
Snippets Groups Projects
README.md 5.16 KiB

iCEBreaker-FPGA

what is an FPGA?

Computers are made up of a collection of transistors which circuit designers combine to create basic logic gates (AND, OR, XOR, NOT, NAND, etc.), which are then built in to more complex computing modules (such as Adders, Arithmetic Logic Units (ALUs), or Floating Point Units (FPUs)). These modules are finally combined into an overarching computer architecture which is exposed to applications/programmers. For example, below is the ARM6 core architecture which is used in the SAMD11 microchip:

ARM6 Microarchitecture

When programming a microcontroller like the SAMD11, you can control what instructions are passed to the control unit (and thus what information is written and read from memory/registers) by changing the software flashed on the processor's memory; however, you have no control over the underlying hardware.

FPGA stands for "Field Programmable Gate Array" - it is a collection of integrated circuit logic gates and interconnects which can be programmed and reconfigured directly by the developer. This is very different from any other type of computer or microcontroller because you now have control over the hardware and can define custom circuits.

\

intro to FPGA architecture

programming FPGAs (Verilog)