PIAOutputSevenSegment: PIA Registeranwahl RSi

pect
Erstie
Erstie
Beiträge: 20
Registriert: 9. Apr 2008 21:47

PIAOutputSevenSegment: PIA Registeranwahl RSi

Beitrag von pect » 22. Dez 2009 20:13

Hallo,

*Das ganze tritt nur auf, wenn man die Logic von PIAOutputSevenSegment uebernimmt*

ich wollte gerade einen PIA mit dem Simulator ansteuern und habe komische Ergebnisse mit den in der Vorlesung genannten Offsets bekommen.

Die bekannten aus der Vorlesung:

Code: Alles auswählen

DRA EQU 0x00 ; Offset für Datenregister A 
DRB EQU 0x04 ; Offset für Datenregister B 
DDRA EQU 0x18 ; Offset für DatenRichtungsregister A
DDRB EQU 0x1C ; Offset für DatenRichtungsregister B 
Da dies zu nichts fuehrte, habe ich den Simulator von Hrn. Ediger decompiliert und siehe da:

Code: Alles auswählen

        registers = new String[10];
        registers[0] = "CRA";
        ....
        registers[6] = "DRA";
        registers[7] = "DRB";
        registers[8] = "DDRA";
        registers[9] = "DDRB";
Wenn man nun 6 bzw 8 um zwei Stellen nach links shiftet funktioniert alles.

Code: Alles auswählen

DRA EQU 0x18 ; Offset für Datenregister A 
DDRA EQU 0x20 ; Offset für DatenRichtungsregister A  
Mit der Verdrahtung habe ich mich am PIAOutputSevenSegment-Beispiel orientiert.

Hat noch jemand das Verhalten bemerkt oder habe ich mich irgendwo vertan?

patriquito
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 102
Registriert: 29. Apr 2005 23:09

Re: PIAOutputSevenSegment: PIA Registeranwahl RSi

Beitrag von patriquito » 23. Dez 2009 09:53

Hallo pect,

Die Registerauswahl beim PIA über RSi ist in der Aufgabenstellung zur Bonusübung (Aufgabe 2) angegeben. (Zudem gibt es noch eine Tabelle in der Anleitung zum Simulator auf S. 63, hier sind allerdings unglücklicherweise RS[2] und RS[0] vertauscht.)

Wie die Offsets letzen Endes aussehen hängt davon ab, wie man die RS-Leitungen mit den Adressleitungen der CPU verknüpft. Es gibt keine Vorschrift, nach der man A2-A5 an R0-R3 in dieser Reihenfolge anschließen muss. Ebensogut könnte man A2-R0, A3-R3, A4-R2, A5-R1 verknüpfen oder eine ganz andere Logik verwenden, in der jedes Register des PIA auf eine beliebige Adresse gelegt wird, z.B. $A000 00CF --> DRA und $1234 5678 --> DRB usw. In diesem Fall kann man gar nicht mehr mit Offsets arbeiten.

In dem Beispiel "PIAOutputSevenSegment" ist in der Datei "0PIADecoder.fct" (lässt sich mit einfachem Texteditor öffnen) eine Zuordnung von Adressen auf bestimmte Codierungen von CS und RSi gegeben.

Der Code-Teil, den du angegeben hast, ist lediglich ein Array von Strings. Der hat mit der Codierung/Adressierung nichts zu tun.

Fazit: Die Offsets können in verschiedenen Systemen anders aussehen und sind trotzdem nicht unbedingt falsch. Es kommt darauf an, wie die RSi-Leitungen des PIA an die Adressleitungen der CPU angebunden sind.

Gruß
Patrick

pect
Erstie
Erstie
Beiträge: 20
Registriert: 9. Apr 2008 21:47

Re: PIAOutputSevenSegment: PIA Registeranwahl RSi

Beitrag von pect » 23. Dez 2009 14:46

Danke Patrick,
die Benutzung von dem Logik-Modul ist aber ok, auch wenn "einfachen Logikgattern zur Dekodierung" gefordert wird?

patriquito
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 102
Registriert: 29. Apr 2005 23:09

Re: PIAOutputSevenSegment: PIA Registeranwahl RSi

Beitrag von patriquito » 23. Dez 2009 19:53

ja. das modul kann man benutzen.

Frohe Weihnachten!
Patrick.

Antworten

Zurück zu „Systementwurf mit Mikroprozessoren“