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).
Cau, 2118 maji pouze 16k x 1 bit, nebyly v Didaktiku nahodou nejake DRAMky s 64k x 1 bit? 2118 byla nahrada za stare 4116, ktere vyzadovaly navic napajeni -5V a 12V, kdezto 2118 si celkem rozume vystacily s +5V a GND - proto take ty dva nezapojene piny.
Mně spíše zaráží, že je ta 2118 použita pro videoram. Didaktik Gama jsem měl, nepamatuji si čísla obvodů, ale vím na 99%, že 16KB videoram bylo realizováno ze SRAM.
No stačí se pořádně rozhlédnout po schématu, aby bylo jasné, že tohle jsou jen napájecí vývody dotyčných pouzder (šoupnuté stranou), s tím, že datové vodiče z týchž pouzder trčejí ve schématu jinde (kousek vpravo). Nikdy jste nelistoval schématy svého mainframu, nebo je v servisní dokumentaci už pro jistotu vůbec nedodávají? :) Třeba Digital to u PDPček ještě dělal.
Aha, ja jsem to prohlizel jenom celkem zbezne, cisla tech pametovych cipu jsem prehledl. Skoda ze se v PNG neda fulltextove vyhledavat (tak me ale napada, ze v SVG by to jit mohlo).
> Dále se na pouzdře nachází pin Din, na který je zapisována hodnota bitu přečteného z paměti a naopak pin Dout určený pro zápis bitu do paměťové matice.
Bude to zřejmě naopak.. Dále proč je lomítko na začátku RAS, CAS jednou obyčejné, a podruhé backslash?
Ano, ma to samozrejme byt naopak, necham to v clanku opravit. Stejne tak ty lomitka, je to vlastne mix dvou ruznych zpusobu zapisu: slash je pro negaci a backslash pro sestupnou hranu, necham vsechno predelat na slash, takto to muze mast.