Na zacatek se priznam, ze neznam presne klasicke async. DRAMky, takze mozna se ma poznamka ma tyka i jich. Pracoval jsem jen s SDRAM a DDR, a z clanku mi prislo, ze tam chybi par detailu, z pohledu vyvojare pomerne podstatnych:
1) SDRAM (ale i DDR) v sobe krome RAS/CAS logiky obsahuji take pomerne slozity stavovy automat, ktery dela mnohem vice nez jen prelevani dat ven/dovnitr a nastavovani RA/CA. Mimo jine obsahuje registr, kterym se nastavuje jeho chovani (a nastaveni registru je take jedna z "instrukci" - dalsi priklady: NOP, RD, WR, PRECHARGE, AUTOPRECH,AUTOREFR, SELFREFR, BURST TERM., ...), dale ma nekolik burst modu (celou stranku, single word a pak nejake nasobky 2). Tedy proti klasickemu SRAM/EEPROM rozhrani MNOHEM slozitejsi. Navic se SDRAM umi sama postarat v "sleep" rezimu o refresh, a to dokonce i odpojite-li ji hodiny.
2) SDRAMky maji pomerne narocny timing a jeho nedodrzeni ma za nasledek poskozeni dat. V nejakem datasheetu jsem dokonce cetl, ze v urcitych pripadech se i pamet muze fyzicky poskodit (toto se tykalo tusim spatneho nastaveni mode registru).
3) Pameti SDRAM obvykle pouzivaji 3.3V LVTTL pro komunikaci, DDR SDRAM uz 2.5V SSTL2 (dle meho subjetkivniho nazoru se s tim pracuje vyznamne hure).
DDR SDRAM paměti snad nejsou SDRAM? Nemělo by to být "SDR SDRAM a DDR SDRAM" a nikoli "SDRAM a DDR"? Vždyť rozdíl, pokud to správně chápu, je skutečně pouze ve vnějším rozhraní. Jinak souhlas, SDRAM paměti jsou dneska skoro až samostatné inteligentní periférie. :-) (Jsem si kdysi říkal, kdy budeme mít "hlavní paměť" (jak by řeklo IBM) s výhradně blokovými přenosy a připíchnutou rovnou optickým kabelem...)
Mas pravdu v tom, ze nektere veci jsem musel vynechat a nektere zase zjednodusit (treba ty prubehy signalu neobsahuji dulezite casy). K tem async. DRAM: ty prvni byly hoodne hloupe, veskere obnovovani se muselo delat "plnym" ctenim, tj. sekvenci RAS+CAS. Pomerne rychle se prislo na to, ze je to zbytecne a zustal pouze rezim RAS (to staci, obnovil se cely radek, treba Z-80 mel specialni registr, ktery se prave pro refresh pouzival - bylo to tusim hornich 7 bitu adresy, provadel se automaticky inkrement). Potom prisly na radu rezimy CBR (CAS before RAS) atd. a nakonec se i na async. DRAM objevil citac, ktery bylo mozne pouzit pro poloautomatickou obnovu.
SDRAM prisly na trh prave proto, ze se v nich dal vytvorit slozity stavovy automat, jak pise spravne Rejpal, takovy hodne chytry pametovy system (se slozitym protokolem, nic tak jednoducheho jako stary dobry RAS + CAS + WE :-) s temi rezimy o kterych pises.
Premyslim, kolik kremiku by stalo dovybavit pameti scitackami a nasobickami a umoznit jim operovat nad daty nezavisle na CPU. Ze by se jako prikaz predalo: vykonej program od adresy X na datech od adresy Y a az to bude hotove, zapis "1" na adresu Z ...
:-) on to neni vubec problem pripojit k nejakemu FPGA SDRAMku. Automat na nejaky vypocet potom na zacatku jednoduse obsahuje nastaveni B/R/C, spusti se burst read (tim se naplni nejake vnitrni registry), nad registry se provede operace a pri jejim dokonceni se udela burst write.
Pokud by slo napr. o sifrovani, da se udelat v FPGA pipeline na nejakou viceroundovou sifru a z jedne strany bude jedna SDRAM, ze ktere se burstem bude cist, a soucasne po nejakem zpozdeni se do jine SDRAM muze rovnou zapisovat.
Delal jsem aplikaci, ktera mela u SDRAM jednoduche CPLD, pricemz MCU si mohlo bud samo pracovat s SDRAM, nebo tomu CPLDcku "reklo", ze ma provest nejakou casove narocnejsi operaci. Bylo to neco zhruba podobneho jako http://www.microvga.com/ - takove male "GPU".
Hmm, to je uz docela advanced, hlavne pri pouziti SDRAM. My jsme v nasi aplikaci (karta pro zpracovani obrazu) k FPGA pripojovali SRAM, hlavne kvuli jednoduchosti - zadne slozite casovani, adresa jde v jednom taktu atd. Samozrejme tam byla vyssi cena, ale to pro tech par mega nehralo takovou roli.
Ono to zase tak slozite neni (v te aplikaci co jsem delal ja byla pochopitelne jen 1 SDRAM). Vhodny kandidat na tyto operace je treba sifrovani ... tam by reseni s temi dvema SDRAM by dle meho nazoru bylo nejrychlejsim moznym crypto akceleratorem. Skoda jenom, ze PC AFAIK nema na SDRAM ci DDR SDRAM sbernici nejake vhodne signaly pro vynuceni refreshe cache a pozastaveni pristupu k dane pameti v dobe vypoctu.
Pokud jde o velikost/cena, tak SRAMka zacne byt pekelne draha uz i pri par megabitech. Hlavne pokud ma byt rychla (coz u takoveho reseni vetsinou byt musi). Mrknete se schvalne na ceny od Cypressu ci IDT (SRAM) a potom na Hynix a Micron (SDRAM).