opis SDRAM

Sep 13, 2006 30 Replies

Na tę chwilę mam podłączoną tylko młodszą połówkę D0-D15. Po wpisaniu adres dana

0x00000000 0x00000000 0x00000004 0x00000004 0x00000008 0x00000008 ... 0x00000010 0x00000010

gdzie słowo jest czterobajtowe otrzymuję (dla CAS=3 ECLKOUT)

0x00000000 0x000000EC - wartość taka sama jak z pustego adresu 0x00000004 0x00000000 0x00000008 0x00000004 0x0000000C 0x00000008 0x00000010 0x0000000C 0x00000014 0x00000010 itd. przez całą pamięć

Dziś siedzę już za długo i mam zwidy. Dla CAS=2 napiszę jutro. Coś jeszcze dziwniejszego wychodzi. K.

John Smith:

no wlasnie, o tym za chwile;

chcialem tak:

0x00000004 0x00040004 by zobaczyc, gdzie laduje gorna polowka, choc moze - by sie dalo rozroznic polowki lepiej by bylo: 0x40000004

wydaje mi sie, ale to tylko moje gdybanie, za na skutek zlego wpisania rejestrow sterujacych w kontrolerze sytuacja wyglada tak:

piszesz dana 0xaaaabbbb, masz 16 bitowa pamiec, wiec kontroler uklada dane tak: xxxx adres pamieci N bbbb N+1

ew. cos podobnego przy czytaniu, albo oba efekty naraz;

na razie wiecej wywrozyc nie umiem;

JA

To akurat nie problem. Pamięć o której dyskutujemy jest już drugim projektem. W pierwszym nie dbałem o połączenia, dając pole do popisu autorouterowi. Efektem było niestabilne działanie. Po poprawieniu ścieżek (choć nie sa identycznej długości), pamięć działa stabilnie. Po włożeniu w gniazdo starej, i wpisaniu 0x01234567 mam taką wartość tyle, że w komórce N+1. Nie lutuję jeszcze starszej połowy, gdyż szyna adresowa i sterująca jest podłączona równolegle co pogorszy dynamikę. Jest ok. 5pF na wejście.

Inni też mają podobne problemy z SDRAM:

formatting link
ć jeszcze nie dokopałem się jak je rozwiązali.

Dzięki za zainteresowanie. Ja muszę kopać problem do skutku. Pozdrawiam, K.

poczytalem, dziwne ludzie maja pomysly, by podlaczac SDRAM przez FPGA - spore opoznienia przeciez beda i sie moze nei wyrabiac. jakby co, to mam DSK TI 6711 z pamieciami Microna, moge podejrzec w zrodlach (o ile gdzies wogle sa w postaci jawnej) jak jest konfigurowana.. sprawdzales ustawienia latency zarowno w pamieci, jak i w kontrolerze? dobrze wyliczyles ich wartosc dla konkretnej pamieci?

Ale¿ dlaczego nie mog³a by byæ taka regularno¶æ? Takie w³a¶nie zachowanie mia³o by miejsce przy ró¿nicy jednego taktu miêdzy CAS latency w kontrolerze i pamiêci. Chyba, ¿e czego¶ ja nie rozumiem...

Jedynie na co mo¿na jeszcze zwróciæ uwagê to, to i¿, je¶li pamiêæ jest taktowana zegarem bliskim maksymalnemu, to zmniejszenie CAS latency w pamiêci mo¿e spowodowaæ, ¿e pamiêæ nie bêdzie zdolna podaæ danych tak szybko (szczegó³owe dane jakie ustawienia CAS latency s± mo¿liwe dla jakich zegarów powinny byæ podane w nocie aplikacyjnej).

pzdr mk

czyli gorne 16 bitow idzie w powietrze ? zle zrozumialem, myslalem ze kontroler musi rozlozyc 32 bity na 2 x 16 i tu robi sie blad;

z jakim zegarem to chodzi ? na potrzeby testu, nie mozna zejsc z czestotliwoscia do jakichs 50 MHz ?

przy okazji - uzycie fpga samo w sobie moze i glupie, ale do uruchamiania daje calkiem dobry analizator logiczny; nie masz pod reka jakiejs altery, ktora moznaby wlozyc zamiast pamieci i uzyc jej do monitorowania sygnalow ?

a ti nie ma supportu ? powinni wiedziec, skoro to problem szerzej znany;

jak sie dokopiesz, to napisz w czym jest problem;

JA

Myślę, że przeliczyłem dobrze. Próbowałem też "metodą małpy". Na DSK C6713 jest już SDRAM i na niej też wykonałem masę prób. Dzisiaj próbuję dalej. Są nowe pomysły które trzeba sprawdzić. K.

Sorry, że tak późno odpowiadam. Taki dziś był dzień.

W pierwszym modelu wlutowane są dwie kostki obsadzające D0-D31. W nowej tylko jedna, z miejscem na drugą.

Zegar zmniejszam ile popadnie z oryginalnych 75MHz nawet na 15MHz. Efekt stabilny i ten sam.

W PFGA/CPLD poruszam się tylko w ISE Xilinxa. Ale jeszcze ChipScope nie próbowałem. Warto popróbować?

Jak się poddam to do nich napiszę.

Nie ma sprawy. K.

John Smith:

wcielo pierwsza odpowiedz, z gory przpraszam, jesli ukaza sie dwie;

jesli z powodu routingu zegar jest spozniony nawet o ulamek ns, to i przy 10Hz bedzie blad, wiec warto sprawdzic oscyloskopem;

moim zdaniem tak, o ile to nie wymaga zakupu kosci, software i miesiecznych studiow; fpga daje ci calkiem niezly analizator logiczny, dzieki ktoremu mozesz obejrzec krok po kroku aktywnosc na polaczeniach kontroler-pamiec; w Twoim wypadku warto wygenerowac w fpga pll, ktora podniesie zegar 4 razy i tym zegarem pedzic chopscope; idealem byloby skompilowac kontroler w fpga, ale ti pewnie nie daje rtl; ja pracuje a altera, z xilinxem mam malutkie doswiadczenie;

moim zdaniem troche bez sensu, rownie dobrze moglbys przyjac, ze zapytasz grope, albo google dopiero jak sie poddasz; chyba wywalono by mnie z roboty z takim nastawieniem;

JA

Zegar też jest na liście podejrzanych. Tym bardziej, że podłączam do SDK w którym jakiś natchniony projektant wyprowadził szynę danych, adresową i sterującą na jedno złącze i jedynie CLK na drugie odległe o 3 cale. Przyczyna routingu może więc leżeć po stronie SDK a nie mojej. Całość sygnałów jest buforowana przez SN74LVTH16245A. Zegar może mieć znaczenie! I tutaj pytanie, jak wygodnie przesunąć zegar w fazie? Przy pomocy RC bym nie chciał bo uzależni to konstrukcję od konkretnej częstotliwości.

Skorzystam. Temat drgnie już nawet dziś.

Google pytałem od razu, grupę też dość szybko. A z TI się jeszcze wstrzymuję. Po pierwsze mają bardzo dużą bezwładność, po drugie to ich procesor ale nie ich płytka. W praktyce upływają dni lub tygodnie zanim coś konkretnego się od nich uzyska. Po prostu zapracowani. Problemy płyną z całego świata.

Kolega doradził mi skupienie się na adresie 0, ten do którego nie mogę nic zapisać (lub odczytać, to się okaże). Niestety (?!) ponownie potwierdziłem, że sygnały są ładne, prostokątne jak na cyfrówke oczywiście. Bez żadnej histerezy która mogłaby powodować dodatkowe przełączenia. Na końcówce adresu A1 (A3 DSP) jest dodatkowy sygnał jedynki, czego się nie spodziewałem. W tej chwili jeszcze sprawdzę soft na poziomie asemblera (na poziomie C jest poprawny). Jedynka też może wynikać z komend wysyłanych do SDRAM. Też wymaga sprawdzenia. Dzięki za dotychczasową pomoc, K.

John Smith:

znowu pierwsza odpowiedz poszla 'w powietrze';

sporo, 10cm;

w fpga to latwe, ale na pcb ? chyba tylko ciac sciezke clk i dodawac bramki; ew. zamiast bramek pll z regulowanym przesunieciem fazy; ew. sa linie opozniajace, jedna wchodzi, osiem wyjsc opoznionych co kilka ns;

jesli juz, to warto chyba napisac jakis prymitywny emulator sdram, zeby wysylac jakies dane do sterownika i porownac z tym, co doszlo do dsp; napisalem nawet taki, ale ze 2 lata temu, watpie, czy go jeszcze gdzie odnajde; osobiscie sadze, ze rozwiazanie altery jest nieco lepsze niz xilinx-a, jesli masz dostep do obu;

nie wiem jak jest akurat z it, ale tak czesto bywa; ale - zadzwon nie pisz maila, moze problem jest juz dawno rozwiazany i dostaniesz odpowiedz w 5 minut, a jak nie, to Cie zakolejkuja i odpowiedza w chwili, jak uznasz, ze sie poddajesz :)

znow zle rozumiem ? bity adresowe pamieci powinny byc wszystkie aktywne, od A0; to sterownik moze przesunac o 2 pozycje adres od dsp jesli dostep jest 32 bitowy; wiec z dsp adres pewnie wyglada tak An - A2,0,0 i to powinno byc 'zmapowane' przez kontroler na adres pamieci: ... A3_dsp -> A1_sdram, A2_dsp -> A0_sdram

JA

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required