Have you ever wanted to build sophisticated logic ICs — not microprocessors, but real digital logic? Sure, microprocessors let you perform lots of sophisticated logic functions in software, but sometimes there is no substitute for real hardware.
For example, suppose you have to monitor 16 inputs simultaneously? A microprocessor can’t really watch everything at once and perform other tasks. It will sample the inputs — maybe very rapidly — and there may be significant delay between an event occurring and the program responding. You can use interrupts to help minimize this problem, but in the end only a piece of hardware can do things in a truly concurrent fashion without resorting to parallel processing.
For the purpose of this discussion, I’ll talk about programmable logic devices (PLDs) as a broad category of ICs that can be programmed by the user to perform different functions. These aren’t software programmable ICs like microprocessors, though. In practice, there are several types of PLDs including CPLDs (complex PLDs) and FPGAs (field programmable gate arrays). From our point of view, all these chips are basically the same, and differ mainly in the complexity of circuits they can mimic and price.
The general idea is simple:
You describe the circuit you want to build using schematics or a programming-like language. In many cases, you’ll use both methods in a single project.
Tools provided by the PLD maker allows you to simulate the design on your workstation. When it works in simulation, you can have a high degree of confidence that the design will work in real life.
The tools then compile your design to a bit stream that you can program into the chip and you have a customized chip. Modern PLDs can be programmed many times.
It is important to realize that these bit streams are not programs in the sense of a sequential list of instructions. PLDs contain hundreds or thousands of logic gates and flip flops. They also provide a huge programmable interconnecting switch. The workstation software figures out how to connect the internal gates to match the logical description of your circuit. The program sets the “wires” between the internal gates.
Article by Al Williams, WD5GNR at http://tutor.al-williams.com/index.htm
Visit Here for more.