* TinkerDifferent *
Retro Computing Community
Home | Forums | What's New | Search | Settings
The PAK68/3 Accelerator - [German]

Forums > Vintage Atari > Atari ST Line

Kai Robinson
TinkerDifferent Board President 2023
Worthing, UK
--------
Joined: Sep 2, 2021
Posts: 1,322
Likes: 1,313
Dec 4, 2021 - #1
Some of you may be aware of the PAK68 line of open source accelerators, originally published in the German C't Magazine in the 1990's.

This was intended to be a 'universal' 68000 accelerator, for the Atari ST line, primarily, but with modifications you can make it work in an Amiga or a Macintosh. I've never seen a physical copy of most of these, however the first PAK68 was featured in a magazine, i think i gave that one to @RMCRetro a few years back, but I stumbled across the following scans from the November 1993 edition of C't (incomplete, however, think i'm missing a page), and i've attached the GAL equations as text files.

I've also come across this: http://www.wrsonline.de/pak3.html which has more information, but again - German!











Attachments:
PAK68-3 GAL Equations.zip (5.1 KB)
pak68-3-1.jpg [View]
pak68-3-2.jpg [View]
pak68-3-3.jpg [View]
pak68-3-4.jpg [View]
pak68-3-5.jpg [View]
pak68-3-7.jpg [View]

Liked by fehervariaandNitram78

fehervaria
Tinkerer
North Germany
--------
Joined: Sep 23, 2021
Posts: 160
Likes: 171
Dec 4, 2021 - #2
The page 225, 226 and 229 are missing from your scan.
I find the original c't 11/1993 in digital form, but to read the article you have to register AND subscribe...
https://www.heise.de/select/ct/archiv/1993/11/seite-222

Kai Robinson
TinkerDifferent Board President 2023
Worthing, UK
--------
Joined: Sep 2, 2021
Posts: 1,322
Likes: 1,313
Dec 4, 2021 - #3
>> fehervaria said:
The page 225, 226 and 229 are missing from your scan. I find the original c't 11/1993 in digital form, but to read the article you have to register AND subscribe... https://www.heise.de/select/ct/archiv/1993/11/seite-222 Click to expand...
Urgh. Sounds like a pain - but presumably that's a PDF download once you do?

fehervaria
Tinkerer
North Germany
--------
Joined: Sep 23, 2021
Posts: 160
Likes: 171
Dec 4, 2021 - #4
>> Kai Robinson said:
Urgh. Sounds like a pain - but presumably that's a PDF download once you do? Click to expand...
Sadly no. Have to subscribe for a "Yearly extended" to access to the archives.

BUT:
I find after diving into the german internet, and a backlink to a forum, where you talk with few guys:
http://eab.abime.net/showthread.php?t=58872&page=3

There you've wrote:
Kai 01:26 27 October 2017 Raising this thread from the dead, I don't have access to the free.fr dropbox any longer, but I do still have the copy of C'T magazine if anyone here wants me to re-upload images, or even if they want the magazine itself, it's in an envelope in the bottom of my cupboard, getting old. Click to expand...

Maybe you still have to original paper print??

Kai Robinson
TinkerDifferent Board President 2023
Worthing, UK
--------
Joined: Sep 2, 2021
Posts: 1,322
Likes: 1,313
Dec 5, 2021 - #5
Ahhh thats for the older magazine with the original PAK68, not the 68/3 as detailed here. @RMCRetro has that magazine somewhere, i think!

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #6
@Kai Robinson Hi. Here is the complete PAK30 C't magazine pages.


Josh.
Attachments:
drive.google.com [View]

Liked by Kai Robinson

Kai Robinson
TinkerDifferent Board President 2023
Worthing, UK
--------
Joined: Sep 2, 2021
Posts: 1,322
Likes: 1,313
Jan 16, 2022 - #7
Whoa! Thanks! Excellent find!

Liked by MacinJosh

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #8
No worries. A mate of mine scanned them for me a few years back. I've built a PAK30 but never tried to get it working as I got a TF536 running perfectly on my STacy.

Josh.

Melkhior
Tinkerer
--------
Joined: Jan 9, 2022
Posts: 101
Likes: 52
Jan 16, 2022 - #9
@MacinJosh: awesome thank you, if there's a 68030 external cache in here it's going to be interesting - I wondered how to build a IIci cache card and having a schematic and the (P|G)AL equation would help a lot.

But in the sequence, it seems page 225 is absent; from the era, it could have been full of advertisement, can you confirm?

Liked by MacinJosh

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #10
>> Melkhior said:
@MacinJosh : awesome thank you, if there's a 68030 external cache in here it's going to be interesting - I wondered how to build a IIci cache card and having a schematic and the (P|G)AL equation would help a lot. But in the sequence, it seems page 225 is absent; from the era, it could have been full of advertisement, can you confirm? Click to expand...
I don't have the actual magazine but I did purchase the DVD containing all the magazines in digitized form. Unfortunately while 1990-2004 was in text form, the images were really low quality, unusable. I'll paste the text in the following posts. It should show that all scans are there.

EDIT: I believe there is external cache as I remember hunting down the same cache chips as found on 486 machines, IIRC. Listed as:
Toshiba TC5588-25 (SRAM) and SGS MK48S74-25 (TAGRAM)

Josh.

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #11
[Image: minpic01.jpg]

Doppel-PAK

PAK-68/3 mit Cache und 68020/030 fur 68000-Rechner

Holger Zimmermann

Ganz im Zeichen der funften Zweierpotenz prasentiert sich die nunmehr dritte Auflage unseres Dauerbrenners PAK-68: 32 MHz, 32 Bit und 32 KByte Cache sind die gewichtigen Grunde, den optimalen 68000-Beschleuniger zum Selbstbau vorzustellen.

Die PAK-68 hat seit ihrer (nicht ganz ohne Komplikationen verlaufenen) Geburt im Juli 1987 viele Freunde gefunden. Anfangs [1] noch mit gemachlichen 8 MHz, spater mit 16 MHz [2] und nun mit Taktfrequenzen fast nach Belieben getaktet, bleibt die Prozessor-Austauschkarte der konsequenteste Weg, einem vorhandenen Rechner zeitgemaße Leistung einzuhauchen.

Und die ist nicht von Pappe: Neben der eklatanten Beschleunigung kommen Atari-ST-Freunde in den Genuß der modernen TOS-Versionen 2.06 und (mit kleinen Patches) 3.06 im 32-Bit-Zugriff; mit der 68030-Version gibt´s zusatzlich eine PMMU furs Multi-TOS. Kompakt-Macs profitieren unter dem ressourcenfressenden System 7 besonders von der - je nach Ausstattung - Verdrei- bis Versechsfachung der Arbeitsgeschwindigkeit. Dabei blieb es unser Bestreben, so 68000-kompatibel wie moglich zu bleiben, damit auch kritische Rechner (Atari mit IMP-Chipsatzen, Amiga) nicht außen vor bleiben - obwohl es sicher immer noch Applikationen und Erweiterungen geben wird, die nicht 68020/030-konform aufgebaut sind. Erkundigen Sie sich also vor der PAK-Anschaffung, ob Ihr Liebligs-Editor auch auf großeren Maschinen (Atari TT, Falcon, Mac II) `spielt´.

Umweltfreundlich

Ein 68020 mit 8 oder 16 MHz ist aber mittlerweile auch nicht mehr ganz `state of the art´. Ganz oben auf der Wunschliste stand daher ein 68030, gefolgt von hoherer Taktfrequenz und einem Second-Level-Cache. Zum Gluck gibt es heute preiswerte Bauteile, die eine Implementation derlei Begierden ohne nennenswerte Hardwareverrenkungen und ohne Kontoaustrocknung ermoglichen. Zum alten Eisen respektive Plastik gehort Ihr ST oder Schuhkarton-Mac also noch lange nicht.

Hier ist sie also, die PAK-68/3. Bei nahezu gleichen Abmessungen wie die PAK/2 hat sich `unter der Haube´ einiges getan: Wahlweise eine 68020- oder 68030-CPU mit 16 bis 33 MHz Taktfrequenz bei 8 MHz Systemtakt, eine 68881- oder 68882-FPU, 256 oder 512 KByte ROM sowie ein 32 Bit breiter und 32 KByte großer Second-Level-Cache.

Beim Nachbau der PAK/3 steht eine schwerwiegende Entscheidung gleich zu Anfang an: Soll es ein 68020 oder ein 68030 sein? Da es fur beide Prozessoren jeweils eine eigene Platinenversion gibt, ist kein nachtraglicher Wechsel moglich. Gewissermaßen als Ausgleich dazu konnen aber alle anderen Features auch nachtraglich durch Austauschen der GALs hinzugefugt oder weggelassen werden. In Anbetracht der mitunter sehr preiswert angebotenen Gebrauchtprozessoren (siehe Kleinanzeigen) empfehlen wir bei nicht schon vorhandener alter PAK-68 die 030er-Version, die gegenuber der 020er bei gleicher Taktfrequenz einen Geschwindigkeitsvorteil von rund 15 Prozent bringt. Ansonsten konnen Sie die meisten Bauteile der alten PAK weiterverwenden, die GALs allerdings nur, wenn Sie eine geeignete Programmiereinrichtung besitzen. Naturlich muß der Prozessor die gewunschte Taktfrequenz verkraften.

Große Plane

Der Schaltplan der 030er-Version der PAK/3 deckt im Prinzip die 020er mit ab. Da beim 68020 die Anschlusse /STERM, /CIIN, /CIOUT, /MMUDIS, /CBREQ und /CBACK nicht vorhanden sind, entfallen in diesem Fall die entsprechenden Leitungen mitsamt zugehorigen Pullups und Jumpern. Die Pinbelegung beider CPUs ist leider deutlich unterschiedlich, was sich im Schaltplan nur im Kleingedruckten bemerkbar macht, beim Platinenlayout aber im Endeffekt zu den beiden unterschiedlichen Platinenversionen gefuhrt hat. Bis auf die GALs, R1, R2 und eben die CPU sind beide Platinenversionen absolut gleich bestuckt.

Das State-Machine-Konzept der PAK/2 hat sich in der Praxis bewahrt, so daß es im Kern auch fur die PAK/3 beibehalten werden konnte. CPU, FPU und die ROMs sind weitgehend wie beim Vorganger verschaltet. Die synchrone Takterzeugung mit einem 74F86 als Verdoppler fur den 8-MHz-Systemtakt ist ebenfalls identisch. Auch der Quarzoszillator war schon auf der PAK/2 zu finden, dort aber lediglich fur die FPU zustandig. Bei entsprechender GAL-Bestuckung kann die PAK nun auch asynchron zum Systemtakt (getestet bis 33 MHz) betrieben werden; mehr dazu in der nachsten c't. Die GALs U4, U5 und U6 haben ihre Funktion (und ihre Namen) weitgehend beibehalten. Bei den Gleichungen fur U5 wird man noch einiges wiedererkennen, wahrend bei U4 kaum ein Stein auf dem anderen geblieben ist. Ganzlich neu sind GAL U1, das die Kontrolle uber die lokalen Buszyklen ubernimmt (also bei ROM-Read und bei Cache-Hit) und GAL U2, das den Cache koordiniert.

Der 68020 hatte bereits einen Cache fur Befehle in der CPU integriert, beim 68030 ist noch ein Datencache dazugekommen. Leider sind die internen Caches mit 256 Bytes nicht besonders uppig bemessen. Benchmarks benutzen haufig kurze Schleifen zum Testen der Performance, hier liegt der CPU-Cache noch gut im Rennen; in der Praxis bleibt davon jedoch nicht allzuviel ubrig. Die PAK/3 hat deshalb einen 32 KByte großen Second-Level-Cache spendiert bekommen, und wer ihn mal probehalber ausschaltet, merkt, wie richtig diese Entscheidung war. Typische Anwendungen laufen bei Maximalausbau (32 MHz plus L2-Cache) in wenigstens sechsfacher 68000-Geschwindigkeit, einige Benchmarks zeigen gar zweistellige Performance-Gewinne. Im Vergleich zur alten PAK, die rund 250 Prozent der Leistung eines 68000 brachte, ein nennenswerter Fortschritt.

Hucke-PAK

Fur den L2-Cache sind zwei Tag-RAMs, vier schnelle SRAMs und zwei Datenbustreiber hinzugekommen. Die SRAMs (schmale Bauform, 300 mil) benotigen weitgehend dieselben Signale wie die ROMs (Breite 600 mil), so daß sich hier eine zweigeschossige Bauweise anbot. Nur dadurch war es auch moglich, die Abmessungen der PAK/2 beizubehalten. Nebenbei konnten wir auch einen kleinen Schonheitsfehler beseitigen: Die PAK uberdeckt nun nicht mehr den PDS-Steckplatz im Mac SE.

Die vier SRAMs (je 8 KBit x 8, also 8 KByte) bilden zusammen einen 32 KByte großen Cache-Speicher, auf den die CPU sehr schnell und in voller Breite zugreifen kann. GAL U2 sorgt dafur, daß die aus dem Hauptspeicher geholten Daten sozusagen nebenbei im Cache abgelegt werden. Daten beispielsweise von der Hauptspeicheradresse 1 landen so auch im Cache unter Adresse 1. Da der Cache aber nur 32 768 Byte umfaßt, landen auch Daten von der Hauptspeicheradresse 32768+1 im Cache unter Adresse 1, wobei der vorherige Inhalt des Cache naturlich uberschrieben wird. Wie kann das gutgehen?

Schildchen-Speicher

An dieser Stelle kommen die Tag-RAMs ins Spiel, das sind zunachst einmal ebenfalls statische RAMs mit 8K x 8, deren Datenleitungen aber an die CPU-Adreßleitungen A15 bis A21 angeschlossen sind. Jedesmal, wenn Daten in den Cache ubernommen werden, kommen die dazugehorigen oberen Adreßbits im Tag-RAM zu liegen. Zu jedem einzelnen Datenwort im Cache steht hier also die Information, zu welcher 32-KByte-Page des Hauptspeichers der Inhalt des Cache gehort.

Wenn die CPU einen Lesezugriff initiiert, wird das Tag-RAM jetzt nicht ausgelesen, sondern im sogenannten Compare-Modus betrieben, wobei es die von außen angelegten Adreßbits A15 bis A21 mit den gespeicherten Adreßbits vergleicht. Der dazu notwendige Komparator ist im Tag-RAM integriert und meldet das Ergebnis uber den Anschluß MATCH nach außen, im Falle der Übereinstimmung erhalt man hier high-Pegel. Das ist das Zeichen fur die CPU und ihre Read-Logik, daß sich die gesuchten Daten bereits im Cache befinden. Meldet das Tag-RAM keinen Treffer (MATCH ist low), dann gehort das Datenwort im Cache zu einer anderen Page, woraufhin die CPU jetzt doch im Hauptspeicher nachsehen muß. In der Hoffnung, das gerade geholte Datenwort werde in naher Zukunft nochmals gebraucht, legt es die Steuerlogik dann auch gleich im Cache ab.

[Image: minpic02.jpg]
Die Cache-SRAMs liegen unter den EPROM-Fassungen. Probieren Sie vor dem Einsatz von SRAM-Sockeln aus, ob die `Turmchen´ in Ihren Rechner passen. Vor allem im Kompakt-Mac geht es recht eng zu.

Wegen des 16 Bit breiten Sytembusses muß der Cache wortweise verwaltet werden, fur den 32 Bit breiten Cache der PAK werden also zwei Tag-RAMs benotigt. Die sieben Adreßbits, die das Tag-RAM auswertet, decken 128 Pages, also den Adreßraum von 0 bis 4 MByte ab. Im Bereich oberhalb $40 0000 ist der Second-Level-Cache unwirksam, was bei den in Frage kommenden Macs und Ataris keine Einschrankung bedeutet; die CPU hat das ROM auf der PAK ja ohnehin im direkten Zugriff.

[Image: minpic03.jpg]
Gleicher Plan fur zwei Versionen: Bis auf die CPU sind beide neuen PAKs identisch.Der 64polige Sockel zur Verbindung mit der Hauptplatine gehort auf die Lotseite in die DIL-Reihen, die zur Platinenmitte weisen (siehe auch Detailfoto). R1 und R2 werden nur bei der 030-Version bestuckt.

Das achte Bit der Tag-RAMs bildet das Valid-Bit und liegt daher an V__CC. Um alle Daten im Cache fur ungultig zu erklaren (z. B. bei DMA-Zugriffen oder Reset), werden die Tag-RAMs uber den Anschluß /TCLR geloscht und damit alle Bits auf low gesetzt. Damit erkennt der Komparator beim nachsten Lesezugriff in jedem Fall ein Cache Miss (kein Treffer) und ladt daraufhin den Cache neu.

UngeBursted

Im Ablauf eines Buszyklus gibt es auf der PAK/3 keine Unterschiede zwischen 68020 und 68030. Der synchrone Busmodus des 68030, der einst den Mac IIci so beschleunigte (Burst-Mode mit /STERM), darf hier leider nicht genutzt werden; zum einen sind die ROMs und Tag-RAMs bei 32 MHz zu langsam, zum anderen gabe es ein Problem, wenn nach einem Lesezugriff auf den Hauptspeicher ein lokaler Lesezugriff auf der PAK/3 folgte, weil die Datenbustreiber des Mainboards (im Mac genauso wie im Atari) noch vom vorherigen Zugriff her eingeschaltet waren und somit dazwischenfunken wurden.

Zur Veranschaulichung der Ablaufe soll zunachst eine PAK/3 mit 16 MHz Taktfrequenz herhalten. Ein Buszyklus beginnt, indem die CPU die Adresse anlegt und, nachdem die Suche im CPU-internen Cache erfolglos verlaufen ist, /AS_20 mit fallender Flanke von CLK16 aktiviert. Falls dies ein ROM-Zugriff ist (/ROM von U6 aktiv) und sich ROMs auf der PAK befinden (J7 auf 1-2), schaltet U1 die ROMs ein und bestatigt sofort mit /DSACK0 und /DSACK1. Mit der nachsten fallenden Flanke von CLK16 wird dies von der CPU erkannt, worauf sie den Buszyklus genau einen CLK16-Takt spater durch Desaktivieren von /AS_20 beendet. U1 halt /CYC_00 die ganze Zeit auf high, so daß U4 keinen Zugriff auf das Mainboard startet.

Angenommen, es findet ein Lesezugriff auf den Bereich $0 bis $40 0000 statt (/DRAM von U6 aktiv), der L2-Cache ist aktiviert (/TCLR auf high), aber mindestens eines der beiden Tag-RAMs meldet keinen Treffer (MAT0 oder MAT2 auf low): In diesem Fall geht /CYC_00 nach kurzer Wartezeit auf low und startet damit in U4 einen Zugriff auf das Mainboard, der im Prinzip wie bei der PAK/2 ablauft. Hier sorgt jetzt aber U2 dafur, daß das gelesene Datenwort auch in den SRAMs abgelegt und gleichzeitig die zugehorige Adresse im entsprechenden Tag-RAM festgehalten wird.

[Image: mnqpic01.jpg]

[Image: mnqpic02.jpg]
Bis auf den Prozessor und sein Pinout sind 020er- und 030er-PAK gleich. Hier finden Sie die Schaltung deshalb nur einmal.

[Image: minpic04.jpg]
Der Taktverdoppler fur den synchronen 16-MHz-Betrieb wurde von der alten PAK ubernommen.

Der Umstand, daß der Datenbus auf dem Mainboard nur 16 Bit, der Cache aber 32 Bit breit ist, bedarf einer naheren Betrachtung. Liegt die Adresse eines Datenwortes namlich nicht auf einer Langwortgrenze (also A1 = high), so entsteht folgendes Problem: Das Mainboard liefert das Datenwort auf den CPU-Datenleitungen D16 bis D31, die CPU erwartet es im Cache aber spater auf D0 bis D15. In diesem Falle werden die beiden Bustreiber auf der PAK/3 im wahrsten Sinne des Wortes aktiv und losen das Problem, indem sie eine temporare Querverbindung zwischen unterem und oberem Datenwort herstellen.

Querschlager

Bis hier ist die PAK/3 noch kein Stuck schneller als ihr Vorganger. Aber beim nachsten Lesezugriff auf diese Adresse erkennt der Komparator im Tag-RAM an der Gleichheit von angelegter und abgespeicherter Adresse einen Treffer. Wenn jetzt auch noch das zweite Tag-RAM, zustandig fur die andere Halfte des 32 Bit breiten Cache, einen Treffer signalisiert (MAT0 und MAT2 beide auf high), dann genugt der CPU ein schneller Blick in den Cache, um die gewunschten Daten zu bekommen. In diesem Fall bleibt /CYC_00 auf high, U4 halt sich vornehm zuruck, und das Mainboard bekommt von diesem Zugriff gar nichts mit. Statt dessen schaltet U1, analog zum ROM-Zugriff, die SRAMs ein und bestatigt mit /DSACK0 und /DSACK1. Der Rest ist Formsache. Ein solcher Lesezugriff dauert nur drei CLK16-Takte, im Vergleich zu acht CLK16-Takten, die ein Zugriff auf das Mainboard im gunstigsten Fall dauert. Dabei bekommt die CPU aus dem Cache 32 Bit auf einen Schlag prasentiert, ohne Cache hingegen werden fur das zweite Wort nochmal acht Takte fallig.

Bei Schreibzugriffen ist der Cache dagegen machtlos, mit der hier implementierten Write-Through-Strategie ist in jedem Fall ein Zugriff auf das Mainboard angesagt. Falls die Tag-RAMs dabei einen Treffer melden, sich das zu dieser Adresse gehorende Datenwort also auch im Cache befindet, kummert sich U2 darum, daß der Cacheinhalt ebenfalls aktualisiert wird. Somit kann bereits der nachste Lesezugriff wieder aus dem Cache abgewickelt werden. Sogenannte Write-Back-Caches, die selbstandig ihren Inhalt in den Hauptspeicher zuruckschreiben und somit auch Schreibzugriffe puffern, sind in ihrer Realisierung ungleich aufwendiger und in diesem Fall - wegen des 16-Bit-Nadelohrs - noch nicht einmal besonders wirkungsvoll.

An der CPU vorbei

Ein unerfreuliches Thema, von dem die Macs (jedenfalls die hier in Frage kommenden Typen) verschont bleiben, sind die DMA-Zugriffe. Da hier der Inhalt des Hauptspeichers an der CPU vorbei manipuliert wird, muß nach einer solchen Aktion sicherheitshalber der gesamte Cache fur ungultig erklart werden. Bei der PAK/3 wird dies erreicht, indem der Inhalt der Tag-RAMs geloscht, also auf low gesetzt wird. Damit ist die Koharenz von Cache und Hauptspeicher immer gewahrleistet. Wenn jetzt aber allenthalben DMA-Zugriffe stattfinden, geht die Performance naturlich in den Keller. Aus diesem Grund ist der Blitter im Atari ST mit PAK-68/3 vollig witzlos und sollte daher ausgeschaltet oder ganz ausgebaut werden; die neue CPU ist ohnehin schneller.

Aufbau und Pflege

Fur Mac und ST sind jeweils vier Permutationen in der Bestuckung moglich: Vollig nackt, das heißt ohne Cache und ohne ROMs (fur erste Tests empfehlenswert), mit ROMs und ohne Cache, mit Cache, aber ohne ROMs und schließlich der Vollausbau mit allem Drum und Dran, jeweils mit den zum Rechner und zur gewunschten Taktfrequenz passenden GALs. Die Optionen sind in der Stuckliste angegeben. In der Tabelle neben der Stuckliste finden Sie samtliche in Frage kommenden GAL-Bezeichungen wieder. Im Gegensatz zur alten PAK werden hier auch bei Abwesenheit der ROMs oder des Cache alle GALs bestuckt, da der PAK-Logik diese Optionen durch Jumper angezeigt werden; im zweiten Teil dieses Beitrags gehen wir noch erschopfend auf Rechnerspezifika ein.

Die Platine erreicht dank Multilayer-Technik fast die Packungsdichte eines Freibierausschanks; um die Maße der alten PAK nicht zu uberschreiten, mußten die Tag-RAMs unter die EPROM-Sockel verbannt werden, und auch einige Stutzkondensatoren finden bei Verwendung von geschlossenen PGA-Sockeln fur die Prozessoren nur auf der Lotseite Platz. CPU und FPU lassen sich ubrigens aus PGA-Typen mit Kelchfederkontakten (`Prazisionsfassungen´), wenn uberhaupt, nur mit roher Gewalt entfernen. Besser sind hier normale Ausfuhrungen, wie sie etwa AMP herstellt. Sicherheitshalber sollten Sie auch den Tag-RAMs Sockel spendieren; die Stege der daruberliegenden EPROM-Fassungen mussen vorsichtig entfernt werden.

Wie bei der alten PAK stellt ein lotseitiger 64poliger DIL-Sockel mit eingestecktem beidseitig `piekendem´ Adaptersockel oder ebensolchem SIL-Streifen die Verbindung zum Mainboard her. Aus Stabilitatsgrunden ist diesmal das operative Entfernen der alten 68000-CPU - sofern nicht schon geschehen - unumganglich, eine 64polige DIL-Fassung tritt an ihre Stelle. Ein GAL-Satz, der den Betrieb bei auf dem Mainboard verbleibender CPU gestattet, ist im Gegensatz zur PAK-68/2 nicht vorgesehen. Bewahrt hat sich die Amputation samtlicher 68000-Beinchen mit einem kleinen Seitenschneider. Einzeln lassen sich die Pins dann leicht aus der Platine ziehen. Wem bei dieser Prozedur ob der leidenden CPU die Tranen kommen, der kann dem beinlosen 68000 spater eine Prothese in Form einer DIL-Fassung unterloten und ihn fur Testzwecke weiterverwenden.

Optional ist ubrigens der Betrieb der 68000 umschaltbar neben dem 68020/030 moglich, wenn man einige Leitungen zur bislang leeren Spare-Fassung fadelt und ein entsprechend programmiertes GAL einsetzt (Tips dazfolgen). Leider waren die Verbindungen beim besten Willen nicht mehr auf der Platine unterzubringen, und da nicht jeder eine `Vorher/Nachher´-Option braucht, haben wir fur diese nur eine freiverdrahtbare Leerfassung vorgesehen. Die auf der Platine vorhandene 68000-Fassung auf der Bestuckungsseite kann alternativ auch zur Aufnahme von MSDOS-Emulatoren und ahnlichen Erweiterungen dienen, die sich direkt der Prozessorsignale bedienen.

Der Einsatz mittelschneller CPUs (20 und 25 MHz) bei asynchroner Taktung, das heißt, bei Verwendung des 32-MHz-GAL-Satzes und entsprechend ausgelegtem Quarzoszillator, fuhrt in der Regel zu Problemen; auch ist eine asynchron laufende 20-MHz-CPU bedingt durch unvermeidliche Wartezyklen kaum schneller als die synchron getaktete 16-MHz-Version.

Was es bei der Anpassung des TOS 3.06 zu beachten gilt, wie die asynchronen Zugriffe der 32-MHz-Version funktionieren und wie man den Mac zur Nutzung der FPU und des Datencache uberredet, erfahren Sie in der nachsten c't. (cm)

Literatur

[1] Manfred Volkel, Carsten Meyer, Tausch mit Turbo, PAK-68/2 - mehr Dampf fur 68000-Rechner, c't 10/91, S. 178
[2] Manfred Volkel, Carsten Meyer, Tausch mit Turbo, PAK-68/2 in Mac, Atari und Amiga, c't 11/91, S. 314
[3] Manfred Volkel, Tausch mit Turbo, Tips zur PAK-68/2 im ST, c't 12/91, S. 222
[4] Manfred Volkel, Turbo fur den Austauschmotor, Schneller Atari mit modifizierter PAK-68, c't 3/91, S. 282
[5] Carsten Meyer, Schnelle Freundin, Amiga mit PAK und 14 MHz, c't 9/90, S. 338
[6] Roland Beck, Hilfskraft: 68000-Prozessor trotz PAK-68/2, c't 7/92, S. 196
[7] Leo Drisis, Real-Renner, 68881-Einbindung fur die PAK im Mac, c't 5/90, S. 190
[8] Carsten Meyer, Fast-PAK, 68000 und PAK-68 mit 16 MHz im Macintosh, c't 1/90, S. 194
[9] Johannes Assenbaum, Mehr CPU, PAK-68 - die Prozessor-Austausch-Karte fur 68000-Rechner, c't 8/87, S. 68
Attachments:
minpic01.jpg [View]
minpic02.jpg [View]
minpic03.jpg [View]
mnqpic01.jpg [View]
mnqpic02.jpg [View]
minpic04.jpg [View]

Liked by Melkhior

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #12

Kasten 1


PAK-68/3-Jumper

Jumper Name                       Funktion
J1     MMU disable       gesteckt MMU disabled
                         offen    enabled
J2     CPU Cache disable gesteckt CPU-interner Cache disabled
                         offen    enabled
J3     FPU enable        gesteckt FPU aktiviert
                         offen    desaktiviert oder
                                  nicht vorhanden
J4     L2 Cache disable  gesteckt Second-Level-Cache ausgeschaltet
                         offen    eingeschaltet
J5     PAK enable        gesteckt PAK ist am 68000 Bus aktiv
                         offen    alle Ausgange hochohmig
J6     BR                gesteckt Normalbetrieb
                         offen    Betrieb mit 68000 auf der PAK
                                  (extra Verdrahtung notwendig)
J7     ROM               1-2      ROM auf der PAK aktiviert
                         2-3      desaktiviert oder nicht vorhanden
J8     ROM_CS            1-2      /ROM_CS auf GND
                                  fur langsame EPROMs
                         2-3      mit /ROM_OE verbunden
                                  spart Strom
J9     CPUCLK            1-2      CPU-Takt 32 MHz (asynchron)
                         2-3      16 MHz (synchron)
J9     FPUCLK            1-2      FPU-Takt 32 MHz (asynchron)
                         2-3      16 MHz (synchron)
                                  (die FPU sollte nicht
                                  langsamer laufen als die CPU)
J11    Cache Control     1-2      L2-Cache wird uber die MMU
                                  kontrolliert
                         2-3      Umschaltung uber
                                  Schreibzugriff auf das ROM
                         offen    L2-Cache immer an

Kasten 2


GAL-Bestuckung

U1 P12_16 68020 mit 16 MHz
   P12_32 68020 mit 32 MHz
   P13_16 68030 mit 16 MHz
   P13_32 68030 mit 32 MHz
U2 P2_JP  fur Mac, L2-Cache wird uber Jumper geschaltet
          bleibt im Normalfall immer eingeschaltet
   P2_RST fur Atari ST, L2-Cache bleibt nach Reset bis
          zum ersten DMA-Zugriff ausgeschaltet
U4 P4_16  fur 16 MHz
   P4_32  fur 32 MHz
U5 P5_16  fur 16 MHz
   P5_32  fur 32 MHz
U6 P6_MAC fur Mac
   P6_ST  fur Atari

Beispiel: Sie wollen im Atari eine 030-PAK mit 16 MHz einsetzen. Benotigt werden also P13_16, P2_RST, P4_16, P5_16 und P6_ST.

Kasten 3


Bei der Bestuckung sollten Sie in der Reihenfolge der Optionen vorgehen und jede Variante grundlich testen.

Stuckliste

Halbleiter
U8                 MC68020/68030, Taktfrequenz ab 16 MHz
U22                74F86
U1, U2, U4, U5, U6 GAL 20V8-15 Prog.
U23                Quarz-Osz. 32 MHz   (Option 32 MHz)
U9                 MC68882             (Option FPU)
U10, U11, U12, U13 27C010-120          (Option ROM)
                   oder 27C512-120
U14, U15, U16, U17 Cypress CY7C185-25, (Option Cache)
                   oder Toshiba TC5588-25
U18, U19           SGS MK48S74-25,     (Option Cache)
                   oder SGS MK48S80-25
U20, U21           74F541
Widerstande
RN1                Array 4k7 x 8
R1, R4, R7, R10,   4k7
R23...R27
R8                 2k2
R2, R5, R6         1k
R31, R32           330R
R41, R43           560R
R44...R47          33R
Kondensatoren
C1...C15           100n ker. RM2.5
C20...C24          Ta 10uF/16V
Sonstiges
1                  IC-Fassung 128pol. PGA (evt. 124pol.)
1                  IC-Fassung 68pol. PGA
1                  Adapterfassung 64pol. DIL (oder SIL-Stecker o.a.)
8                  Fassung 16pol. SIL fur ROMs oder
4                  IC-Fassungen 32pol.
6                  IC-Fassung 28pol. DIL schmal (oder 2 x 14er)
5                  IC-Fassung 24pol. DIL schmal
2                  IC-Fassung 20pol. DIL
2                  IC-Fassung 14pol. DIL
1                  Platine PAK-68/3-20 oder PAK-68/3-30
Pfostenleisten einreihig, Jumper nach Bedarf

Kasten 4


Diese sieben GAL-Listings gelten fur die 16-MHz-Version mit 68020 im Atari und Mac.

PAK 68/3, GAL 1:  CPU-Clk State Machine fr 68020 mit 16 MHz

26-08-93   V12_16a   Holger Zimmermann @ PE
                             ___  ___
                            |   \/   |
                  16m = CLK |1     24| VCC
                       mat2 |2     23| !mat0
                        16m |3     22| !dsack0
                         a1 |4     21| !dsack1
                     !as_00 |5     20| !cyc_00
                      !tclr |6     19| !sterm
                        !wr |7     18| !as_22
                     !as_20 |8     17| !doe
                      !prom |9     16| !as_21
                     !csp19 |10    15| !roe
                      g1p11 |11    14| !dram
                        GND |12    13| !OE auf VCC
                            |________|
%ID
      P12_16
%TYP
      GAL20V8A
%PINS
 CLK  mat2  16m  a1  !as_00  !tclr  !wr  !as_20  !prom  !csp19  g1p11
 !OE  !dram  !roe  !as_21  !doe  !as_22  !sterm  !cyc_00  !dsack1  !dsack0  mat0
%LOGIC

 sterm.OE  = GND;

 as_21.OE  = VCC;
 as_21     = as_20 * 16m
           + as_21 * !16m
           + as_20 * as_21;

 as_22     = as_20 * as_21 * !16m
           + as_22 * !16m
           + as_20 * as_22;

 doe       = as_20 * !as_00 * dram * !tclr * !wr * mat0 * mat2 * as_22
           + as_20 * !as_00 * dram * !tclr * !wr *   a1 * mat2 * as_22;

 !cyc_00   = !as_21
           + csp19
           + !as_00 * dram * !tclr * !wr * mat0 * mat2
           + !as_00 * dram * !tclr * !wr *   a1 * mat2
           + prom * !wr;

 dsack0.OE = as_21 * !cyc_00 * !csp19;
 dsack0    = as_20 * dram * !tclr * !wr * mat0 * mat2 * 16m
           + as_20 * dram * !tclr * !wr *   a1 * mat2 * 16m
           + as_20 * dram * !tclr * !wr * mat0 * mat2 * dsack1
           + as_20 * dram * !tclr * !wr *   a1 * mat2 * dsack1
           + as_20 * prom * !wr * 16m
           + as_20 * prom * !wr * dsack1;

 dsack1.OE = as_21 * !cyc_00 * !csp19;
 dsack1    = as_20 * dram * !tclr * !wr * mat0 * mat2 * 16m
           + as_20 * dram * !tclr * !wr *   a1 * mat2 * 16m
           + as_20 * dram * !tclr * !wr * mat0 * mat2 * dsack1
           + as_20 * dram * !tclr * !wr *   a1 * mat2 * dsack1
           + as_20 * prom * !wr * 16m
           + as_20 * prom * !wr * dsack1;

 roe       = as_20 * prom * !wr * !OE;

%END

Kasten 5


PAK 68/3, GAL U2:  Cache Control Logic, L2-Cache ber Jumper schaltbar

08-09-93   V2_JPa     Holger Zimmermann @ PE
                          ___  ___
                         |   \/   |
                    !rom |1     24| VCC
                    mat2 |2     23| mat0
                      a0 |3     22| !twe0
                      a1 |4     21| !dwe0
                  !as_00 |5     20| !tclr
               !bgack_20 |6     19| !dwe2
                     !wr |7     18| !c2off
                  !as_20 |8     17| !dwe1
                  !dsack |9     16| !dwe3
                  !reset |10    15| !twe2
                    siz1 |11    14| !dram
                     GND |12    13| siz0
                         |________|
%ID
      P2_JP
%TYP
      GAL20V8A
%PINS
 !rom  mat2  a0  a1  !as_00  !bgack_20  !wr  !as_20  !dsack  !reset  siz1
 siz0  !dram  !twe2  !dwe3  !dwe1  !c2off  !dwe2  !tclr  !dwe0  !twe0  mat0
%LOGIC

 dwe0.OE = VCC;
 dwe0  = dram * !tclr * as_20 *  as_00 *  wr *  mat0 * !a1 * !a0
       + dram * !tclr * as_20 *  as_00 * !wr * !mat0 * !a1 * dsack
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe0 * !a1 * dsack;

 dwe1  = dram * !tclr * as_20 *  as_00 *  wr *  mat0 * !a1 * siz1
       + dram * !tclr * as_20 *  as_00 *  wr *  mat0 * !a1 * a0
       + dram * !tclr * as_20 *  as_00 *  wr *  mat0 * !a1 * !siz0
       + dram * !tclr * as_20 *  as_00 * !wr * !mat0 * !a1 * dsack
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe1 * !a1 * dsack;

 dwe2  = dram * !tclr * as_20 *  as_00 *  wr *  mat2 *  a1 * !a0
       + dram * !tclr * as_20 *  as_00 * !wr * !mat2 *  a1 * dsack
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe2 *  a1 * dsack;

 dwe3  = dram * !tclr * as_20 *  as_00 *  wr *  mat2 *  a1 * siz1
       + dram * !tclr * as_20 *  as_00 *  wr *  mat2 *  a1 * a0
       + dram * !tclr * as_20 *  as_00 *  wr *  mat2 *  a1 * !siz0
       + dram * !tclr * as_20 *  as_00 * !wr * !mat2 *  a1 * dsack
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe3 *  a1 * dsack;

 twe0  = dram * !tclr * as_20 *  as_00 * !wr *  dwe0 * !a1 * dsack
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe1 * !a1 * dsack;

 twe2  = dram * !tclr * as_20 *  as_00 * !wr *  dwe2 *  a1 * dsack
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe3 *  a1 * dsack;

 tclr  =  as_20 * tclr
       + !as_20 * bgack_20
       + !as_20 * reset
       + !as_20 * c2off;

 c2off.OE = GND;                                          'SLC off per Jumper

%END

Kasten 6


PAK 68/3, GAL U6:  Adressdekoder, Atari ST

16-09-93   V6_STc1   Holger Zimmermann @ PE

                          ___  ___
                         |   \/   |
                    !vpa |1     24| VCC
                     fc0 |2     23| !jp3           Jumper J3: fpu_en
                     fc1 |3     22| !berr_20
                  !as_20 |4     21| !csp19
                     a21 |5     20| !rom
                     a20 |6     19| !fpucs
                     a17 |7     18| !word
                     a18 |8     17| !ciin
                     a16 |9     16| !dram
                     a19 |10    15| !avec
                     a22 |11    14| a23
                     GND |12    13| !berr_00
                         |________|

%ID
   P6_ST
%TYP
   GAL20V8A
%PINS
 !vpa  fc0  fc1  !as_20  a21  a20  a17  a18  a16  a19  a22
 !berr_00  a23  !avec  !dram  !ciin  !word  !fpucs  !rom  !csp19
 !berr_20  !jp3
%LOGIC

 berr_20.OE = VCC;
 berr_20    = as_20 * fc1 * fc0 * !a19 * !a17                     'PMMU, BKPT
            + as_20 * fc1 * fc0 * !a19 *  a17 * !jp3            'FPU disabled
            + as_20 * berr_00;

 fpucs      = fc1 * fc0 * !a19 * !a18 *  a17 * !a16 * jp3;       'FPU enabled

 avec       = fc1 * fc0 * vpa;

 csp19      = fc1 * fc0 * !a19;

 dram       = !fc0 * !a23 * !a22
            + !fc1 * !a23 * !a22;

 rom        = a23 * a22 * a21 *  a20 *  a19 *  a18 * !a17           'TOS 1.04
            + a23 * a22 * a21 *  a20 *  a19 *  a18 * !a16           'TOS 1.04
            + a23 * a22 * a21 * !a20 * !a19;                        'TOS x.06

 word       = a23 * a22 * a21 *  a20 *  a19 *  a18 * !a17
            + a23 * a22 * a21 *  a20 *  a19 *  a18 * !a16
            + a23 * a22 * a21 * !a20 * !a19
            + !fc0 * !a23 * !a22
            + !fc1 * !a23 * !a22;

 !ciin      = a23 * a22 * a21 *  a20 *  a19 *  a18 * !a17                'ROM
            + a23 * a22 * a21 *  a20 *  a19 *  a18 * !a16                'ROM
            + a23 * a22 * a21 * !a20 * !a19                              'ROM
            + !fc0 * !a23 * !a22                                         'RAM
            + !fc1 * !a23 * !a22;                                        'RAM
%END

Kasten 7


PAK 68/3, GAL U2:  Cache Control Logic, L2-Cache nach Reset aus bis 1. DMA

18-09-93   V2_RSTb    Holger Zimmermann @ PE
                             ___  ___
                            |   \/   |
 (Pin C2 des 68030)  !ciout |1     24| VCC
                       mat2 |2     23| mat0
                         a0 |3     22| !twe0
                         a1 |4     21| !dwe0
                     !as_00 |5     20| !tclr
                  !bgack_20 |6     19| !dwe2
                        !wr |7     18| !c2off
                     !as_20 |8     17| !dwe1
                     !dsack |9     16| !dwe3
                     !reset |10    15| !twe2
                       siz1 |11    14| !dram
                        GND |12    13| siz0
                            |________|
%ID
      P2_RST
%TYP
      GAL20V8A
%PINS
 !ciout  mat2  a0  a1  !as_00  !bgack_20  !wr  !as_20  !dsack  !reset  siz1
 siz0  !dram  !twe2  !dwe3  !dwe1  !c2off  !dwe2  !tclr  !dwe0  !twe0  mat0
%LOGIC

 dwe0.OE = VCC;
 dwe0  = dram * !tclr * as_20 *  as_00 *  wr *  mat0 * !a1 * !a0
       + dram * !tclr * as_20 *  as_00 * !wr * !mat0 * !a1 * dsack * !ciout
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe0 * !a1 * dsack * !ciout;

 dwe1  = dram * !tclr * as_20 *  as_00 *  wr *  mat0 * !a1 * siz1
       + dram * !tclr * as_20 *  as_00 *  wr *  mat0 * !a1 * a0
       + dram * !tclr * as_20 *  as_00 *  wr *  mat0 * !a1 * !siz0
       + dram * !tclr * as_20 *  as_00 * !wr * !mat0 * !a1 * dsack * !ciout
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe1 * !a1 * dsack * !ciout;

 dwe2  = dram * !tclr * as_20 *  as_00 *  wr *  mat2 *  a1 * !a0
       + dram * !tclr * as_20 *  as_00 * !wr * !mat2 *  a1 * dsack * !ciout
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe2 *  a1 * dsack * !ciout;

 dwe3  = dram * !tclr * as_20 *  as_00 *  wr *  mat2 *  a1 * siz1
       + dram * !tclr * as_20 *  as_00 *  wr *  mat2 *  a1 * a0
       + dram * !tclr * as_20 *  as_00 *  wr *  mat2 *  a1 * !siz0
       + dram * !tclr * as_20 *  as_00 * !wr * !mat2 *  a1 * dsack * !ciout
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe3 *  a1 * dsack * !ciout;

 twe0  = dram * !tclr * as_20 *  as_00 * !wr *  dwe0 * !a1 * dsack * !ciout
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe1 * !a1 * dsack * !ciout;

 twe2  = dram * !tclr * as_20 *  as_00 * !wr *  dwe2 *  a1 * dsack * !ciout
       + dram * !tclr * as_20 *  as_00 * !wr *  dwe3 *  a1 * dsack * !ciout;

 tclr  =  as_20 * tclr
       + !as_20 * bgack_20
       + !as_20 * reset
       + !as_20 * c2off;

 c2off.OE = !bgack_20;
 c2off    = reset                                         'SLC off nach Reset
          + c2off * !bgack_20;           'notwendig fr TOS 2.06 Speichertest

%END

Kasten 8


PAK 68/3, GAL U4:  State Machine 1 fr 68000 Businterface, 16 MHz

26-08-93   V4_16b   Holger Zimmermann @ PE
                       ___  ___
                      |   \/   |
                clk16 |1     24| VCC
                 clk8 |2     23| !dtack
                !from |3     22| !uds
              !cyc_00 |4     21| !lds
                   rd |5     20| q1
                   e2 |6     19| !as_00
                   e1 |7     18| !vma
                 siz1 |8     17| q0
               !as_20 |9     16| !dsack1
                !word |10    15| !dsack
                   a0 |11    14| siz0
                  GND |12    13| !OE
                      |________|
%ID
   P4_16
%TYP
   GAL20V8A
%PINS
   CLK  clk8  !from  !cyc_00  rd  e2  e1  siz1  !as_20  !word  a0
   !OE  siz0  !dsack  !dsack1  q0  !vma  !as_00  q1  !lds  !uds  !dtack
%LOGIC

 dsack.OE = VCC;
 dsack    = as_20 * dsack1;

 dsack1 <-  as_00 * !dsack1 *  q0 * !q1 * as_20 * rd * !clk8 * dtack
         +  as_00 * !dsack1 *  q0 * !q1 * as_20 * rd * !clk8 * vma * !e1 * e2
         +  as_00 * !dsack1 *  q0 *  q1
         +  as_00 *  dsack1       * !q1;

     q0 <- !as_00 * !dsack1 * !q0 * !q1
         + !as_00 * !dsack1 *  q0 * !q1 * !as_20
         + !as_00 * !dsack1 *  q0 * !q1 *  as_20 * !clk8
         + !as_00 * !dsack1 *  q0 * !q1 *  as_20 * !cyc_00
         +  as_00 * !dsack1       * !q1 *  as_20;

     q1 <-  as_00 * !dsack1 *  q0 * !q1 * as_20 * !rd * !clk8 * dtack
         +  as_00 * !dsack1 *  q0 * !q1 * as_20 * !rd * !clk8 * vma * !e1 * e2
         +  as_00 *  dsack1 *  q0 * !q1;

    vma <- !clk8 * !e1 * !e2
         + vma * !e2
         + vma * !e1
         + vma * clk8;

  as_00 <- !as_00 * !dsack1 *  q0 * !q1 * as_20 * clk8 * cyc_00
         +  as_00 * !dsack1 * !q0 * !q1 * as_20
         +  as_00           *  q0 * !q1 * as_20
         +  as_00 * !dsack1 *  q0       * as_20;

    uds <- !as_00 * !dsack1 *  q0 * !q1 * as_20 *  rd * clk8 * cyc_00 * word
         + !as_00 * !dsack1 *  q0 * !q1 * as_20 *  rd * clk8 * cyc_00 * !a0
         +  as_00                 * !q1 * as_20 *  rd * uds
         +  as_00 * !dsack1 *  q0       * as_20 * !rd * !a0;

    lds <- !as_00 * !dsack1 *  q0 * !q1 * as_20 *  rd * clk8 * cyc_00 * word
         + !as_00 * !dsack1 *  q0 * !q1 * as_20 *  rd * clk8 * cyc_00 * a0
         + !as_00 * !dsack1 *  q0 * !q1 * as_20 *  rd * clk8 * cyc_00 * !siz0
         + !as_00 * !dsack1 *  q0 * !q1 * as_20 *  rd * clk8 * cyc_00 * siz1
         +  as_00                 * !q1 * as_20 *  rd * lds
         +  as_00 * !dsack1 *  q0       * as_20 * !rd * a0
         +  as_00 * !dsack1 *  q0       * as_20 * !rd * !siz0
         +  as_00 * !dsack1 *  q0       * as_20 * !rd * siz1;

%END

Kasten 9


PAK 68/3, GAL U5:  State Machine 2 fr 68000 Businterface, 16 MHz

21-08-93   V5_16a   Holger Zimmermann @ PE
                       ___  ___
                      |   \/   |
                clk16 |1     24| VCC
                 clk8 |2     23| nc
              !cyc_00 |3     22| e
                 !vpa |4     21| !bgack_20
              !pak_en |5     20| !bg_00
            !bgack_00 |6     19| e2
               !bg_20 |7     18| e1
               !br_20 |8     17| !enab
               !as_20 |9     16| e0
                  fc0 |10    15| !bgx
                  fc1 |11    14| nc
                  GND |12    13| !OE
                      |________|

%ID
  P5_16
%TYP
  GAL20V8A
%PINS
  CLK  clk8  !cyc_00  !vpa  !pak_en  !bgack_00  !bg_20  !br_20  !as_20
  fc0  fc1
  !OE  nc  !bgx  e0  !enab  e1  e2  !bg_00  !bgack_20  e  nc
%LOGIC

  enab.OE   = VCC;
  enab      = !bg_00 * !bgack_20 * pak_en * cyc_00
            + !bg_00 * !bgack_20 * pak_en * enab * !clk8;

  bgx      <-  clk8 * bg_20 * !as_20
            + !clk8 * bgx;

  bg_00    <-  clk8 * bg_20 * bgx * br_20
            +  clk8 * bg_20 * bgx * bgack_00
            + !clk8 * bg_00;

  bgack_20 <-         bgack_00
            + !clk8 * bgack_20;

  e        <-  e       * !e1
            +  e             * !e0
            +  e                   *  clk8
            +      !e2 *  e1 *  e0 * !clk8
            +      !e2 * !e1 * !e0 * !clk8;

  e0       <-                   e0 *  clk8
            +                  !e0 * !clk8;

  !e1      <- !e *  e2 * !e1 * !e0
            +  e       * !e1 *  e0
            +            !e1       *  clk8
            + !e *  e2 *  e1 *  e0 * !clk8
            +  e * !e2       *  e0 * !clk8;

  !e2      <-      !e2 *  e1 * !e0
            + !e * !e2 *  e1
            +      !e2             *  clk8
            + !e       * !e1 *  e0 * !clk8
            + !e *  e2 * !e1       * !clk8 * !fc0 * vpa
            + !e *  e2 * !e1       * !clk8 * !fc1 * vpa;

%END

Kasten 10


PAK 68/3, GAL U6:  Adressdekoder, Mac SE und Mac Plus

01-09-93   V6_MCa    Holger Zimmermann @ PE

                          ___  ___
                         |   \/   |
                    !vpa |1     24| VCC
                     fc0 |2     23| !jp3           Jumper J3: fpu_en
                     fc1 |3     22| !berr_20
                  !as_20 |4     21| !csp19
                     a21 |5     20| !rom
                     a20 |6     19| !fpucs
                     a17 |7     18| !word
                     a18 |8     17| !ciin
                     a16 |9     16| !dram
                     a19 |10    15| !avec
                     a22 |11    14| a23
                     GND |12    13| !berr_00
                         |________|

%ID
   P6_MAC
%TYP
   GAL20V8A
%PINS
 !vpa  fc0  fc1  !as_20  a21  a20  a17  a18  a16  a19  a22
 !berr_00  a23  !avec  !dram  !ciin  !word  !fpucs  !rom  !csp19
 !berr_20  !jp3
%LOGIC

 berr_20.OE = VCC;
 berr_20    = as_20 * fc1 * fc0 * !a19 * !a17                     'PMMU, BKPT
            + as_20 * fc1 * fc0 * !a19 *  a17 * !jp3            'FPU disabled
            + as_20 * berr_00;

 fpucs      = fc1 * fc0 * !a19 * !a18 *  a17 * !a16 * jp3;       'FPU enabled

 avec       = fc1 * fc0 * vpa;

 csp19      = fc1 * fc0 * !a19;

 dram       = !fc0 * !a23 * !a22                                         'RAM
            + !fc1 * !a23 * !a22;

 rom        = !a23 * a22 * !a21 * !a20 * !a19;                           'ROM

 word       = !a23 * a22 * !a21 * !a20                                   'ROM
            + !fc0 * !a23 * !a22                                         'RAM
            + !fc1 * !a23 * !a22;

 !ciin      = !a23 * a22 * !a21 * !a20                                   'ROM
            + !fc0 * !a23 * !a22                                         'RAM
            + !fc1 * !a23 * !a22;

%END



Zu diesem Artikel existieren Programmbeispiele

1193_222.doc
1193_222.zip
Attachments:
1193_222.zip (7.8 KB)

Liked by MelkhiorandKai Robinson

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #13
Contents of 1193_222.doc:

Doppel-PAK
PAK68/3 mit Cache und 68020/030 fur 68000-Rechner
-------------------------------------------------
c't 11/93, S. 222 (cm)

P*_16.LCI GAL-Sourcen fuer 16-MHz-Version
P6_MAC.LCI GAL-Source fuer U6 Mac
P2_JP.LCI GAL-Source U2 fuer Cache-Enable per Jumper
P2_RST.LCI GAL-Source U2 fuer Cache-Enable per Reset/DMA (Atari)

GAL-Assembler-Sourcefiles fuer c't-Projekt PAK68/3. Bitte beachten
Sie die Hinweise im Artikel, in den Tabellen und in den GAL-Listings.

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #14
Not sure if this falls under fair use but please delete if this is a problem.

Liked by Kai Robinson

Kai Robinson
TinkerDifferent Board President 2023
Worthing, UK
--------
Joined: Sep 2, 2021
Posts: 1,322
Likes: 1,313
Jan 16, 2022 - #15
Definitely fair use at this point - it's publicly released knowledge :)

Liked by MacinJosh

Melkhior
Tinkerer
--------
Joined: Jan 9, 2022
Posts: 101
Likes: 52
Jan 16, 2022 - #16
@MacinJosh Thank you! Having the text means I can put it in Google Translate and understand it without a ton of OCR :) And there's indeed a second-level cache that seems to follow the standard Motorola pattern (just with a very limited memory coverage of 4 MiB it seems).

The text reference 'the next ct': "In the next c't you will find out what needs to be considered when adapting TOS 3.06, how the asynchronous accesses of the 32 MHz version work and how to persuade the Mac to use the FPU and the data cache." Any chance of getting those additional explanations for completeness?

Liked by MacinJosh

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #17
I can also confirm that no pages are missing in the pages provided here. Text on page 224 continues on page 229:

...low gesetzt. Damit erkennt der Komparator beim nachsten Lesezugriff in jedem Fall ein Cache Miss (kein Treffer) und ladt daraufhin den Cache neu.

Also, all diagrams and listings are complete.

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #18
[Image: minpic01.jpg]

Doppel-PAK

PAK-68/3 mit Cache und 68020/030 fur 68000-Rechner, Teil 2

Holger Zimmermann

Nun wird es richtig spannend: nach der gut 800stelligen Lotorgie und den ersten Tests wartet die PAK auf Taktsignale im VHF-Bereich. Damit sich die CPU im Gestrupp asynchroner Zugriffe und Wait-Zyklen nicht verheddert, ist neben dem 32-MHz-Quarz auch eine listige GAL-Logik vonnoten.

Im bislang besprochenen 16-MHz-Betrieb liefert CLK16 den Takt fur CPU und GALs U1, U4 und U5, gewonnen durch Taktverdopplung aus dem 8-MHz-Systemtakt. Damit lauft die CPU synchron zum Systemtakt. Auch mit 12 MHz Systemtakt auf dem Atari-Mainboard [6] kommt die PAK/3 hervorragend zurecht, wobei die CPU dann, richtig geraten, mit 24 MHz lauft. Die einzig notwendige Änderung betrifft die Taktverdopplerschaltung. Fur R41 und R43 sollten in diesem Fall 470 Ohm, fur C41 und C42 15 pF vorgesehen werden (irrtumlicherweise fehlen die Kondensatoren C41 und C42 in der Stuckliste; im Schaltplan sind sie jedoch richtig `bewertet´).

Wollte man die CPU auf diese Art bei 8 MHz Systemtakt mit 32 MHz betreiben (also mit vervierfachtem Takt), dann ware eine aufwendigere Takterzeugung, etwa mit Hilfe einer PLL, notwendig. Bei der PAK-68/3 wird im 32-MHz-Betrieb ein anderer Weg beschritten: Ein Quarzoszillator versorgt CPU, FPU und GAL U1 mit eigenen 32 MHz, alles lauft also asynchron zum Systemtakt. Die GALs U4 und U5, zustandig fur das Interface zum Mainboard, laufen hingegen weiterhin mit CLK16 und somit synchron zum Mainboard.

Im Gleichschritt ...

Alle lokalen Zugriffe auf der PAK-68/3 (Cache Hit, ROM und FPU) laufen immer synchron zu CPUCLK ab. Die Kommunikation zwischen CPU und FPU geschieht genauso wie bei 16 MHz, nur eben doppelt so schnell. Bei ROM-Zugriffen wird die Geschwindigkeit durch die Zugriffszeit der EPROMs begrenzt. Wahrend 120er EPROMs bei 16 MHz fur 0 Waitstates ausreichen, waren bei 32 MHz Zugriffszeiten kleiner 60 ns notwendig. Derartige EPROMs sind nicht nur kaum zu beschaffen, sondern auch unangenehm teuer. Auf der PAK-68/3 sorgt daher U1 mit den Signalen W1 und W2 dafur, daß bei ROM-Zugriffen vier Waitstates eingeschoben werden, wodurch EPROMs mit bis zu 150 ns (dann aber mit /CS auf GND) eingesetzt werden konnen.
Auch bei einem Cache Hit kommt man leider nicht um einen Waitstate herum, da zunachst das Tag-RAM befragt werden muß, ob die gewunschten Daten uberhaupt im Cache vorliegen. Schnellere Tag-RAMs mit Zugriffszeiten unter 20 ns sind leider, bedingt durch ihre geringe Verbreitung, prohibitiv teuer. In PCs kommen namlich fur diese Aufgabe fast ausschließlich normale SRAMs zum Einsatz, die Komparatorlogik ist dort im LSI-Chipsatz mit integriert. Dagegen sind die auf der PAK/3 fur den Cache verwendeten SRAMs die gleichen wie in der PC-Welt. Somit sind wenigstens beim SRAM Zugriffszeit, Beschaffbarkeit und Preis kein Problem.

... Marsch!

Solange keine Zugriffe auf das Mainboard stattfinden, bleibt der Ausgang CYC_00 von U1 inaktiv, und die State-Machine in U4 tritt sozusagen auf der Stelle, wobei die 68000-Bussignale ebenfalls inaktiv sind. Bei Schreibzugriffen, I/O-Zugriffen und Cache Miss aktiviert U1 CYC_00, worauf U4 einen Buszyklus startet. Mit dem weiteren Ablauf dieses Buszyklus hat U1 dann nichts mehr zu tun, die Ausgange DSACK0 und DSACK1 von U1 sind abgeschaltet, und alles wartet auf DSACK1 aus U4, dessen Ausgang mit CYC_00 eingeschaltet wurde. Inzwischen hagelt es Waitstates.
Soweit gibt es keine Unterschiede zwischen dem 16-MHz- und dem 32-MHz-Betrieb. Da jedoch bei 32 MHz die Prozessorsignale sowie CYC_00 als Eingangssignale fur U4 vollig asynchron kommen, ist damit zu rechnen, daß gelegentlich die Setup- und Hold-Zeiten fur U4 verletzt werden. Dann hangt es vom Zufall ab, ob die Eingangssignale als low oder high erkannt werden, wobei sich die einzelnen Register des GALs durchaus unterschiedlich entscheiden konnen.

Um zu verdeutlichen, was passieren kann, stelle man sich zwei Registerausgange mit exakt denselben Gleichungen vor. Man erwartet zunachst, daß beide Ausgange immer ubereinstimmen. Wenn aber ein Eingangssignal gerade zum `richtigen´ Zeitpunkt wechselt, konnte das eine Register durchaus noch den alten Wert erkennen, wahrend das andere bereits den neuen Wert sieht und daraufhin seinen Zustand andert. Eine Taktperiode lang wurden also beide Ausgange unterschiedliche Ergebnisse liefern.

Verbotene Zone

Damit daraus keine unangenehmen Situationen entstehen, durfen sich niemals zwei Zustandsvariablen, die von asynchronen Eingangssignalen abhangig sind, gleichzeitig andern. Bei der PAK-68/3 ist sichergestellt, daß sich nur jeweils eine Zustandsvariable andert, und somit keine `Bombenstimmung´ aufkommt.
Der Abschluß eines Zugriffs auf das Mainboard sieht bei 32 MHz ebenfalls etwas anders aus. Zunachst wartet U4 einen CLK16-Takt langer als bei 16 MHz, bis DSACK1 aktiviert wird. Mit der nachsten fallenden Flanke des 32-MHz-Taktes erkennt die CPU, daß jetzt endlich Schluß ist mit der Warterei. Da beide Takte asynchron laufen, erfolgt die Datenubernahme beim Lesen nicht exakt mit der steigenden Flanke von AS_00, sondern mit einem Jitter von 30 ns. Die PAK/2 hat bewiesen, daß dies kein Problem darstellt, denn dort fand die Datenubernahme durch die CPU stets 30 ns vor AS_00 statt.

Prinzipiell ist man bei CPUCLK nicht auf 32 MHz festgelegt. Bei niedrigeren Frequenzen wurde jedoch der Jitter zu groß (stets eine CPUCLK-Periode, bei 25 MHz also bereits 40 ns), was gutgehen kann, aber nicht muß. Zu hoheren Taktfrequenzen hin gabe es mit dem Jitter keine Probleme, wohl aber mit den Datenbustreibern auf dem Mainboard, die nach getaner Arbeit nicht schnell genug abgeschaltet werden und dadurch den folgenden Buszyklus storen wurden. FPU-Zugriffe sind, da sie ohne Waitstates auskommen, am ehesten gefahrdet.

Hilfskraft

Wie im ersten Teil des Beitrags bereits angesprochen, sind auf der Platine eine Leerfassung und ein 68000-Sockel vorgesehen, mit denen Sie recht einfach eine Umschaltmoglichkeit zwischen beiden Prozessoren (naturlich nicht im laufenden Betrieb) realisieren konnen.
An dem 64poligen Sockel U7 auf der PAK-68/3 sind die Pins 11 (/BG), 13 (/BR) und 20 (E) nicht angeschlossen. Wer hier Erweiterungen aufstecken will, die diese Signale benotigen (eventuell Grafikerweiterungen oder Emulatoren im Atari), muß sie per Drahtbrucke nachreichen. Falls ein 68000 als Notantrieb eingesetzt werden soll, mussen diese sechs Leitungen (je drei von der PAK und vom 68000er) zu einem Umschalt-GAL (Listing PUK) gefuhrt werden. Zusatzlich wird am GAL noch /BR_20 (von J6) und /PAK_EN (von J5) benotigt. Der Jumper J6 entfallt damit, die Umschaltung zwischen den Prozessoren erfolgt mit J5.

Atarisch

Die PAK/3-020 lauft unter TOS 2.06 problemlos, was im Prinzip auch fur die 030er PAK gilt. Da TOS 2.06 jedoch nichts von der Existenz einer MMU und eines CPU-internen Datencache weiß, kann es in bestimmten Situationen Probleme geben, so zum Beispiel bei einigen Plattentreibern mit eingeschaltetem Datencache. Im TT fallt das nicht weiter auf, weil dort die MMU vom TOS 3.06 entsprechend programmiert wird. Daß es aber auch anders geht, zeigt AHDI, der auch auf einer PAK/3-030 unter TOS 2.06 ohne MMU-Unterstutzung einwandfrei lauft.
Des weiteren gibt es noch einige Programme, etwa Treiber fur virtuelles RAM, die die MMU verwenden, diese aber in genau dem Zustand vorfinden mochten, wie sie vom TOS 3.06 im TT initialisiert wird. Bei TOS 2.06 kann diese MMU-Initialisierung durch ein kleines Programm im Auto-Ordner nachgeholt werden, womit dann auch solche Programme laufen.

Leider handelt man sich damit ein weiteres (kleines) Problem ein: Ein uber die Tastatur ausgeloster Kaltstart fuhrt zum Aufhangen des Rechners, denn TOS 2.06 loscht dabei den gesamten Speicher und mithin auch die MMU-Tabelle. Die CPU trifft zwar in der Startup-Sequenz des TOS auf einen RESET-Befehl, womit die gesamte Hardware des Rechners (auch der L2-Cache) zuruckgesetzt wird. Der interne Status der CPU bleibt davon jedoch unberuhrt, die MMU und die beiden CPU-Cache sind nach wie vor aktiv, was dann auch prompt in die Hose geht.

[Image: minpic02.jpg]
Ein ODER-verknupftes Enable-Signal beider Laufwerke schaltet den Cache ab, wenn der Mac Schwierigkeiten mit Disketten haben sollte.


Mit und ohne: Die Ergebnisse (relativ zum Mac Classic) in der rechten Spalte wurden mit dem SANE-Beschleuniger GEMStart ermittelt; der Zuwachs an FPU-Performance im Benchmark-Mix ist deutlich. Die FPU-Benchmarks ermittelt Speedometer (Version 3.23) dagegen immer an SANE vorbei. Mit einer 68030-PAK liegen die Ergebnisse im Schnitt 10 Prozent hoher.

Die elegantere Alternative ist die Verwendung von TOS 3.06, das ja bereits fur einen 68030 ausgelegt ist. Da zudem im Gegensatz zum TOS 2.06 an einigen Stellen 68020-Code verwendet wird, gibt es einen spurbaren Geschwindigkeitsgewinn.

Das originale TOS 3.06 des TT kann aufgrund unterschiedlicher Hardwarevoraussetzungen auf der PAK-68/3 leider nicht verwendet werden. Dies gilt gleichermaßen fur den in der c't 9/92, S. 212 vorgestellten Patch, dem damals kurzerhand die gesamte MMU-Initialisierung zum Opfer fiel. Dort wurde außerdem ein Unterprogramm, in dem die CPU einigen ihrer Kollegen gelegentlich kurze Verschnaufpausen gonnt (im TT mit dem TT-MFP realisiert), einfach ubersprungen. Was bei der PAK/2 wegen der geringeren Geschwindigkeit noch funktioniert haben mag, geht bei der PAK-68/3 garantiert schief. Daher wird es einen neuen Patch fur TOS 3.06 geben, den wir aber erst nach einer ausgiebigen Testphase freigeben wollen.

Einziges ungelostes Problem ist zur Zeit noch die Memory-Protection von MiNT, die leider bisher auf der PAK/3 nicht zum Laufen zu kriegen ist. Da aber auch andere 68030-Boards dasselbe Problem haben, ist der Fehler wohl eher bei MiNT zu suchen.

Inside Mac

Grundsatzlich ist der Einbau in alle Macs mit 68000-8 moglich, einschließlich des Classic 1. Das Dumme ist nur, daß letzterer (wie auch der Atari STE) einen 68000 in PLCC-Ausfuhrung beschaftigt - und ohne entsprechenden Adapter ist da nichts zu machen. Verschiedene Firmen, etwa MW Elektronik aus Konigswinter, bieten derartiges an.
Auch beim Mac ist es (wie schon bei der PAK-68/2) moglich, das Rechner-ROM auf vier EPROMs zu verteilen und auf die PAK zu stecken. Auf der Mac-Sammeldiskette 7 ist das Split-Utility aus [3] neben allen GAL-Sourcen und -JEDECs mit enthalten. Da der Mac Classic von Haus aus mit 512 statt 256 KByte ROM ausgerustet ist (warum, weiß allein Apple), ist hier das Split-Programm entsprechend anzupassen (Variable ROMLen); außerdem werden 27C010-EPROMs benotigt.


Das GAL P3_PUK wird mit etwas `Freiluftverdrahtung´ im Reservesockel der PAK-Platine untergebracht.

Bei manchen Maskenversionen des IWM beziehungsweise SWIM (Diskettencontroller des Mac, `Integrated Woz Machine´) tritt folgendes Problem auf: Der Mac erkennt die eingelegte Diskette nicht, formatiert sie fehlerhaft oder zeigt einen nicht vorhandenen Schreibschutz an. Sollte Ihr Exemplar so reagieren, mussen Sie den Prozessor- und eventuell auch den L2-Cache wahrend aller Diskettenzugriffe lahmlegen. Sehr einfach geht das mittels zweier Dioden, die gemaß obenstehender Abbildung zu verschalten sind. Da der Mac ohnehin etwas pingelig bezuglich des Diskettenformatierens ist, kann man Disketten auch mit dem `Diskcopy 4.2´ formatieren: Einfach ein Image einer Leerdiskette anlegen und neue Disks damit uberbraten. Vor allem, wenn eine Diskette schon einmal MSDOS-formatiert war, wirkt dies Wunder.

Empfehlenswert ist der Einsatz eines SANE-Beschleunigers (ein INIT oder Kontrollfeld, das die SANE-Aufrufe auf den Koprozessor umleitet), damit alle `rechnenden´ Applikationen etwas vom 68881/882 (so vorhanden) haben - der bleibt sonst namlich außen vor, wenn ihn das laufende Programm nicht hochstpersonlich anspricht. [7] beschreibt den Patch des Radius-MATH-INITs, das eigentlich fur Beschleunigerkarten der amerikanischen Firma gedacht ist. Wer Zugang zu CompuServe (Mac Systems Forum) oder AppleLink (Software Updates) hat, sollte sich das Kontrollfeld GEMStart (Version 2.2 oder 3.0) der Firma Total Systems herunterladen; es harmoniert auch ohne Patch ganz wunderbar mit der PAK - alt wie neu.

Output

Wichtig ist, wenn man einem bekannten deutschen Politiker glauben darf, vor allem, was hinten heraus kommt - siehe untenstehende Benchmark-Tabelle. Zum einen fallt auf, daß QuickIndex bereits der PAK/2 eine recht hohe Rechenleistung bescheinigte. Dies liegt an den dort verwendeten kurzen Programmschleifen, die weitgehend im CPU-internen Cache Platz finden; so nimmt sich der Schritt zur PAK/3 in den verschiedenen Ausbaustufen nicht mehr so groß aus. In der letzten Spalte fallt auf, daß eine 24-MHz-PAK in einem 12-MHz-Atari fast ebenso schnell ist wie die 32-MHz-Version bei 8 MHz Bustakt, weil Datenzugriffe auf das Mainboard immer nur zu bestimmten Zeitpunkten stattfinden konnen; zwischendurch ist der Videocontroller dran. Eine schnellere CPU vertrodelt somit bei 8 MHz einen guten Teil der gewonnenen Zeit wieder mit dem Warten auf das nachste `Zugriffsfenster´. Auch beim GEM-Test wirken sich die vielen Schreibzugriffe auf den Bildschirmspeicher, die ja nicht uber den L2-Cache laufen, etwas bremsend aus.
Der Dhrystone-Test und die Berechnung der Juliamenge zeigen ein anderes Bild, das sich auch mit den Erfahrungen aus der taglichen Praxis deckt, zum Beispiel bei Anwendungen wie TeX. Unter dem Strich erreicht die PAK/3 mit 32 MHz etwa den Faktor 3,5 bis 4 gegenuber einem normalen ST mit 8 MHz und ist etwa doppelt so schnell wie ubliche 68000er Beschleuniger mit 16 MHz.

Zum Betrieb im Amiga liegen uns derzeit noch keine Erfahrungen vor; wir rechnen aber in Balde mit positiven Ruckmeldungen einiger `Beta-Tester´. (cm)

Literatur

[1] Holger Zimmermann, Doppel-PAK, PAK-68/3 mit Cache und 68020/030 fur 68000-Rechner, c't 11/93, S. 222
[2] Jankowski/Reschke/Rabich, Atari Profibuch ST-STE-TT, 10. Auflage 1991, Sybex-Verlag
[3] Manfred Volkel, Carsten Meyer, Tausch mit Turbo, PAK-68/2 in Mac, Atari und Amiga, c't 11/91, S. 314
[4] Jurgen Knufinke, Manfred Volkel, Stufe sechs, TOS x.06 fur die PAK-68/2, c't 9/92, S. 212
[5] MausNet, Gruppen ATARI.HARD, ATARI.SOFT, ATARI-EXP 29. 11. 91 - 15. 10. 93
[6] Und es geht doch, Atari mit mehr als 8 MHz, ST Computer, c't 9/92, S. 118
[7] Leo Drisis, Real-Renner, 68881-Einbindung fur die PAK im Mac, c't 5/90, S. 190

Kasten 1


Atari-Benchmarks

System      1040 ST Speeder PAK/2  PAK/3  PAK/3  PAK/3  PAK/3
            68000   68000   68020  68020  68020  68030  68020
            8 MHz   16 MHz  16 MHz 16 MHz 32 MHz 32 MHz 24 MHz
                    16 KB          32 KB  32 KB  32 KB  32 KB
                    Cache          Cache  Cache  Cache  Cache
                                                        System
                                                        12 MHz
CPU Mem     100     164     245    330    374    396    495
Reg         100     204     402    406    811    811    614
Div         100     203     504    507    1014   1014   762
Shift       100     207     1708   1737   3534   3534   2628
TOS-T>ext   290     452     359    638    753    717    778
String      1075    1804    2406   2807   3062   3062   4218
Scroll      132     143     147    222    251    252    331
GEM Dialog  323     519     466    720    872    872    2159
Speedometer 104     188     209    335    479    485    465
Dhrystone   1059    1839    1282   2649   3407   3424   3944
Juliamenge  5622    3098    4040   2045   1429   1357   1350
Text        857     1460    1798   2452   3158   3203   4001
Linien      301     470     523    775    1055   1033   1099
Rechteck    411     573     605    736    916    941    1063
Polygone    201     365     399    640    1002   1019   984
Kreise      372     664     706    1158   1820   1813   1863
Raster      291     449     557    716    869    875    1076
Attribut    484     767     708    1134   1478   1432   1116
Auskunft    361     569     519    824    1052   1010   893
ESC         262     399     513    634    691    689    940
BIOS        201     282     234    417    495    468    578
GEMDOS      631     993     1316   1564   1704   1694   2332
AES         334     542     476    758    919    925    3150
[I]Testkonfiguration: 1040 ST, 2 MByte RAM, kein Blitter, TOS 2.06, NVDI 2.03, 520 ST mit 12 MHz, 4 MB RAM, KAOS 1.4.2, NVDI 2.03
Testprogramme: Quick Index 2.2, Speedometer V 1.0, Dhrystone und Juliamenge in Modula programmiert, NVDI GEM-Test V 1.02

Hohere Zahlen bedeuten hohere Performance, bis auf `Juliamenge´

Kasten 2


Neben den drei neuen 32-MHz-GALs finden Sie hier auch den Umschalter P3_PUK.

PAK 68/3, GAL U1:  CPU-Clk State Machine fr 68030 mit 32 MHz

18-09-93   V13_32c    Holger Zimmermann @ PE
                             ___  ___
                            |   \/   |
                  32m = CLK |1     24| VCC
                       mat2 |2     23| mat0
                        32m |3     22| !dsack0
                         a1 |4     21| !dsack1
                     !as_00 |5     20| !cyc_00
                      !tclr |6     19| !w2          (!sterm)
                        !wr |7     18| !w1
                     !as_20 |8     17| !doe
                      !prom |9     16| !as_21
                     !csp19 |10    15| !roe
      (g1p11)        !ciout |11    14| !dram
                        GND |12    13| !OE auf VCC
                            |________|
%ID
      P13_32
%TYP
      GAL20V8A
%PINS
 CLK  mat2  32m  a1  !as_00  !tclr  !wr  !as_20  !prom  !csp19  !ciout
 !OE  !dram  !roe  !as_21  !doe  !w1  !w2  !cyc_00  !dsack1  !dsack0  mat0
%LOGIC

 w1       <- as_20 * as_21 * !w2;

 w2       <- as_20 * as_21 * w1
           + as_20 * as_21 * w2;

 as_21     = as_20 * 32m
           + as_20 * as_21;

 doe = as_20 * !as_00 * dram * !ciout * !tclr * !wr * mat0 * mat2 * as_21 * !32m
     + as_20 * !as_00 * dram * !ciout * !tclr * !wr * mat0 * mat2 * as_21;

 !cyc_00   = !as_20
           + !as_21
           + csp19                                           'FPU, PMMU, BKPT
           + !as_00 * dram * !ciout * !tclr * !wr * mat0 * mat2    'Cache hit
           + prom * !wr;                                     'ROM auf der PAK

 dsack0.OE = as_21 * !cyc_00 * !csp19;
 dsack0    = as_20 * dram * !ciout * !tclr * !wr * mat0 * mat2 * as_21 * !32m
           + as_20 * dram * !ciout * !tclr * !wr * mat0 * mat2 * dsack0
           + as_20 * prom * !wr * w2 * !w1 * !32m
           + as_20 * prom * !wr * dsack0;

 dsack1.OE = as_21 * !cyc_00 * !csp19;
 dsack1    = as_20 * dram * !ciout * !tclr * !wr * mat0 * mat2 * as_21 * !32m
           + as_20 * dram * !ciout * !tclr * !wr * mat0 * mat2 * dsack0
           + as_20 * prom * !wr * w2 * !w1 * !32m
           + as_20 * prom * !wr * dsack0;

 roe       = as_20 * prom * !wr;

%END

PAK 68/3, GAL 4:  Statemachine 1 fur 68000 Businterface, 32 MHz
16-10-93   V4_32c3  Holger Zimmermann @ PE

%ID
   P4_32
%TYP
   GAL20V8A
%PINS
   CLK  clk8  !from  !cyc_00  rd  e2  e1  siz1  !as_20  !word  a0
   !OE  siz0  !q1  !dsack1  q0  !vma  !as_00  !dsack  !lds  !uds  !dtack
%LOGIC

 dsack1.OE = cyc_00;
 dsack1    = as_20 * cyc_00 * dsack
           + as_20 * cyc_00 * dsack1;

 dsack <-  as_00 * !dsack *  q1 *  q0 * as_20 *  rd
        +  as_00 * !dsack *  q1 * !q0 * as_20 * !rd;

    q0 <- !as_00 * !dsack * !q1 * !q0 *  as_20 *  rd * cyc_00
        + !as_00 * !dsack * !q1 *  q0 *  as_20       * cyc_00 * !clk8
        +  as_00 * !dsack * !q1       *  as_20;

    q1 <-  as_00 * !dsack * !q1 *  q0 * as_20 * !clk8 * dtack
        +  as_00 * !dsack * !q1 *  q0 * as_20 * !clk8 * vma * !e1 * e2
        +  as_00 * !dsack *  q1 *  q0 * as_20
        +  as_00 *  dsack *  q1 * !q0;

   vma <- !clk8 * !e1 * !e2
        + vma * !e2
        + vma * !e1
        + vma * clk8;

 as_00 <- !as_00 * !dsack * !q1 * !q0 * as_20 * !rd * cyc_00 * clk8
        + !as_00 * !dsack * !q1 *  q0 * as_20       * cyc_00 * clk8
        +  as_00 * !dsack * !q1 * !q0 * as_20
        +  as_00 * !dsack       *  q0 * as_20;

   uds <- !as_00 * !dsack * !q1 *  q0 * as_20 *  rd * cyc_00 * clk8 * word
        + !as_00 * !dsack * !q1 *  q0 * as_20 *  rd * cyc_00 * clk8 * !a0
        +  as_00 * !dsack * !q1 * !q0 * as_20 *  rd * word
        +  as_00 * !dsack * !q1 * !q0 * as_20 *  rd * !a0
        +  as_00 * !dsack       *  q0 * as_20 *  rd * word
        +  as_00 * !dsack       *  q0 * as_20 *     * !a0;

   lds <- !as_00 * !dsack * !q1 *  q0 * as_20 *  rd * cyc_00
        * clk8 * word ´2
        + !as_00 * !dsack * !q1 *  q0 * as_20 *  rd * cyc_00 * clk8 * a0
        + !as_00 * !dsack * !q1 *  q0 * as_20 *  rd * cyc_00 * clk8 * !siz0
        + !as_00 * !dsack * !q1 *  q0 * as_20 *  rd * cyc_00 * clk8 * siz1
        +  as_00 * !dsack             * as_20 *  rd * lds
        +  as_00 * !dsack       *  q0 * as_20 * !rd * a0
        +  as_00 * !dsack       *  q0 * as_20 * !rd * !siz0
        +  as_00 * !dsack       *  q0 * as_20 * !rd * siz1;
%END

PAK 68/3, GAL U5:  State Machine 2 fr 68000 Businterface, 32 MHz

26-08-93   V5_32a    Holger Zimmermann @ PE
                       ___  ___
                      |   \/   |
                clk16 |1     24| VCC
                 clk8 |2     23| nc
              !cyc_00 |3     22| e
                 !vpa |4     21| !bgack_20
              !pak_en |5     20| !bg_00
            !bgack_00 |6     19| e2
               !bg_20 |7     18| e1
               !br_20 |8     17| !enab
               !as_20 |9     16| e0
                  fc0 |10    15| !bgx
                  fc1 |11    14| nc
                  GND |12    13| !OE
                      |________|

%ID
  P5_32
%TYP
  GAL20V8A
%PINS
  CLK  clk8  !cyc_00  !vpa  !pak_en  !bgack_00  !bg_20  !br_20  !as_20
  fc0  fc1
  !OE  nc  !bgx  e0  !enab  e1  e2  !bg_00  !bgack_20  e  nc
%LOGIC

  enab.OE   = VCC;
  enab      = !bg_00 * !bgack_20 * pak_en;

  bgx      <-  clk8 * bg_20 * !as_20
            + !clk8 * bgx;

  bg_00    <-  clk8 * bg_20 * bgx * br_20
            +  clk8 * bg_20 * bgx * bgack_00
            + !clk8 * bg_00;

  bgack_20 <-         bgack_00
            + !clk8 * bgack_20;

  e        <-  e       * !e1
            +  e             * !e0
            +  e                   *  clk8
            +      !e2 *  e1 *  e0 * !clk8
            +      !e2 * !e1 * !e0 * !clk8;

  e0       <-                   e0 *  clk8
            +                  !e0 * !clk8;

  !e1      <- !e *  e2 * !e1 * !e0
            +  e       * !e1 *  e0
            +            !e1       *  clk8
            + !e *  e2 *  e1 *  e0 * !clk8
            +  e * !e2       *  e0 * !clk8;

  !e2      <-      !e2 *  e1 * !e0
            + !e * !e2 *  e1
            +      !e2             *  clk8
            + !e       * !e1 *  e0 * !clk8
            + !e *  e2 * !e1       * !clk8 * !fc0 * vpa
            + !e *  e2 * !e1       * !clk8 * !fc1 * vpa;

%END

PAK 68/3, GAL PUK:  Umschaltung zwischen 68000-8 und PAK/3

08-09-93   P3_PUK   Holger Zimmermann @ PE

                    |ÿÿÿ\/ÿÿÿ|  
                    |1     20| VCC
            !pak_en |2     19| !br_20
                    |3     18|  
                    |4     17|  
                    |5     16|  
              e_68k |6     15| e_pak
                    |7     14|
            !br_pak |8     13| !br_68k
            !bg_68k |9     12| !bg_pak
                GND |10    11|  
                    |________|  

%ID
    P3_PUK
%TYP
    GAL16V8A
%PINS
    nc  !pak_en  nc  nc  nc  e_68k  nc  !br_pak  !bg_68k
    nc  !bg_pak  !br_68k  nc  e_pak  nc  nc  nc  !br_20
%LOGIC

    e_pak.OE  = !pak_en;
    e_pak     = e_68k;
    
    bg_pak.OE = !pak_en;
    bg_pak    = bg_68k;
    
    br_68k    = !pak_en * br_pak
              +  pak_en;
    
    br_20     =  pak_en * br_pak
              + !pak_en;

%END

Zu diesem Artikel existieren Programmbeispiele

1293_276.doc
1293_276.zip
Attachments:
1293_276.zip (2.6 KB)
pic03.jpg (69.2 KB)
minpic01.jpg [View]
minpic02.jpg [View]
pic03.jpg [View]
pic04.jpg [View]

Liked by Kai RobinsonandMelkhior

MacinJosh
Tinkerer
Finland
--------
Joined: Jan 16, 2022
Posts: 53
Likes: 55
Jan 16, 2022 - #19
Contents of 1293_276.doc:

Doppel-PAK
PAK-68/3 mit Cache und 68020/030 fur 68000-Rechner, Teil 2
----------------------------------------------------------
c't 12/93, S. 276 (cm)
siehe c't 2/94, S. 12

p13_32.lci CPU-Clk-State Machine 68030, 32 MHz
p4_32.lci State Machine 1 fuer 68000-Businterface, 32 MHz
p5_32.lci State Machine 2 fuer 68000-Businterface, 32 MHz
p3_puk.lci Umschaltung zwischen 68000-8 und PAK/3

GAL-Listings fuer Maxon-GAL-Programmer auf Atari. Achtung!
Unter nicht immer reproduzierbaren Umstaenden liefern einige
Versionen des Maxon-Programmers fehlerhafte JEDEC-Files.
JEDECs sind daher vor dem endgueltigen Programmieren der
GALs durch Vergleichen mit dem Maxon-Disassembler zu verifizieren.
Bitte beachten Sie die Hinweise im Artikel, in den Tabellen
und in den GAL-Listings.

Liked by Melkhior

Melkhior
Tinkerer
--------
Joined: Jan 9, 2022
Posts: 101
Likes: 52
Jan 16, 2022 - #20
@MacinJosh Thanks again!

Liked by MacinJosh

Page 1 of 2 | Next > | Last >>

Home | Forums | What's New | Search | Bookmarks | RSS | Original | Settings
XenForo Retro Proxy by TinkerDifferent.com