Friday, September 14, 2012

Hardware Description Languages (HDL)

There is one main difference between hardware description languages and typical programming languages such as C, Java or others. In typical programming languages, all processes are modeled in sequential order. The order of instructions (processes) matters. Such sequential order algorithms are easy understandable, because they can be expressed as simple step-by-step process. HDL languages are created to work directly with hardware. They are able to describe connections between different hardware components, concurrent operations, propagation delay and timing. These features cannot be described by traditional programming languages.

HDL has several roles in the design process. It works as formal documentation tool, input to a simulator and input to a synthesizer. There are few fundamental characteristics of a digital circuits that are used in HDLs. Typical HDL is possible to model a real behavior of a real circuit. Four basic concepts can be modeled using HDL. Entity is a basic building block of a real circuit. The concept of connectivity models the connections among the circuit components. These connections are connection wires. Concurrency is responsible for modeling parallel operations. Parallel operations are carried out by interconnected components. The concept of timing process models the starting and ending of each operation. Also, the order of operations can be described.

There are 3 basic HDL languages: VHDL, Verilog and SystemC. The most popular are VHDL and Verilog. These two languages are both industry standards. They have completely different syntax, but their capabilities are the same. In many cases, I will speak about VHDL, because I am learning this language at the moment.

Tuesday, September 11, 2012

Xilinx vs. Altera: which one is better?

This question, in my personal opinion, cannot be answered objectively. Those, who are beginner, cannot answer this question because of lack of experience. Personally, I chose Xilinx FPGAs and Digilent development boards. My motivation was quite rational. In university, I study in, they have several development board by Digilent, and some tutors have experience while working on them. So I bought myself Nexys3 development board. I suppose, it is not so important, which platform to choose for beginners. After some time, more experienced beginner will be able to find advantages and disadvantages of both platforms. And what concerns professional users, I believe, that for experts those advantages and disadvantages are not so important. They should know all platforms.

You know, similar discussions are always popular among the programmers or engineers. There always were such discussions as AMD vs. Intel, PIC vs. Atmel, Delphi vs. C++, IE vs. Firefox and others. Remember, when was the last time, that you argued somebody about the similar topic. Similar discussions I hear quite often. But at the moment, I am not ready, to discuss those differences between Xilinx and Altera. I am not enough experienced to do so. Shortly saying, this decision depend on you.

Wednesday, August 1, 2012

What is FPGA?

Altera Cyclone II FPGA chip. Image source: Wikipedia


When a new acronym appear in our personal vocabulary it is a good practice to find the prime components of it. FPGA  stands for Field-Programmable Gate Array. This is very logical term, and I will explain why.

Field-programmable means that functions of FPGA are defined by a user. This is huge difference comparing FPGAs with ASIC (application-specific integrated circuit). Typical ASIC devices perform particular functions, that were defined by the manufacturer. In FPGA case, manufacturer has nothing in common with the device functions. Program, that configures FPGA can be loaded form external memory each time  the device is powered up. This means that any complex solution can be made using FPGA. One day it can be used as complex DSP device, and the other day (if configuration was changed) it can works as simple adder or multiplexor. The configuration of FPGA is specified using HDL (Hardware Description Language). There are two main languages used. It's Verilog and VHDL. Maybe there are more languages, but at the moment I do not know nothing about them.

FPGA evolved from various PLD's (Programmable Logic Dvices). The first PLD devices could handle only 10-20 logic functions. 50 years ago it was quite enough to handle simple operations. PLD's evolved into CPLD devices (Complex PLD). You can read more about PLDs, CPLDs and FPGAs here.
FPGA appeared with completely different approach comparing with CPLD devices. The basic FPGA structure is shown in the picture.
Simplified block diagram of FPGAs. Source: B. Nezamfat dissertation
Architecture, that is commonly used for FPGA devices are commonly used island-type architecture. Such a device consists of large number of programmable logic blocks that are surrounded wires. Wires are connected to programmable interconnect blocks. Logic blocks has several programmable LUTs (Look Up Table). Look up tables can implement logic functions. Interconnect blocks are programmable multiplexors. Using logic blocks and interconnect blocks various combinations of logic functions can be made.



Thursday, July 12, 2012

Hello world!

The title of this post sounds so boring. But I think it fits this blog. When learning a completely new programming language, the first program usually prints similar text on screen or LCD display, if a person is working with micro controllers.
Who am I? I am student of technological university in one very small but beautiful country. I study micro and nano electronics and have a bachelor degree in electronics. Sounds quite professional but my level of knowledge is quite low. I have many different interests in completely different fields, an none of them are perfect. I speak English as a second language, so forgive me my pour vocabulary and imperfect grammar. I hope, I will improve my skills while writing this blog.
Why I started this blog. I do not know. I have several other blogs about crafts, books and life challenges. But I write to rarely. I hope, that this one will become a good exception. I am going to write my master thesis on FPGA programming with VHDL. FPGA and VHDL programming language are completely new things to me. I am as green as the grass in this field. So, I will share my finding and experience on this blog. I hope, that you will find this useful.
I would be very glad if you could share your own experience and tips. Also, I am open to your suggestions on topics I should explore and cover in this blog. It would be excellent, if we could learn together.