INTRODUCTION TO FPGA

FPGA is a hardware circuit that a user can program to carry out one or more logical operations. Taken a step further, FPGAs are integrated circuits, or ICs, which are sets of circuits on a chip – that’s the “array” part. Those circuits, or arrays, are groups of programmable logic gates, memory, or other elements. With a standard chip, such as CPU in your laptop, the chip is fully baked, it can’t be programmed. With FPGA, a user can write software that loads onto a chip and executes functions. That software can later be replaced or deleted, but the hardware chip remains unchanged. With an FPGA, there is no chip. The user programs the hardware circuit or circuits. The programming can be a single, simple logic gate (an AND or OR function), or it can involve one or more complex functions, including functions that, together, act as a comprehensive multi-core processor. You may use an FPGA when you need to optimize a chip for a particular algorithm, or when you are likely to need to make changes at the chip level later on. Uses for FPGAs cover a wide range of areas—from equipment for video and imaging, to circuitry for computer, auto, aerospace, and military applications, in addition to electronics for specialized processing and cryptocurrency mining of course.

Introduction to FPGA

The first commercial modern-era FPGA was introduced by Xilinx in 1984. It contained arrays of configurable logic blocks and inputs/outputs (I/Os). Modern high-end FPGA generations feature hundreds of thousands of configurable logic-blocks, and they include an abundance of hardened functional units that enable fast and efficient implementations of common functions. Programmable logic blocks in FPGA are used to provide the basic computation and storage elements used in digital systems. Connections between logic blocks and I/O blocks are provided through programmable routing in FPGA. Logic blocks and routing architectures are interfaced with external components of an FPGA through Input/output pads or programmable I/O. FPGA architecture has been developed over the course of time through adding more specialized programmable functional blocks such as embedded memory (Block RAMs), arithmetic logic (ALUs), multipliers (MUXs), digital signal processors (DSP48), and embedded microprocessors. This made FPGAs heterogeneous platforms.

FPGAs versus General-Purpose Processors, the advantage of FPGA-based systems over traditional processing units-based systems such as desktop computers, smartphones, and GPUs, is the availability of freely programmable general-purpose logic blocks. FPGAs can be arranged into high performance specialized accelerators for very specific tasks, resulting in improved processing speed, higher throughput. Compared to GPUs, FPGAs are considered to be a much power-efficient device. Controlling inputs and outputs (I/O) at the hardware level provides faster response time and specialized functionality to closely match application requirements. FPGAs usually do not use operating systems that actually minimize reliability concerns with true parallel execution and deterministic hardware that is dedicated to every task.

Introduction to FPGA

FPGAs versus ASICs – Application-Specific Integrated Circuits (ASICs) are custom-tailored semiconductor devices. Unlike FPGAs, ASICs do not have any area or timing overhead that could be caused by configuration logic and generic interconnects, thus resulting in the fastest, most energy-efficient, and smallest systems. However, the sophisticated fabrication processes for ASICs results in a very lengthy and complicated development round and very high nonrecurring engineering upfront costs that demand a first-time-right design methodology and very extensive design verification. Therefore, ASICs are mostly suited for very high-volume, cost-sensitive applications where the non-recurring engineering and fabrication costs can be shared between a large number of devices. FPGAs with their programmability are better suited for prototyping and short development cycles, where concepts can be tested and verified in hardware without going through the long fabrication process of custom ASIC design. FPGA chips are field-upgradable and do not require the time and expense involved with ASIC redesign. Digital communication protocols, for example, have specifications that can change over time, and ASIC-based interfaces may cause maintenance and forward-compatibility challenges. Being reconfigurable, FPGAs can keep up with future modifications that might be necessary eg. new mining algorithm.

A typical logic design inside an FPGA is made of combinatorial logic blocks sandwiched in between arrays of flip-flops. A combinatorial block is any digital sub-circuit in which the current state of the outputs only depends, within the electrical propagation time, on the current state of the inputs. To this group belong all the well-known basic logic functions such as the two-input AND, OR and any combination of them. It should be noted, that logic functions of arbitrary complexity can be derived from these basic blocks. Multiplexers, encoders and decoders are all examples of combinatorial blocks. The structure of the circuit is thus very simple, and its application as a template covers the vast majority of digital design requirements in standard applications. With Moore’s law, however, the line between high-end and low-end applications is continuously shifting, and FPGAs are more and more used in domains which used to be dominated by ASICs.

Introduction to FPGA

The designer facing a design problem must go through a series of steps between initial ideas and final hardware. This series of steps is commonly referred to as the ‘design flow’. First, after all the
requirements have been spelled out, a proper digital design phase must be carried out. It should be stressed that the tools supplied by the different FPGA vendors to target their chips do not help the
designer in this phase. They only enter the scene once the designer is ready to translate a given design into working hardware. The most common flow nowadays used in the design of FPGAs involves the following subsequent phases:
– Design entry – This step consists in transforming the design ideas into some form of computerized representation. This is most commonly accomplished using Verilog or VHDL.
– Place and route – The placer takes the synthesized netlist and chooses a place for each of the primitives inside the chip. The router’s task is then to interconnect all these primitives together
satisfying the timing constraints.
– Bitstream generation – FPGAs are typically configured at power-up time from some sort of external device. Once the place and route process are finished, the resulting choices for the configuration of each programmable element in the FPGA chip, be it logic or interconnect, must be stored in a file to program the flash.

FPGAs are one of the most advanced integrated circuits which have applications in almost every field of technology due to its highly programmable logic architecture which have also made them quite a suitable contender for mining different cryptocurrencies. FPGA chips are power efficient compared to other ICs in the market along with highly programmable logic which allows it to be configured to compute different algorithms specific to different cryptocurrencies. Unlike ASICs where you can only mine specific cryptocurrency, FPGAs allow miners to shift from mining one type of currency to mining a different type. While initial configuration may take little more time, the efficiency, reliability, high-end performance and convenience benefits gained by FPGA mining rig are certainly worth the investment.