> "Sudėtingumą" tikriausiai galima motyvuoti štai kuo. > Kai svetimas clock ateina tiesiai į trigerį, kuris apdoroja svetimus > duomenis, tai turime minimalų neapibrėžtumą, didžiausią galimą greitį, > energijos taupymą ("fully static operation"). Slave-only realizacija _be_ > _sisteminio_clocko_ gautųsi visai elegantiška. Atvejis gal ir geras, bet siuo atveju visiskai netinkamas, nes, I2C be, igrustas i FPGA/CPLD ir bunantis ten be kitu daliu idomus nebent tik demonstracijos tikslais. > O sisteminis clockas neišvengiamas, jei norim master režimo. Generuojant > clock output, šis turės būti vienu iš baigtinio automato išėjimų. > Sisteminio > kombinavimas su tais išėjimais ir neleidžiamas architektūros, ir apsunkina > hold laiko kontrolę. Vadinasi, kiekviena automato būsena skaidoma į dvi > fazes: pirmoje paruošiami duomenys, iki antros jie nusistovi, antros > atsiradimo momentas (neišvengiamai vėluoja sisteminio clocko atžvilgiu) > yra clock output frontas, o duomenys lieka stabilūs iki kitos pirmos > fazės. > Vienžo, master-only atrodo irgi gražiai. Kaip ir sakiau, koks skirtumas, kokia kalba, kiek resursu ir t.t., jei pats principas nei sioks, nei toks. Taip padarytas automatas varys tiek "gliuku", kad seriai ant kupros siausis ir bus galima pamirsti apie skambius setup/hold ir kitus baisius zodzius. > Bet kai slave'ui privalome naudoti sisteminį clock, tada tasai svetimas > gali tapti nebent vienu iš baigtinio automato įėjimų. Vadinasi, reaguojama > nebe į jo frontą, o lygį sisteminio clock fronto metu -- jis faktiškai > tampa "enable" tipo signalu. Pamirškim apie visus setup/hold, kuriuos > užtikrino masteris, frontai gi nebesutampa. Įmanomas nebent "fronto > detektavimas" sisteminio clocko raiška: jei dažnis pakankamai aukštesnis, > gal ir sugaudysi juos laiku. Turint galvoj, kad I2C magistrales daznis bus tikrai gerokai mazesnis, nei FPGA sisteminis, tai paprastai taip ir daroma. Apie tai jau Levas placiau parase. -- ==================================== cust.software@gmail.com Programavimo darbai: draiveriu, isorines aparaturos valdymo programu ir pan. rasymas (Win, Linux OS; PC, embedded platformos). Elektronines aparaturos kurimo darbai, CPLD, FPGA programavimas. P.S. Paversime Jusu kompiuteri bet kuo :) ====================================