A Scope of programmable logic "hardware"?

Thread Starter

Interfacer

Joined Dec 15, 2012
9
Hi all. This is my second post since I joined at the beginning of the year because I didn't think that I new or had tried enough to even ask a sensible question. So here goes...
I've just started out with programmable logic and there's a piece of the puzzle I'm missing. I've been investigating the different methods of controlling hardware. So far the only thing I've been able to do is program the parallel port using c. I bought an arduino microcontroller which I'm going to start playing with to get a glimpse into the world of microprocessors and am gonna start assembly language soon. Now the textbook I'm using at school (Floyd: Digital Systems) mentions PLDs (various types like FPGA), HDL and a "PLD development board", particularly one using Xilinx device with a picture but no name. Now I would have preferred learning this stuff first (downloading logic into an IC) before stepping into microprocessors and microcontrollers but the problem is everyone looks at me funny when I speak of "PLD development board". One guy at the electronics shop asked me if I was not referring to a PLC? I did some research and found that they use ladder logic but mentioned nothing about the "HDL" I'm looking for. The closest thing I could find to this was something called a PIC programmer which looked like it would do something similiar to what I wanted to do but am starting to thinking PIC is some sort of a microprocessor? Just to add some clarity on where this confusion started - We were given a set of 16 pin DIP ICs (PLDs) at school pre-programmed for us and were told that this was being used because the 74X logic family was deprecated in "hardware". So I thought to myself how did they put all these mixture of logic gates in one IC. After some investigation I learnt you could put any combinational circuit in a PLD and this sounded cool and I thought that If I learnt to reprogram it, It would be a nice skill to have. A fear I had was, however, what if there are many boards using many different types of PLDs and I could get a better one than the one we're using at school. Is there a popular one? BTW I've never seen the board they used. It's been eating me up ever since - I cannot get absolute clarity. I don't know which board I should get for this purpose. What I should say I need when I walk into the electronics shop that they would understand? Better yet what board would you guys recommend for starters or any general advice on this topic? For instance with all these different platforms for embedded systems where do I start?

I thank you for your patience if you've read this far... I've tried to post this in the most relevant place I could find...
 

THE_RB

Joined Feb 11, 2008
5,438
Hi, and welcome to the forum. :)

I think at this point you should take some time and read up on "what is a microcontroller" followed by looking at many beginner projects like "my PIC project" or "my AVR project" as they will show you what these little chips can do and how easy/hard it is to do things. :)

Regarding PLDs they are more of a specialty item and not as popular, or useful (in most cases) as a microcontroller.
 

ErnieM

Joined Apr 24, 2011
8,377
Wow, you're just at the starting gate with multiple courses to pick from.

First, PLC (Programmable Logic Controller) is not what you want. Those are complete packages to do some specific task.

Modern digital "brains" branch into two broad categories: the computer model (AVR, PIC, TI, others), and the programmable logic device (Atmel, Xilinx, Altera) that I best let Wikipedia explain for me.

Those lists are off the top of my head and has to miss major players.

I personally use PICs the most, that is mostly due to me being very familiar with their strengths and weaknesses, not how they compare to other devices. They have good support with lots of free software tools, so all you need buy is the hardware stuff. Here's my advice for starting off with PICs.

There are definitely development boards for programmable logic devices, I have two FPGA boards myself (that I never used much). Hopefully people with experience here will toss you some good links, otherwise I'll try later (I don't have my links on this computer here).
 

tshuck

Joined Oct 18, 2012
3,534
First, a microcontroller is not a programmable logic device - its logic is fixed, part of which fetches and decodes instructions at a point in memory.

A PLD, on the other hand, has a set of hardware that allows the user to configure a cell (see logic element for FPGAs) to either implement a function, or bypass the block, effectively allowing the user to configure the logic used in the application.

A PIC is a microcontroller, not quite a microprocessor, but close. A microcontroller has on-chip memory and typically some analog peripherals that interact with the outside world.

I have a Spartan 3E starter board(Xilinx FPGA) from Digilent that is quite nice to learn on, having many peripherals on the board. I also have a bare bones Altera board from Ebay that is nice if you know what you are doing already along with various CPLD boards floating around, but they don't get quite as much use as my FPGAs.

@RB: Perhaps they are not as popular, but they are not "less useful". A FPGA is meant for speed and parallel processes, surpassing any microcontroller on that front. A FPGA, however, is a digital beast and does not have an on-chip capability to interface with the analog world, though this is changing quickly.

A FPGA can implement a microcontroller, a microcontroller cannot implement a FPGA.
 

THE_RB

Joined Feb 11, 2008
5,438
...
@RB: Perhaps they are not as popular, but they are not "less useful". A FPGA is meant for speed and parallel processes, surpassing any microcontroller on that front. A FPGA, however, is a digital beast and does not have an on-chip capability to interface with the analog world, though this is changing quickly.
...
Yeah I knew someone would argue that, which is why I said "in most cases". ;)

Re beginners; micros are more useful for beginner level projects. Micros are used for more tasks in general, ie more potential uses. It was a good enough generalisation taken in context of the O.P.'s question. :)
 

tshuck

Joined Oct 18, 2012
3,534
However, too much of an over-generalization that may result in the OP feeling that there is no need to learn about PLDs.

Learning about PLDs is an important step in understanding microcontrollers, I think.

While, yes, microcontrollers are useful for beginner level projects, the OP is asking about an academic interest in programmable logic devices.
 

Thread Starter

Interfacer

Joined Dec 15, 2012
9
Thanks for your responses guys. Tshuck... I think you understand very well where I'm coming from. Having the "brains" in a chip instead of a whole board (microcontroller) is what I want for now. I think I'll try the 'Spartan 3E starter board(Xilinx FPGA)' assuming software is free to use...
Lastly please elaborate on:
"A FPGA can implement a microcontroller, a microcontroller cannot implement a FPGA. "
I assume you are saying this in light of the comment you made on the upcoming analog capabilities of FPGAs. Can you give me an example of such to read on and perhaps one example of a microcontroller not being able to implement a FPGA.

Thanks
 

tshuck

Joined Oct 18, 2012
3,534
The starter board comes with peripherals(ADC, DAC, RAM, LCD, etc.), not just the FPGA.

Xilinx has the ISE design suite for free in the WebPACK edition. It's a but hard to find...I'll give a link later, provided I remember (don't get your hopes up)...

EDIT: I did remember, and it wasn't hard to find, guess they updated the site.
Xilinx ISE WebPACK

As far as the who can implement who, a FPGA is capable of implementing the processor that makes a microcontroller a microcontroller. The FPGA can be configured to make a 8-bit processor, 32-bit, or even, should you so desire (and have resources for) a 128-bit processor. Since the hardware is configurable (what programmable logic really means), the user defines its architecture. Microcontrollers, on the other hand, have a predefined set of registers and interconnections, whose characteristics determine the instructions that a processor, be it in a microcontroller, or something else, can execute. Understand that this is just a hand-waving explanation, but it is necessary to understand.

Now, a FPGA can implement all of these processes. A microcontroller, however, has a fixed set of instructions and data sizes it can naturally process, and operates sequentially on its instructions (fetched from memory), where the FPGA is a series of configurable flip flops and combinational logic. While those flip flops and combinational logic can be made to implement the exact functions as any microcontroller's processor, a microcontroller cannot do the same of a FPGA.

In short, the architecture of the microcontroller is fixed, where the FPGA is defined by the user...

There is much more to say about the differences between the two, but I'm short on time, so this will have to do for now...
 
Last edited:
Top