Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Alles rund um den ABBUC und Atari, was nicht in die anderen Kategorien passt.
Antworten
Benutzeravatar
Kveldulfur
Beiträge: 649
Registriert: 17.08.2021 02:32
Has thanked: 251 times
Been thanked: 177 times
Kontaktdaten:

Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von Kveldulfur »

Hallo!

Ich bin schwer mit meinem ATARI 5200 im Gange. Viele Baustellen und nichts funktioniert wie es soll :roll:
Nun wollte ich mir selbst ein Modul basteln, welches 64kb ROM zur Verfügung stellt. Umgeschaltet werden die beiden 32kb durch einen Zugriff im oberen ROM-Bereich. Ein EEPROM, ein GAL und ein FlipFlop sollten reichen, oder?
Leider übersehe ich etwas und finde es nicht. Kennt sich da vielleicht jemand aus?
Hier mein Schaltplan (bitte nicht lästern... ich übe noch :mrgreen: )
A5200-Modul-Schaltplan.jpg
CE und OE habe ich dauerhaft auf GND... ist das okay, oder muss der ATARI das schalten können?

So sieht mein (nicht funktionierendes) Modul aus:
A5200-Modul.jpg
Grüße
Janko

Benutzeravatar
tfhh
Beiträge: 121
Registriert: 17.06.2021 02:31
Wohnort: Wistedt, Germany
Has thanked: 115 times
Been thanked: 103 times

Re: Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von tfhh »

Moin Janko,

hmm. Also, wie willst Du das Bankswitching erreichen? Es wäre deutlicher einfacher, einen Rat dazu zu geben, wenn Du die Logik dazu postest (ggf. mir privat, wenn Du es nicht öffentlich haben möchtest).

Was mir auffällt:

- 330 Ohm für Pulldown-Widerstände im TTL Bereich sind viel zu niedrig. Es sollte nicht unter 3k sein, um die teilweise geringen Ausgangsleistungen der Gatter nicht zu überlasten.
- Pulldown oder auch Pullup Widerstände an Ausgängen von (TTL) Logikchips sind normalerweise gar nicht notwendig, es sei denn, es handelt sich um Varianten mit Open Collector Ausgängen. Diese brauchen mindestens einen PullUp Widerstand
- Des weiteren sollte man bei Atari 8-Bit immer mit TTL kompatiblen Chips arbeiten. Also 74HCT74 oder 74LS74 oder 74S74. Bei ALS wäre ich vorsichtig, da muß man mit Seiteneffekten rechnen (z.B. der 74ALS123 verhält sich in Bezug auf die Triggerung und Laufzeiten anders als 74HCT123 oder LS123, es müssen auch andere Werte für das R/C Glied verwendet werden).
- Den 74xx74 kannst Du Dir im Prinzip auch sparen und das GAL dafür nutzen. Zeige ich Dir, wenn ich die Logik kenne :-)

Der entscheidende Fehler ist aber, daß Du /OE und /CE dauerhaft auf Masse hast. Das bedeutet, daß das EPROM immer Daten ausgibt, und damit nicht mal das Bootvorgang des 5200er OS funktionieren wird. Du kannst /CE dauerhaft auf Masse legen oder /OE, und die jeweils andere Leitung muß vom GAL angesteuert werden. Hier ist die Logik simpel: /CE = /Y1 + /Y2 (für /CE geht auch /OE, das "+" ist hier das logische ODER).

Viele Grüße, Jürgen

Benutzeravatar
Kveldulfur
Beiträge: 649
Registriert: 17.08.2021 02:32
Has thanked: 251 times
Been thanked: 177 times
Kontaktdaten:

Re: Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von Kveldulfur »

tfhh hat geschrieben:
23.08.2023 14:19
hmm. Also, wie willst Du das Bankswitching erreichen? Es wäre deutlicher einfacher, einen Rat dazu zu geben, wenn Du die Logik dazu postest (ggf. mir privat, wenn Du es nicht öffentlich haben möchtest).
Hallo Jürgen!

Die Logik des GALs habe ich schlicht vergessen zu posten. Hier gibt es keine Geheimnisse... :-) Wenn tatsächlich jemand mein Modul nachbaut, wäre das ja nur etwas positives :D
Ja, ich bin wirklich nicht bewandert in dem Thema. Ich möchte einfach nur mein Spiel aus dem Wettbewerb, für mich, auf den 5200 in Hardware haben. Das nutzt aber 64k ROM, daher der Aufwand.

Hier der vorerst geänderte Schaltplan:
A5200-Modul.png
Und hier in WinCupl der Quellcode des GALs

Code: Alles auswählen

Name          ATARI5200GAL;
Partno        01;
Revision      02;
Date          23.08.23;
Designer      Kveldulfur;
Company       None;
Location      None;
Assembly      None;
Device		g16v8a;

/** Inputs from ATARI 5200 **/
PIN 1  = CLO ; /** Chipselect Lo **/
PIN 2  = CHI ; /** Chipselect Hi **/            
PIN 3  = A13 ;              
PIN 4  = A12 ;              
PIN 5  = A11 ;              
PIN 6  = A10 ;              
PIN 7  = A9 ;              
PIN 8  = A8 ; 
PIN 9  = A7 ;
PIN 11 = A6 ;
PIN 12 = A2 ;
PIN 17 = A3 ;
PIN 18 = A4 ;
PIN 19 = A5 ;

/** Outputs to 27C512 **/
PIN 13 = CLK ;  
PIN 14 = S15 ;  
PIN 15 = CE  ; 

/**           CAA AAAA AAAA AAAA **/                  
/**           H11 1100 0000 0000 **/
/**           I32 1098 7654 3210 **/

/** Bank 0 =  011 1111 1101 0000 **/
/** Bank 1 =  011 1111 1101 0100 **/
/** Bank H =  011 1111 1101 0000 **/

CE  =  CLO & CHI;

S15 =   (A2      & A4      & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (     A3 & A4      & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (A2 & A3 & A4      & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (               A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI);

CLK =   (     A4 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (     A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI);
Ich weiß, dass man die Logik kompakter machen kann, aber so kann ich diese besser lesen.
Pin 1 und Pin 15 sind hinzugekommen, für die CE-Steuerung... ärgerlich... das hatte ich im ersten Versuch enthalten. Habe es dann entfernt, weil ich dachte, es gibt ja nur einen Chip :lol:
Das hier ist Versuch Nr. 2 und bevor 3,4,5... kommen, wollte ich lieber einmal nachfragen.

Grüße
Janko

Benutzeravatar
tfhh
Beiträge: 121
Registriert: 17.06.2021 02:31
Wohnort: Wistedt, Germany
Has thanked: 115 times
Been thanked: 103 times

Re: Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von tfhh »

Moin Janko,

Danke für die Files.

Wenn ich es richtig interpretiere, ist Deine Logik so aufgebaut, daß ein Zugriff auf $BFF0-$BFFF jedes Mal ein CLK für den 74er erzeugt und A15 zum Eprom durch das Flip-Flop gesetzt oder gelöscht wird. Das heißt, bei jedem Zugriff auf $BFF0-$BFFF, egal ob lesen oder schreiben, wird das Flip-Flop neu geladen. A15 wird auf 1 gesetzt, wenn der Bereich $BFFC-$FFFF angesprochen wird. Wird jedoch $BFF0-$BFFB angesprochen, dann wird auf A15 = 0 umgeschaltet.

Das 5200er "Betriebssystem" liest jedoch VOR der Initialisierung des Cartridges den Titel und das Jahr des Moduls via $BFE8-$BFFD aus. Damit wird allein durch den Startvorgang mehrfach zwischen beiden Bänken hin- und hergeschaltet, wenn Dein Code das nicht berücksichtigt, wird es grätschen.

Ich würde es so machen wie alle anderen Bankswitching-Carts es auch machen. Der Bereich $8000-$BFFF bleibt immer statisch als "Main-Bank". Dort findet auch die Initialisierung und Umschaltung statt. Der Bereich $4000-$7FFF wird dann in drei Bänken umgeschaltet. Wenn Du dazu ein 22V10 verwendest anstelle eines 16V8, dann kann man das Ganze sehr fein ausdekodieren, so daß als "Umschalt-Adresse" z.B. $4000 allein ausreichend - man verliert nur ein Byte.

Wenn Du beim jetzigen Konzept bleiben möchtest, mußt Du den oben genannten Umstand berücksichtigen.

Achja: Entferne die Widerstände R1-R4 im finalen Release (Empfehlung). Sie werden schlicht nicht benötigt, und wenn Du sie doch haben willst, dann muß R4 ein Pull-Up sein (also gegen +5 Volt).

Bei den Gleichungen hast Du, wenn ich das richtig interpretiere mit den Adressen oben, ein Denkfehler drin, denn das wiederholte Kombinieren und Weglassen von Adress-Signalen wird der Bereich, auf den die Logik anspricht, noch viel größer. Also anstelle:

Code: Alles auswählen

S15 =   (A2      & A4      & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (     A3 & A4      & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (A2 & A3 & A4      & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (               A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI);
Schreibst Du einfach:

Code: Alles auswählen

S15 = A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI;
Analog dasgleiche bei dem CLK Signal für den Flip-Flop:

Code: Alles auswählen

CLK = A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI;
Grüße, Jürgen

Benutzeravatar
Kveldulfur
Beiträge: 649
Registriert: 17.08.2021 02:32
Has thanked: 251 times
Been thanked: 177 times
Kontaktdaten:

Re: Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von Kveldulfur »

Hallo Jürgen!

Die Banklogik muss ich beibehalten, weil es damit kompatibel zur "5200 64k Super Cart (32k banks)"-Logik passt, wie es im Altirra auch emuliert wird.

Die Umschaltung passiert hier:

Code: Alles auswählen

BANK_0		EQU $BFD0
BANK_1		EQU $BFD4
Zugriffe oberhalb von $BFD4 sollen ebenfalls Bank 1 auswählen, damit der Zustand beim Start definiert ist.

Mein Code wird wie folgt von WinCupl umgesetzt:

Code: Alles auswählen

S15 =>
    A2 & A4 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI
  # A3 & A4 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI
  # A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI
  CLK =>
    A4 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI
  # A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI
S15
%11111111010100 + $8000 = $BFD4
%11111111011000 + $8000 = $BFD8
%11111111100000 + $8000 = $BFE0

Damit stelle ich also sicher, dass alles über $BFD4 Bank1 nutzt und alles unter $BFD4 Bank 0 nutzt.

CLK
%11111111010000 + $8000 = $BFD0
%11111111100000 + $8000 = $BFE0

Damit wird ein CLK immer bei Zugriffe über $BFD0 ausgelöst.
Wenn der 5200 initialisiert, wird automatisch Bank 1 ausgewählt und bleibt auch da.

Bei Deinem Wert für S15 würde erst ab $BFFC Bank 1 gewählt werden und CLK wäre erst ab $BFF0 ausgelöst,.

Ich hoffe, ich habe da keinen Logikfehler?

Du wolltest mir noch zeigen, wie man den FlipFlop im GAL nachbilden kann :-)

Grüße
Janko

Benutzeravatar
Kveldulfur
Beiträge: 649
Registriert: 17.08.2021 02:32
Has thanked: 251 times
Been thanked: 177 times
Kontaktdaten:

Re: Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von Kveldulfur »

Hi!

Ich denke, ich habe vergessen, dass man auch die gewollten 0er Abfragen muss, damit es klappt.

Also in etwa:

Code: Alles auswählen

S15 =   ( A2 &!A3 & A4 &!A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (!A2 & A3 & A4 &!A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # ( A2 & A3 & A4 &!A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (                A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI);

CLK =   ( A4 &!A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # (!A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
      # ( A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI);
Das ist doch komplizierter als gedacht :-)

Das Ziel ist klar definiert:
Bank 0 bei $BFD0 - $BFD3
Bank 1 bei >= $BFD4

Grüße
Janko

Benutzeravatar
tfhh
Beiträge: 121
Registriert: 17.06.2021 02:31
Wohnort: Wistedt, Germany
Has thanked: 115 times
Been thanked: 103 times

Re: Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von tfhh »

Moin Janko,
Kveldulfur hat geschrieben:
23.08.2023 19:54
Das Ziel ist klar definiert:
Bank 0 bei $BFD0 - $BFD3
Bank 1 bei >= $BFD4
Das wußte ich nicht (die Adressen). Also hier ein Lösungsvorschlag mit nur einem GAL22V10 und dafür ohne 74LS74:

Code: Alles auswählen

CHIP   BSW5200   GAL22V10   REGISTERED_MODE

CLK  A13  A12  A11  A10  A9   A8    A7  A6  A5  A4     GND
NOE   A3   A2  CE   CLO  CHI  RA15  NC  NC  NC  TOCLK  VCC

/CE = /CLO + /CHI;

/TOCLK = A13 & A12 & A11 & A10 & A9 & A8 & A7 & A6 & /A5 & A4 & /A3 & /CHI;       

RA15 := A13 & A12 & A11 & A10 & A9 & A8 & A7 & A6 & /A5 & A4 & /A3 & A2 & /CHI;
Die Pin-Liste erste Reihe von 1-12. Zweite Reihe von 13-24. Das 22V10 ist etwas größer. Pin 23 ("TOCLK") wird mit Pin 1 ("CLK") direkt verbunden. RA15 ist der Ausgang für die Leitung A15 des EPROMs, CE geht an CE vom EPROM, OE auf Masse. Pin 13 ("NOE") kann freigelassen werden beim 22V10.

Der obere Term erzeugt das Taktsignal zum Laden des Latches im GAL, wenn ein Zugriff auf den Bereich $BFD0-$BFD7 stattfindet. Wenn es, wie bei Dir, doch $BFD0-$BFDF sein soll, dann einfach "/A3" entfernen. Der zweite Term liefert eine logische 1, wenn auf >= $BFD4 zugegriffen wird. Das Ergebnis der Gleichung wird nur zusammen mit CLK übernommen (Flanke low->high).

Wie Du siehst, sind vier I/O nicht verwendet. Und theoretisch würde dann ja ein 16V8 ausreichen, es hat ja genau 4 Pins weniger :-) - Problem ist nur, daß beim 16V8 Pin 11 ("NOE") auf Masse gelegt werden muß im Registered_Mode und damit ein Input wegfällt - und damit genau ein I/O zuwenig ist. Wenn Du allerdings jede Menge 16V8 bereits hast... zwei Optionen:

- Mit einem AND oder NAND Gatter zwei Adressleitungen zusammenfassen und das Ergebnis ans GAL führen. Damit wäre der eine fehlende I/O frei. Die dadurch weitere Latenz macht absolut keine Probleme.
- Beibehalten des externen 74LS74. Dann kannst Du für das 16V8 folgende Gleichung verwenden:

Code: Alles auswählen

CHIP   BSW5200   GAL16V8   SIMPLE_MODE

CLO  CHI  A13  A12   A11  A10  A9  A8  A7  GND
A6   A2   CLK  RA15  CE   NC   A3  A4  A5  VCC

/CE = /CLO + /CHI;

/CLK = A13 & A12 & A11 & A10 & A9 & A8 & A7 & A6 & /A5 & A4 & /A3 & /CHI;       

RA15 = A13 & A12 & A11 & A10 & A9 & A8 & A7 & A6 & /A5 & A4 & /A3 & A2 & /CHI;
Prüfe nochmal, ob die Pinliste mit Deinem Schaltbild übereinstimmt.

Grüße, Jürgen

Benutzeravatar
Kveldulfur
Beiträge: 649
Registriert: 17.08.2021 02:32
Has thanked: 251 times
Been thanked: 177 times
Kontaktdaten:

Re: Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von Kveldulfur »

Hallo!

So, das neue PCB ist gekommen und ich habe mich gleich dran gemacht es zu bestücken:
MeinePCBs.png
Leider musste ich feststellen, dass ich den GAL einfach nicht so programmiert bekommen, wie ich es gerne hätte. Aber die Programmierung von Jürgen funktioniert gut genug, so dass ich dies nun übernommen habe. Danke Jürgen!

Das erste bestücke PCB (dort noch mit Sockel) funktionierte super, aber PCB 2 und 3 leider überhaupt nicht. Ständig stürzte das Spiel im Menü nach 2-3 Minuten ab. Im Emulator lief es und auf PCB 1 auch. Was ist an der 2 und 3 anders? Das hat mich wirklich einen Nachmittag gekostet, weil ich von Lötbrücken oder kalte Lötstellen, Fehler in der Programmierung der Chips und ähnlichem ausgegangen bin.
Ich kann es noch nicht beweisen, aber PCB 1 hat ein Winbond-IC aus einer anderen Charge als PCB 2&3. JA, die ICs von 2&3 habe ich für ein Apfel und ein Ei aus China :oops:
Chips.png
Chips.png (155.59 KiB) 581 mal betrachtet
Wenn ich den "guten Chip" auf ein nicht funktionierendes PCB platzierte, lief es... es war also vom EEPROM abhängig, ob es lief. Ob die Chinesen mir da Schrott verkauft haben??? Gehe ich jetzt einfach mal von aus. Das gute Winbond läuft wirklich ohne Probleme auch 30 Minuten und länger im Menü :-)
Jetzt brauche ich dringend Controller für meinen Atari 5200, um weiter testen zu können.
Laeuft.png
Laeuft.png (70.1 KiB) 581 mal betrachtet
Grüße
Janko

Benutzeravatar
tfhh
Beiträge: 121
Registriert: 17.06.2021 02:31
Wohnort: Wistedt, Germany
Has thanked: 115 times
Been thanked: 103 times

Re: Fehler im Schaltplan... und ich finde ihn nicht (A5200 Modul-PCB)

Beitrag von tfhh »

Kveldulfur hat geschrieben:
03.09.2023 10:58
Ich kann es noch nicht beweisen, aber PCB 1 hat ein Winbond-IC aus einer anderen Charge als PCB 2&3. JA, die ICs von 2&3 habe ich für ein Apfel und ein Ei aus China :oops:
Cool, Danke für die Rückmeldung. Schaut gut aus die PCB!

Was die PROMs angeht... jo, mit Sicherheit hast Du da Murks bekommen. Ich habe es aufgegeben, Speicher etc. beim Chinesen zu bestellen. EPROMs, SRAMs, DRAMs... eigentlich hatte ich nie eine Charge, wo es nicht Probleme gab. Manchmal liefen die Chips ein paar Stunden und fielen dann aus, manchmal nach Minuten. Bei Chips mit ID war schnell klar, daß es Fakes sind. Beliebt ist auch, den tatsächlich echten Chip zu verkaufen, aber mit einem besseren Speedgrading, als der Chip wirklich hat. Dann programmiert man den, setzt ihn ein und... ganz sporadische Probleme. Kaum greifbar, selbst mit gutem Scope und Logic-Analyzer muß man einigen Aufwand betreiben, das zu erkennen. Ich habe Lehrgeld und viele Stunden damit verheizt, seitdem kaufe ich meine ICs nur noch aus guten Quellen.

Im Zweifelsfalle sind, gerade bei EPROMs (PROMs würde ich nie gebraucht kaufen, auch wenn sie angeblich leer sein sollen), der Ankauf von gebrauchten Chips sinnvoller. Die 27512er sind nicht so beliebt, daher findet man da oft mal 10, 20 oder gar 100 Stück für wenig Geld auf eBay. Oft mit Kleberesten, aber das ist ja kein Beinbruch.

Grüße, Jürgen

Antworten

Wer ist online?

Mitglieder in diesem Forum: pps und 1 Gast