mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RAM auslesen


Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin

wie wird ein Dual Port RAM über die Adressleitungen addressiert? 4k 16x 
z.B.?

kann man die 4k Daten nur komplett aus einem Dual Port RAM auslesen oder 
ist es auch möglich nur 2k Daten davon auszulesen? Wieviele 
speicheradressen nehmen 4k Daten in dem Dual Port RAM ein? Ist das von 
Hersteller zu Hersteller unterschiedlich? Würd gern einen Cypress 
nehmen, aber ich möchte auch gern dass ich bei 4k Daten auch nur ganz 
bestimmte Daten davon auslesen kann und nicht immer alle auslesen muss.


Verena

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag mal... Wie viele Threads wollt Ihr denn jetzt noch mit dem Thema

    "4k x 16Bit Dual Port RAM"

eröffnen???

Guckt doch mal selbst hier im Forum nach! Deine Klassen-/Studienkollegen 
haben hier schon einige Threads zum selben Thema / zur selben Aufgabe 
eröffnet.

Gruß,
Magnetus

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Dual Port RAM auslesen":
   Beitrag "Dual Port RAM auslesen"

"Adressleitung Datenleitung"
   Beitrag "Adressleitung Datenleitung"

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das stimmt... nur leider kann ich mit den Antworten nichts anfangen... 
und im www finde ich auch nichts passendes dazu (weil immer nur das 
grundprinzip von so einem dual port ram beschrieben wird, aber nicht die 
einzelheiten betrachtet werden) - in meinem fall, wie groß z.B. eine 
Speicheradresse im RAM ist - 1Byte, 2Byte, 4Byte etc. bzw. wie variable 
ich mir die daten wieder rauslesen kann, wenn ich 4k Daten 
reinschreibe...

und den anderen hier wirds genauso gehen...

Verena

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das mit dem 8k 16x versehe ich aus dem ersten link  auch nicht...

reinschreiben kann man 16mal 8k Daten und rauslesen soll nur 16Bit also 
2Byte gehen? Wie rechnet man das aus bzw. wo steht das?

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ob Dual-Portet oder ein x-beliebiger Ram: angegeben wird die Anzahl 
Speicheradressen (hier eben 8k -> 8192 und die "Breite" der 
Speicehrplätze in Bit, hier also 16.

Es ist also ein 16Bit-organisierter Ram, Du hast 16 Datenleitungen, die 
immer zugleich gelesen oder geschrieben werden können.

Stell Dir Speicher als Tabelle vor, 16 Spalten die Datenbits und 8192 
Zeilen die Adressen. Jede Zeile wird im Stück gelesen oder geschrieben.

Gruß aus Berlin
Michael

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für die erklärung, jetzt wird`s mir klar wie es 
funktioniert... hatte zeile und spalte immer vertauscht und daher die 
erklärung von Obelix im anderen thread nicht verstanden.


vielen dank
verena

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verena wrote:
> hatte zeile und spalte immer vertauscht und daher die
> erklärung von Obelix im anderen thread nicht verstanden.

Wäre ja auch etwas heftig... 16 Adressen zu je 8192Bit... das IC-Gehäuse 
möchte ich ja mal sehen ;)

Gruß,
Magnetus

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch eine Frage (ich hoff ihr verzeiht mir)...

was passiert eigentlich wenn ich einen xyk x8 Dual Port RAM habe, also 
sozusagen Byteweise auslese, und ich ein Latch nach dem Dual Port Ram 
installiere (bei allen Datenleitungen, über die ich den Ram auslese)? 
z.B. bei 8 Datenleitungen macht das ja ein Latch vom Typ

In einem Latch kann ja nur ein Bit zwischengespeichert werden und durch 
einen Impuls rausgeschickt werden. Was passiert mit den letzten 7bits?

Ich weiß, bestimmt eine dumme frage, aber ich kanns mir grad nicht 
vorstellen bzw. erklären.


Verena

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verena wrote:
> noch eine Frage (ich hoff ihr verzeiht mir)...

Das Problem ist nicht, daß keiner antworten will, sondern daß keiner 
versteht, wozu ihr überhaupt einen Dual Port RAM benötigt.

Ihr müßt schon mal erzählen, was das Ganze überhaupt werden soll.


Peter

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn Du 8 Datenleitungen hast, brauchst Du ein 8Bit-Latch, wenn Du 16 
hast, eben ein 16Bit-Latch...

Wenn Du "Latch" jetzt als Begriff für die Funktion bei einem Bit 
interpretierst, dann sind es eben 8 Latch mit zusammengeschalteten 
Strobe (oder wie auch immer) Eingang. Es müssen logischerweise alle 
vorhandenen Datenleitungen gleichzeitig gespeichert oder ausgegeben 
werden können.

Gruß aus Berlin
Michael

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

insgesamt kommen aus dem Dual Port RAM 8Byte raus auf 8 Datenleitungen. 
wenn ich jetzt auf jeder Datenleitung ein Latch nach dem RAM schaltet - 
kann ja nur ein Bit aufnehmen - was passiert mit den anderen 7Bits? Also 
ein 8Bit Latch für alle 8 Datenleitungen - nicht für jede Datenleitung 
ein 8Bit Latch.


@Peter
wir planen kein Projekt etc. sondern das ist nur das Kennenlernen der 
einzelnen Bauteile - nur ist die Zeit im Unterricht immer sehr eng 
bemessen und viele sachen werden nicht angesprochen. Der Dual Port RAM 
kam z.B. sehr kurz nur dran.


Gruß
Verena

Autor: Frank Erdrich (erdi-soft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube, ihr solltet erst mal den Unterschied zwischen Bit und Byte 
lernen, bevor ihr mit dem RAM weitermacht.

1 Bit = kleinste Informationseinheit ( 1 oder 0 )
1 Byte = 8 Bit

8 Datenleitungen = 8 Bit

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das is mir klar - aber aus dem Dual Port RAM werden ja immer 8Bit = 
1Byte rausgeschoben und nicht die einzlenen bits.

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok mein verständnisproblem liegt nicht im unterschied zwischen Bit und 
Byte, sondern inwieweit die Daten vom DualPort RAM ausgelesen werden.

bei einem 8k x8 Dual Port RAM kann ich ja nur immer die 8Bit also 1Byte 
auslesen über die Datenleitung. Der RAM besitzt 8 Datenleitungen. Über 
die Adressleitungen sag ich dem RAM er soll die ersten 8 Adressen 
auslesen -> er liest 8 Adressen a 1Byte aus. Nach meiner Wissenstand 
werden somit über jede Datenleitung 8Bit also 1Byte übertragen und 
trifft nun auf einen Eingang vom Latch, welches nur ein bit 
zwischenspeichern kann. - meine frage, was passiert mit den restlichen 
7Bit?

Verena

PS: ich hoffe, etwas verständlicher erklärt bzw. formuliert

Autor: Frank Erdrich (erdi-soft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> insgesamt kommen aus dem Dual Port RAM 8Byte raus auf 8 Datenleitungen.
> wenn ich jetzt auf jeder Datenleitung ein Latch nach dem RAM schaltet -
> kann ja nur ein Bit aufnehmen - was passiert mit den anderen 7Bits? Also
> ein 8Bit Latch für alle 8 Datenleitungen - nicht für jede Datenleitung
> ein 8Bit Latch.

Dafür wirfst du hier aber sehr viel durcheinander. ;)

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

>insgesamt kommen aus dem Dual Port RAM 8Byte raus auf 8 Datenleitungen.
>wenn ich jetzt auf jeder Datenleitung ein Latch nach dem RAM schaltet -
>kann ja nur ein Bit aufnehmen - was passiert mit den anderen 7Bits? Also
>ein 8Bit Latch für alle 8 Datenleitungen - nicht für jede Datenleitung
>ein 8Bit Latch.

??? Auf einer Datenleitung kann ja wohl auch nur ein Bit sein, welche 7 
anderen Bits also? Die auf den anderen 7 Datenleitungen? Die hängen ja 
an den anderen 7 Latch-Eingängen des 8Bit-Latch...

Es wäre mir auch sehr rätselhaft, wie oder besser weshalb Du ein 
8Bit-Latch, also 8 Latcheingänge an eine einzelne Datenleitung hängen 
solltest...

Sch Dir mal das Logiksymbao eines 8Bit-Latches an, 74HCT373 zum 
Beispiel.

Außerdem: Dual-Port Ram ist nur für sehr spezielle Anwendungen nötig, 
eine Erwähnung, daß es das gibt und der Hinweis, was das Besondere daran 
ist, reicht da auch völlig aus.

Weiter: wie kommt eigentlich diese Dual-Port-Ram - Latch Geschichte zu 
Stande? Es gibt nur recht wenige Gründe, überhaupt ein Latch hinter ein 
Ram zu hängen. Normalerweise macht man die Steuerung der Ram-Zugriffe 
so, daß die Daten auch genau dann ausgegeben werden, wenn man sie 
braucht.

Wenn mit Latch, dann stehen die Randbedingungen sowieso fest, sonst 
würde man es ja nicht einbauen.

Gruß aus Berlin
Michael

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Michael,

das mit dem DualPort RAM ist nur weil ich nicht weiß wie die Daten dort 
ausgelesen werden. Ich weiß jetzt, dass sie bei einem 8k x8 byteweise 
ausgelesen werden müssen, weil eine Adresse auf 1Byte zeigt, und diese 
müssen natürlich hintereinander über eine Datenleitung gebracht werden.

oder nicht? Wie werden die Daten sonst ausgelesen von einem Dual Port 
RAM?

Verena

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eins dieser Bits kann in einem Latch aufgenommen werden, die anderen 
7Bit stehen zwischen RAM und Latch?? Das ist mein Problem; ich wieß 
nicht wie das vorsich geht...

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eben nicht. Du liest byteweise (Also je 8Bit) aus. Und du hast acht 
Datenleitungen. Hier hast du also die ganze Speicherstelle gleichzeitig 
auf deinen Datenleitungen. Hintereinander ist da nix.

EDIT: Dass es auch wirklich ein DualPort-RAM ist, brauchst du übrigens 
nicht jedesmal zu schreiben, dein Verständnisproblem ist auch bei 
normalen RAMs das Selbe. Bei DualPort-RAMs kannst du einfach mit zwei 
Interfaces gleichzeitig darauf zugreifen. Sonst ist da nix anders.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verena wrote:
> das is mir klar - aber aus dem Dual Port RAM werden ja immer 8Bit =
> 1Byte rausgeschoben und nicht die einzlenen bits.


Ich habs schonmal gesagt, da wird nichts geschoben, RAM ist doch kein 
Schieberegister !

Ein Dual Port RAM ist nichts weiter als ein stinknormaler RAM mit 2 
Bussen.

Und solange ihr den stinknormalen RAM nicht versteht, hats überhaupt 
keinen Zweck ne Spezialversion anzusehen.


Dual Port RAMs sind was gestriges, wo CPUs noch nicht leistungsfähig 
waren und RAMs noch schnarchlahm und FPGAs zum Ansteuern noch teuer.
Haben heutzutage keinen praktischen Wert mehr.



Man, was ich für Chips rumliegen habe, die schon wieder längst 
ausgestorben sind (z.B. T800 Transputer inklusive Occam auf 5,25 Zoll 
Disketten).


Peter

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah ok - ich lese eine Adresse im Speicher aus und schicke die über die 8 
Datenleitungen.... macht sinn, dann versteh ich es jetzt.

aber ich lese nicht 8 Adressen gleichzeitig aus... das war mein 
denkfehler...

danke Philipp

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 1 Byte = 8 Bit

Das stimmt allgemein so nicht. 1 Byte ist die kleinste einzeln 
adressierbare Einheit. Sie ist allerdings bei der überwiegenden Mehrzahl 
der Systeme heute 8 Bit groß. Als das Wort "Byte" erfunden wurde, waren 
8 Bits dafür aber noch vollkommen unüblich (die ersten Bytes, die das 
Licht der Welt erblickten, waren 5 oder 6 Bit groß).

Autor: Frank Erdrich (erdi-soft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, dann sagen wir speziell für dich

8 Bit = 1 Oktett.

Und in diesem Fall ( nk x 8) ist ein Oktett dann auch gleich ein Byte).
Besser?

Autor: Verena (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch zur späten std eine kleine frage: wieso besitzt ein Dual Port RAM 
nur 8 Datenleitungen aber 15 Adressleitungen?

mit den 8 Datenleitungen kann ich 8bits von einer Adresse übertragen. 
Aber dafür brauch ich ja nur eine Adressleitung (in der ich die Adresse 
angebe, von der ich den Dateninhalt haben möchte)?

Oder muss ich für jedes Bit der 8Bits eine Adressleitung spendieren - 
sprich dass ich sagen muss 1Bit über Datenleitung 1, 2Bit über 
Datenleitung 5, 3Bit über Datenleitung2 etc.?

Verena

PS: vielen dank schon für die infos (hab heute schon einiges 
dazugelernt)

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin mal so frei, und schmeiße eine kleine Erklärung in die 
Diskussion...

@Verena:

Ich glaube Du zäumst den RAM gedanklich falsch auf:

Versuche mal, es Dir so vorzustellen:

Ein RAM besitzt Adressenleitungen (!)- diese dienen dazu, daß man sagen 
kann "diese Position im Speicher meine ich".
Da wir ja binär arbeiten (jede Leitung nur 1 oder 0), können wir mit n 
Leitungen 2^n Positionen im Speicher adressieren.

Laß das erstmal in Ruhe sacken: Wir sagen erstmal, WO wir vorhaben zu 
lesen/zu schreiben.

Je nachdem ob wir dem RAM mit einer Leitung nun "mitteilen", daß wir 
schreibend oder lesen zugreifen passiert folgendes:

Wollen wir lesen, wird der Speicherinhalt an dieser Position auf die 
Datenleitungen (!) gelegt: Bei einem ...*16 RAM sind das dann eben 16 
Bit.

Wollen wir schreiben, so werden an die Speicherposition die Bits 
geschrieben, die auf den Datenleitungen (!) anliegen.

(Die jeweiligen Bits auf den Datenleitungen werden in der Gesamtheit 
auch als "Datum" oder "Wort" bezeichnet).



So... daß war jetzt ein Speicherinterface... ein Dual-Port-RAM hat zwei 
davon.

(Punkt, Aus, Ende)   gar nicht so schwer, oder !?

Autor: Baby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>noch zur späten std eine kleine frage: wieso besitzt ein Dual Port RAM
>nur 8 Datenleitungen aber 15 Adressleitungen?

Hat das RAM 15 Adressleitungen, kannst du damit 65536 Bytes speichern 
(2^15). Es gibt auch RAMs mit 8 Adressleitungen, dann kannst du eben nur 
256 (2^8) Bytes speichern, etc...


>Autor: Verena (Gast)
...
>danke Philipp

??? Wärst du gerne ein Mädchen oder anders rum ?!

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Baby:

Aus der Anzahl der Datenleitungen folgt die Anzahl der Adressen.

Erst in Kombination mit der Wortbreite ergibt sich die Kapazität !!!

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr macht es den Erklärern aber nicht einfach.

mit 15 Adressleitungen kannst du 1Byte von 2 hoch 15 Bytes auswählen.
Du möchtest also das Byte an der Speicherstelle Nr 1654 auf die 8 
Datenleitungen legen (auslesen) also legtst du die Adresse 1654 
binärkodiert an die 15 Adressleitungen, und du erhältst die 8 Bit dieser 
Speicherstelle an den 8 Datenleitungen deines 8Bit Datenbusses.

PS. Tut mir und den anderen Mitleser einen gefallen. HÖRT AUF VON DIESEM 
SCH... DUAL-PORT-RAM ZU SCHREIBEN. Dies tut nähmlich überhaupt nix zur 
Sache. Es sollte für euch erstmal um einen ganz normales RAM gehen mit 
einem Datenbuss (8Bit), einem Adressbus (z.B. 15Bit (das währe dann aber 
ein 32k x 8 RAM, da 2 hoch 15 = 32768 = 32k)) und ein Controlbus.

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huch...

Aus der Anzahl der ADRESSleitungen folgt die Anzahl der Adressen. 
(natürlich)

...schon spät...

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Baby : rechne nochmal nach. dat stimmt nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.