Asynchronni logika -- simulace/analyza (konkretne: hranovy R-S klopny obvod); postesk a prozatimni vysledky
Marek Peca
marek na duch.cz
Pátek Květen 31 13:52:14 CEST 2013
Zdravim vas,
v ramci slozitejsiho FPGA obvodu jsem narazil na nutnost v jednom miste
tvorit cosi malickym asynchronnim automatem. Zjednodusena podmnozina ulohy
nakonec ukazuje na neco, cemu jsme neformalne rikali "hranovy R-S klopny
obvod". Popisu tezkosti, ktere jsem potkal pri pokusu to odsimulovat a
zkusenosti s tim, jak se to nakonec aspon trochu povedlo v detskem
simulatoru Logisim. Uzavru dotazem, zda nekdo zkusenejsi v asynchronismech
poradi, kam pro lepsi SW nastroje.
/* Uvodni poznamka s podekovanim: async logika me vzdy uvadela v uzas,
stejne jako analogove pocitani; zpocatku jsem se ji snazil ovladnout, ale
nikdy na to nedoslo. Diky konfere
http://list.hw.cz/pipermail/hw-list/2005-September/251339.html
a naslednem vyvoji na FPGA jsem vlastne nikdy async logiku nepouzil, vzdy
jsem se snazil o prisne synchronni navrh a pro naprostou vetsinu uloh to
vyhovelo vyborne. V FPGA nam posledni dobou funguji rekl bych az dost
netrivialni veci (patrne za obzorem predstavivosti vyrobce) a vse ciste
na hranovych D-klopnych obvodech, vzacne nejake osamocene RSko u vstupu.
Formalne jsem absolvoval logicke obvody u Doc.Bayera na katedre ridici
techniky, ale nikdy v skutecnem zivote jsem metodiku asynchronniho navrhu
nepouzil.
*/
Cilem hry je tedy hranovy R-S klopny obvod -- vzestupna na S nahodi do 1,
vzestupna na R shodi do 0, zadna omezeni na signaly nejsou (vyjma
tradicniho zakazu soucasne hrany, jedineho hazardu, ktery nejde nijak
osetrit).
Zde 3-4 ruzne podoby obvodu, ke kterym jsem dosel:
http://rtime.felk.cvut.cz/~pecam1/logisim/edge_rs.png
(Bloky [F] ignorujte, jako by to byl kus dratu; bude vysvetleno nize.)
1. byl prvotni navrh s ohledem na bezne pouzivane dlazdicky z 3-LUT FPGA:
hranovy D-k.o. a mux.
2. je totez co (1.), ale D-k.o. je rozepsan jako dve D-latche za sebou.
3. je uz vysledek systematickeho navrhu podle skolni kucharky s tim, ze
jako pametovy clen bylo zvoleno samotne zpozdeni hradel/dratu.
/* Kucharka v strucnosti: FSM diagram -> slouceni stavu -> sousednost
stavu a s ni souvisejici kodovani, pripadna zmena prechodu ci pridani
pruchoziho stavu tak, aby kodovani rozumne vyslo -> prepis symbolu do 0/1
-> implementace pro konkretni druh pametovych clenu */
(Priznavam, ze jsem zde nedoresil, zda je komb.logika bezhazardni...)
4. vysledek tehoz systematickeho navrhu, ale jako pametove cleny zvoleny
obycejne (urovnove) R-S klopne obvody.
Pri simulaci (viz dale) se zda, ze se vsechny implementace chovaji shodne.
Prijemne zjisteni a pro me dulezite bylo, ze ackoli se (2.) lisi od (4.),
ve skutecnosti jsou logicke mapy (2.) i (4.) jen ruznymi realizacemi zcela
totoznych prechodu. Jedna se o tak trochu ovlivnovanou stastnou nahodu, ze
mi takova "ekvivalence" vysla, ale myslim, ze to tak dopadnout nemuselo,
pri trochu jinem kodovani.
Obvod (1.) v FPGA funguje, zda se, dobre, coz asi nikoho neprekvapi.
Podelim se nyni o zkusenosti se simulaci. Nejprve jsem vyexportoval z
fyzicky syntetizovaneho obvodu FPGA (tj. s odhady zpozdeni) strukturu
maker do VHDL. Podobvod, zobrazeny na (1.), byl realizovan na fyzicke
urovni naprosto shodne s obrazkem.
To jsem pak zkousel simulovat v GHDL. Bez uspechu, vadilo mu porad, ze tam
ma same nedefinovane hodnoty ('X'). Trochu ho chapu, snazil jsem se mu
pomoct a zadat nejaky pocatecni stav, ale bud jsem to delal spatne, nebo
to nepomohlo. Co bylo zajimave, ze mezi temi 'X' obcas problikly nejake
zive urovne '0'/'1' a pak se to zas vratilo do 'X'.
Zkusil jsem to tedy v mene experimentalnim ModelSimu, vysledek byl na
pohled shodny.
Zasmusil jsem se a stahl Logisim: http://ozark.hendrix.edu/~burch/logisim/
V Logisimu jsem pred 3 lety videl hranovy R-S jednomu geniovi ve skole
pres rameno, ale bohuzel jsem si nezapamatoval podrobnosti.
Zajimave bylo, ze krome (1.) v nem nefungovalo nic z (2.,3.,4.). Duvod byl
zase ten, ze signaly byly ve stavu Error a odmitaly se z nej vyhrabat.
Co je zvlastni, tak nektere asynchronni struktury v tom funguji dobre --
zahada. Po neschopnosti nalezt reseni v Logisimu samotnem jsem vyuzil
moznosti doprogramovat si do nej v Jave mini-knihovnicku soucastek a
doplnil jsem soucastku "Force" [F], ktera nedela nic moudrejsiho, nez ze
pripadny Error ci Uknown nahradi nulou.
Pro pripadne zajemce ke stazeni zde:
http://rtime.felk.cvut.cz/~pecam1/logisim/lgsim-force.jar
a obvod:
http://rtime.felk.cvut.cz/~pecam1/logisim/edge_rs.circ
(Po otevreni .circ se Logisim zrejme zepta, kde je knihovna s Force, staci
ukazat ten .jar a melo by to chodit.)
Napsal jsem autorovi Logisimu, jestli je to nejaka moje blbost, ze to
nechodilo, nebo zda je opravdu nutno vyforcovat ten chybovy stav pryc.
Nevim, jak by si s ulohou poradilo tkgate, ale nezkousel jsem to.
K teto situaci se vazi me dotazy na zaver:
a) mate nejaky osvedceny program na simulaci asynchronnich automatu?
b) vite o nejakem SW nastroji, ktery by umel cloveku pomoci se syntezou
asynchronniho automatu, tj. vyresit redukci FSM, kodovani stavu s
trampolinami a pomocnymi stavy? Idealne pak i na nejakou mnozinu logickych
clenu namapovat funkce (ale to se obecne resit moc neda, tak klidne i bez
tohoto posledniho kroku)?
c) vite o nejakem SW nastroji, ktery by umel opak, a sice ze zakresleneho
async. obvodu by vyhodnotil, kolik ma stavovych bitu, pro vsechny
kombinace vstupu by spocital, ktere stavy mohou byt stabilni, urcil jejich
prechody a zpetne vyplivnul tabulku FSM s komentarem, zda kodovani samotne
obsahuje hazard pri prechodu mezi stavy, nebo ne?
Obzvlaste c) by se hodilo pro validaci automatu navrzenych stylem
tuzka&papir. Mozna to nejde resit v kratsim nez exp case, ale pro takove
mrnave automaty o par bitech by to asi melo cenu.
Urcite by si clovek pral jeste mnohem vymakanejsi nastroje na async
logiku, ale vzhledem k tomu, ze doposud jsem o zadnem poradnem
syntetizacnim nastroji neslysel, zrejme je tezke vubec vymyslet smysluplne
zadani pro takovy syntetizer. Ale (b,c) podle me smysl dava a v O(2^n)
bych to snad nabastlil i sam, ale jelikoz by se to ve FIFU pitomosti asi
nedostalo do cela ani do smrti, radsi bych hotove reseni od nekoho, kdo
tomu navic rozumi nesrovnatelne lip.
Dekuji a preji pekny den,
Marek
Další informace o konferenci Hw-list