 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Ned Mar 26, 2006 3:09 pm Naslov sporočila: |
|
|
GAL, pa bo samo en cip. Sicer pa takole na hitro mislim, da bo moralo iti z dvema ... bom malo preracunal.
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Mar 26, 2006 3:38 pm Naslov sporočila: |
|
|
futuristic je napisal/a: |
Najlepša hvala, res.
Sem misli narediti z temi "vgrajenimi" logičnimi vezji, ker z gal/pal nisem še nikoli delal. Imaš mogoče kak dober link z osnovami. Predvsem me zanima, če rabim poseben programator ali bi se dalo to kar na roke, sprogramirat, npr. tako da bi peljal na 5V na določene kontakte?
PAL je tako poceni(30sit), da ni panike tudi če bi ena dva pokvaril preden bi mi uspelo.
Lp,
Frenky |
PAL ter GAL je tudi zame popoln tabu. Ne vem zakaj, ampak z tem nisem nikoli delal. Prebral sem edino kak datashet. Bil bi vesel, če bi kdo napisal nekaj osnov. Kaj o programatorjih/softweru (pred vsem kaj takega za samogradnjo). Pa tudi o samih "surovcih". Kaj se dobi, kaj je najboljše uporabit. Če bo tema zaživela, jo bom razdelil v novo z ustreznim naslovom.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Ned Mar 26, 2006 4:33 pm Naslov sporočila: |
|
|
Brez konkretnih vprasanj je kar tezko kaj koristnega napisati - vprasajte, kar vas zanima.
Na hitro malo teorije:
PLD je cip, ki ima vhode in izhode, med njimi pa matriko "varovalk" (fuse) in logicnih celic (OR, inverter). S prekinjanjem povezav ("fuse") tako dobis na izhodu zeljeno logicno funkcijo, sestavljeno iz preprostih vrat. PAL je bil ocitno prvi PLD in ni prepisljiv, GAL (in podobni) pa so prepisljivi (uporabljajo EEPROM) in jih mocno priporocam namesto neprepisljivih ekvivalentov.
Delovanje PLDja opises v programskem jeziku (primer v tej temi). Obstaja vec razlicnih jezikov, za preproste PLDje kot so PALi/GALi pa se uporablja predvsem CUPL in Abel (za bolj kompleksne pa VHDL, Verilog in podobno). "Program" nato prevedes z orodjem in dobis "fusemap", ki ga programator zapece v cip.
Vsak soliden univerzalni programator podpira tudi PALe/GALe. Programiranje je relativno preprosto, zato obstaja tudi cel kup homemade programatorjev, ni pa tako enostavno, da bi samo malo posaril naokoli s 5V (bolj je podobno prvim mikroracunalnikom, ki so jih programirali s stikali). Za vec informacij o doma narejenih programatorjih
Za izvedbo zgornjega primera (sicer resenega z dvema locenima cipoma) v CUPLu bi napisal naslednje:
Koda: |
pin 1 = a;
pin 2 = b;
pin 3 = c;
pin 12 = izhod;
izhod = (a & !b) # (!a * b * c);
|
En klik da se program prevede, zagon programatorjevega SW, vstavitev GALa, programiranje in voila, 5 minut in namesto dodatne matematike in risanja vezic po plosci je problem resen v enem samem cipu, pa se vec kot pol vhodov, skoraj vsi izhodi ter vecina celic je ostala prostih za morebitne druge (bolj kompleksne) funkcije.
PLDji niso bavbav in za naslovne dekoderje in podobno saro so izjemno uporabni. Delujejo s frekvencami vecine mikrokontrolerjev (nekaj deset MHz), tako da ni tezav s hitrostjo in zato nadomestijo kup locenih cipov enake hitrosti.
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Mar 26, 2006 4:46 pm Naslov sporočila: |
|
|
Sokrat, kaj torej predlagaš začetniku vzeti v roke. Mogoče navedeš konkreten čip, ki je dobavljiv pri nas. Lepo bi bilo, da bi za njega obstajal kak free prevajalnik.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Ned Mar 26, 2006 5:03 pm Naslov sporočila: |
|
|
Pri nas je dobavljivo vse mogoce (sam poglej obe veliki trgovini z elektroniko, da ne bo spet jok in stok zaradi "reklamiranja" - obe imata iskalnik, v katerem za "GAL", "PAL", "PALCE" itd. pade ven precej zadetkov).
Jaz uporabljam najmanjse GALe v hitrejsi inkarnaciji (GAL16V8D-15), ker doslej se nikoli nisem porabil vseh pinov, hitrosti pa ni nikoli prevec Navijam za GALe (in ne za PALe ali slabse ekvivalente GALov drugih proizvajalcev), ker delajo zadovoljivo dobro, cene so razumne in jih je mogoce preprogramirati. Glej zgoraj omenjeno temo za komentarje o (ne)dobavljivih alternativah. PALi so stvar zgodovine, razen ce bi se sel masovno proizvodnjo.
Zastonjski prevajalnik je Atmelov WinCUPL, ki pride skupaj s simulatorjem. Med podprtimi cipi so sicer omenjeni samo Atmelovi, a gre za genericne komponente, ki so (preverjeno) med seboj kompatibilne - moj GAL 16V8D je tako mozno programirati z deklaracijo g16v8a, ki je alias za Atmelov ATF16V8B s seznama. Ker je izhod itak JEDEC, je vazno le da je "arhitektura" pravilna (od tega je odvisno kako bo zgeneriran fusemap), za vpis pa potem skrbi programatorjev algoritem oz. PLD sam, ce pozna "zdruzljivostne" nacine programiranja (preberi recimo Lattice-ov datasheet za kaksen GAL za vec informacij o zdruzljivosti s starejsimi algoritmi).
|
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Ned Mar 26, 2006 5:46 pm Naslov sporočila: |
|
|
A jih še niso nehali proizvajati?
Mi smo ravno letos pri predmetu Preklopna vezja (2.letnik UNI FE) delali z GAL-i in ne morem rečt, da bi jih kdo od nas ravno vzljubil (mogoče zato, ker smo funkcije morali na roko minimizirat in potem programirat na ta način, da smo vpisovali 1 in 0 na primerna mesta - kakšni programski jeziki niti omenjeni niso bili...).
Torej, kateri programski jezik/način programiranja bi mi svetovali, da bi jih malce preizkusil?
|
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Ned Mar 26, 2006 5:59 pm Naslov sporočila: |
|
|
Hahahahahahahahahahahaha To je pa tako, kot ce bi mikrokontrolerje se vedno programiral s tabelo na papirju in stikali - saj bi slo
Saj ne recem, tudi sam zagovarjam tezo, da bi ljudje, ki imajo bojda dokoncano racunalnisko solo, imeti vsaj nekaj pojma o delovanju naprav in o tem kako jih narediti manj slabo (ravno zato vedno sitnarim z optimizacijami vsega mogocega), ampak programiranje 0 in 1 na roke je pa precej mazohisticno pocetje. Saj gre, ce malo premislis kako stvar deluje (vsaka celica ima en normalen in en invertiran izhod, povezave v vrsti so AND, med vrstama pa OR, vse ostalo je pa osnovnosolska matematika), ampak vseeno je tako pocetje izguba casa - zato pa so napisali orodja
Za vec informacij beri visje, da ne bo potrebno vsakemu posebej ponavljati
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Mar 26, 2006 8:26 pm Naslov sporočila: |
|
|
Sokrat,
Mogoče lahko pripneš kak primer kode s komentarji za tega GAL-a. WinCupl sem poinštaliral. Hardwera za programiranje sicer nimam, a lahko bi primer poskusil na simulatorju.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Ned Mar 26, 2006 9:02 pm Naslov sporočila: |
|
|
Dva primera kode ze imas - en je v tej temi (funkcija, ki jo je bilo potrebno optimizirati; manjka sicer header, zaradi cesar bi ze WinCUPL pritozil, dovolj pa bi bila deklaracija cip, torej vrstica z Device), drugi pa v temi, na katero sem dal link v enem od prejsnjih postov. Koda je enostavna Boolova algebra, ki jo ze poznas iz sveta mikrokontrolerjev. V programu moras definirati Device (gal16v8-), pine (glej na to kot na deklaracijo enobitnih spremenljivk), ostalio je pa samo preprosta matematika. V primeru iz Iztokove teme imas vse - AND, OR, NOT, preverjanje stanja (ekvivalent == 1 oz. == 0 iz C-ja), manjka samo uporaba GALa kot registra, torej s clockom.
Zraven WinCUPLa sicer preide precej primerov ("examples"), spravljenih v direktoriju Examples.
Se nekaj navodil za uporabo simulatorja, da ne bos odkrival tople vode:
1: Za simulacijo potrebujes troje: program (ki se prevede), seznam vhodov in izhodov, ki jih bos simuliral in seznam testnih vektorjev.
2: Vhode/izhode dodas v simulacijo z gumbom Add Signal (levi v 3. skupini gumbov z leve). Dodaj tiste vhode/izhode, ki jih zelis simulirati, druge pa izpusti, ce te ne zanimajo (to sicer ni nujno, a bos imel pozneje manj dela, ce jih izpustis).
3: Doloci stevilo testnih vektorjev glede na stevilo vhodov in njihova mozna stanja. Kaj sploh je testni vektor ? Vektor kot vektor, vsaka komponenta vektorja pa predstavlja stanje dolocenega signala glede na zeljeni rezultat. Za funkcije, kjer PLD ne deluje kot register (vecina funkcij, tudi oba zgoraj omenjena primera), je stevilo vektorjev tocno enako 2^N, kjer je N stevilo neodvisnih vhodov od katerih je odvisen rezultat. Za primer iz Iztokove teme so tako stirje vektorji, saj gre v bistvu za simulacijo treh elementov hkrati - en inverter (zanj bi bila dovolj dva vektorja), en multiplekser in en demultiplekser.
4: Doloci testne vektorje; za vhode to pomeni, da jim nastavi vrednost na 0 ali 1 (zeleno; Drive Input Low/High), za izhode pa na to, kar zelis od njih - zelis jih testirati (L ali H; Test Output Low/High, ali pa njihovo delovanje samo simulirati (*; sSimulator Determined). verjetno bos uporabil zadnjo moznost, sploh pri tako preprostih funkcijah, in potem rezultate simulacije primerjal s pricakovanji (kar sicer naredi tudi Test Output, ampak tam moras vsako stanje dolociti posebej, za Simulator Determined pa lahko dolocis za vse vektorje z enim klikom in si prihranis nekaj dela).
5: Klikni na Simulate oz. Compile/Simulate in obcuduj rezultate (4. skupina gumbov z leve).
Spodaj je prilozena slika simulacije (pred klikom Simulate) za program iz Iztokove teme. Ko kliknes Simulate, dobis stanja izhodov glede na vhodne podatke. Juhej.
Opis: |
|
Velikost datoteke: |
73.94 KB |
Pogledana: |
68 krat |

|
|
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Ned Mar 26, 2006 9:12 pm Naslov sporočila: |
|
|
Aja, pa se to ... tema je ze davno odtavala stran od optimizacije tiste funkcije z 74* cipi Najbrz si zasluzi delitev, da lahko gre vsak konec po svoje.
|
|
Nazaj na vrh |
|
 |
lucca brassi Član


Pridružen-a: Ned 01 Feb 2004 12:46 Prispevkov: 4223 Aktiv.: 17.83 Kraj: KOČEVJE
|
Objavljeno: Pon Mar 27, 2006 3:02 pm Naslov sporočila: re |
|
|
No ja zdaj sem pogruntal kar sem se učil na faksu bolje zdaj kot nikoli.
Mi smo šli malo obrnjeno . Imeli smo logično vezje za katerega smo sumili da je nekaj narobe . Potem smo generirali vhodne vektorje in čakali kaj se pojavi na izhodu - ene vrste black box . Tako smo testirali neko logično vezeje Tista napaka bi v tem primeru predstavljala napačno postavljeno varovalko -recimo
Nikoli pa nismo zapekli kakega čipa ampak smo vse delali na VHDL simulatorju.
Ma za programirat jaz nikoli nisem bil kak gizmo
Potem so ti Xilinx procesorji kombinacija mikroprocesorja s spominom in logičnim vezjem v obliki GALa?
LP
_________________ Moments before detonation ,....... TT |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pon Mar 27, 2006 3:34 pm Naslov sporočila: |
|
|
Nisem se slisal za Xilinxove procesorje - najbrz imas v mislih CPU, izveden v njihovem FPGAju ? Vecji PLDji (kot so npr. FPGAji) so "nabildana" verzija malckov kot je PAL/GAL - bistveno vec vhodov in izhodov in bistveno vec celic. Isto kot lahko znotraj malega PLDja delas interne (povratne) povezave, jih lahko tudi v vecjem. Na tak nacin iz med sabo povezanih logicnih vrat sestavis CPU in periference enote, enako kot bi to lahko naredil iz locenih komponent (ravno zadnjic sem naletel na eno stran, kjer je mozak sestavil svoj racunalnik izkljucno iz 74* komponent in podobne sare - mislim, da se lahko celo telnetas nanj ).
FPGAji imajo ponavadi SRAM, v katerega se DL "program", saj 100 vpisov ne bi zdrzalo prevec dolgo med debuggiranjem kaksnega procesorja, dekoderja ali cesa podobnega.
|
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Ned 19 Sep 2004 22:04 Prispevkov: 16777193 Aktiv.: 70819.59
|
Objavljeno: Pon Mar 27, 2006 3:36 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
lucca brassi Član


Pridružen-a: Ned 01 Feb 2004 12:46 Prispevkov: 4223 Aktiv.: 17.83 Kraj: KOČEVJE
|
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pon Mar 27, 2006 4:05 pm Naslov sporočila: |
|
|
Boris, nisem imel linka med favourites, sem ga pa zdajle spet nasel (naslov je precej ociten, hecno da sem tako rec pozabil ): http://www.homebrewcpu.com/
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|