Latch v Gal, was: Nejakych 15ns by bodlo :).

Danhard danhard@volny.cz
Úterý Červenec 20 17:05:06 CEST 2004


Ach jo, to je jako do dubu :o))
Samozrejme, kdyz pouzijete inverzni log. funkci (leva strane rovnice je /Q
!!), tak vas bude zajimat hazard opacny.
Logicky je to ale stejny problem - viz. Morganovo pravidlo, ta rovnice je
stejna !
Vubec nezalezi na konecne implementaci, kde skutecne vznikne ten hazard, pri
nabezne, nebo pri sestupne hrane toho meniciho se signalu, jde o to, ze obecne
tam ten hazard muze byt, a odstrani ho ta pridrz !
Obecne nemate prilis v ruce (zvlaste pri pouziti vyssich jazyku), jestli bude
log. funkce implementovana v prime, nebo inverzni logice, to si rozhodne
vetsinou az fitter, podle minimalizace termu. Jenom u starsich PALu byla ta
logika pevne dana.

Zdravim Danhard

PS. pred 15 lety, kdyz jsem zacinal na GALech a PEELech byla tohle jedna z
prvnich chyb, kterou jsem hledal na cizim designu :o)

> > Logicka funkce je tvorena AND-OR matici,
> >
> > Qx = Dx*LATCH + Qx*/LATCH
> >
> > pokud v tom soucinu bude "0" (Dx, Qx), a LATCH neurcity, tak vysledek
> soucinu
> > bude urcity a bude vzdy "0", soucet nul bude "0",
> > neurcitost muze nastat jen pro Dx = 1 pri sestupne hrane LATCH, tam budou
> > neurcite "1", jejich soucin je "1", jen pokud jsou v presahu, proto je tam
> ta
> > pridrz, ta je po dobu zmeny LATCH rovna "1", pokud ma signal Dx presah po
> > zmene signalu LATCH.
> >
> > Qx = Dx*LATCH + Qx*/LATCH + Dx*Qx
> >
> > Danhard
>
> No, vysvetlenie je to perfektne, konecne tomu rozumiem, dakujem...
>
> Lenze ja som medzicasom nad tym rozmyslal a cital a patral; a ono je to
trochu
> inak.
>
> Zaujalo ma najprv to, ze v uz spominanom dokumente od AMD (#90003,
> Combinatorial Logic Design) sa uvadza nasledovna rovnica:
> /Q=/D*LEN+/Q*/LEN(+/D*/Q)
> takze podla tohoto hazard nastava prave ked je D a Q v nule...
>
> Potom som zistil (http://www-ee.eng.hawaii.edu/~ms
> mith/ASICs/HTML/Book/CH05/CH05.4.htm), ze v skutocnosti AND matica nie je
> implementovana ako AND, ale ako wired-OR (ono by bolo asi tazko sfunkcnit
> niekolko desiatok tranzistorov v serii, ze...). A samozrejme, su prehodene
> invertovane a neinvertovane vstupne datove linky (tym sa trivialnym sposobom
> dosiahne inverzia na vstupe).
> Jednoducho, ak je na datovej linke (po zinvertovani) 1, ak je dany fuse
> neprepaleny (u GAL EE tranzistor nenaprogramovany), otvori sa tranzistor,
> ktory prizemni danu "AND"-linku. Na konci "AND"-linky je pochopitelne nejaky
> "pullup" (aktivna zataz), z toho vyplyva pomerne vysoka spotreba aj pri
> nulovej frekvencii (a tiez rychlost zavisla od toho, ci sa jedna o
> "full"/Half/Quarter-power device - ta dlha linka ma pochopitelne velku
> kapacitu, takze tym "pullupom" musi tiect patricny prud pre dostatocnu
> rychlost); no a nakoniec zosilnovac do OR linky.
> Takze ak je na vstupe (D a tym aj Q) jednicka a aj na LATCH je 1, po
inverzii
> je to nula, tranzistory na "AND" linke D*L su oba zatvorene, takze je tam
> jednotka z pullupu, co na konci v ORe sposobi jednicku. Pri prechode LATCHu
z
> jedna do nuly by sa mohlo stat, ze linka D*L sa rychlejsie preklopi do nuly
> ako pullup "vytiahne" Q*/L do jednicky; tam by sa ta falosna nula mohla
> objavit na vystupe a mozno nakoniec aj tam zostat.
>
> Toto by zasa svedcilo o tom, ze hazard je naozaj ked je D aj Q v jednotke.
>
> Lenze toto vsetko moze a nemusi byt pravda, kedze skutocnu vnutornu
strukturu
> Vam nikto nezverejni...
>
> Mozete jedine hadat, reverze engineerovat s kyselinami a elektronovym
> mikroskopom, alebo machat vstupmi a merat; navyse u PALCE to moze byt inak
ako
> u GAL a este inak u PEEL, a pochopitelne MAX a XC95xxx...
>
> Cize ta rovnica moze vyzerat podla vnutorneho zapojenia pokojne aj tak aj
> onak.
>
> Tak kde je pravda a ako sa ju zodpovedne dozvediet?
>
> wek






Další informace o konferenci Hw-list