Übung 7 - Musterlösung

Benutzeravatar
Orakel2056
Neuling
Neuling
Beiträge: 5
Registriert: 20. Okt 2006 02:56
Wohnort: Giessen

Übung 7 - Musterlösung

Beitrag von Orakel2056 » 13. Dez 2006 20:52

Hi Alle zusammen!

Kurz vor dem ersten Klausurteil, stößt man ja auf die eine oder andere Frage beim durcharbeiten der Musterlösungen.
Meine Frage bezieht sich auf das R/W# (vgl. Seite 6 der Musterlösung):

Da R/W# ja schon in SeitIN & SeiteOUT einbezogen wurde, ist es doch inOE# & LOAD# nicht mehr nötig, oder hab ich da was übersehen ???

Grüße aus Gießen

Herrzattacke
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 143
Registriert: 20. Nov 2004 16:04

Beitrag von Herrzattacke » 13. Dez 2006 21:29

Ich würde mal sagen du hast Recht.

An der Funktion ändert das aber nichts, wie so oft, kann man es an mehreren Stellen hinschreiben ohne das die Funktion verändert wird.

Ich hätte mir mal einen Leitfaden gewünscht in dem dann drin steht dass man es am besten da und dort hinschreibt, weil ... (Grund bitte hier einfügen)
z.B. macht man so weil die Schaltung dann weniger Strom verbraucht, oder sowas ähnliches. Das geht aber weit über deine Fragestellung hinaus.

Gruß
Alle sagten: "Das geht nicht!" Dann kam einer, der wusste das nicht und hat´s gemacht.

Benutzeravatar
AlexB
Kernelcompilierer
Kernelcompilierer
Beiträge: 487
Registriert: 8. Jul 2004 09:51
Kontaktdaten:

Beitrag von AlexB » 13. Dez 2006 21:42

jap, VA# und R/W# sind glaub ich ein paar Mal redundant benutzt worden.

Ich hätte mir auch nochmal eine Übersicht gewünscht, wie man was wo am besten hinschreibt. Aber ich kann die Lösung zu der Übung zwei empfehlen, da ist das recht hübsch erklärt, auch in der Zusatzinformation.
Aktuelle Veranstaltungen
"Hardwaremodellierungssprachen" [SS 2012] - Webseite - Jetzt im TUCaN't anmelden!
TUCaN't - wenn's mal wieder länger dauert.
Bild

Benutzeravatar
Orakel2056
Neuling
Neuling
Beiträge: 5
Registriert: 20. Okt 2006 02:56
Wohnort: Giessen

BE#[3:0]==7

Beitrag von Orakel2056 » 13. Dez 2006 22:23

Danke für's schnelle Anworten!

Hatte ich mir schon gedacht *g* Was ich allerdings bei SeiteIN/OUT noch nicht ganz verstanden habe, ist warum ich BE#[3:0]==7 setze.

Meine Überlegung ist, da Byte-Enable angeschlossen ist (Basiert ja auf Übung 2) müssen wir es verwenden. Und mit ==7 bekommen wir '1000' (MSB setzen) wodurch wir ausschließen, das RAM oder ROM dadurch beeinflusst werden. (Hoffe ich mach mich jetzt nich ganz zum Deppen *g*)

(...und Ja ... so ein paar Hinweise, wo was besser eingebaut werden kann wäre cool. Und mal eine einheitliche Schreibweise für alles verwenden. Anfänger kann * & /\ schon verwirren. Dazu steht zwar auch was in der 2 Übung {Danke für den Hint! - Die Zusatzinfos hatte ich übersehen}, aber eine einheitliche Notation wäre schon schön )

Benutzeravatar
AlexB
Kernelcompilierer
Kernelcompilierer
Beiträge: 487
Registriert: 8. Jul 2004 09:51
Kontaktdaten:

Beitrag von AlexB » 13. Dez 2006 22:38

ich hab jetzt nicht nachgeschaut, aber BE#[3:0]==7 wählt von der gewählten Adresse das vorderste Byte aus. Würde man das weglassen, könnte SeiteIN auch "wahr" zurückgeben, wenn man zB das zweite Halbwort an der Adresse ausließt, obwohl daran ja kein Eingabe- oder Ausgaberegister angeschlossen ist. Darum muss das mit dazu.
Aktuelle Veranstaltungen
"Hardwaremodellierungssprachen" [SS 2012] - Webseite - Jetzt im TUCaN't anmelden!
TUCaN't - wenn's mal wieder länger dauert.
Bild

Benutzeravatar
Orakel2056
Neuling
Neuling
Beiträge: 5
Registriert: 20. Okt 2006 02:56
Wohnort: Giessen

Beitrag von Orakel2056 » 13. Dez 2006 22:47

Der Tipp mit den Zusatzinfos zu Übung 2 ist super! Da steht das auch mit dem BE#. Und jetzt ist es mir klar. Thanx again!
Dumme Gedanken hat jeder, aber der Weise verschweigt sie [Wilhelm Busch]

Ein Narr, der jetzt denkt, Schweigen führe zu Weisheit [Orakel2056]

Herrzattacke
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 143
Registriert: 20. Nov 2004 16:04

Beitrag von Herrzattacke » 13. Dez 2006 22:58

Das Problem hatte ich am Montag auch.

Die beiden Bausteine haben nur eine 8Bit Datenleitung und deshalb müssen wir uns entscheiden wo wir die am Prozessor anschließen wollen. Sinvoll ist hierbei eine Wortadresse, da wir Big-Endian Byte-Ordering haben. (Vgl. Lösung der Übung 7, S.3)

Nehmen wir also an, dass wir CPU.D[31:24] an EA.D[7:0] angeschlossen haben.

Beim übertragen eines Bytes aus einem Register, passiert bei den 3 möglichen move Befehlen jeweils etwas anderes.

Move.W überträgt die bits [31:24] an die Speicherstelle
Move.H überträgt die bits [15:8] an die Speicherstelle
Move.B überträgt dann die bits [7:0] an die Speicherstelle was wir eigentlich wollten

Hoffentlich war das soweit verständlich...
Gemeint war 0xFF00 0000 für move.w, 0x0000 FF00 für move.h und 0x0000 00FF für move.b.

Wenn wir move.b benuzten sparen wir uns also das zurechtshiften der Zahlenwerte.

HTH
Alle sagten: "Das geht nicht!" Dann kam einer, der wusste das nicht und hat´s gemacht.

Antworten

Zurück zu „Archiv“