Hallo alle zusammen . Ich verstehe gerade nur eine Sache bei der Musterlösung nicht was ich gerade nicht verstehe. Warum geht Ram 1 bis 07FF h ? Ich hoffe jemand kennt sich mit so schwierigen Aufgaben hier aus
Guck mal welche Voraussetzung gegeben ist, und was in der anderen Tabelle dazu steht.... Dann mal drüber nachdenken, wo der Unterschied zwischen Größe und Index einer Speicherzelle ist.... ... Und schon wird es klarer
Malvia R. schrieb: > Hallo alle zusammen . > Ich verstehe gerade nur eine Sache bei der Musterlösung nicht was ich > gerade nicht verstehe. > > Warum geht Ram 1 bis 07FF h ? > > Ich hoffe jemand kennt sich mit so schwierigen Aufgaben hier aus Ja. Sieht schwierig aus. Ist aber zu meistern. Versuche einfach mal die Hexdezimalzahl 07FF in eine Dezimalzahl umzurechnen. Ich vermute stark, dass Dir dazu was auffällt.
Theor schrieb: > Versuche einfach mal die Hexdezimalzahl 07FF in eine Dezimalzahl > umzurechnen. nicht eher 0800? Das Ram geht schliesslich ab 0 also ist die Weite 7FF +1 und ist dezimal wieviel Byte und wieviel 2^n wäre das?
Joachim B. schrieb: > Das Ram geht schliesslich ab 0 also ist die Weite 7FF +1 Was auch immer die Weite in diesem Zusammenhang ist - gefragt war, warum bei 11 Adressbits die höchste Adresse 0x07FF ist
Hm, naja - das entscheidende hier ist nicht die Anzahl der Adressleitungen des RAM (das könnten auch mehr sein, dann würde nur ein Teil nutzbar sein oder auch weniger, dann wäre der verfügbare Adressbereich 2 bis x-mal gespiegelt), sondern die Dekodierung A11-A15, im Bildchen rot. Nur, wenn alle diese Adressleitungen 0 sind, wird RAM1 angesprochen. Und das sind in dem Fall eben alle Adressen von 0..0x7FF.
07FF = 2047 800h = 2048 Aber ich verstehe es ehrlich gesagt trotzdem nicht warum Ram1 bis 07FF und das zweite ram dann bei 800 beginnen soll? Warum läuft den das zweite Ram eine kürzere Zeit lang ? Wie soll ich darauf kommen ?
Malvia R. schrieb: > 07FF = 2047 > > 800h = 2048 > > Aber ich verstehe es ehrlich gesagt trotzdem nicht warum Ram1 bis 07FF weil 11bits addresse und 2**11 - 1 = 0x7FF > und das zweite ram dann bei 800 beginnen soll? > Warum läuft den das zweite Ram eine kürzere Zeit lang ? Nein der RAM2 läuft nicht kürzer. Genaugenommen beginnt es auch bei 0x000 (hat den selben Adressbus) nur eben das CS wird aus A12 generiert.
DümmsteNussAmBaum schrieb: > eben das CS wird aus A12 generiert. Korrektur: das CS wird aus dem 12. Addressbit, also A11 generiert.
Malvia R. schrieb: > Warum läuft den das zweite Ram eine kürzere Zeit lang ? Wie meinst du das? 2048 bis 4095 (0xFFF). 4095-2048= 2047 Adressen beim ersten Ram: von 0 bis 2047 (0x7FF). 2047 und 2047. Bei beiden Rams.
Mal eine andere Frage: Warum steht in der Tabelle z.B.: 512 bytes -> 9 Bits werden benötigt für die Adressierung. (gleich die erste Zeile in der Tabelle). Wollen die jedes Bit einzeln adressieren? Und nicht die Bytes? Ich dachte so: 512/8=64 Speicherblöcke. Und 2^6=64. Also 6 Bits.
Malvia R. schrieb: > 07FF = 2047 > > 800h = 2048 > > Aber ich verstehe es ehrlich gesagt trotzdem nicht warum Ram1 bis 07FF Naja. Findest Du es nicht auffällig, dass das RAM 2kByte Speicherstellen hat, also 2048 Bytes enthält und seine Adressen von 0 bix 2047 gehen? Gibt es da nicht vielleicht einen Zusammenhang? Was meinst Du? > und das zweite ram dann bei 800 beginnen soll? > Warum läuft den das zweite Ram eine kürzere Zeit lang ? Vielleicht hat sich diese Frage nun erledigt. Aber falls nicht, wäre vielleicht besser, Du versuchst die Frage anders zu formulieren. Und zwar ohne das Wort "Zeit". Zeit spielt hier überhaupt keine Rolle. Nimm ein Wort dafür, dass Dir besser geeignet erscheint. Mal zu erklären. Vielleicht hilft es Dir weiter, wenn Du erstmal nur die Hexadezimalzahlen in Dezimal umrechnest und in eine Kopie der Tabelle einträgst. Vielleicht versuche ich hier auch etwas, was Dir nicht hilft. Dann muss ich es sein lassen oder was ganz Anderes probieren. Oder die Antworten der Anderen helfen. Aber aus meiner Sicht, ist das viel einfacher, als man zuerst denkt.
Theor schrieb: > Vielleicht hilft es Dir weiter, wenn Du erstmal nur die Hexadezimalzahlen in Dezimal umrechnest und in eine Kopie der Tabelle einträgst. Grundlegendes Verständnis für des Hexadezimalsystem bekommt man wohl kaum, indem man runde Hexzahlen in irgendwelche krummen Dezimalwerte umwandelt - eher andersrum, wenn der Autor der Tabelle die Dezimalwerte hin geschrieben hätte.
Wolfgang schrieb: > Grundlegendes Verständnis für des Hexadezimalsystem bekommt man wohl > kaum, indem man runde Hexzahlen in irgendwelche krummen Dezimalwerte > umwandelt - eher andersrum, wenn der Autor der Tabelle die Dezimalwerte > hin geschrieben hätte. Spiel doch einfach mal mit nem Taschenrechner rum, der Dezimal, Binär und Hex kann. So wie der Windows Inklusive Rechner "calculator" https://de.l3xa.com/calculator-windows-7-windows-8-tool Alternativ kannst ja mal den Addressdecoder an einem alten Homecomputer wie dem Apple II anschauen: https://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Books/W.%20Gayler%20-%20The%20Apple%20II%20Circuit%20Description.pdf
DümmsteNussAmBaum schrieb: > Spiel doch einfach mal mit nem Taschenrechner rum … Und dann? Welchen Erkenntnisgewinn versprichst du dir davon? Diese runden Werte lassen sich doch nun wirklich im Kopf rechnen. Früher (tm) hat man noch gelernt, damit ohne eine spezielle App umzugehen. Ansonsten empfehle ich dir RealCalc
Wolfgang schrieb: > DümmsteNussAmBaum schrieb: >> Spiel doch einfach mal mit nem Taschenrechner rum … > > Und dann? > Welchen Erkenntnisgewinn versprichst du dir davon? man würde eventuell die verschiedenen Zahlensysteme begreifen? Wer selber nie Adressdecoder handverdrahtet hat hats eben schwer. Die Generation Smartphone tut sich ja auch schwer mit geschlossene Stromkreise, die Alten(TM) die noch elektrische Eisenbahnen oder Carrera verkabelt haben wissen das es mindestens 2 Drähte braucht.
Bin ich der einzige der nicht versteht wie das Ende der adresstabelle funktioniert? Flash high und Low beides 1? Herr Lehrer, ihre Aufgabenstellung ist falsch..
Sem52 schrieb: > Bin ich der einzige der nicht versteht wie das Ende der > adresstabelle funktioniert? > > Flash high und Low beides 1? > > Herr Lehrer, ihre Aufgabenstellung ist falsch.. Namentlich bei a15. Oder ist das rote die Lösung?
zitter_ned_aso schrieb: > Mal eine andere Frage: > > Warum steht in der Tabelle z.B.: > > 512 bytes -> 9 Bits werden benötigt für die Adressierung. (gleich die > erste Zeile in der Tabelle). > > Wollen die jedes Bit einzeln adressieren? Und nicht die Bytes? > > Ich dachte so: > > 512/8=64 Speicherblöcke. Und 2^6=64. Also 6 Bits. 512 bytes wollen einzeln addressiert werden. 2^9=512. Also braucht man 9 Bits. @Malvia Ist schon nicht klar, warum man zwei Ram Blöcke braucht? Die Adressierung läuft doch normal fort. Rechne mal 0xFFF-0x800. Beide Blöcke sind gleich lang.
Sem52 schrieb: > Bin ich der einzige der nicht versteht wie das Ende der adresstabelle > funktioniert? Möglicherweise. > Flash high und Low beides 1? Ja, warum nicht? Die Flash-ICs sind nur 4 Bit breit und werden deswegen immer gleichzeitig aktiviert, um auf die geforderte Breite von 8 Bit zu kommen. PS: Anzumerken wäre noch, dass von den Flashs nur jeweils die Hälfte der 32kB genutzt wird, es sei denn, das B in 32kB steht hier ausnahmsweise für ein 4-Bit-Byte.
:
Bearbeitet durch Moderator
DümmsteNussAmBaum schrieb: > Korrektur: > das CS wird aus dem 12. Addressbit, also A11 generiert. Nein, es muss dann aktiv sein, wenn A15...A11 = 0b00001 ist. Sonst wird das RAM auch angesprochen, wenn ROM oder Flash in einem bestimmten Adressbereich genutzt wird. So ist es auch bei allen anderen Bereichen: alle rot gekennzeichneten Bits müssen verknüpft werden (= Adressdecoder), um das jeweilige CS zu generieren.
Yalu X. schrieb: > Anzumerken wäre noch, dass von den Flashs nur jeweils die Hälfte der > 32kB genutzt wird, es sei denn, das B in 32kB steht hier ausnahmsweise > für ein 4-Bit-Byte. Das "KB" in der Aufgabenstellung ist offensichtlich falsch. Korrekt wäre "K-Worte" - die Wortbreite ist ja zusätzlich angegeben. Auch in der Tabelle steht falsch "L-Byte" bzw. "H-Byte". Korrekt wäre "L-Nibble" und "H-Nibble" [1]. Oder neutraler "L-Wort" und "H-Wort". [1] für die Hardware-Leute ist ein Byte immer 8 Bit breit. Und ein Nibble bezeichnet ein Wort mit 4 Bit Breite. Mittlerweile muß man zumindest den Begriff "Nibble" wohl als historisch einstufen.
HildeK schrieb: > DümmsteNussAmBaum schrieb: >> Korrektur: >> das CS wird aus dem 12. Addressbit, also A11 generiert. > > Nein, es muss dann aktiv sein, wenn A15...A11 = 0b00001 ist. Sonst wird > das RAM auch angesprochen, wenn ROM oder Flash in einem bestimmten > Adressbereich genutzt wird. > So ist es auch bei allen anderen Bereichen: alle rot gekennzeichneten > Bits müssen verknüpft werden (= Adressdecoder), um das jeweilige CS zu > generieren. stimmt, früher nahm man 139er und 138er Dekoder zusammen. erst den 139er 74139 bis 74HC139 für die oberen Adressen, mit dem Ergebnis ging man aufs !Enable der 138er optimal so das alle 2K SRAM ein Enable !CS bekamen. passt wunderbar: 64K Adressraum mit dem 139er (4 Ausgänge) in 4 Blöcke a 16K aufgeteilt, der oder die 138er (8 Ausgänge) wiederum die 16K Blöcke in 8x 2K aufgeteilt. ist das lange her, so wurde es eigentlich seit den ersten CBM/PET über apple bis PC1500 gemacht.
Joachim B. schrieb: > ist das lange her, Ja :-). Deshalb weiß es auch kaum noch einer in Zeiten von MMUs. Letztlich reichen ODER-Verknüpfungen mit Invertern an den Adressleitungen, die '1' sein müssen, um das passende 'CS' zu erzeugen.
Stumpfes Adressleitungen zählen stößt ja schon an Grenzen, wenn Signale wie ALE, RAS oder CAS auf dem Bus rumwuseln. Nibble sind nocht nicht in Rente, sondern dank SENT-Protokoll immer noch im Rennen. Und dann war da noch der Witz vom Informatiker am Bahnsteig, der vor sich hin murmelt und schimpft : "Null, eins, zwei... Mist ! Wo ist mein vierter Koffer ?" Also Speicherbausteine mit n adressierbaren Plätzen haben meist Adressen von 0 bis n-1. Oder anders ausgedrückt, wenn ich was durchnummeriere, komme ich auf die Anzahl der numerierten Teile, in dem ich letzte Nummer +1 - erste Nummer rechne. Und in Hexadezimal ist 800 die Hälfte von 1000.
zitter_ned_aso schrieb: > 2048 bis 4095 (0xFFF). > > 4095-2048= 2047 Adressen > > beim ersten Ram: > > von 0 bis 2047 (0x7FF). > > 2047 und 2047. Bei beiden Rams. Naja, da musst du die erste Adresse aber noch hinzuzählen. Dann kommen für beide RAMs 2048 Adressen heraus.
Yalu X. schrieb: > Sem52 schrieb: > Bin ich der einzige der nicht versteht wie das Ende der adresstabelle > funktioniert? > > Möglicherweise. > > Flash high und Low beides 1? > > Ja, warum nicht? Die Flash-ICs sind nur 4 Bit breit und werden deswegen > immer gleichzeitig aktiviert, um auf die geforderte Breite von 8 Bit zu > kommen. > > PS: Anzumerken wäre noch, dass von den Flashs nur jeweils die Hälfte der > 32kB genutzt wird, es sei denn, das B in 32kB steht hier ausnahmsweise > für ein 4-Bit-Byte. Ach, natürlich. Wie naheliegend. Danke dafür, ymmd. (Yalu made my day)
Malvia R. schrieb: > Gibt es einen Weg rechnerisch auf das 0x7ff zu kommen ?
1 | $ python |
2 | Python 3.5.2 (default, Nov 12 2018, 13:43:14) |
3 | [GCC 5.4.0 20160609] on linux |
4 | Type "help", "copyright", "credits" or "license" for more information. |
5 | >>> "{0:x}".format(2048-1) |
6 | '7ff' |
1 Kilobyte = 1024 Bytes 2 Kilobytes = 1024+1024 = 2048 Bytes die Ram-Größe von 2 Kilobytes ist vorgegeben (lau Aufgabenstellung) du hast also 2048 Bytes, die du durchnummerieren musst. Das ist quasi wie mit Regalen in einem Schrank: 2048 Regalen sind vornanden. Das erste Regal bekommt die Nummer 0, das Zweite - 1, das Dritte - 2, usw.. Also brauchts du 2048 Ziffern. (von 0 bis 2047) Und 2047 dezimal ist 0x7FF hexadezimal.
Malvia R. schrieb: > Gibt es einen Weg rechnerisch auf das 0x7ff zu kommen ?
Umgekehrt:
Da es nur ganze Adressleitungen gibt muss von 10,999 auf 11 aufgerundet werden!
GEKU schrieb: > ist der Logarithmus mit der Basis 2 von 11 ! von 2048. du hast dich vertippt. log2(2048)=11 11 bits werden benötigt um 2048 Zahlen (Adressen) binär zu kodieren.
hoch 11 weil der Speicherraum von A0 -A10 geht ? Kann man sich das auch so erklären ? Aber bin jetzt ein wenig schlauer geworden durch eure Erklärungen :)
Sem52 schrieb: > Flash high und Low beides 1? > > Herr Lehrer, ihre Aufgabenstellung ist falsch.. Herr Sem52, sie sollten die Aufgabenstellung auch lesen und sich nicht durch die falsche Bezeichnung verunsichern lassen. Der Flash-Speicher hat eine Breite von 4 Bit. Das Einzige, was falsch ist, sind die Bezeichnungen "L-Byte" und "H-Byte". Richtig muss es wohl heißen "L-Nibble" und "H-Nibble".
Malvia R. schrieb: > Gibt es einen Weg rechnerisch auf das 0x7ff zu kommen ? Ja, z.B.
1 | 2^11 - 1 = 0x800 - 1 = 0x7ff |
GEKU schrieb: > Da es nur ganze Adressleitungen gibt muss von 10,999 auf 11 > aufgerundet werden! Du hast vergessen, dass die Speicherstelle mit der Adressse 0 auch mit zählt. Damit sind es 0x7FF+1 Speicherstellen für die genau eine 11-Bit Adressierung erforderlich ist.
Wolfgang schrieb: > Du hast vergessen, dass die Speicherstelle mit der Adressse 0 auch mit > zählt. Damit sind es 0x7FF+1 Speicherstellen für die genau eine 11-Bit > Adressierung erforderlich ist. Genau so ist es! Man muss von 0x800 und nicht von 0x7ff ausgehen.
Malvia R. schrieb: > hoch 11 weil der Speicherraum von A0 -A10 geht ? > Kann man sich das auch so erklären ? Wirklich? Dafür brauchst du eine Erklärung? Wenn du K Leitungen hast, die jeweils 2 verschiedene Zustände haben können, dann kannst du damit insgesamt 2^K Kombinationen darstellen. Das ist einfach durch Induktion zu sehen: mit einer solchen Leitung sind es definitionsgemäß zwei Zustände. Mit jeder weiteren Leitung verdoppelt sich die Anzahl der Zustände. Es kommt ein Faktor von 2 dazu. Respektive der Exponent der 2 erhöht sich um 1 für die neue Leitung. Mit K Leitungen ist der Exponent gerade gleich K. Wenn du N Dinge hast und die beginnend mit 0 durchnumerierst, dann brauchst du dazu die Nummern von 0 bis N-1. Das ist einfach eine Verschiebung der "natürlichen" Numerierung von 1 .. N um eine Position nach links. Jetzt setzt du ein: N = 2^K. Folge: mit K Adressbits kannst du Adressen von 0 bis 2^K-1 darstellen. K=11 → N=2^11=2048=0x800 → Intervall [0..2047]=[0x000..0x7FF] Dazu brauchtest du Hilfe? Ehrlich?
:
Bearbeitet durch User
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.