Category Archives: Programmable logic

Programmable Logic Devices: PGA, PLD, MPGA, CPLD, FPGA

Overview of Programmable Logic Devices

These are devices that are used in electronic circuits to make reconfiguration of the same possible. The logical gates that are normally used perform a fixed function however, the Programmable Logic Devices (PLD) does not perform any predefined task when they are manufactured and need to be programmed before they can be used.
Before the introduction of PLDs, ROM (Read Only Memories) was used. EPROM that was available could be programmed by using any standard hardware for that device and hence, did not require any other peripheral hardware. Another advantage of ROMs is that a particular binary code stored in it could be obtained on any of the n output lines that were available in it. Thus, they can be programmed in any way one wishes to. However, ROMs have some disadvantages when they are used as PLDs. They do not produce the outputs as quickly as other devices; they are not very dependable as far as asynchronous inputs are concerned, they require more amount of power etc.

Testing_of_a_Programmable_Logic_Device.jpg

The first PLD was the programmable logic array that was developed from ROAM (Read Only Associative Memory) by modification of one of its metal layers and had 17 inputs and 18 outputs. Continue reading

Kick start guide to start working with Programmable Logic Devices from Altera

Probably everyone knows what are logical IC’s and how to use them in the design. But if design is more complex, electronics enthusiasts more likely are going to choose microcontrollers as they minimizes the count of external components. But problem is that not everything is possible with microcontrollers. They have many disadvantages when fast response to input signals is needed. Microcontrollers execute operations one by one in sequence (conveyor). So output result will occur after some number of clock cycles. One way is to use hard logic IC’s. But when complexity grows – number of IC packages also increases. This way design board becomes tremendous. So where programmable logic devices (PLD) comes to help. CPLD devices have a number of base elements (gates) without strict electrical interconnection. So designer can program these connections to combine any logical combination. Programmable logical devices allow to construct any logical device including counters, triggers and so on. The limit is only number of base elements and connection lines.

So it is better to start with learning tools that allow to construct logical circuits, simplify them and avoid many mistakes. One of them is MAX+plus II BASELINE and CPLD from ALTERA. This software allows to design logical circuits visually that later can be flashed to CPLD device. CPLD devices may be based on EPROM, EEPROM and FLASH technology. I think FLASH technology is most attractive for radio hobbyist because it allows to reprogram multiple times without pain.

In this guide is designing and programing process of Altera CPLD EPM3064A described. This devices is quite cheap and affordable for most hobbyists. It has 44 pins on PLCC package. Other features include: JTAG interface, ISP programmability, 1250 programmable gates. Core voltage is 3.3V while I/O may be 5; 3.3 and 2.5V. Maximum clock frequency 224.3MHz. Also it has buss friendly architecture with slew rate control, I/O can be configured as open-drain, power reduction to 50% mode; security bits for protection and more. Device block diagram:

Continue reading

Programmable logic devices

In a market you can find a bunch of programmable logic devices – PLD. They can be small scale integrated – SSI, medium scale integrated- MSI, mask programmed gate array – MPGA (MPGD – masked programmable logic devices). Now the most popular are FPGA (Field Programmable Gate Arrays).

What is a difference between FPGA and MPGA? MPGA are hard-coded during manufacturing and cannot be erased or reprogrammed while FPGA are programmable – usually EEPROM or SDRAM.

Of course there are other differences between FPGA and MPGA. One of them is speed. MPGA usually is faster as MPGA needs fewer elements to form logic gate while FPGA needs additional elements to enable programmability – this adds additional resistances and capacitances in circuits. But today’s technology allows reaching significant speeds with FPGA’s too.

Other difference may be integration. As we mentioned MPGA requires fewer elements to form one logical gate, they can contain more logical gates, but again the area of chip is also limited by pin number- this different becomes meaningless.

The main criterias of choosing MPGA or FPGA would be:

  • Speed;
  • Density;
  • Cost;
  • Manufacturing;
  • Prototyping;
  • Ability to modify;
  • Simulating.

If we need to prototype a project you will chose FPGA as it allows reprogramming multiple times. When you release your design to mass production – wise choice is to use MPGA as it cost less because of mass programmability, speed and simpler technology.

Two types of PGA are FPGA’s and Complex Programmable Logic Devices – CPLD’s. FPGA offer the highest amount of logic density, the most features, and the highest performance.

FPGA RAM CELL

The largest FPGA now shipping, part of the Xilinx Virtexâ„¢ line of devices, provides eight million “system gates” (the relative density of logic). These advanced devices also offer features such as built-in hardwired processors (such as the IBM Power PC), substantial amounts of memory, clock management systems, and support for many of the latest, very fast device-to-device signaling technologies. CPLD’s, offer much smaller amounts of logic gates- up to about 10,000 gates.

CPLD EEPROM CELL

But CPLD’s has predictable timing characteristics and are ideal for critical control applications. CPLD’s require less of power and are inexpensive comparing to FPGA, making them ideal for cost-sensitive, battery-operated, portable applications such as mobile phones and digital handheld assistants. CPLD programmable logic devices usually are EPROM or EEPROM based.

New on WinAVR Tutorial New on WinARM Tutorial