Welcome, Guest. Please login or register.


Author Topic: Programozható logikai áramkörök (Read 8549 times)

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: Programozható logikai áramkörök
« Reply #30 on: 2015.February.25. 00:56:31 »
Szóval voltak először a PLA-k / FPLA-k. (Utóbbi egyszer programozható, előbbi maszkprogramozott, ha minden igaz.) A már ismerősebb verzió a PAL, ebből nagyon sok verzió létezik. (Ezek is egyszer programozható tokok.) A GAL-ok úgy lettek felépítve, hogy a régi PAL-ok igen nagy részét pár GAL típussal egy-az-egyben helyettesíteni lehessen, ezért ebből már csak pár fajta készült. (Van olyan szoftver, ami a PAL-ok "tartalmát" konvertálni tudja a hozzá passzoló GAL-hoz, amivel így ki lehet váltani az eredeti PAL-t.)

A PAL/GAL egy "ÉS kapcsolatok VAGY kapcsolata" típusú mátrixszal kezdődik. Vegyük az alap GAL16V8-at. (Itt a számok azt jelentik, hogy 16 bemeneted, illetve 8 kimeneted lehet maximum, egy 20 lábú tokban nyilvánvalóan nem egyszerre.) A mátrixnak van 2×16 bemenete, ezek legyenek az oszlopok. (A 2×16 az úgy jön ki, hogy van a 16 bemeneted (amik a lábak a tokon), illetve ugyanezeknek a negáltja. A mátrix oszlopaira úgy vannak bevezetve, hogy garantált az, hogy a jel ponált illetve negált oszlopa ugyanannyit késleltet, ezt tutira lehet venni.) A mátrix egy sorához tartozik egy - esetünkben - 32 bemenetű ÉS kapu, amibe a 32 oszlopból azokat kötöd be egyszerre, amelyiket akarod. (Nyilván ha egy ÉS kapuba bekötöd egy jel ponált illetve negált oszlopát is, akkor az ÉS kapu kimenete mindig 0 lesz. Ha egy ilyen sort a mátrixból nem használnak, akkor az összes bemenetet (mind a 32-t) be szokták kötni, így az a sor nem szól bele a végeredménybe. :) )

Tehát van egy ilyen 32 bemenetes ÉS kapud, ez tartozik egy sorhoz. Ebből (még mindig a 16V8-nál vagyunk) össze van fogva 8 sor, a 8 ÉS kapu kimenete bele van kötve egy 8 bemenetű VAGY kapuba. (Ha nem kell 8 bemenet, a fölösleges sor(ok) a fent említett módon "ki vannak kapcsolva".) Ennek a VAGY kapunak a kimenetével sok minden történhet. A legalapvetőbb dolog, hogy simán ki van vezetve egy kimeneti lábra. :) A 16V8-as GAL-nak maximum 8 kimenete lehet, tehát van 8 db. ilyen 8 bemenetű VAGY kapuba bekötött 32 bemenetű ÉS kapus blokkod. (32×8×8 = 2048. "Érdekes" módon a régi PAL-ok pont egy 2048 bites táblázattal programozhatók... :) )

A régi PAL-okból azért volt sok fajta, mert a "kimeneti blokk"-ból volt sok fajta, tehát ott a VAGY kapuk kimenete nem biztos, hogy közvetlenül ki volt vezetve. A szimpla eset ott is az volt, hogy a VAGY kapu után még jött egy inverter, amivel így negatív logikás jeleket lehetett előállítani. A GAL-ban a VAGY kapu kimenete egy XOR kapura van kötve, aminek a másik lába programozható, így megmondhatod hogy ponált vagy negált kimenetet akarsz-e. Illetve van egy FlipFlop is a kimeneten, amit szintén használhatsz ha akarsz, de ki is lehet kerülni. (A régi PAL-ok esetén ilyen volt a "regiszteres" kimenet, típusjelben (pl. PAL12R4) az R jelentette ezt, ha jól emlékszem.)

Aztán a kimenet lehet tri-state is (talán az engedélyező jel az fix láb, de ez most nem tuti), de ez is kapcsolható. Mint ahogy az is, hogy maga a láb bemenet vagy kimenet-e. (A 16V8 egy 20 lábú tok, Ha 16 bemenetet akarok, akkor már csak két kimeneti lábam marad. Természetesen ezt is tudni kell konfigurálni.) A kimeneti blokk pontos felépítéséhez az adott tok katalógusát célszerű tanulmányozni.

A 16V8-on kívül van még pár típus, ahol a mátrix oszlopok száma esetleg más, illetve a kimenetenként összefogott ÉS-kapuk száma is változhat. (8 fölötti sor is előfordul, a GAL22V10-ben a különböző kimenetekhez más-más mennyiség tartozik!)

Szóval a "program kreálás" lényege az, hogy ezt a táblázatot kell szépen feltölteni. Vannak erre szoftverek, de ha nagyon akarja az ember, ez még működik kézzel is. (Csináltam ilyet, onnan tudom. De azért nem erőltetném...) A CPLD-k esetén ez a táblázat (mármint hogy melyik bit mit csinál benne) már nem nyilvános, ott az ember "kénytelen" a gyári SW-t használni, GAL esetén a merészeknek megteszi egy szövegszerkesztő is. :) (Az alap fájlformátum, amit a programozók használni szoktak ehhez, a ".JED", ez egy szöveges fájl, egy sorban van egy cím, illetve 0 és 1-ek formájában a "bitek", amik gyakorlatilag egy-egy összekötést jelölnek a PAL/GAL-on belül. A logika ugyanaz mint az EPROM-oknál; a nem programozott "bit" az 1, a programozott a 0. Ha a mátrixban egy pontot össze akarsz kötni, a hozzá tartozó "bit"-et programozni (0-ra állítani) kell.)

Most így hirtelen ennyi jut az eszembe, de ezer dolgot kihagytam tuti. :)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Programozható logikai áramkörök
« Reply #31 on: 2015.February.25. 09:32:47 »
Ez szep, de azert - ha jol tudom es mint fentebb irtam - azert lehet egyszerubben is, amikor kvazi a logikai megfelelteteseket adod meg, es nem neked kell (illetve lehet ugy is, csak eppen nem biztos, hogy egyszerubb) a GAL belso felepiteset ismerve kisakkozni, hogy mi mihez legyen kotve, vagy tevednek? Pl: http://ecee.colorado.edu/~mcclurel/Atmel_WinCUPL_PLD_Software_Users_Manual_doc0737.pdf

A masik erdekesseg meg ezeka PLA/PAL cuccosok, amibol - ugy tunik - meg mindig lehet idoneknt venni vmi brutal olcson, egyszer lattam vhol vmi ezer (?) darabot 1-2 ezer forintert, vagy hasonlo :) Ha ezeket meg mindig lehet hasznalni, meg ha OTP (csak egyszer programozhato is) akkor is kvazi megeri hazi hasznalatra, vagy nem?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Programozható logikai áramkörök
« Reply #32 on: 2015.February.25. 09:39:03 »
Nagyjából értem...
Viszont nincs olyan program amibe nem ilyen kriksz-krakszokat kell írni? Hanem kapcsolási rajzként lehet megadni?
Azt látom, hogy régen volt ilyen, isp Design Expert Starter néven, a kézikönyve 3847623186324578346295725 helyen fent van, meg hogy töltsd le a Lattice oldaláról ingyen, csak hogy ott már nincs ilyen :cry: És úgy látom az egész bazi nagy interneten senki nem rakott fel belőle egy példányt...

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Programozható logikai áramkörök
« Reply #33 on: 2015.February.25. 09:57:04 »
Hat nem tudom, nekem egyszerubb lenne logkai megfelelteteseket leirni, mint "rajzolgatni", de nyilvan szokas kerdese ...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Programozható logikai áramkörök
« Reply #34 on: 2015.February.25. 10:13:33 »
Hat nem tudom, nekem egyszerubb lenne logkai megfelelteteseket leirni, mint "rajzolgatni", de nyilvan szokas kerdese ...
A leírás szerint rajzosban bonyolultabb dolgokat is hozzá lehet adni, amit aztán a program felbont elemi kapukra.
[ Guests cannot view attachments ]

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: Programozható logikai áramkörök
« Reply #35 on: 2015.February.25. 18:14:54 »
Ez szep, de azert - ha jol tudom es mint fentebb irtam - azert lehet egyszerubben is, amikor kvazi a logikai megfelelteteseket adod meg, es nem neked kell (illetve lehet ugy is, csak eppen nem biztos, hogy egyszerubb) a GAL belso felepiteset ismerve kisakkozni, hogy mi mihez legyen kotve, vagy tevednek?

Dehogy! Természetesen létezik ilyen szoftver, a "kézi" megoldást csak arra írtam, hogy - ha akarod - itt még mehet az is.

A masik erdekesseg meg ezeka PLA/PAL cuccosok, amibol - ugy tunik - meg mindig lehet idoneknt venni vmi brutal olcson, egyszer lattam vhol vmi ezer (?) darabot 1-2 ezer forintert, vagy hasonlo :) Ha ezeket meg mindig lehet hasznalni, meg ha OTP (csak egyszer programozhato is) akkor is kvazi megeri hazi hasznalatra, vagy nem?

Itt viszont a pontos típus ismerete szükséges, mivel a PAL-oknak fix a kimeneti blokkjuk. Ha az éppen "nem jön be" a kívánt helyen, akkor sokra nem mész vele. :)

Viszont nincs olyan program amibe nem ilyen kriksz-krakszokat kell írni? Hanem kapcsolási rajzként lehet megadni?
Azt látom, hogy régen volt ilyen, isp Design Expert Starter néven, a kézikönyve 3847623186324578346295725 helyen fent van, meg hogy töltsd le a Lattice oldaláról ingyen, csak hogy ott már nincs ilyen :cry: És úgy látom az egész bazi nagy interneten senki nem rakott fel belőle egy példányt...

:) Ez már csak ilyen. (Valamerre van egy isp Design Expert-em (nem a Starter), de azzal nem mész semmire. Egyrészt W98, másrészt anno regisztrálni kellett, a licenc meg a gépben levő HDD sorszámához volt kötve. Már akkor se értettem, hogy mi a francért kell a dear customer-t szívatni.)

Hat nem tudom, nekem egyszerubb lenne logkai megfelelteteseket leirni, mint "rajzolgatni", de nyilvan szokas kerdese ...

Rajzolgatni az elején "könnyű". Csak baromira unalmas, illetve nem hatékony. Kezdeni viszont tényleg nem rossz.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Programozható logikai áramkörök
« Reply #36 on: 2015.February.25. 21:27:10 »
Zozosoft én nem értelek téged.
 A topic elején írtam, hogy tekintsd meg a videót. Ott láthattad jól, hogy mi módon lehet kapcsolási rajzot létrehozni és beletölteni az IC-be. Te egyből azt vetted észre, hogy milyen sok lába van, én erre írtam, hogy az pont egy olyan típus, de azon kívül létezik más is. Később írtam, hogy hol lehet beszerezni alkatrészeket, szerszámokat, és a CAD programot. Ahogy azt is, hogy ezek már "lapra szereltek" 2,54-es tükékkel.
 Kicsivel későb azt mondod, hogy GAL "emberközelibb", és hogy inkább az érdekel. Keresel olyan szoftvert, amit már akkor sem nagyon csináltak amikor a GAL népszerű volt. Itt lenne az alternatíva, emlíetettem a 5V kompatibilitást is, de nem vagy akkor sem vevő. Miért?
  Pedig te is haladsz a korral, van SD vagy CF kártyás EP-d. Szerintem pár külföldi videót megnézve, és a következtetőképességeddel le tudnál fordítani egy CPLD-s projektet.

Itt egy rövid leírás, hogy mutassam mennyire nem ördöngősség:
- Quartus start
- Új projekt létrehozása gomb (varázsló)
- Válassza ki a mappát ahova a projekt lesz mentve, adjon a projektnek nevet
- Válassza ki a típust a projekthezi (leolvassuk az IC-ről), katt:tovább
- Kell-e tesztkörnyezet? Nem katt:Tovább
- Van-e már meglévő forrás(kód)? Nincs Tovább
- Kész
- Ezután Menu>Új grafikus forráskód, névadás, elmentés
- Kapcsolási rajz elkészítése, ügyelve arra, hogy legyenek be/kimenetek
-  Ctrl+S (Mentés), majd Ctrl+L (fordítás)
- Hibaüzenet esetén a kapcs rajz javítása

- Menü/szerkesztés/kivezetés tervező (pin planner)
- ekkor megjelenik az IC rajza a lábakkal, alul a listában ki kell választani, melyik be és kimenetet melyik lábakra szánjuk (itt figyelembe kell venni a nyákon lévő tüskéket. Általában számozva vannak a tüskék az IC kivezetése szerint)
- Ha kész kisablak bezár
- Fordítás (Ctrl+L)

- Panel összekapcsolása a programozóval (szalagkábel bedugása)
- Panel áram alá helyezése (5V)
- Baloldalt a fordítás után generált a rendszer egy listát, ott a legutolsó elemre kattintva ("programozás" felirat) felbukkan egy ablak (shortcut nem jutott eszembe)
- Ha minden jól ok, itt már minden elő van készítve, a letöltendő .pof fájl (CPLD esetén) betöltve, már csak a letöltésre kell kattintani
- kb. 10 mp wait egy 256 cellás MAX CPLD esetén
- kész a felprogramozott áramkör lehet tesztelni

- a programozás alatt is rajta lehetnek a ledek és kapcsolók, a ledek olyankor fél fényerővel világítanak.

Nos? Bonyolultnak tűnik?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Programozható logikai áramkörök
« Reply #37 on: 2015.February.26. 13:00:53 »
Nem a projekt szoftver részével van bajom. Az emberközelibbet leginkább a DIP tokozásra értem, azt még akárki össze tudja rakni. Azokat a sok lábú izéket csak a nagyon profik tudják szerelni. Minden tiszteletem SzörG-é, én képtelen lennék SD illesztőt összerakni! (Korábban gondolkoztam CF illesztésen, ott akadt el a dolog, hogy csak gusztustalan felület szereltben találtam CF foglalatot.)

Igaz, hogy vannak ezek szép fejlesztői panelek, de egy ilyet belerakni egy kész cuccba ronda, helypazarló, és drága megoldás lenne.

Másrészt a most konkrétan szóba kerülő dolgoknál csak pár 74-es IC-t kéne egyberakni, ez esetben egy ilyen komoly cucc kb atombombával lövünk verébre esete lenne...

Persze vannak olyan dolgok (pl Nick 2) ahol majd nem jöhet szóba más megoldás, de azt szerintem nem én fogom megoldani :-(
 

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: Programozható logikai áramkörök
« Reply #38 on: 2015.February.26. 13:51:33 »
Másrészt a most konkrétan szóba kerülő dolgoknál csak pár 74-es IC-t kéne egyberakni, ez esetben egy ilyen komoly cucc kb atombombával lövünk verébre esete lenne...

A GAL-ok pontosan ilyen célra lettek kitenyésztve. A sok 74xx-es tok helyett tudsz használni "pár" olyan IC-t, ami olyan, mintha a Te feladatodra lenne kitalálva. :) A kedvencem: nincs inverter-para. Egy jel fordított állapotának a felhasználása költségmentes, se késleltetésben, se egyéb "erőforrásban" nem kerül semmibe. (Ez persze az összes SPLD fölötti programozható logikában is így van.)

És lehet még egy szempont (ami valakinek vagy jelent valamit, vagy nem): ez a géphez még korban többé-kevésbé illő technika. Nem lóg ki a sorból a sok TTL közül. :-D (Ez mondjuk engem különösebben nem izgat, de kinek mi a véleménye, ugye.)

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Programozható logikai áramkörök
« Reply #39 on: 2015.February.26. 14:00:25 »
Igaz, hogy vannak ezek szép fejlesztői panelek, de egy ilyet belerakni egy kész cuccba ronda, helypazarló, és drága megoldás lenne.

Akkor nézd meg ezt. (A felső emeletet, az is használható külön)
http://www.ebay.com/itm/UnoProLogic-Altera-CPLD-Development-Board-/121556802944?pt=LH_DefaultDomain_0&hash=item1c4d599d80
Akkora az egész mint az IC, csak a 2,54-es lábak miatt tűnik olyan nagynak, de az egyéb dip toknál is ugyanekkora.
A CPLD-t nem tartom egy nagy eszköznek, a 256-os Altera MAX 2-be egy
- RS232-es modult
- Egyszerű adatátvteli logika
fért bele.
 Mit szólsz ha annyiban maradnánk, hogy picit nagyobb projekthez (pl. Címdekóder), majd előveszed? De addig is nem volna jó gyakorolni? 

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Programozható logikai áramkörök
« Reply #40 on: 2015.February.26. 14:54:46 »
ez a géphez még korban többé-kevésbé illő technika. Nem lóg ki a sorból a sok TTL közül. :-D
Anno a Mészáros féle bővítőkön használva is volt. Az EPROM kártyán PAL volt.
EPROM/SRAM kártyán már GAL. Ill. az 1 megás RAM kártyán is GAL.

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: Programozható logikai áramkörök
« Reply #41 on: 2015.February.27. 14:49:52 »
Anno a Mészáros féle bővítőkön használva is volt.

Gondolom az se hátrány, ha javítani is lehetne ezeket a régiségeket. (Amúgy mennyire bírják? A saját tapasztalatom az, hogy pl. táphiba esetén a GAL-ok szoktak az elsők lenni, amik elszállnak.)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Programozható logikai áramkörök
« Reply #42 on: 2015.February.27. 14:54:55 »
Nem tudok elromlottról. Mostanában az új bővítések miatt felmerülhet az, hogy esetleg más címtartományba kéne átrakni valamit.

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: Programozható logikai áramkörök
« Reply #43 on: 2015.February.27. 14:57:08 »
Mostanában az új bővítések miatt felmerülhet az, hogy esetleg más címtartományba kéne átrakni valamit.

Az se hátrány, ha az ilyesmit meg lehet csinálni. És itt jön a programozható logika szépsége; ehhez nem kell nyákot módosítani. :-D

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Programozható logikai áramkörök
« Reply #44 on: 2015.February.28. 11:11:27 »
Olvastam egy kommentet ami gondolatot ébresztett:
https://www.mikrocontroller.net/topic/147906#1380340

Azt írja, hogy ha nincs szükség villámgyors sebességre (ami nagyobb mint 50MHz) akkor az 5V-os vezérlés úgy is megoldható egy PLD chip-pel, hogy 5V-os felhúzóellenállást helyezek a jelvezetékre, és a kimenetet Open-Drain-re konfigurálom (korábban TTL-nél nyitott-kollektorosnak hívták). Ezzel az eljárással megoldódik az 5V-os probléma, és mivel az EP 4MHz-en ketyeg, nem okozhat gondot sem. Hogy ez eddig nekem miért nem jutott eszembe!?

 Már gondolatban készül a buszkiterjesztős külső PS2 billentyűzetvezérlőm, ami később USB-s lesz!