In this chapter of the tutorial , i will give you the theoritical background around our project including the hardware description language, the FPGA architecture, history, I will also introduce the Arty and The basy boards. Although there are several ways to implement a digital system, we will focus only on implementation by field-programmable gate arrays (FPGAs).Applications of FPGAs in digital electronics are boundless due to the fact that in the beginning there is no predefined block to do the job. The designer has a powerful and unconstrained resource (within limits) to construct required design blocks . .There are two popular hardware description languages (HDLs) to implement a digital system design on an FPGA. These are Verilog and VHDL,An mportant point to remember while using an FPGA for digital system design is that the user is free to choose the design methodology In other words,the same digital system can be implemented in more than one way. Therefore, it is the designer’s responsibility to pick the optimal or best design style for his orher needs. Both languages will be treated in the course of this practical lessons. Each one of them has its own Pros and Cons
There are several FPGA boars available in the market today from different vendors each having its own unique characteristics , We would design our projects on two of such boards: Basys3 and Arty. Note that these boards are not the FPGAs but they contain the FPGA chip with other peripherials to help interface the FPGA chip, so Both boards have a Xilinx Artix-7 FPGA chip on them which makes them an FPGA board. But also note that this practical can also be carried without the boards as we would be the simulation tools available. I chose the Basys3 because it has most digital peripherals on it. Therefore, it is suitable for educational purposes. On the other hand, The Arty board has Arduino compatible pins such that Arduino shields can be used with it. Therefore, it is suitable for hobbyists and the maker community. However, applications on one FPGA can be modified to work on other FPGA board as well.
The FPGA chip on boards comes from the Xilinx Artix-7 XC7A35T family. To be more specific, the FPGA on the Basys3 board is XC7A35TCPG236-1. Similarly, the FPGA on the Arty board isXC7A35TICSG324-1L. These two FPGAs share similar properties. Therefore,we will call them by their family name Xilinx Artix-7 XC7A35T from this point on. If there is a difference in the FPGA, then we specify it by the board name.The Xilinx Artix-7 XC7A35T FPGA is basically composed of nine different components.
1. input/output blocks (These are the pins and ports with which the FPGA are interfaced with the outside world, signals are sent and received through these pins and they operate in standard voltage levels 1.2V to 3.3V . They can be up to hundreds and upto 300 for some FPGAs chips these pins are located in the I/O blocks),
2. configurable logic blocks-CLBs(They are the basic elements used to implement a digital system on an FPGA. At the heart of CLBs lies look-up tables (LUTs), flip-flops, and multiplexers. LUTs, flip-flops, and multiplexers are grouped as slices in the CLB. Each slice has four six-input LUTs, eight flip-flops, multiplexers, and other support circuitry).
3. interconnect resources(
they are collection of wires and programmable switches. These are responsible for connecting CLBs and other building blocks within the FPGA. Interconnect is also called routing channels.Note that it is not necessary to know interconnect features to use an FPGA at the beginner or intermediate level. The synthesis and simulation tools will handle that).
4. block RAM( They can be used to store data. Moreover, they can form buffers, large LUTs, or shiftregisters. Usage of these block RAMs will explained further during the practical. A block RAM in the Artix-7 XC7A35T FPGA can be used to store one block of 36-kbit or two blocks of 18-kbit data. There are 50 such blocks within the FPGA. Therefore, the total block RAM capacity for the FPGA is 50 × 36 = 1800kbits. Each 36-kbit block RAM can have 64-bit data width.).
4. DSP slices( There are dedicated blocks for arithmetic and logic operations in recent FPGAs. These are called digital signal processing (DSP) slices. In the Artix-7FPGA, these slices are specifically called DSP48E1. There are a total of 90 such FPGA, these slices are specifically called DSP48E1. There are a total of 90 suchslices in the Artix-7 XC7A35T FPGA.Each DSP slice can perform several arithmetic and logic operations. such as multiplying twobinary numbers of length 25 and 18 bits; adding, subtracting, and accumulatingtwo 48-bit numbers; applying logic operations on two 48-bit numbers. These operations would require complex algorithms for implementation unless a DSPslice was not available. Therefore, DSP slices will be very effective in implementation.).
5. clock management block(Clock is basically a periodic square signal such that it stays at logic level zeroand one for certain time intervals. Most digital systems(sequential logic systems) need a clock signal to operate in synchronous manner. In such a setting, logic operations are done inthe rising edge (from logic zero to one transition) or falling edge (from logic oneto zero transition) of the clock signal. Hence, period of the clock signal indicates operation speed in the digital system.)
6. XADC block(This Module performs analog-to-digitalconvertion (ADC). Since recent advances in digital systems require processing analog signals, the Artix-7 FPGA has a dedicated block called XADC. The Artix-7 XC7A35T FPGA has one XADC block which consists of two ADC modules. Each module can acquire one million samples per second(MSPS). Each sample can be represented by 12 bits. Hence, a sample can be represented by a binary number in the range 0 to 212 − 1.).
7. high-speed serial I/O transceivers(They are specialized circuitry to transfer and receive serial data. These transceivers are necessary to transfer data at speeds around gigabits per second (Gb/s). The FPGA on the Basys3 board has two such transceiver blocks which can transfer data up to speed of 3.75 Gb/s.Unfortunately, the FPGA on the Arty board does not have such a block.).
8. PCIe interface(Peripheral component interconnect express (PCIe) is a high-speed serial connection bus standard. The Artix-7 XC7A35T FPGA has one integrated block for PCIe interfacing.).
9. Slices(LUTs, flip-flops, and multiplexers are grouped as slices in the CLB. Each slice has four six-input LUTs, eight flip-flops, multiplexers, and other supportcircuitry. There are two slice types as SLICEM and SLICEL. Both can be used to implement combinational logic functions. SLICEM can also be used as a distributed memory element. The Xilinx Artix-7 XC7A35T FPGA has a total of 5200 slices of which 3600 are SLICEL and 1600 are SLICEM.).