Pannon Egyetem Villamosmérnöki és Információs Tanszék
Digitális Áramkörök (Villamosmérnök BSc / Mechatronikai mérnök MSc) 12. hét: Kombinációs hálózatok megvalósítása LSI/MSI áramkörökkel (PAL, PLA, PROM, CPLD), VLSI (FPGA) áramkörökkel és memóriával. Előadó: Dr. Vörösházi Zsolt
[email protected]
Kapcsolódó jegyzet, segédanyag: http://www.virt.uni-pannon.hu → Oktatás → Tantárgyak → Digitális Áramkörök (Villamosmérnök BSc / Mechatronikai mérnök BSc/MSc). Fóliák, óravázlatok (.ppt) Feltöltésük folyamatosan
2
Kombinációs hálózatok / szekvenciális hálózatok (LSI/MSI): Korábban: Memóriák: RAM, ROM – nagy memóriatömbök alkalmazása K.H.-ban Programozható logikai áramkörök alkalmazása K.H., illetve S.H. felépítésére: PAL (Programmable AND Logic) PLA (Programmable Logic Array) PROM (Programmable OR – Read Only memory) GAL (Generic Array Logic) PLD / CPLD (Complex Programmable Gate Array) FPGA (Field Programmabla Gate Array) 3
Programozható logikai eszközök (PLD-k)
4
Állapotgép FSM tervezés tulajdonságai Két kombinációs logikai hálózatból és egy regiszterből áll Tervezés során az állapot-átmeneteket vesszük figyelembe, DE Hibavalószínűség nagy, Szimulációs eszközök (CAD Tools) hiánya, Hibák lehetségesek a prototípus fejlesztése során is, Könnyen konfigurálható / flexibilis eszközök szükségesek → mindezek használunk programozható alkatrészeket Inputs
Combinational Logic
Status Register
Decode Logic
Outputs
5
Field Programmable Logic Sequencer (FPLS) – Logikai sorrendvezérlő Egy vezérlő egység Next-State logikai blokkjának megvalósítása a tervező, gyártó feladata. Általában változó logikát használnak a függvények megvalósításánál. A felhasználó által programozható logikai sorrendvezérlő (Field Programmable Logic Sequencer) programozható alkatrészekből építhető fel, amelyek a következőkben részletesen ismertetésre kerülnek. 6
Field Programmable Logic Sequencer (FPLS) – Logikai sorrendvezérlő Serial In Clock
Inputs
Működése: 16
REG AND Array
8
Outputs
- Normál (D-FF), - Debug (Shift Reg.)
OR Array REG 6
Serial Out
A logikai sorrendvezérlőnek 16 külső bemeneti vonala van, 1 RESET és 1 kimenetengedélyező vonala, ill. 8 kimeneti vonala. A regiszterek egy-egy állapotot tárolnak, amelyek az órajel hatására a kimenetre íródnak, vagy a 6 belső, visszacsatoló vonalon keresztül visszacsatolódnak. A Next-State ill. a kimeneti szintek meghatározásánál programozható AND/OR tömböket használnak. 7
Tervezési módszerek Digitális logikai áramkörök tervezési módszerei Részben egyedi Programozható logikai eszközök Programozható kapu-áramkörök FPGA
Kapu áramkörök (Gate Arrays)
Egyedi Szabványos cellák (Standard Cell)
Teljesen egyedi (Full Custom)
Makrocellás PLA, PAL, GAL, CPLD,
* PLD-k helyettesíthetnek akár kombinációs hálózatot (hasonlóan egy memória elemhez).
8
PLD – Programozható logikai eszközök A Programozható logikai áramköröket (PLD: Programmable Logic Devices) általánosan a kombinációs logikai hálózatok és sorrendi hálózatok tervezésére használhatjuk. Napjainkban ezek VLSI (Very-Large Scaling Integrated IC ) típusú alkatrészek: Több tíz-millió logikai kaput, vagy tranzisztort jelenthet
Azonban míg a hagyományos kombinációs logikai hálózatok dedikált összeköttetésekkel, illetve kötött funkcióval (kimeneti függvény) rendelkeznek, addig a programozható logikai eszközökben pontosan ezek változtathatók, az alábbi lehetséges módokon: A felhasználó által egyszer programozható / konfigurálható logikai eszközök (OTP: One Time Programmable), amelynél a gyártás során nem definiált funkció egyszer megváltoztatható (ilyenek pl. a korai PAL, PLA eszközök), Többször, akár tetszőleges módon programozható logikai eszközök = újrakonfigurálható (ilyenek pl. a korábbi GAL, vagy a mai modern CPLD, FPGA eszközök) 9
Programozható logikai eszközök (PLD-k) két fő típusa: 1.) Makrocellás PLD-k: (Programmable Logic Devices): PLA PAL GAL PROM EPLD, CPLD
2.) FPGA (Field Programmable Gate Array): Programozható Gate Array áramkörök XILINX (Spartan, Virtex, Kintex, Artix) ~ 50% ! Altera (Stratix, Arria, Cyclone), ~30% Actel (főleg űrkutatásban alkalmazott) Lattice sorozatok QuickLogic További kisebb gyártók termékei 10
Programmable Logic Array (PLA) A
Mindkét része (AND, OR) programozható Bármely kombinációja az AND / OR-nak előállítható Mintermek OR kapcsolata (DNF) Programozható kapcsolók a horizontális/ vertikális vonalak metszésében Qn Kimeneteken D tárolók! (visszacsat. a bemenetekre)
B
C
D
Programozható VAGY tömb
Programozható ÉS tömb Q0
Q1
Q2
Q3
11
PLA 1970-ben, a TI (Texas Instruments) által kifejlesztett eszköz mindkét részhálózata (ÉS, illetve VAGY tömb) programozható összeköttetéseket tartalmazott, amelyek segítségével tetszőleges mintermek tetszőleges VAGY kapcsolata előállítható (DNF alakot), ezáltal bármilyen kombinációs logikai hálózat realizálható volt (természetesen adott bemenet, ill. kimenet szám mellett). A programozható ÉS / VAGY tömbökben úgynevezett „programozható kapcsolók” vannak elhelyezve a horizontális/ vertikális vonalak metszéspontjában. Amennyiben a Qn kimenet(ek)re tárolókat kötünk (pl. egyszerű D tárolót), majd pedig visszacsatoljuk a programozható logikai hálózat bemenete(i)re akár egy sorrendi hálózati viselkedést is meghatározhatunk. 12
Programozásuk (Fuse) biztosítékok segítségével Az összeköttetés mátrix metszéspontjaiban akár kis biztosítékok (fuse) helyezkednek el. Gyárilag pl. logikai ‘1’-est definiál, tehát vezetőképes. Ha valamilyen spec. programozó eszközzel, a küszöbnél nagyobb feszültséget kapcsolunk rá, átégethető, tehát szigetelővé (nem-vezető) válik, és logikai ‘0’-át fog reprezentálni. A biztosíték átégetése, csak egyszer lehetséges, utána már csak a programozott állapotot fogja tárolni (OTP – One time programmable IC).
13
Példa: PLA tervezése Realizálja a következő függvényeket: X = C + A⋅ B + A⋅ B Y = C ⋅ D ⋅ E + A⋅C ⋅ D W = C ⋅ D ⋅ E + B ⋅C ⋅ D ⋅ E + B ⋅ D Z = A⋅C ⋅ D + B ⋅ D + C ⋅ D ⋅ E + C ⋅ D ⋅ E
Tehát 5 bemenete (A,B,C,D,E) és 4 kimenete (X,Y,W,Z) van. Rajzoljuk fel a kapcsolást is! 14
Programmable AND Logic (PAL) A
Egy programozható rész AND / míg az OR fix Véges kombinációja áll elő az AND / OR kapcsolatoknak Metszéspontokban kevesebb kapcsoló szükséges Gyorsabb, mint a PLA Qn kimeneteken D tárolók (visszacsatolódhatnak a bemenetekre)
B
C
D
Q0 Q1
Q2 Q3
Programozható ÉS tömb
Rögzített/Fix VAGY tömb
15
PAL Elsőként, 1978-ban az MMI (Monolithic Memories Inc.) jelent meg ilyen programozható eszközökkel, majd pedig későbbi jogutódja a Lattice Semiconductor, illetve az AMD a 80’-as évek végén. A PAL hálózatban a programozható részt az ÉS tömb jelenti, míg az VAGY tömb fix/rögzített. Így a tetszőleges mintermeknek csak egy véges kombinációja (VAGY) állítható elő: a lehetséges kimeneti függvények variálhatóságból veszítünk, cserébe viszont a VAGY részek dedikált útvonalainak jelterjedési sebessége nagyobb, míg az eszköz mérete kisebb és ezáltal olcsóbb is lesz. Ezáltal a metszéspontokban kevesebb kapcsoló szükséges („gyorsabb”, mint a PLA). Hasonlóan a PLA-khoz, amennyiben a Qn kimenet(ek)re tárolókat kötünk (pl. egyszerű D tárolót), majd pedig visszacsatoljuk a programozható PAL logikai hálózat bemenete(i)re akár sorrendi hálózati viselkedést is könnyen valósíthatunk. 16
Programmable Read Only Memory (PROM) Egy programozható rész - OR / míg az AND fix (valamilyen elrendezés szerint) Véges kombinációja áll elő az AND / OR kapcsolatoknak Metszéspontokban kevesebb kapcsoló szükséges Gyorsabb, mint a PLA Qn kimeneteken D tárolók! (visszacsatolódhatnak a bemenetekre) x: programozható ■: fix/rögzített
17
GAL (Generic Array Logic): Általános tömb logika 1985-ben a Lattice Semiconductor fejlesztette ki elsőként, amely a PAL-nak egy továbbfejlesztett változatát képviseli. Ugyanolyan belső struktúrával rendelkezik, mint egy PAL áramkör, azonban többször programozható: tehát törölhető és újraprogramozható eszköz. EEPROM technológiát (lebegő-gate) alkalmaz. Később a National Semiconductor, és AMD is megjelent saját GAL sorozataival a piacon. 18
CPLD CPLD (Comlex Programmable Logic Devices): Komplex-programozható Logikai eszközök Valójában átmenetet képeznek a kis/közepes integráltsági fokú makrocellás PLD-k GAL/PAL áramkörei, illetve a nagy integráltsági fokú FPGA kapu-áramkörök között. A GAL/PAL áramköröktől architekturálisan annyiban különbözik, hogy ki lett bővítve: nem egy-, hanem több logikai cellamátrixot tartalmaz, amelyek konfigurálható blokkok reguláris struktúrájában vannak elrendezve. A mai modern FPGA áramköröktől viszont az különbözteti meg felépítésben, hogy nem tartalmaz dedikált erőforrásokat (pl. szorzók, memória blokkok). a legnagyobb gyártók, amelyek jelenleg is aktív szereplői a CPLD-k piacának a következők: Xilinx, Altera, Lattice Semiconductor, Atmel stb. 19
Complex Programmable Logic Device (CPLD) 1 Logikai Blokkon belül: ~ PAL / PLA (K.H.) Regiszterek (D-FF)
Programozható összeköttetések (PI: Programmable Interconnection) Teljes (Full-crossbar), vagy Részleges összeköttetés hálózat
Logikai blokk Logikai blokk I/O
Logikai blokk
Programozható összeköttetés hálózat
I/O Blokkok
Logikai blokk Logikai blokk I/O
Logikai blokk 20
CPLD (folyt) A CPLD-kben található Logikai Blokk-ok (=makrocellák): egyrészt logikai kapuk tömbjeit tartalmazzák (hasonlóan a PAL/GAL áramkörök felépítéséhez – DNF alak), másrészt regisztereket (D-tárolókból) tartalmaznak a logikai tömbök által előállított kimenetek átmeneti tárolásához, valamint multiplexereket, mellyel a programozható összeköttetés hálózatra, vagy I/O blokkok celláihoz lehet továbbítani a belső Logikai Blokkok által előállított kimeneti értékeket. Ezáltal nemcsak logikai kombinációs hálózatokat, hanem akár sorrendi hálózatokat is egyszerűen megvalósíthatunk CPLD-k segítségével A CPLD-kben található Programozható összeköttetés hálózat teljes összeköttetést (mindenki-mindekivel), vagy részleges összeköttetést (valamilyen struktúra szerint, pl. bemenetet – kimenettel, főként régi CPLD típusok esetén) biztosít az egyes blokkok között.
Kikapcsoláskor a CPLD konfigurációs memóriája megtartja értékét (non-volatile típus), ezért nem kell egy külső pl. ROM memóriát használni az inicializációs minták tárolásához, bekapcsoláskor ezek automatikusan betöltésre kerülnek. A CPLD-ket közkedvelten alkalmazzák különböző interfészek jeleinek összekapcsolásához (glue-logic), amennyiben a jeleken átalakításra is szükség van, továbbá áraik az FPGA-k árainál jóval kedvezőbbek 21
FPGA Field Programmable Gate Array) = „Felhasználó által tetszőlegesen/többször” programozható kapuáramkörök architekturálisan tükrözik mind a PAL, ill. CPLD felépítését, komplexitásban pedig a CPLD-ket is felülmúlják. Nagy, illetve nagyon-nagy integráltsági fokkal rendelkezik: ~10.000 - ~100.000.000 !! ekvivalens logikai kaput is tartalmazhat gyártótól, és sorozattól függően. Ekvivalens tranzisztorszám a létező legnagyobb Xilinx Virtex-7 2000T FPGA esetén már meghaladja a ~6.5 milliárdot (2012)! 22
FPGA: általános erőforrások LB/CLB: Konfigurálható Logikai Blokkok, amelyekben LUT-ok (Look-up-table) segítségével realizálhatók például tetszőleges, több bemenetű (ált. 4 vagy 6), egy-kimenetű logikai függvények. Ezek a kimeneti értékek szükség esetén egyegy D flip-flopban tárolhatók el; továbbá multiplexereket, egyszerű logikai kapukat, és összeköttetéseket is tartalmaznak. IOB: I/O Blokkok, amelyek a belső programozható logika és a külvilág között teremtenek kapcsolatot. Programozható I/O blokkok kb. 30 ipari szabványt támogatnak (pl. LVDS, LVCMOS, LVTTL, SSTL stb.). PI: az FPGA belső komponensei között a programozható összeköttetés hálózat teremt kapcsolatot (lokális, globális és regionális útvonalak segítségével, melyeket konfigurálható kapcsolók állítanak be) DCM: Digitális órajel menedzselő áramkör, amely képes a külső bejövő órajelből tetszőleges fázisú és frekvenciájú belső órajel(ek) előállítására
DCM
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
DCM
IOB
IOB
LB
LB
LB
LB
IOB
IOB
IOB
IOB
LB
LB
LB
LB
IOB
IOB
PI – Programozható összeköttetés hálózat IOB
IOB
LB
LB
LB
LB
IOB
IOB
IOB
IOB
LB
LB
LB
LB
IOB
DCM
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
DCM
IOB
23
FPGA – dedikált erőforrások Dedikált erőforrások a következők (amelyek az FPGA típusoktól és komplexitásuktól függően nagy mértékben változhat): BRAM: egy/két portos Blokk-RAM memóriák, melyek nagy mennyiségű (~×100Kbyte – akár ~×10Mbyte) adat/utasítás tárolását teszik lehetővé MULT / vagy DSP Blokkok: beágyazott szorzó áramköröket jelentenek, amelyek segítségével hagyományos szorzási műveletet, vagy a DSP blokk esetén akár bonyolultabb DSP MAC (szorzás-akkumulálás), valamint aritmetikai (kivonás) és logikai műveleteket is végrehajthatunk nagy sebességgel Beágyazott/Beágyazható processzor(ok): Tetszés szerint konfigurálható / beágyazható ún. szoft-processzor mag(ok) Példa: Xilinx PicoBlaze, Xilinx MicroBlaze, Altera Nios II stb.
Fixen beágyazott, ún. hard-processzor mag(ok) Példa: IBM PowerPC 405/450 (Xilinx Virtex 2 Pro, Virtex-4 FXT, Virtex-5 FXT), ARM Cortex A9 (Xilinx Zynq, illetve Altera Cyclone V, Stratix V, Arria V) stb.
24
Xilinx FPGA családok Nagy teljesítmény
Alacsony költség
Virtex (1998)
Spartan-II (2000)
50K-1M gates, 0.22µm
15K-200K gates, 0.22µm
Virtex-E/EM (1999)
Spartan-IIE (2001)
50K-4M gates, 0.18µm
50K-600K gates, 0.18µm
Virtex-II (1999)
Spartan-3 (2003)
40K-8M gates, 0.15µm
50K-5M gates, 90nm
Virtex-II Pro/X (2002)
Spartan-3E (2005)
50K-10M gates, 0.13µm
100K-1.6M gates, 90nm
Virtex-4 (2004) [LX, FX, SX]
Spartan-3AN (2006)
50K-10M gates, 90nm
50K-1.4M gates, 90nm
Virtex-5 (2006) [LX, LXT, SXT] 65nm
Spartan-3A - DSP (2006) 1.8M-3.4M gates, 90nm
Virtex-5 FXT, TXT (2008)
Spartan-6 LX, LXT (2009)
65nm
45nm
Virtex-6 LXT, SXT (2009) 40nm
Artix-7 (2011)
Virtex-7 (2011) 28nm
Kintex-7 (2011) 28nm
28nm
http://www.xilinx.com
25
Pannon Egyetem - VIRT Tanszéken lévő fejlesztő kártyák Digilent ZyBo (Xilinx Zynq) Digilent Nexys-2 (Xilinx Spartan-3E) Digilent Atlys (Xilinx Spartan-6) Digilent Nexys-4 (Xilinx Artix-7) Xilinx Virtex-5 ML506 Virtex2-Pro (Xilinx Virtex2-Pro) RC203/RC200 (Xilinx Virtex-II) SW: Xilinx ISE Design Suite 14.x Xilinx Vivado 201x
26
Digilent Nexys-2 fejlesztő kártya Nexys™2 Xilinx Spartan-3E FPGA fejlesztő kártya Xilinx Spartan-3E FPGA, 500K / 1200K ekvivalens kapuval USB2 port (táp, konfiguráció, adat-transzfer egyben) Xilinx ISE/Webpack/EDK 16MB Micron PSDRAM 16MB Intel StrataFlash Flash Xilinx Platform Flash ROM 50MHz osszcillátor 75 FPGA I/O’s (1 nagysebességű Hirose FX2 konnektor és 4 db 2x6 PMOD konnektor) GPIO: 8 LED, 4-jegyű 7szegmenses kijelző, 4 nyomógomb, 8 kapcsoló VGA, PS/2, Soros port 27
Digilent Atlys fejlesztő kártya Atlys™ Xilinx Spartan-6 FPGA fejlesztő kártya Xilinx Spartan-6 LX45 FPGA 128Mbyte DDR2 16-bit (adatbusz) 10/100/1000 Ethernet PHY USB2 port (programozás és adatátvitel egyben) USB-UART and USB-HID port (egér/billentyű) 2 HDMI videó bemenet & 2 HDMI kimenet AC-97 Codec Real time power monitor 16Mbyte x4 SPI Flash (konfiguráció és adat tárolási célokra) 100MHz CMOS osszcillátor 48 I/O’s (külső konektorokra) GPIO: 8 LED, 6 nyomógomb, 8 kapcsoló 1 PMOD, 1 VMOD csatlakozó
28
„FPGA” témájú tárgyak a Pannon Egyetemen – VIRT tanszék (VEMIVI4144B) FPGA-alapú Beágyazott rendszerek (VEMIKN5143D) Tervezési módszerek programozható logikai eszközökkel
29
FPGA létjogosultsága? A mai modern FPGA-k a nagyfokú flexibilitásukkal, nagy számítási teljesítményükkel, és (ASIC = Alkalmazás Specifikus Áramkörökkel szemben) gyors prototípus-fejlesztési, ezáltal olcsó kihozatali (piacra kerülési) költségükkel igen jó alternatívát teremtenek a mikrovezérlős (uC), illetve DSP-alapú implementációk leváltására (pl. jelfeldolgozás, hálózati titkosítás, beágyazott rendszerek, stb. alkalmazásai területén). Fejlődésüket jól tükrözi a mikroprocesszorok és az FPGA/PLD áramköri technológia fejlődési üteme között fennálló hasonlóság a méretcsökkenésnek („scalingdown”) - Gordon Moore-törvénynek megfelelően (1965!). 30
Nagy-teljesítményű Xilinx Virtex FPGA család erőforrásainak alakulása (1998-2012 időszakban)
31 * PhD dissertation Zs. Vörösházi
Pl. Spartan-3E architektúra Általános felépítés:
MicroBlaze Soft-proc Core(s)
32
Spartan-3E FPGA építőelemei CLB: Konfigurálható Logikai blokkok Slice-L, mint Logika: LUT, D-FF, MUX, Carry Logika Slice-M, mint Memória: SRL-16x1, RAM-16x1
IOB: I/O blokkok MULT: 18x18 bites előjeles (2’s) szorzó(k) BRAM: konfigurálható 18 Kbites (~2 Kbyte + paritás) egy/két-portos memóri(ák) DCM: Digitális órajel menedzser blokkok Beágyazható processzor(ok): Csak szoft-processzor mag(ok) alakíthatóak ki Pl: Xilinx MicroBlaze, PicoBlaze, (esetleg külső független IP – szellemi terméke integrálható) 33
Spartan-3E CLB tömb CLB: Konfigurálható Logikai Blokkok: fő logikai erőforrás, kombinációs és szekvenciális logikai hálózatok tervezésére
1 CLB = 4 Slice !
Digilent Nexys-2 fejlesztőkártyán
*4=
*2=
*16=
*4=
*2=
*16=
34
Kombinációs hálózatok megvalósítása memóriákkal
35
1.) ROM: Read Only Memory Csak egyszer írható (általában a gyártó által), utána már csak olvasható memória. Kikapcsoláskor megőrzik tartalmukat! Szervezése a RAM-hoz hasonló (de itt nem kell Write/Read vonal) Fontos alkalmazásai: Firmware: elektronikai eszközök (pl. számítógép ROM-Bios funkcióinak tárolására) Kód konverter: pl. BCD generáló 7 szegmenses kijelzőre Logikai függvény generátor: tetszőleges logikai fgv. szintézisénél (előállításánál) ROM-ban tároljuk az igazságtáblázatot
Programozható ROM fajtái: PROM*: egyszer programozható EPROM*: programozható, és UV-fénnyel törölhető EEPROM*: elektromosan programozható/törölhető (Flash) *Lásd: programozási módok
36
2.) RAM: Random Access Memory Véletlen hozzáférésű, írható és olvasható memória. Címzésnél: dekódoló és multiplexer áramköröket használunk Pl. 10 lábbal -> 1024 (1K) cellát tudunk megcímezni
Jelölés: RAM celláinak száma (4096) / tároló kapacitás 4K. Példák: a.) 4K= 1K x 4 RAM tartalmaz: 1024 számú 4 bites szót (word) b.) 4K= 4K x 1 RAM tartalmaz: 4096 számú 1-bites szót (word) (de itt az 1 bit/szó szervezéssel lábszámot spórolunk!) 12+1
a.)
1024 elemű (rekeszű) memória tömb
0 Cím 10 bit 1023 4 bites adatút (data-path)
b.) 0
Cím 12 bit
4096 elemű (rekeszű) memória tömb
4095 1 bites adatút (data-path)
37
RAM: SRAM (Statikus) és DRAM (dinamikus) memória cellák felépítése: Word Line Word Line
VDD p-mo s
p-mo s
Bit Line
n-mo s
n-mo s
n-mo s n-mo s
C
n-mo s
Gnd Bit Line
Bit Line Gnd
SRAM: n-mos és p-mos (n és p csatornás tranzisztorokból épül fel) 2-2 db, + 2 db áteresztő tranzisztor (össz. CMOS tranzisztor)
DRAM: Tárolás: egy kis méretű C kondenzátor töltése és kisütése. 38
a.) SRAM tulajdonságai Az információ a tápfesz. alatt is megmarad, nem kell frissíteni. Megvalósítható bipoláris (0,1) SRAM cellával, nMOS tranzisztorokkal, vagy CMOS tranzisztorokból (6 tranzisztor). Kisebb kapacitású, de gyorsabb a DRAM-nál, mivel tápfeszültség alatt sem kell frissíteni. SRAM esetén a ciklusidők T(R/W Cycle)≈T(Access Time) közel azonosak.
Nagy a fogyasztása. Integritási sűrűsége 4x rosszabb. Tápfeszültség kikapcsolásával elveszti a tartalmát. Felhasználása: Cache memóriákban, digitális oszcillátorokban, logikai analizátorokban, operatív tárakban (memória), merevlemezek gyorsító pufferében, nyomtatók memóriájában. 39
b.) DRAM tulajdonságai Általában CMOS technológiával készülnek. A tápfeszültség alatt is frissíteni kell 2-10 ms-ként, mivel idővel elvesztik tartalmukat. Kicsi a fogyasztása Nagyobb kapacitású, mint az SRAM, de lassabb (frissítés!) A hozzáférési idő kétszer nagyobb a memória ciklusidejénél: 2*T(R/W Cycle)=T(Access Time).
R/W
Egyszerűbb felépítésű (1 tranzisztor + kondenzátor), szemben az SRAM-al. Integritási sűrűsége 4x nagyobb. (IRAM: az időzítő elektronika a DRAM-ra van integrálva). Itt lényegében a CS=Chip Select (korábban CE: Chip Enable!) jelet két részre osztották fel: RAS=sorkijelölő, és CAS=oszlopkijelölő komponensekre. Felhasználása: operatív memória (DDR-, DDR-II, DDR3SDRAM) 40
Memória működése röviden Egy adott rekesz tartalmát úgy tudjuk kiolvasni, hogy a címbemenetekre (Address pins) adjuk annak sorszámát (bináris formában), amelyre az adatkimeneteken (DATA pins) a véges ún. hozzáférési idő (access time) elteltével megjelenik a rekeszben tárolt szám.
Címek (A6…A0)
Adat (D3…D0)
68
*Arató könyvben ciklus időnek van definiálva, amelyet a szakirodalomban inkább tekintenek két egymást követő olvasási, vagy írási tranzakció között eltelt időnek
Beírás hasonló módon történhet.
41
Memória tulajdonságai A memória kapacitása a tárolható szavak számát jelöli. Ha ‘n’ darab címvezetékünk van, a memória 2^n db rekeszt tartalmaz. A tárolás jellege alapján kétféle típust különböztetünk meg (később részletesen): RAM ROM
Az egy rekeszben tárolható bitek száma adja a memória szóhosszúságát (word length).
42
Kombinációs hálózatok és a memóriák kapcsolata A K.H-ban egy adott bemeneti kombinációra az igazságtábla ugyanazon sorában feltüntetett kimeneti bináris kombináció a válasz. (Tehát beadunk egy bináris számot, amire válaszul egy másik bináris számot várunk a kimeneteken).
A memóriák feladata is teljesen ugyanez: kiolvasáskor minden egyes cím megadásakor egy előzőleg betöltött adat jelenik meg. Vagyis ha egy memóriát egy vele azonos számú be-, és kimenettel rendelkező K.H. igazságtáblája szerint töltünk fel, akkor ez a memória helyettesítheti a kombinációs hálózatot.
43
K.H. – Memória ekvivalencia
n=4
m=2
44
A memóriaelemmel történő megvalósítás előnyei: könnyen átprogramozható, így a fejlesztési szakaszban nem kell újraépítenünk kapukból az egész áramkört, még apró változtatásnál sem, nem igényel függvény-egyszerűsítést (minimalizálást), nem fordulhat elő benne statikus és dinamikus hazárd (mivel nem kapukból és huzalozással építjük fel, hanem az igazságtábla alapján direkt módon határozzuk meg a beírandó adatokat!) !de itt is van/lehet funkcionális hazárd, amit pl. szinkronizációval szüntethetünk meg (nem szomszédos bemeneti címváltozásokra → kimeneti adatváltozások) Erre megoldás az EN engedélyező/tiltó bemenet 45
A memóriaelemmel történő megvalósítás hátrányai: Egy memória-áramkör sokkal lassabb lehet, mint a logikai kapukból összeállított huzalozott / dedikált kombinációs hálózat (főleg ha több hierarchia szinten összekötött memória áramkörök késleltetését tekintjük), speciális időzítési feltételekkel fogadhat csak jeleket (pl. a címnek bizonyos ideig stabilnak kell maradnia, hogy előálljon a kimenet), míg a függvény-egyszerűsítéssel kapott megoldás esetleg csak néhány kapuból állna, addig a memóriába a teljes igazságtáblázatot be kell programozni (tárolni): n darab bemenethez mindenképp egy 2^n kapacitású memóriát kell választani (katalógus),
a memóriaelem a legtöbb esetben drágább is. 46
Memória elem alkalmazása több kimenetű K.H. megvalósítására K.H – Memória Bemeneti kombináció = címek Kimeneti kombináció = adat kimenetek
EN/CS (Enable, más néven Chip Select) – memória elem engedélyezése, vagy tiltása Huzalozott VAGY kapcsolat: akár több memória elem kimenete is összekapcsolható „huzalozott” módon.
x1 x2
C1 C2
D1 D2
F1 F2
Dm
Fm
Memória elem xn
Cn
EN/CS
CLK
47
Memória: „Huzalozott VAGY” kapcsolatok Mindig csak egy memóriaelem bemenete engedélyezett egyszerre, a többié tiltott!
„Wired OR”
ENi = ‘1’ engedélyezés. ENj≠i = ‘0’ tiltás
48
K.H. megvalósítása memóriával – lehetséges esetek 1.) megvalósítandó K.H. bemenete kevesebb, mint a memória címbemenete (nem használjuk a memória plusz cím bemeneteit, GND lekötés) 2.) megvalósítandó K.H. kimenete kevesebb, mint a memória adatkimenete (nem használjuk a memória plusz adat kimeneteit, GND lekötés) 3.) megvalósítandó K.H. kimenete több, mint a memória adatkimenete (több memória elem kell) 4.) megvalósítandó K.H. bemenete több, mint a memória címbemenete (több memória elem, és dekóder kell) 5.) megvalósítandó K.H. bemenete és kimenete is több, mint a memória címbemenete, ill. adatkimenete (több memória elem, és dekóder kell) 49
3.) K.H. megvalósítása memóriával Ha a megvalósítandó K.H. kimeneteinek száma több (pl. m+2) , mint a memória adatkimeneteinek száma ( pl. m): Egyetlen memória elem nem elegendő! Bővíteni kell.
Mem E
Mem
50
4.) K.H. megvalósítása memóriával Ha a megvalósítandó K.H. bemeneteinek száma (n+2) több, mint a memória cím-bemeneteinek száma (n):
1
Egyetlen memória elem nem elegendő! Bővíteni. Mivel 2n számú bináris kombináció helyett 2n+2-t kell tárolni (azaz 4*2n) Bővíteni: ‘K’ átkódoló K.H. beépítése vezérli a memóriák E engedélyezését
2
3
K1…4 kimeneteken „n-ből 1 kód” (one-hot-code) x(n+1) x(n+2) K1 1 0 0 0 1 0 1 0 0 1 1 0
K2 0 1 0 0
K3 0 0 1 0
K4 0 0 0 1
4
51
4./a) Lehetséges megoldás: K.H. megvalósítása memóriával Ha a megvalósítandó K.H. bemeneteinek száma több (pl. n+2), mint a memória címbemeneteinek száma (pl. n): Megpróbálni a bemenetek számát egy ‘előfeldolgozó logikai’ hálózattal (K.H.) csökkenteni, még a MEM címek kiadása előtti állapotban (amelyeket már egyetlen MEM is kezelni tud! DE! nem szisztematikus módszer – melyik jeleket alakítsuk át? 52
5.) K.H. megvalósítása memóriával Ha a megvalósítandó K.H. bemeneteinek (n+2) és kimeneteinek száma (m+2) is több (tfh. 2-vel), mint a memória címbemeneteinek (n), és adatkimeneteinek száma (m): Egyetlen memória elem nem elegendő! Bővíteni. Előző 3.) és 4.) módszereket együttesen kell alkalmazni a bővítéshez. x(n+1) x(n+2) K1 1 0 0 0 1 0 1 0 0 1 1 0
K2 0 1 0 0
K3 0 0 1 0
K4 0 0 0 1
53
K.H. megvalósítása memóriával Megjegyzés: nincs akadálya annak, hogy a ‘K’ átkódoló vagy elő-feldolgozó logikai hálózatot memóriával (tipikusan ROM-al) valósítsanak meg. De ekkor a több-szintű, sorba kapcsolt memória hálózat miatt csökkenhet a megvalósított hálózat működési sebessége (cím -> érvényes adat megjelenése a kimeneten stb.). 54
Példa 1.): A megadott Memória elem segítségével realizáljon egy K.H.-ot, ha adottak az alábbi függvényei: x 1
x2 2 −1
x3
i =0
x4
n
Fn = 41 (x1 , x 2 , x 3 , x 4 ) = ∑ (0,1, 4,15)
C1
F1
C2 Memória elem
D1
C3
F2
2n −1
Fn = 4 2 (x1 , x 2 , x 3 , x 4 ) = ∑ (0,1,8,9,11) i =0
R/W
EN/CS
CLK
a.) Ha szükséges, adja meg a dekódoló logika (‘K’) igazságtáblázatát is ! b.) Adja meg pontosan a memória feltöltését is!
55
Példa 1. (folyt.): Mivel a Memória elem cím-bemeneteinek száma (n=3) 1-el kevesebb, illetve az adat-kimenetének száma (m=1) is 1-el kevesebb, mint a realizálandó K.H. bemeneteinek (n=4), ill. kimeneteinek (m=2) száma, ezért bővíteni kell: Több memória elem 1-1 memória elem kimenetenként
Dekódoló logika ‘K’ 2n+1=
2*2n
(1 → 2 dekóder), azaz K1, K2 engedélyezők
x1 x2 x3 x4
C1
F1
C2 Memória elem
D1
C3
F2
Összesen 4 db memória elem kell! R/W
EN/CS
CLK
56
Példa 1. Megoldás
x1
C1
x2
C2 Memória elem
x3
C3
M1
EN/CS CLK
a.) K: dekódoló logika x(4) 0 1
F1
D1
K1 K2 1 0 0 1
x4
’K’ 1->2 Dekódoló Logika
x1
C1
x2
C2 Memória elem
x3
C3
D1
M2
K1 EN/CS K2
CLK x1
C1
x2
C2 Memória elem
x3
C3
K1: M1, M3 K2: M2, M4
D1
F2
M3
EN/CS CLK x1
C1
x2
C2 Memória elem
x3
C3
D1
M4
EN/CS CLK
57
b.) A memória elemek feltöltése 2n −1
Fn = 41 (x1 , x 2 , x 3 , x 4 ) = ∑ (0,1, 4,15)
Fn = 4 2 (x1 , x 2 , x 3 , x 4 ) = ∑ (0,1,8,9,11)
i =0
i =0
Cím MEM#1 0 1 2 3 4 5 6 7 MEM#2
2n −1
8 9 10 11 12 13 14 15
F1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1
Cím MEM#3 0 1 2 3 4 5 6 7 MEM#4
8 9 10 11 12 13 14 15
F2 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0
58
Példa 2.): A megadott Memória elem segítségével realizáljon egy K.H.-ot, ha adottak az alábbi függvényei: x 1
x2 2 −1 n
F51 (x1 ,.., x 5 ) = ∑ (0,1, 4,31) i =0
2 −1 n
C1
F1
x3
C2 Memória elem
x4
C3
D1 F2
x5
F5 2 (x1 ,...x 5 ) = ∑ (0,1, 4,15,16,17, 21, 22) i =0
R/W
EN/CS
CLK
a.) Ha szükséges, adja meg a dekódoló logika (‘K’) igazságtáblázatát is ! b.) Adja meg pontosan a memória feltöltését is!
59