BL4A17x Digitaalielektroniikka A/B: Ohjelmoitavat logiikkapiirit
Ohjelmoitavat logiikkapiirit (PLD, Programmable Logic Device) PLD (Programmable Logic Device) on yleinen nimitys integroidulle piirille, jonka toiminnallisuus voidaan ohjelmoida käyttäjän toimesta piirin valmistuksen jälkeen Voidaan jakaa toiminnallisuuden perusteella: Kombinatooriset piirit Toteuttaa kombinatoorisen logiikan kytkentöjä Sekventiaaliset piirit Toteuttaa kombinatoorisen ja sekventiaalisen logiikan piirejä
Kombinatooriset ohjelmoitavat piirit (1/2) Toiminta perustuu ohjelmoitaviin AND/OR elementteihin, toteuttavat SOP-muotoisia lausekkeita Hyödyntävät ROM-muistin ohjelmointitekniikoita, tavallisimpana sulakkeet (fuse-link) PLD (Programmable Logic Device) PROM (Programmable Read Only Memory) PAL (Programmable Array Logic) PLA (Programmable Logic Array) Kuva. Ohjelmoitavat kombinatooriset logiikkapiirit
Kombinatooriset ohjelmoitavat piirit (2/2) Piirien toimintaa voidaan havainnollistaa lohkokaavioilla (alla): PROM Inputs PAL Inputs PLA Inputs Fixed AND array (Decoder) Programmable AND array Programmable AND array Programmable OR array Fixed OR array Programmable OR Array Outputs Outputs Kuva. PLD-piirien loogisten funktioiden toteutusperiaate Outputs
PLA (Programmable Array Logic) (1/2) Ohjelmoitavat kytkentämatriisit sekä AND että OR porteille Ohjelmoitava lähtömuuttujien komplementointi XOR-porttien avulla Piirityyppi ei saavuttanut suurta kaupallista menestystä
PLA (2/2) Esimerkki PLA-piirin ohjelmointiperiaattesta: Toteutettavat funktiot F F 1 2 AB' AC A' BC' AC BC' A B C AB' AC BC Taulukko. PLA-piirin ohjelmointitaulukko CC' B B' A A' A'BC' OR Tulo- AND Suora Kompl. termi A B C F1 F2 AB' 1 1-1 - AC 2 1-1 1 1 BC 3-1 1-1 A'BC' 4 1 1 - Kuva. AND- ja OR- ja XOR-porttien tulojen ohjelmointi 1 F1 F2
PAL (Programmable Array Logic) (1/6) Pystytään toteuttamaan SOPmuotoisia (Sum-of-Products) lausekkeita: AND-porttien tulot ohjelmoitavissa kytkentämatriisin avulla Ei sisällä kiikkuja Käytetty laajalti kombinatoorisen diskreetin logiikan korvaajana Kuva. PAL16L8-piirin sisäinen rakenne (logiikkakaavio)
PAL (2/6) PAL16L8-piirin ominaisuudet: 16 I/O-signaalia, joista 8 konfiguroitavissa lähdöksi 8 logiikkalohkoa 7 AND-porttia jokaisessa logiikkalohkossa Jokaisella AND-portilla 32 tuloa Kertaohjelmoitava (sulakkeet) Ensimmäiset toteutettiin TTL-tekniikoilla Useita ohjelmointikieliä, esm. PALASM Kuva. PAL16L8 pinnijärjestys Kuva. PAL16R6CN
PAL (3/6) PAL16L8 toiminnallinen lohkokaavio kuva (alla) Kuva. PAL16L8 lohkokaavio (AMD)
PAL (4/6) Rekisterillinen PAL 8 logiikkalohkoa D-kiikku logiikkalohkossa Yhteinen kellosignaali 8 tuloa, 8 lähtöä Yhteinen OE-signaali Mahdollistaa liitynnän väylään Kuva. PAL16R8-piirin logiikkakaavio (AMD)
PAL (5/6) PAL16R8 toiminnallinen lohkokaavio kuva (alla) Kuva. PAL16R8-piirin logiikkakaavio (AMD)
PAL (6/6) PALASM-esimerkki (wikipedia) Rekisterillinen PAL-piiri Toteutettu 4-bittinen synkroninen laskuri Resetointitulo Lähdöt Q,Q1,Q2 ja Q3
Ohjelmoitavat logiikkapiirit vs. diskreetti logiikka Ohjelmoitavat kombinatooriset logiikkapiirit on tarkoitettu ennen kaikkea korvaamaan diskreettiä logiikka, joitain etuja: Logiikan pienempi fyysinen koko Säästöt piirilevysuunnittelussa Säästöt komponenttien hinnassa Ohjelmoitavuudesta syntyvä joustavuus Saman laitteiston uudelleenkäytettävyys Usein myös tehonkulutus Parempi suorituskyky
Sekventiaaliset ohjelmoitavat logiikkapiirit PLA- ja PAL-piirejä ei ole suunniteltu sekventiaalisen logiikan toteuttamiseen, usein sitä rajoittaa sisäisten rekisterien (kiikkujen) puuttuminen Sekvenssilogiikkaa varten suunniteltuja piirityyppejä ovat: SPLD (Sequential [Simple] Programmable Logic Device) CPLD (Complex Programmable Logic Device) FPGA (Field Programmable Gate Array) Ovat pääasiallisesti syrjäyttäneet sekä PLA- että PAL-piirit nykyisissä sulautetuissa järjestelmissä
SPLD (Sequential Programmable Logic Device) (1/4) Voidaan ajatella olevan PAL-johon on lisätty aseteltava rekisteri jokaiseen logiikkalohkoon Piirin rekistereillä yhteinen kellosignaali Clock Inputs PAL (Programmable AND fixed OR array) Configurable Registers Outputs Kuva. SPLD-piirin periaattellinen rakenne
SPLD (2/4) Muistuttaa rakenteeltaan rekisterillistä PAL-piiriä Rekisterit korvattu makrosoluilla Usein uudelleenohjelmoitavissa, (EEPROM, FLASH) Kuva. PEEL18CV8-piirin logiikkakaavio (ICT)
SPLD (3/4) Makrosolujen toiminnallisuus voidaan ohjelmoida, esim: Kiikun ohitus Kellon aktiivisen reunan valinta Lähdön komplementoinnin valinta Kiikun alkutilan asetus Suora/rekisterillinen takaisinkytkentä Kuva. PEEL18CV8-piirin makrosolun rakenne (ICT)
SPLD (4/4) Kuva. Erilaisia makrosolun konfigurointimahdollisuukisia (ICT PEEL18CV8)
CPLD (Complex Programmable Logic Device) (1/5) CPLD:n voidaan ajatella olevan SPLD-piireistä kehitettyjä Piireille pystytään toteuttamaan sulautettujen järjestelmien toiminnallisia osia PLD PLD PLD I/O Block Programmable switch matrix I/O Block PLD PLD PLD Kuva. CPLD-piirin yleinen rakenne
CPLD (2/5) CPLD:n logiikkalohkon (PLD) voidaan ajatella olevan SPLD-piiri Makrosoluista koostuvat logiikkalohkot on liitetty kytkentämatriisiin, jolla toteutetaan: Kytkennät toisten logiikkalohkojen välillä Sekvenssilogiikka, logiikkalohkojen takaisinkytkennät Kytkennät I/O-lohkoihin ja sitä kautta piirin nastoihin Tyypillisesti logiikkalohkoon sisältyy 4-2 konfiguroitavaa makrosolua Makrosoluja CPLD-piireillä on < 1 kpl Kuva. CPLD-piirien teknisiä tietoja (Altera MAX 3)
CPLD (3/5) Kuva. CPLD-logiikkasolut (Altera MAX 3)
CPLD (4/5) Kuva. CPLD-makrosolu (Altera MAX 3)
CPLD (5/5) CPLD-piireillä on useita sovelluksia, niiden vahvuuksia ovat: Pystytään toteuttamaan monimutkaisia digitaalisia järjestelmiä Joustavuus ohjelmoitavuuden takia Uudelleenohjelmoitavuus Sisäinen EEPROM/FLASH, toimii ilman ulkoista muistia Hinta, tehonkulutus ja nopeus Sovelluksia, hardware-toteutus: Signaalinkäsittely, digitaaliset suotimet (FIR/IIR) Liimalogiikka järjestelmien välille, esim. muistiohjaimet Tiedonsiirtoprotokollien alimmat kerrokset, esim Profibus, Ethernet, PCI, jne. Piireille saatavilla valmiita IP-lohkoja (Intellectual Property) Rajoituksena usein makrosolujen (muistin) määrä
FPGA (Field Programmable Gate Array) FPGA-piirien ominaisuuksia: Koostuu logiikkasoluista, kuten CPLD Soluissa CPLD-piirejä vähemmän toiminnallisuutta, reititysmahdollisuudet kuitenkin huomattavasti monipuolisemmat SRAM-pohjainen, usein piirillä runsaasti muistia Solun toiminnallisuus ohjelmoidaan LUT:n (look-up-table) Piireillä on jopa yli miljoona porttia ja tuhansia logiikkasoluja Sovelluksia: Vastaavat sovellukset kuin CPLD:lläkin, mutta laajempina Nopea signaalinkäsittely Softaprosessorit jne
FPGA LUT (Look Up Table) FPGA-piireissä kombinatoorinen logiikka SRAM-pohjaisten LUT:ien avulla Esimerkki turvavyön varoitusvalo a) Logikkakaavio ja yhtälö b) Kytkentää vastaava totuustaulu c) Kytkentä ohjelmoituna LUT:iin (a) k p s k p s (c) 8x1 RAM a2 a1 a 1 D w (b) w kps' k p s w 1 1 1 1 1 1 1 1 1 1 1 1 w Kuva. Logiikan implementointi LUT:lla
FPGA Kytkennän jakaminen LUT:ien välille Toteutettva toiminnallisuus jaetaan LUT:ien välille. Pienten yksikkökokojen avulla pystytään käyttämään tehokkaasti FPGA-piirin muistia hyödyksi. Esimerkin kytkentä: 2 x (3 tuloa, 1 lähtö), muistitarve 16 bittiä Sama kytkentä yhdellä LUT:lla (5 tuloa, 1 lähtö), muistitarve 2^5 bittiä = 32 bittiä k p s t d k p s t d x=kps' (A) 8x1 RAM a2 a1 a (A) 1 D x w=x+td w (B) x 8x1 RAM a2 a1 a (B) 1 1 1 1 1 1 1 D w Kuva. Toiminnallisuuden jakaminen LUT:ien välille
Sekventiaalisten PLD-piirien sovelluskehityksestä Piirit kompleksisia rakenteeltaan, ohjelmointi vaati erityistyökalut: Kytkentäkaavioihin pohjautuvat työkalut Laitteistokuvauskielet (HDL, Hardware Describtion Language) Nykyisin tarjolla myös korkeamman tason sovelluskehittimiä, esim: Matlab/Simulink, Labview Laitteistokuvauskielet ovat saavuttaneet suosiota koodin uudelleenkäytettävyyden ja siirrettävyyden takia: Koodin syntetisointi kohdepiirille standardikoodista tehdään piirivalmistajan tarjoamilla työkaluilla Osa toiminnallisuudesta voidaan ostaa IP-lohkoina Testausta voidaan tehdä simulaattorilla ja valmiissa toteutuksessa esim. JTAG-liitynnän ja Boundary Scan-ominaisuuden avulla
Sekventiaalisten PLD-piirien sovelluskehityksestä VHDL-esimerkki: 2-tuloisen ANDportin määritys -- import std_logic from the IEEE library library IEEE; use IEEE.std_logic_1164.all; -- this is the entity entity my_and is port ( IN1, IN2 : in std_logic; OUT1: out std_logic); end entity; -- here comes the architecture architecture example of my_and is begin OUT1 <= IN1 and IN2; end example;