H5.1.1/H5.1.4 Register

Kai.S
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 10. Apr 2010 22:22

H5.1.1/H5.1.4 Register

Beitrag von Kai.S »

Hallo,

mich verwirrt das vorgegebene Registermodul im Zusammenhang mit der Aufgabenstellung ein wenig.
Oben steht, dass man Byteaddressierung verwenden soll, bei den Registern ist dies ja leicht sinnlos, da ist ja jeder für sich eine 32bit Einheit und so groß sind ja auch die Datenleitungen. Gehe ich dann recht in der Annahme, dass pro Register nur genau eine Adresse benötigt wird? Oder sollen trotzdem 4 Addressen/Register reserviert werden, welche alle denselben Wert zurückgeben?
Und dass das Registermodul dann alle 8 Register implementiert (-> [2:0] addr) und diese dann sozusagen nicht byte-addressierbar sind?

Die Byte-Addressierung allgemein verwirrt mich gerade, was macht man z.B. wenn das letzte Byte eines ROMs addressiert wird, man muss ja 32bit zurückgeben. Oder werden bei allen Adressen die hinteren 2 Bits beim Auslesen ignoriert?

EDIT: Der RAM soll komplett synchron sein nehme ich mal an mit der Modulbeschreibung? Genauso register.

Danke im Vorraus,
Kai

davidda
Windoof-User
Windoof-User
Beiträge: 31
Registriert: 19. Okt 2009 17:27

Re: H5.1.1/H5.1.4 Register

Beitrag von davidda »

Eine gute Frage. Ich sehe eine mögliche Antwort im Vergleich mit der x86-Achrtitektur.
Dort ist es ja genau so. Man hat Byteadressierung, arbeitet aber mit 32bit-Werten. Als Folge greift man nur auf Adressen zu, die ein Vielfaches von 4 sind (wenn man z.B. Assembler programmiert).

Da in der Aufgabe immer 32Bit gelesen/geschrieben werden, könnte man davon ausgehen, dass nur solche Adressen (also 0, 4, 8, ...) angelegt werden.

Mal sehen, was Thorti dazu meint.

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: H5.1.1/H5.1.4 Register

Beitrag von Thorti »

davidda hat geschrieben:Eine gute Frage. Ich sehe eine mögliche Antwort im Vergleich mit der x86-Achrtitektur.
Dort ist es ja genau so. Man hat Byteadressierung, arbeitet aber mit 32bit-Werten. Als Folge greift man nur auf Adressen zu, die ein Vielfaches von 4 sind (wenn man z.B. Assembler programmiert).

Da in der Aufgabe immer 32Bit gelesen/geschrieben werden, könnte man davon ausgehen, dass nur solche Adressen (also 0, 4, 8, ...) angelegt werden.
Deine Ideen sind richtig :wink:

Gruß
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Pflücker
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 129
Registriert: 21. Sep 2010 14:27

Re: H5.1.1/H5.1.4 Register

Beitrag von Pflücker »

Thorti hat geschrieben:
davidda hat geschrieben:Eine gute Frage. Ich sehe eine mögliche Antwort im Vergleich mit der x86-Achrtitektur.
Dort ist es ja genau so. Man hat Byteadressierung, arbeitet aber mit 32bit-Werten. Als Folge greift man nur auf Adressen zu, die ein Vielfaches von 4 sind (wenn man z.B. Assembler programmiert).

Da in der Aufgabe immer 32Bit gelesen/geschrieben werden, könnte man davon ausgehen, dass nur solche Adressen (also 0, 4, 8, ...) angelegt werden.
Deine Ideen sind richtig :wink:

Gruß
Thorsten
Ergo sollen wir Adressen wie 1,2,3 für die Register ignorieren?

dschneid
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 271
Registriert: 14. Dez 2009 00:56

Re: H5.1.1/H5.1.4 Register

Beitrag von dschneid »

Wenn man aber x86 bedenkt: Dort kann man ja schon auch nur auf einem Byte eines 32-Bit-Registers arbeiten (z.B. %ah oder %al). Damit so etwas geht, müssen die Register schon byte-addressierbar sein.

Kai.S
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 10. Apr 2010 22:22

Re: H5.1.1/H5.1.4 Register

Beitrag von Kai.S »

Bei uns sollen es aber immer 32bit Datenleitungen sein.

Im ersten Beitrag hatte ich noch ein, zwei kleine Fragen drinstecken, dazu Antworten, Bestätigungen?

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: H5.1.1/H5.1.4 Register

Beitrag von Thorti »

Hallo,

zu der Frage mit dem RAM:
Der RAM und die Register sollen synchron sein.

Gruß
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

franzose
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 146
Registriert: 9. Okt 2009 00:08

Re: H5.1.1/H5.1.4 Register

Beitrag von franzose »

Thorti hat geschrieben:Hallo,

zu der Frage mit dem RAM:
Der RAM und die Register sollen synchron sein.

Gruß
Thorsten
das kann aber beim Lesen zu Problemen führen, da der ROM asynchron ist:

wenn z.B. zu einer fallenden Taktflanke die Adresse von RAM zu ROM wechselt, dann schreiben beide bis zur nächsten steigenden Taktflanke parallel auf den Bus, bevor RAM aufhört....

oder ging es hier nur um synchron schreiben?

davidda
Windoof-User
Windoof-User
Beiträge: 31
Registriert: 19. Okt 2009 17:27

Re: H5.1.1/H5.1.4 Register

Beitrag von davidda »

wenn z.B. zu einer fallenden Taktflanke die Adresse von RAM zu ROM wechselt, dann schreiben beide bis zur nächsten steigenden Taktflanke parallel auf den Bus, bevor RAM aufhört....
Dieses Problem existiert zwar, lässt sich aber doch leicht vermeiden. Nur weil der RAM nur zur steigenden Takflanke seinen Datenausgang ändert, heißt das ja noch nicht, dass er diesen Datenausgang auch nur zur steigenden Taktflanke an den Bus anlegen bzw. von ihm trennen darf.

sabse
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 29. Sep 2009 22:19

Re: H5.1.1/H5.1.4 Register

Beitrag von sabse »

Also ist es jetzt falsch wenn man das Schreiben synchron und das Lesen asynchron gemacht hat, oder kann es so bleiben?

Kai.S
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 10. Apr 2010 22:22

Re: H5.1.1/H5.1.4 Register

Beitrag von Kai.S »

Darauf bin ich auch noch gestoßen...
Entweder müsste man das Lesen überall synchron, oder überall asynchron machen, sonst gibts Murks... In der Vorlesung war es in den Beispielen asynchron, also ist es asynchron okay?

Flo S
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 27. Apr 2010 22:50

Re: H5.1.1/H5.1.4 Register

Beitrag von Flo S »

Wenn das lesen / schreiben der ganzen Speichermedien (roms / ram / register) asynchron ist,
jedoch der Dekoder synchron, dann dürfte der gesamte Bus sowohl synchron schreiben und lesen.
Wäre ein work-around wie es funktionieren könnte.
Die Register wären dann jedoch eig. keine Register mehr.. bin mir also net sicher ob es so stimmt.
Alternativ - alles gemischt synchron / asynchron und den Dekoder getaktet, allerdings nur mit halber
Frequenz. Dann sollte wieder alles synchron laufen, egal ob die Speichermedien nun selber synchron
oder asynchron laufen.

Noch eine Frage zu 5.1.1 und 5.1.6
In 5.1.1 heißt es, dass Aliasing erlaubt ist, in 5.1.6 jedoch nicht mehr.
Langt es nun, wenn man kein Memory-Aliasing zulässt, oder soll es zwei verschiedene Dekoder
geben, die einmal Memory-Aliasing zulassen und einmal nicht?

Und eine weiter zu der "byte-adressierbarkeit".
Kann man es auch sowohl byte als auch 4 byte adressierbar machen? Ich habe bis jetzt das Modul nämlich
Byte-adressierbar, kann aber ohne Probleme ein weiteres Steuersignal "Byte" oder so hinzufügen, welches
angibt ob nun 4 Byte gelesen/geschrieben werden, oder eben nur 1 Byte.

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: H5.1.1/H5.1.4 Register

Beitrag von Thorti »

asynchrones Lesen ist in Ordnung.
Assistent zur Vorlesung TGDI im WS 11/12

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: H5.1.1/H5.1.4 Register

Beitrag von Thorti »

Flo S hat geschrieben:Noch eine Frage zu 5.1.1 und 5.1.6
In 5.1.1 heißt es, dass Aliasing erlaubt ist, in 5.1.6 jedoch nicht mehr.
Langt es nun, wenn man kein Memory-Aliasing zulässt, oder soll es zwei verschiedene Dekoder
geben, die einmal Memory-Aliasing zulassen und einmal nicht?
In 5.1.2. ist Memory-Aliasing erlaubt, und eine Implementierung mit möglichst wenig Gattern gefordert. In 5.1.6 ist Memory-Aliasing verboten.
Und eine weiter zu der "byte-adressierbarkeit".
Kann man es auch sowohl byte als auch 4 byte adressierbar machen? Ich habe bis jetzt das Modul nämlich
Byte-adressierbar, kann aber ohne Probleme ein weiteres Steuersignal "Byte" oder so hinzufügen, welches
angibt ob nun 4 Byte gelesen/geschrieben werden, oder eben nur 1 Byte.
Ein solche Byte-Enable-Signal kann implementiert werden, muss aber nicht.

Gruß
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

AlexanderF
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 140
Registriert: 2. Mai 2010 17:55

Re: H5.1.1/H5.1.4 Register

Beitrag von AlexanderF »

hallo,

Kai.S hat zu Beginn dieses Themas eine Frage gestellt,
ob das Modul register genau ein Register implementieren soll,
wobei dann der Adresseingang ([2:0] addr) ein Bit zu groß wäre da ja 32 Bit(Größe der Register) genau 4 Byte sind, also 2^2 und nicht 2^3.

oder ob es so gemeint ist, dass das Modul register alle 8 Register implementieren soll,
dann würde auch der 3 Bit breite Adresseingang Sinn machen, dann könnte man nur die die einzelnen Register nicht mehr byteweise adressieren.

Ich habe in diesem Forumsthread leider noch keine richtige Antwort auf diese Frage raus lesen können.


ich würde mich um eine schnelle Beantwortung der Frage von ofizieller Seite freuen,

mit freundlichen Grüßen,
Alexander

Antworten

Zurück zu „Archiv“