Hallo, vorne weg: ich bin Anfänger und hangel mich noch durch Alteratutorials. Hardware: DE2-115 (terasic) -> Altera CycloneIV 128MB SDRAM (2x64MB) Mittlerweile kann ich ganz nett in Verilog Addierer basteln und die Ausgabe auf die 7Seg-Anzeigen ausgeben ... LEDS an und aus machen ... Schalter einpflegen ... naja relativ einfachen Verdrahtungskram. Woran ich mir aber jetzt ein wenig die Zähne ausbeiße ist den SDRAM nutzbar zu machen. In meiner ursprünglichsten Vorstellung dachte ich, hätte man eine Adresse und könnte da ein Datenwort ablegen. Adressleitungen (13) und Datenleitungen (16) sind ja vorhanden. Mein Problem ist: der Speicher hat 128MB x 1025 x 1024 x 8Bit = 1.073.741.824 Bit. 16 x 2^13 x 2^2 x 2 = 1.048.576 Bit (Datenleitungen * Adressmöglichkeiten Bänke Chips) Da gibt es eine gewisse Adressierungsdiskrepanz. Offensichtlich gibt es eine interne Matritzenstruktur aus Zeilen und Spalten die man irgendwie ansprechen kann. Da CAS und RAS Leitungen zu je 1 Bit sind ... stehe ich hier irgendwie vor einem Problem. Ich will eigentlich nur den ganzen Speicher der Reihe nach mit 32Bit-Wörtern zu schreiben. Die Daten werden aus einem ADwandler eingelesen und sollen einfach in einen Ringspeicher übertragen werden. Was muss ich hierfür tun? Wie teile ich dem SDRAM-Controller mit wie er zu arbeiten hat? Gibt es hierfür sinnvolle Literatur (ohne niosii)/ Tutorials? Meine Suche im Internet hat mich letztlich nur mehr verwirrt als geholfen ... Schöne Grüße fritze
fritze schrieb: > Gibt es hierfür sinnvolle Literatur (ohne niosii)/ Tutorials? Meine > Suche im Internet hat mich letztlich nur mehr verwirrt als geholfen ... Klar gibt es sinnvolle Literatur: Das Datenblatt des SDRAMs zum Beispiel. So ein SDRAM ist nun eben nicht so einfach anzusteuern, wie du denkst. Nimm für die ersten Gehversuche mit externem RAM erstmal die 512 Kilobyte SRAM auf dem Board. Gruß Marius
Marius Wensing schrieb: > Das Datenblatt des SDRAMs zum Beispiel. Als Xilinx-Anwender habe ich versucht, mich über Alteras DE1 und DE2 zu informieren, insbesondere über das verbaute SD-RAM. Es war mir nicht möglich, in der im Netz zugänglichen Information herauszufinden, welches SD-RAM (Hersteller/Typ) auf den Boards verbaut ist, so dass ich mir das Datenblatt hätte besorgen können. Altera/Terasic rückt diese Informationen offenbar nur auf einer mit den Boards mit- gelieferten CD heraus, man muss also vorher das Board kaufen. Ich habe mich furchtbar darüber geärgert und davon Abstand genommen. Allerdings: den TO betrifft das Problem offenbar nicht, da er bereits ein Board hat.
Hallo, das Datenblatt wurde tatsächlich mitgeliefert. Ist im übrigen auch bei issi direkt herunterladbar: http://www.issi.com/pdf/42S16320B-86400B.pdf Was ich eigentlich suche ist so eine Art Übersicht über die Ansteuerung und natürlich wie das in verilog passiert. Ich meine, dass ja die Lese- und Schreibzugriffe recht fix also mit dem vollen Takt ablaufen müssten und Cycles die erst dekodiert werden müssten einfach an der Zugriffszeit zerren. Was genau für daten werden über die CAS- oder RAS-Leitung geschickt. Wenn man wirklich: "organized as 8.192 rows by 2048 columns by 8 bits" 4 Bänke und 2 Chips würden: 8192*2048*4*8*2 = 1.048.576 Bit (würde passen). Aber wenn ich nextpow2(8192) = 13 (also eine Bitfolge für RAS von 13 Bit) -> für CAS 11 Bit. Das ergibt aber im Grunde keinen Sinn. So richtig komme ich nicht dahinter, wie der Speicher generell angesprochen wird. Ich hätte wie gesagt gedacht, dass die Speicheradresse angegeben wird, writeenable oder readenable mit dem clock geliefert wird und die Daten auf die Leitung gehen. Gibt es eine Art "freien" Decoder (vermutlich ein IP?) der die Übersetzung vornimmt? Schöne Grüße fritze
fritze schrieb: > Was genau für daten werden über die CAS- oder RAS-Leitung geschickt. > Wenn man wirklich: > "organized as 8.192 rows by 2048 columns by 8 bits" > 4 Bänke und 2 Chips würden: 8192*2048*4*8*2 = 1.048.576 Bit (würde > passen). > > Aber wenn ich nextpow2(8192) = 13 (also eine Bitfolge für RAS von 13 > Bit) > -> für CAS 11 Bit. > Das ergibt aber im Grunde keinen Sinn. > > So richtig komme ich nicht dahinter, wie der Speicher generell > angesprochen wird. 1. Takt RAS + 13bit Zeilenadresse auf A12-A0 2. Takt CAS + 11bit Spaltenadresse auf A10-A0 Das ist aber noch lange nicht alles, was man beachten muss. Siehe Datenblatt. > > Ich hätte wie gesagt gedacht, dass die Speicheradresse angegeben wird, > writeenable oder readenable mit dem clock geliefert wird und die Daten > auf die Leitung gehen. Das gilt nur für primitive SRAMS Dynamische RAMS sind um einiges komplexer, siehe Datenblatt. > > Gibt es eine Art "freien" Decoder (vermutlich ein IP?) der die > Übersetzung vornimmt? > Auf http://opencores.org/ gibt es einige. Auf der zum Board gehörigen CD findest du vermutlich auch etwas.
Ich habe das SD-Ram lesend und schreiben angesprochen. Das war nicht so einfach. Man mußte exakt die Zustände aus dem Datenblatt nachprogrammieren. (Die Graphik mit den vielen Kreisen) Dann hat es letztendlich auch geklappt. Hat mich aber bestimmt eine Woche gekostet. Das SRam auf dem Board ist einfacher, hat allerdings auch wesentlich weniger Platz.
Nach Anmeldung kannst du den Sdram_Controler da downloaden. http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=68&No=281&PartNo=3
Sehr edel! Besten Dank! Das nimmt mir denke ich eine Menge Arbeit ab. Werde ich mir heute Abend mal genau anschauen, aber das Verzeichnis SDram_control und die .v-Dateien sehen auf den ersten Blick sehr vielversprechend aus. Schöne Grüße und vielen Dank fritze
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.