Wenn ein DRAM eine 16Bit Datenbreite besitzt, wie kann man in diesem ein 32Bit Wert speichern? Man könnte doch einfach z.B. die Reihen, Spalten-Adresse erhöhen, oder? Oder ist es grundsätzlich sinnvoller die Bankadresse zu erhöhen?
Thorsten schrieb: > Wenn ein DRAM eine 16Bit Datenbreite besitzt, wie kann man in diesem ein > 32Bit Wert speichern? > Man könnte doch einfach z.B. die Reihen, Spalten-Adresse erhöhen, oder? > Oder ist es grundsätzlich sinnvoller die Bankadresse zu erhöhen? Hängt vom Speicherbus-Design ab. Für den Microcontroller/-prozessor wird es wohl optimaler sein wenn die zwei 16-Bit Werte hintereinander im Speicher liegen.
bei den meisten heute erhältlichen DRAM-Architekturen schreibt man ohnehin in Bursts. D.h. in einem Schreibzugriff schreibt man nicht nur eine Column-Adresse sondern mehrere aufeinanderfolgende Column-Adressen. (Will man nur eine Adresse schreiben, dann muss man die anderen Adressen, die zum Burst gehören, ausmaskieren.) Deshalb ist die sinnvolle Herangehensweise für dein Problem, die Column-Adresse zu erhöhen.
DRAM ist doch wie in diesem Bild aufgebaut, oder? Was bedeutet dann hier "hintereinander im Speicher liegen"? Sollte also besser die Reihen oder die Spaltenadresse unverändert bleiben(die andere müsste dann ja quasi inkrementiert werden und die Bankadresse müsste gleich bleiben, oder)?
Welches Bild ? Bank/CS gleichbleibend. Reihenadresse/RAS gleichbleibend. Spaltenadresse/CAS inkrementieren.
Angenommen man geht nun in die andere Richtung und will mit einen 8Bit Schreibzugriff auf auf das DRAM zugreifen. Kann man dann einfach den 8Bit-Wert senden und die führenden Postionen mit Nullen auffüllen? Danke
Thorsten schrieb: > Angenommen man geht nun in die andere Richtung und will mit einen 8Bit > Schreibzugriff auf auf das DRAM zugreifen. Kann man dann einfach den > 8Bit-Wert senden und die führenden Postionen mit Nullen auffüllen? > Danke Worin unterscheidest du den 8-Bit-Wert 0 von "mit Nullen auffüllen" ? Hast du ne genaue Vorstellung welcher DRAM-Baustein / -modul es ist ? Für unter-16-bit-Zugriffe gibt es manchmal die Maskierungsmöglichkeit über zusätzliche Bits (bei SRAM zumindest (~LB & ~UB)). Bei DRAM kann es dann, wenns diese Möglichkeit nicht gibt, nur ein READ-MODIFY-WRITE werden.
Dennis Heynlein schrieb: > Worin unterscheidest du den 8-Bit-Wert 0 von "mit Nullen auffüllen" ? > > Hast du ne genaue Vorstellung welcher DRAM-Baustein / -modul es ist ? > > Für unter-16-bit-Zugriffe gibt es manchmal die Maskierungsmöglichkeit > über zusätzliche Bits (bei SRAM zumindest (~LB & ~UB)). > Bei DRAM kann es dann, wenns diese Möglichkeit nicht gibt, nur ein > READ-MODIFY-WRITE werden. Normalerweise macht das Dein uC/Deine CPU selbständig. Sie wird einen entsprecheden Datenbus haben (16/32bit) und beim Schreiben anzeigen welche Daten auf welchen Busteilen gültig sind. Dieses Signal musst Du dann in die Ansteuerung Deiner DRAMs mit integrieren. Wenn Du einen Intregrierten DRAMcontroller hast macht auch dieser das automatisch. Wenn Du DRAMs mit Deinem uC OHNE Controller anschließen willst musst Du einen DRAM controller bauen der aus den Businformationen herausbekommt welche Bytes am Bus gültig sind und die DRAMs entsprechend ansteuern. Dennis Heynlein schrieb: > Bei DRAM kann es dann, wenns diese Möglichkeit nicht gibt, nur ein > READ-MODIFY-WRITE werden. Das wird schwierig denn die CPU/der uC müssen das wissen. Überlicherweise könnte man das über den Cache managen (eben: Read-Modify-Write). Schwierig wird es nur wenn ein Byte am Chache vorbei geht (wird nicht gecached) und trotzdem ins DRAM soll. Deswegen schreiben meines Wissens ALLE CPUs immer mit Byte-Validity Signalen. rgds
@6A66 ich hab dem Fragesteller nur erklären wollen, daß wenn es keine Byte-Maskierungssignale für Schreibzugriffe gibt oder die Speichersteuerung es nicht er Read/Modify/Write selbstständig macht, es auch keinen Bytezugriff gibt bei Multibyte-organisierten DRAM-Bausteinen/-modulen. 32-Bit-SIMM-Module haben dafür z.B. mehrere ~CAS-Signale.
Thorsten schrieb: > Wenn ein DRAM eine 16Bit Datenbreite besitzt, wie kann man in diesem ein > 32Bit Wert speichern? Gegenfage: wenn man nur einen Mund hat, wie kann man dann an einem Abend zwei Bier trinken? <seufz> XL
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.