Tuesday, October 25, 2011

Welcome to FPGA Tutorials

    First of all i would like to welcome you to my blog and thank you for taking the time to read this post. As the title would suggest, this blog's role is to provide tutorials on how to program FPGAs.
    If you already know what an FPGA is or what languages are used to program such circuits than you can skip this post, but if these terms are unfamiliar to you, my advice is that you read this article.
    Notice: Every concept talked about in this post will be fully explained in later tutorials. This is just an introduction to the basic ideas and terminology.
    What are FPGAs and why do we need them?
    The letters FPGA stand for Field Programmable Gate Array, complex circuits composed by arrays of logic blocks that can be interconnected through programming. So for example we can program an FPGA to be a sound card or maybe a processor or a custom circuit designed by you.

    The second most important component of an FPGA  is I/O. These chips have I/O pins all around in order to hook up peripherals ranging from LEDs to to different sensors.
    This a very basic structure of a Field Programmable Gate Array:

    As you can see 3 of the logic blocks are connected to each other so that they can perform a more complex task or to form a specific circuit. For example let's consider that we a light sensor and 8 LEDs attached to the I/O pins. Thoes 3 logic blocks could be programmed as a circuit that activates a certain number of LEDs based on the value from the sensor.
    So what makes an FPGA better than a microprocessor or a microcontroller?
    Simple: if for example we have 2 light sensors and 16 LEDs (1 sensor for 8 LEDs) connected to a microcontroller then the operations will be executed one after another (check the first sensor and light up the first 8 LEDs accordingly, and then check the second sensor and light up the other 8 LEDs accordingly). For this case you wold think that it happens instantly but if you had more complex operations maybe the delay between the 2 instructions would be visible.
    If thoes 2 sensors and 16 LEDs would be connected to an FPGA you can program 2 independent circuits that check light levels and activate the LEDs at the same time. So for more complex operations an FPGA wouldn,t have that lag between instructions like the microcontroller.

    FPGA manufacturers
    The two leading companies in the world are
        -XILINX   Site
        -ALTERA   Site

    In my tutorials I will be using a Xilinx Spartan 6 FPGA development board.

    Development boards
    In order to use FPGAs you can't just buy the chip because i doesn't have I/O circuits or programming ports, it just has pins. That's why you need a development board. That is a printed circuit board witch contains the FPGA, I/O circuits (LEDs, switches, push buttons), video out/in ports, communication ports (UART) and other useful circuits for basic to advanced digital design.
    Such a development board looks like this:

    A very well known dev board manufacturer is DIGILENT. You can find information about thier products, prices and helpful documents on thier website: Digilent website

1 comment:

  1. hey nice information for me,thanks for sharing the nice information and this article provide the amazing information of the FPGA Development Service and this article really helpful for us.I will find to many blog and this blog provide nice information and with images and i will definitely bookmark this blog.