Programmable Array Logic 578693 222099157 2008-06-27T15:35:33Z 58.107.24.136 /* Early history */ Typo and added wiki links to multiplexers etc [[Image:MMI PAL 16R6.jpg|thumb|MMI PAL 16R6 in 20-pin DIP]] [[Image:PAL 22V10.jpg|thumb|AMD 22V10 in 24-pin DIP]] The term '''Programmable Array Logic''' (PAL) is used to describe a family of [[programmable logic device]] semiconductors used to implement [[logic]] functions in digital [[electrical network|circuits]] introduced by [[Monolithic Memories]], Inc. (MMI) in March 1978.<ref name = "MMI PAL Ad">{{cite journal | title = Monolithic Memories announces: a revolution in logic design | journal = Electronic Design | volume = 26 | issue = 6 | pages = 148B, 148C | publisher = Hayden Publishing | location = Rochelle, NJ | date = March 18, 1978 }} Introductory advertisement on PAL (Programmable Array Logic). </ref> PAL devices consisted of a small PROM (programmable read-only memory) core and additional output logic used to implement particular desired logic functions with few components. Using specialized machines, PAL devices were "field-programmable". Each PAL device was "[[one-time programmable]]" (OTP), meaning that it could not be updated and reused after its initial programming. (MMI also offered a similar family called HAL, or "hard array logic", which were like PAL devices except that they were mask-programmed at the factory.) ==Early history== Before PALs were introduced, designers of digital logic circuits would use [[small-scale integration]] (SSI) components, such as those in the [[7400 series]] TTL ([[transistor-transistor logic]]) family; the 7400 family included a variety of logic building blocks, such as gates ([[NOT]], [[NAND]], [[NOR]], [[AND gate|AND]], [[OR]]), [[multiplexers]] (MUXes) and demultiplexers (DEMUXes), [[Flip-flop_(electronics)|flip flops]] (D-type, JK, etc.) and others. One PAL device would typically replace dozens of such "discrete" logic packages, so the SSI business went into decline as the PAL business took off. PALs were used advantageously in many products, such as [[minicomputers]], as documented in [[Tracy Kidder]]'s best-selling book "[[The Soul of a New Machine]]." PALs were not the first commercial programmable logic devices; [[Signetics]] had been selling its [[field programmable logic array]] ([[FPLA]]) since 1975. These devices were completely unfamiliar to most circuit designers and were perceived to be too difficult to use. The FPLA had a relatively slow maximum operating speed (due to having both programmable-AND and programmable-OR arrays), was expensive, and had a poor reputation for testability. Another factor limiting the acceptance of the FPLA was the large package, a 600-[[Thou (unit of length)|mil]] (0.6", or 15.24 mm) wide 28-pin [[dual in-line package]] ([[DIP]]). The project to create the PAL device was managed by [[John Birkner]] and the actual PAL circuit was designed by [[H. T. Chua]].<ref>{{cite journal | last = Birkner | first = John | authorlink = John Birkner | title = Reduce random-logic complexity | journal = Electronic Design | volume = 26 | issue = 17 | pages = 98–105 | location = Rochelle, NJ | date = August 16, 1978 | unused_data = |Hayden Publishing}}</ref> In a previous job, Mr. Birkner had developed a 16-bit processor using 80 standard logic devices. His experience with standard logic led him to believe that user programmable devices would be more attractive to users if the devices were designed to replace standard logic. This meant that the package sizes had to be more typical of the existing devices, and the speeds had to be improved. The PAL met these requirements and was a huge success and were "[[second source]]d" by [[National Semiconductor]], [[Texas Instruments]], and [[Advanced Micro Devices]]. ==Process technologies== Early PALs were 20-pin [[Dual in-line package|DIP]] components fabricated in silicon using bipolar transistor technology with one-time programmable (OTP) titanium-tungsten programming fuses.<ref> {{Citation | author = Texas Instruments | title = TIBPAL 16R8-15C Data Sheet | date = February 1984 | url = http://focus.ti.com/lit/ds/symlink/tibpal16r8-15c.pdf}} "These IMPACT circuits combine the latest Advanced Low-Power Schottky technology with proven titanium-tungsten fuses to provide reliable, high-performance substitutes for conventional TTL logic." TI was a second source vendor for the MMI PALS. </ref> Later devices were manufactured by [[Lattice Semiconductor]] and [[Advanced Micro Devices]] using CMOS technology. The original 20 and 24-pin PALs were described by MMI as [[medium-scale integration]] (MSI) devices. ==PAL architecture== [[Image:Programmable Logic Device.svg|thumb|350px|The programmable elements (shown as a fuse) connect both the true and complemented inputs to the AND gates. These AND gates, also known as ''product terms'', are ORed together to form a ''sum-of-products'' logic array.]] The PAL architecture consists of two main components: a logic plane and output logic macrocells. ===Programmable logic plane=== The programmable logic plane is a [[programmable read-only memory]] ([[PROM]]) array that allows the signals present on the devices pins (or the logical complements of those signals) to be routed to an output logic macrocell. PAL devices have arrays of transistor cells arranged in a "fixed-OR, programmable-AND" plane used to implement "[[disjunctive normal form|sum-of-products]]" binary logic equations for each of the outputs in terms of the inputs and either synchronous or asynchronous feedback from the outputs. ===Output logic=== The early 20-pin PALs had 10 inputs and 8 outputs. The outputs were active low and could be registered or combinational. Members of the PAL family were available with various output structures called "[[output logic macrocell]]s" or [[OLMC]]s. Prior to the introduction of the "V" (for "variable") series, the types of OLMCs available in each PAL were fixed at the time of manufacture. (The PAL16L8 had 8 combinational outputs and the PAL16R8 had 8 registered outputs. The PAL16R6 had 6 registered and 2 combinational while the PAL16R4 had 4 of each.) Each output could have up to 8 product terms (effectively AND gates), however the combinational outputs used one of the terms to control a bidirectional output buffer. There were other combinations that had fewer outputs with more product term per output and were available with active high outputs. The 16X8 family or registered devices had an XOR gate before the register. There were also similar 24-pin versions of these PALs. [[Image:AMD 22V10 Macrocell.jpg|thumb|AMD 22V10 Output Macrocell]] This fixed output structure often frustrated designers attempting to optimize the utility of PAL devices because output structures of different types were often required by their applications. (For example, one could not get 5 registered outputs with 3 active high combinational outputs.) So, in June 1983 [[AMD]] introduced the 22V10, a 24 pin device with 10 output logic macrocells.<ref name = "22V10 Data Sheet">{{Citation | date =June 1983 | title =AmPAL 22V10 Advanced Information | publication-place =Sunnyvale CA | publisher =Advanced Micro Devices | id =04126A-PLP}} Note: This is the data sheet published by AMD when the AmPAL 22V10 was introduced.</ref> Each macrocell could be configured by the user to be combinational or registered, active high or active low. The number of product term allocated to an output varied from 8 to 16. This one device could replace all of the 24 pin fixed function PAL devices. Members of the PAL "V" ("variable") series included the PAL16V8, PAL20V8 and PAL22V10. <gallery> Image:PAL Block Diagram.jpg|PAL 16R4 Block Diagram Image:22V10 Block Diagram.jpg|AMD 22V10 Block Diagram </gallery> ==Programming PALs== PALs were programmed electrically using binary patterns (as [[JEDEC]] [[ASCII]]/[[hexadecimal]] files) and a special electronic programming system available from either the manufacturer or a third-party, such as [[Data I/O Corporation|DATA/IO]]. In addition to single-unit device programmers, device feeders and gang programmers were often used when more than just a few PALs needed to be programmed. (For large volumes, electrical programming costs could be eliminated by having the manufacturer fabricate a custom metal mask used to program the customers' patterns at the time of manufacture; MMI used the term "[[hard array logic]]" ([[HAL]]) to refer to devices programmed in this way.) ===Programming languages=== [[Image:PALASM Design.jpg|thumb|right|PALASM design of a 4-bit counter.]] Though some engineers programmed PAL devices by manually editing files containing the binary fuse pattern data, most opted to design their logic using a [[hardware description language]] ([[HDL]]) such as Data I/O's [[Advanced Boolean Expression Language|ABEL]], Logical Devices' [[CUPL]], or MMI's [[PALASM]]. These were [[computer-assisted design]] ([[CAD]]) (now referred to as "[[design automation]]") programs which translated (or "compiled") the designers' logic equations into binary fuse map files used to program (and often test) each device. ====PALASM==== The [[PALASM]] (from "PAL assembler") language was used to express boolean equations for the outputs pins in a text file which was then converted to the 'fuse map' file for the programming system using a vendor-supplied program; later the option of translation from schematics became common, and later still, 'fuse maps' could be 'synthesized' from an [[hardware description language|HDL]] (hardware description language,) such as [[Verilog]]. The PALASM compiler was written by MMI in FORTRAN IV on an IBM 370/168. MMI made the source code available to users at no cost. By 1983, MMI customers ran versions on the [[DEC]] [[PDP-11]], [[Data General Nova|Data General NOVA]], [[Hewlett-Packard]] [[HP2100]], [[MDS800]] and others. ====ABEL==== [[Data I/O Corporation]] released [[Advanced Boolean Expression Language|ABEL]]. ====CUPL==== [[Logical Devices]], Inc. released the Universal Compiler for Programmable Logic ([[CUPL]]), which ran under [[MSDOS]] on the IBM PC. ===Device programmers=== Popular device programmers included [[Data I/O Corporation]]'s Model 60A Logic Programmer and Model 2900. ==Successors== After MMI succeeded with the 20-pin PAL parts introduced circa 1978, [[AMD]] introduced the 24-pin 22V10 PAL with additional features. After buying out MMI (circa 1987), AMD spun off a consolidated operation as Vantis, and that business was acquired by [[Lattice Semiconductor]] in 1999. Altera introduced the EP300 (first CMOS PAL) in 1983 and later moved into the FPGA business. Lattice Semiconductor introduced the [[generic array logic]] ([[generic array logic|GAL]]) family in 1985, with functional equivalents of the "V" series PALs that used reprogrammable logic planes based on EEPROM (electrically eraseable programmable read-only memory) technology. National Semiconductor was a "second source" of GAL parts. AMD introduced a similar family called PALCE. ICT (International CMOS Technology) introduced the PEEL 18CV8 in 1986. The 20-pin CMOS EEPROM part could be used in place of any of the registered-output bipolar PALs and used much less power. Larger-scale programmable logic devices were introduced by [[Atmel]], [[Lattice Semiconductor]], and others. These devices extended the PAL architecture by including multiple logic planes and/or burying logic macrocells within the logic plane(s). The term "[[complex programmable logic device]]" ([[complex programmable logic device|CPLD]]) was introduced to differentiate these devices from their PAL and GAL predecessors, which were then sometimes referred to as "simple programmable logic devices" or SPLDs. Another large programmable logic device is the "[[field-programmable gate array]]" or [[FPGA]]. This term is often used to describe devices currently made by [[Altera]] and [[Xilinx]]. == References == {{Reflist}} *{{Citation | last = Birkner | first = John | author-link = John Birkner | last2 = Coli | first2 = Vincent | title = PAL Programmable Array Logic Handbook | publisher = Monolithic Memories, Inc | year = 1981 | edition = 2}} * Monolithic Memories, Inc. "PAL Programmable Array Logic Handbook", third edition. 1983. *[http://www.jedec.org/download/search/jesd3c.pdf JEDEC Standard JESD3-C, Standard Data Transfer Format Between Data Preparation System and Programmable Logic Device Programmer], June 1994 ==See also== * [[combinational logic]] * [[logic]] Other types of programmable logic devices: * [[field-programmable object array]](FPOA) * [[field-programmable gate array]] (FPGA) * [[programmable logic array]] ([[PLA]]) * [[programmable logic device]] ([[PLD]]) * [[field programmable logic array]] ([[Signetics]] [[FPLA]]) * [[hard array logic]] ([[Monolithic Memories|MMI]] HAL) Current and former makers of programmable logic devices: * [[Actel]] * [[Advanced Micro Devices]] (PAL, PALCE) * [[Altera]] (Flex, Max) * [[Atmel]] * [[Intel]] * [[Lattice Semiconductor]] (GAL) * [[MathStar]] (FPOA) * [[National Semiconductor]] (GAL) * [[Signetics]] (FPLA) * [[Texas Instruments]] * [[Xilinx]] * [[Zytrex]] (PAL) Current and former makers of PAL device programmers: * [[Data I/O Corporation]] [[Category:Electronic design automation]] [[Category:Gate arrays]] [[de:Programmable Array Logic]] [[ko:프로그래머블 어레이 논리]] [[pl:PAL (elektronika)]] [[pt:Matriz lógica programável]] [[sv:Programmable array logic]] [[vi:Programmable Array Logic]]