Adressbereich aus EPROM dekodieren


Adressbereich aus EPROM dekodieren

von Gast » Di 24. Apr 2007, 18:22
Hallo,

ich hatte weiter unten mal einen Beitrag zu einem alten Eltec Eurocom-Board auf Basis einer 6809 CPU.
Darauf befindet sich ein Eprom dessen Adressbereiche von einem PAL dekodiert werden.
In der Serviceanleitung steht dazu:

PAL1 (IS52) ist ein PAL 12L6 (12 Eingänge, 6 Ausgänge, negative Logik).
In PAL1 werden die Select-Leitungen für die EPROM-Steckplätze /P1 + /P2 und eine im Adressbereich des EPROM2 liegende, bei $FC80 beginnende, 128 Byte breite Lücke /GAP dekodiert. Außerdem wird eine Devicelücke /GAPF ($FD00 - $FD7F) für den Floppy-Disk-Controller erzeugt, sowie ein Signal /GAPR generiert, das RAM im EPROM-Bereich ausblendet.

Wenn ich allerding mit dem Oszilloskop die Pins von PAL1 checke, erhalte ich keinerlei Pulse an den /GAP und /GAPF Ausgängen.
Sollte hier nicht ein Puls messbar sein? Hier habe ich jedoch nur log. "High".
/GAPR wird generiert, hier sehe ich einen Puls.
Wie äußert sich denn eine 128 Byte breite Lücke auf dem Oszi?

Cornel

von Gast » Mi 25. Apr 2007, 17:33
Ich habe gerade zu dem Problem folgendes erfahren:

Die Adressen laufen ja nicht ständig von Anfang bis Ende durch, aber wenn der entsprechende Adressbereich mal Softwaremäßig angesprungen wird, sollten da entsprechende Signale messbar sein.

von guus » Mi 25. Apr 2007, 19:34
Wilkommen in die schöne Welt der Mircroprocessoren.
Stimmt genau.

Tip für Test:
Schau im Op-code list und suche den NOP.
Entferne den Eprom und erzetse den mit ein Sockel.
In diesen Sockel sollten Wiederstände den NOP-code herstellen an die Daten-leitunge. (Verbinde mit Plus oder GND wie nötig)
Jetzt wird das System immer ein NOP sehen und alle Addressen generieren. (Auch alle I/O auschalten ! )

mfg.
Guus

von Gast » Do 26. Apr 2007, 10:09
Danke für den Tipp.
Noch eine Frage: was genau sind Opcode list und NOP?

LG

Cornel

von Sleepy » Do 26. Apr 2007, 11:42
Hi,

OP-Code = OperationCode -> das Maschinenspracheprogram, welches in binärer Form in dem Eprom steht.

NOP = No OPeration -> ist eine "leere Anweisung" die in einem Assemblerprogram dazu benutzt wird Platz "freizuhalten" für spätere evt. Änderungen, wenn z.B. nachträglich noch Befehle in ein Program eingesetzt werden müssen.

Bei einer "NOP"-Anweisung macht der Prozessor nix außer den nächsten Befehl im Speicher auszulesen, d.h. der Adresszähler wird um eins erhöt.

Wenn Du nun das Eprom mit dem Program entfernst und mit Hilfe von Low(GND)- bzw. High(+5V)-Pegeln den NOP-Befehl (in binärer Form) an den Datenleitungen des Eproms erzeugst, wird der Prozessor den ersten Befehl lesen (NOP), den Adresszähler erhöhen, den nächsten Befehl lesen (NOP), den Adresszähler erhöhen, u.s.w.

-> er wird die Adressen einfach hochzählen.

Dabei fällt mir ein: Es gibt Prozessoren die, um Beinchen am Gehäuse zu sparen, sich einen Teil des Adressbusses an der CPU mit den Datenleitungen "teilen", d.h. bei einer 8-Bit-CPU mit dieser Technik sind die Bits 0-7 sind entweder Adress- oder Datenleitungen.

Wenn Du die Adressleitungen direkt an der CPU mißt kontrolliere erst mal ob die CPU getrennte Daten- & Adressleitungen hat.

Ggf. werden die Leitungen erst durch eine Logic aufgesplittet.

An den Adresseingängen der Eproms sollten aber nur die Adresssignale anliegen.

So, ich hoffe das war jetzt nicht zu verwirrend... :wink:

Sleepy

von Gast » Do 26. Apr 2007, 12:30
Danke für die wirklich ausführlichen Erklärungen.
Ich habe hier einen Auszug des Schaltplanes:

Bild

von guus » Do 26. Apr 2007, 23:13
Also hier ist es etwas anders. (Und einfacher.)
Entferne IS18
Pins 11 bis 18 sind mit die Datenleitung am CPU verbunden.
Dort sollen die Anschlüsse für das NOP-Befehl gemacht werden.
Nehme Wiederstande von 1K oder so.
Nun wird der CPU ein Adress-Zahler und werden alle Addressen generiert. Auch alle I/O's werden "angesprochen"

Beim 6809 ist den Code 12.
Verbinde also Pin 14 und 17 des IS18 mittels ein Wiederstand mit plus. Die andere pins (11-18 ) nach masse.
Wenn IS18 nicht entfernbar ist, dann kann auch nür pin 19 abgetrennt werden von den Rest der Schaltung. Verbinde den nach Plus. (Pin 20)