Forum: Mikrocontroller und Digitale Elektronik Technologie für Logik Implementierung eines Adressdecoders


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael D. (nospam2000)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

um eine Kickstart ROM Platine für einen Amiga 1000 nachzubauen benötige 
ich einen Adressdecoder. Auf der Originalplatine wird dazu ein PAL16L8 
von TI verwendet. Die CPU ist ein Motorola 68000 mit 7.x MHz. 
Signallevel ist vermutlich TTL 5V?

Das Chip select signal wird durch folgende Gleichung generiert:
/ROME = 
  /AS *  A23 *  A22 *  A21 *  A20 *  A19 * OVR * PRW // $F80000 - FFFFFF
+ /AS *  A23 *  A22 *  A21 * /A20 * /A19 * OVR * PRW // $E00000 - E7FFFF
+ /AS * /A23 * /A22 * /A21 * /A20 * /A19 * OVR * OVL * PRW // $000000 - 07FFFF
+ /AS * /A23 * /A22 * /A21 *  A20 *  A19 * OVR * OVL * PRW // $180000 - 1FFFFF

Es werden also 9 Eingangssignale und 1 Ausgangssignal benötigt.

Folgende Ideen für die Lösung sind uns gekommen :
 1. PAL
 2. GAL
 3. CPLD
 4. EPROM
 5. Diskrete Logik
 6. ...

Wir sprechen hier über ein Hobby Projekt, nichts kommerzielles.
Ein PAL bzw. GAL Programmer ist nicht vorhanden und in der Anschaffung 
für ein Einzelstück wohl zu teuer. Ein JTAG Programmer, USB Blaster, AVR 
Dragon und MPLAB Snap und ein EPROM Programmer sind aber vorhanden.

Wenn es möglich ist einen einfachen Programmer z.B. auf ATmega328/32U4 
oder ESP32 Basis zusammzustecken oder zu löten ist das kein Problem.

Ich suche jetzt die Technologie mit der man das heute am einfachsten und 
günstigsten für eine Einzelanfertigung (Stückzahl 1) machen kann.

  Michael

: Bearbeitet durch User
von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
Michael D. schrieb:

> Das Chip select signal wird durch folgende Gleichung generiert:
> /ROME =
>   /AS   A23   A22   A21   A20   A19  OVR * PRW
> + /AS   A23   A22   A21  /A20 * /A19  OVR  PRW
> + /AS * /A23 * /A22 * /A21 * /A20 * /A19  OVR  OVL * PRW
> + /AS * /A23 * /A22 * /A21   A20   A19  OVR  OVL * PRW

Die Signale lassen sich gruppieren.

1. /AS, OVR und PRW treten überall auf, können also zu
   einem Signal zusammengefasst werden.
2. A23, A22 und A21 treten immer gemeinsam negiert oder
   nichtnegiert auf; es können zwei Hilfssignale gebildet
   werden.
3. A20 und A19 treten nur gemeinsam negiert oder gemeinsam
   nichtnegiert auf; es können zwei Hilfssiganle gebildet
   werden.
4. OVL muss separat geführt werden, wo notwendig.

: Bearbeitet durch User
von Fitzebutze (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Es gibt FPGA-Module im DIL-Format..ansonsten ist vermutlich die 
billigste Variante heutzutage, ein MachXO2-Evalbrett herzunehmen.
Wenn man da ein dickes und schnelles SPI-Flash draufmacht, kann man auch 
EPROMs damit emulieren.

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael D. schrieb:
> Ein PAL bzw. GAL Programmer ist nicht vorhanden und in der Anschaffung
> für ein Einzelstück wohl zu teuer.

Das ist die richtige Hardware für einen Adressdekoder, aber wenn keine 
Programmiermöglichkeit besteht (gilt ja auch für CPLD), bleibt ein 
EProm. Das sollte aber ein schnelles sein, möglichst weniger als 100 ns. 
Für Amiga-Technologie sollte das reichen.

Georg

von Michael D. (nospam2000)


Bewertung
0 lesenswert
nicht lesenswert
georg schrieb:
> aber wenn keine
> Programmiermöglichkeit besteht (gilt ja auch für CPLD)

JTAG Programmer und USB Blaster sind ja vorhanden, ich denke einige 
Atmel CPLDs und FPGAs lassen sich damit programmieren.

> bleibt ein EProm.

Das ist sicher die einfachste Möglichkeit: nur ein Baustein und keine 
zusätzliche Beschaltung. Die Programmerstellung und die Programmierung 
ist relativ einfach.

> Das sollte aber ein schnelles sein, möglichst
> weniger als 100 ns. Für Amiga-Technologie sollte das reichen.

Gut zu wissen. Mal sehen was die Krabbelkiste hergibt.

  Michael

von pegel (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Wenn der Inhalt des PAL oder CPLD bekannt ist, kann man den auch 
programmiert bei Segor bestellen.

von Michael D. (nospam2000)


Bewertung
1 lesenswert
nicht lesenswert
pegel schrieb:
> Wenn der Inhalt des PAL oder CPLD bekannt ist, kann man den auch
> programmiert bei Segor bestellen.

Wow, dass ist echt ein Service! Vielen Dank für den Tipp. Ich habe schon 
lange nicht mehr bei Segor bestellt.

Der Service ist hier zu finden: 
https://www.segor.de/#/dienstleistungen/16-Programmierservice

Leider gibt es für den Versand eine Einschränkung:
"Im Versand sind nur Programmierungen von Eproms, EEproms oder 
Flashbausteinen möglich."

  Michael

: Bearbeitet durch User
von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das Ladengeschäft ist doch im Moment sicher geschlossen.
Vielleicht machen sie eine Ausnahme.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Udo K. (udok)


Bewertung
0 lesenswert
nicht lesenswert
Nimm doch einfach ein paar diskrete Logikgatter, und fertig is es.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Man könnte 4 Vergleicher 74HCT688 nehmen und mit einem AND 74HCT21 
verknüpfen.

von H.Joachim S. (crazyhorse)


Bewertung
1 lesenswert
nicht lesenswert
Ansonsten gibts doch hier massig Leute, die dir ein GAL brennen können. 
Gar kein Thema. Musst halt die Jedec erstellen.

von georg (Gast)


Bewertung
1 lesenswert
nicht lesenswert
H.Joachim S. schrieb:
> Musst halt die Jedec erstellen

Wer GALs brennen kann, kann i.d.R. auch die Gleichungen übersetzen.

Dazu muss man übrigens den Typ kennen. Für den Dekoder kommen ja einige 
in Frage.

Georg

von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:

> Man könnte 4 Vergleicher 74HCT688 nehmen und mit
> einem AND 74HCT21 verknüpfen.

Hmm. Da sehe ich nicht, wie das gehen soll.

Vorstellen könnte ich mir vier 74HCT688 für alles
außer /AS, ein vierfach-OR und ein zweifach-(N)AND.
Für erträglichen Aufwand wird man wohl immer drei
Kombinatorik-Stufen brauchen.

von Christoph db1uq K. (christoph_kessler)


Bewertung
0 lesenswert
nicht lesenswert
Früher benutzte man dafür die TTL-Adressdecoder, z.B. 74xx138
https://assets.nexperia.com/documents/data-sheet/74HC_HCT138.pdf

von Georg G. (df2au)


Bewertung
2 lesenswert
nicht lesenswert
Michael D. schrieb:
> Technologie mit der man das heute am einfachsten

Uralte Technologie ist am besten: Fragen, wer dir helfen kann. Dann gibt 
es zwei Möglichkeiten. Erstens, du wohnst in der Nachbarschaft. Dann 
kann man sich treffen. Zweitens du investierst noch einen Euro für Porto 
und bekommst das GAL per Post. Ein GAL 16V8 reicht aus. Man muss sich 
nur über die Pinbelegung einigen. Der Arbeitsaufwand ist weniger als 30 
Minuten. Die meiste Zeit braucht der Gang zum Briefkasten.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Egon D. schrieb:
> Hmm. Da sehe ich nicht, wie das gehen soll.

Nun, es sind max 9 Signale, wo eins immer low aktiv ist. Der 74HCT688 
ist ein 8Bit-Vergleicher mit low aktivem Enable, paßt also.
Macht insgesamt 5 ICs.

von c-hater (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Peter D. schrieb:

> Nun, es sind max 9 Signale, wo eins immer low aktiv ist. Der 74HCT688
> ist ein 8Bit-Vergleicher mit low aktivem Enable, paßt also.
> Macht insgesamt 5 ICs.

Es ginge IMHO auch mit 2x ATtiny1614, wobei der µC-Teil nur zur 
Initialisierung gebraucht wird und danach in den in den Schlaf geschickt 
werden kann. Die eigentliche Arbeit machen dann die insgesamt vier CCLs 
der beiden Controller.

Drei CCLs mit jeweils drei Eingängen macht 9 Eingänge. Die Ausgänge der 
drei sind dann die drei Eingänge des vierten CCL. Dessen Ausgang ist 
dann /ROME.

Problematisch wäre allerdings das Verhalten beim PowerUp. Die Tinys 
müßten ja erstmal starten und die Initialisierung abarbeiten, bevor der 
68k loslegen darf. Keine Ahnung, ob das realisierbar wäre. Vor 20 Jahren 
hätte ich das eher einschätzen können, da besaß ich noch detaillierte 
Kenntnisse der Amiga-Hardware. Inzwischen habe ich das meiste davon 
allerdings vergessen.

Takt sollte hingegen kein Problem sein, wenn ich mich richtig erinnere, 
ist der Bustakt des 68k nur 1/4 des Systemtaktes, hier also unter 2MHz.

von Stefan ⛄ F. (stefanus)


Bewertung
-1 lesenswert
nicht lesenswert
Georg G. schrieb:
> Die meiste Zeit braucht der Gang zum Briefkasten.

Bei mir käme noch dazu, das alte Equipment aus dem Keller zu holen um 
danach festzustellen, dass die Treiber unter Windows 10 nicht 
funktionieren und der neue Laptop womöglich mit Windows 98 nicht booten 
kann. In einer VM geht er dann, aber als nächstes scheitert es an 
fehlender RS232 Schnittstellen. Einen Adapter kann man sich bei einem 
Freund besorgen, doch dessen Treiber geht nur mit XP. Wenn man dann auch 
diese Hürde geschafft hat merkt man, dass das Gerät zumindest innerhalb 
der VM nicht mit solchen USB-RS232 Adaptern funktioniert.

Ich rechne immer mit dem Schlimmsten :-)

von Olaf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also man konnte damals auch GALs mit einfachster selbstgebauter Hardware 
selber brennen.
Ich kann mich noch dunkel erinnern das mal gemacht zu haben und ich 
glaube der echte Mawin auch.
Aber zumindest ich konnte nicht jedes GAL brennen die haben sich je nach 
Buchstaben oder Hersteller etwas unterschieden.

Man brauchst aber noch irgendeine Software welche die Gleichungen in das 
Binaerfile uebersetzt. Das war damals irgendwas unter DOS.

Moeglich ist das also sicherlich.

Olaf

von MaWin (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Michael D. schrieb:
> Ein PAL bzw. GAL Programmer ist nicht vorhanden und in der Anschaffung
> für ein Einzelstück wohl zu teuer.

Na ja.

GALs von Lattice werden nicht mehr hergestellt, aber ATF von 
Microchip/Atmel.

http://www.bhabbott.net.nz/atfblast.html (ATFBlast inkl. Sourcecode)

Sollte nicht so schwierig sein.

Eines Tages wird es auch keine ATF mehr geben, aber ob es dann noch 
deine gewählten HCMOS Logikchips gibt ?

Wenn man heute (z.B. von Lattice) ein kleines CPLD nimmt, ist das 
erstens für den Job sowieso zu gross, und wird b) wohl noch früher 
abgekündigt als ATF chips.

von Frank K. (fchk)


Bewertung
1 lesenswert
nicht lesenswert
Ich habe noch einen Xeltek SP280U Universalprogrammer rumliegen. Der 
kann alles mögliche an Bausteinen programmieren - die Liste der 
Bausteine ist über 200 Seiten lang.

Einen ATF16V8CZ-15PU bekommst Du noch zu kaufen, Farnell hat 532 Stück 
für je 1.52€ netto auf Lager, bei TME.eu sind es 4 Cent mehr. Der ist 
pinkompatibel zum Originalbaustein.

http://ww1.microchip.com/downloads/en/devicedoc/doc0453.pdf

Gegen Zusendung der Bausteine und der JEDEC Map (*.jed) programmiere ich 
Euch die Teile.

fchk

von Soul E. (souleye)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:

> Georg G. schrieb:
>> Die meiste Zeit braucht der Gang zum Briefkasten.
>
> Bei mir käme noch dazu, das alte Equipment aus dem Keller zu holen (...)

Ich denke, Georg ging schon davon aus dass am anderen Ende des 
Briefkastens jemand sitzt, der den GAL-Brenner betriebsbereit auf der 
Werkbank stehen hat. So wie mein Data I/O Sprint Expert an seinem Compaq 
Portable 486c. Wer erst Geräte zusammensuchen muss und dann die 
Anleitung für den GAL-Assembler nicht mehr findet, der ist wohl nicht 
ganz die richtige Zielgruppe ;-)

von Olaf (Gast)


Bewertung
1 lesenswert
nicht lesenswert
> Wenn man heute (z.B. von Lattice) ein kleines CPLD nimmt, ist das

War es nicht so das es CPLDs nur mit 3.3V gab?

Olaf

von Soul E. (souleye)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:

> Eines Tages wird es auch keine ATF mehr geben, aber ob es dann noch
> deine gewählten HCMOS Logikchips gibt ?

Dazu kommt, dass in dem Amiga 1000 mindestens fünf Spezial-Chips 
stecken, die spätestens seit 1995 nicht mehr hergestellt werden. 
Irgendwann wird die Welt untergehen.

GAL16V8 sollte jeder, der sich mit historischer Hardware beschäftigt, in 
ausreichender Menge herumliegen haben. Einem Röhrenradio-Bastler werden 
die EF80 auch nicht ausgehen.

von Georg G. (df2au)


Bewertung
1 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> das alte Equipment

Problem erkannt :-)
Deshalb steht hier noch ein betriebsbereiter Uralt-PC mit Bootmenu für 
DOS 6.11 und Windows 98 und einem Data-IO dran. Allerdings beschäftige 
ich mich viel mit Dinosauriern. Da lohnt sich der Platz dafür.

von Frank K. (fchk)


Bewertung
0 lesenswert
nicht lesenswert
Georg G. schrieb:
> Stefan ⛄ F. schrieb:
>> das alte Equipment
>
> Problem erkannt :-)
> Deshalb steht hier noch ein betriebsbereiter Uralt-PC mit Bootmenu für
> DOS 6.11 und Windows 98 und einem Data-IO dran. Allerdings beschäftige
> ich mich viel mit Dinosauriern. Da lohnt sich der Platz dafür.

Das ist hier schon längst entsorgt. Mein Xeltek läuft aber auch noch 
unter einem virtualisierten XP. Ist noch halbwegs modern und hat schon 
USB. Parallelport-Zeugs hab ich nie gekauft.

fchk

: Bearbeitet durch User
von Frank K. (fchk)


Bewertung
0 lesenswert
nicht lesenswert
PS: Welches der 4 PALs des A1000 ist es denn?

https://www.amigawiki.org/doku.php?id=de:parts:pld_download

DAUGEN U4S?

fchk

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
soul e. schrieb:
> Georg ging schon davon aus dass am anderen Ende des
> Briefkastens jemand sitzt

Ja klar, das denke ich auch.

Früher hatte ich mal für solche Zwecke einen uralten 386er mit DOS und 
einem winzig kleinen 10" Bildschirm. Aber der ist leider kaputt 
gegangen.

: Bearbeitet durch User
von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:

> Egon D. schrieb:
>> Hmm. Da sehe ich nicht, wie das gehen soll.
>
> Nun, es sind max 9 Signale, wo eins immer low aktiv ist.
> Der 74HCT688 ist ein 8Bit-Vergleicher mit low aktivem
> Enable,

Ah. Ich Depp.
Das Enable hatte ich im DaBla übersehen. Danke.


> paßt also. Macht insgesamt 5 ICs.

Klar.

von georg (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Olaf schrieb:
> War es nicht so das es CPLDs nur mit 3.3V gab?

Es gab welche die 5V-tolerant waren, aber die verschwinden noch 
schneller als die alten PALs.

@Stephanus:
daher habe ich noch einen 486er mit ISA-Bus, DOS/WfW3.11 und einem 
Profi-Programmer betriebsbereit rumstehen - aber wohl seit einem Jahr 
nicht mehr benutzt.

Übrigens, PALASM läuft bei mir einwandfrei in Dosbox. Ich kann also bei 
Bedarf noch genauso arbeiten wie anno dunnemals.

Georg

von Georg G. (df2au)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Passt prima in ein GAL16V8.

von Michael D. (nospam2000)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> http://www.bhabbott.net.nz/atfblast.html (ATFBlast inkl. Sourcecode)

Das hat mich in die richtige Richtung geführt. Mein iMac hat nur keinen 
Parallelport, aber es gibt mittlerweile ein "upgrade" mit USB Anschluss: 
https://github.com/ole00/afterburner/

Es hat sich herausgestellt, dass die ursprüngliche Gleichung die falsche 
war, das war die Original-Gleichung des Amiga 500 PALs.

Ich bin darüber gestolpert, dass MAME (der Emulator) auch die PALs 
emuliert und der MAME SourceCode 
(https://github.com/dankan1890/mewui/blob/master/src/mame/drivers/amiga.cpp) 
enthält einige Hinweise über die Funktion des WOM.

Des weiteren hat sich jemand die Mühe gemacht die A1000 Schaltpläne und 
Logik in Verilog zu beschreiben: https://github.com/ezrec/Amigo.

Damit könnte man die ganze Hardware emulieren bevor man sie aufbaut. Ist 
für meinen Zweck nur aufwändiger als die Hardware tatsächlich zu bauen.

Wir brauchen eine Methode um beim Amiga 1000 das BOOT-ROM und das WOM 
("RAM ROM") abzuschalten. Um den A1000 nicht intern modifizieren zu 
müssen soll das ganze am Expansion Port laufen, genau so wie das hier:
https://www.bigbookofamigahardware.com/bboah/product.aspx?id=1557

Theoretisch müsste sich BOOT-ROM und WOM über OVR=1 abschalten lassen, 
natürlich nur wenn das Chipselect des neuen externen KICK ROMs =0 ist.

Das benötigte Signal OVL liegt nicht am Expansion Port an, d.h. ich muss 
es selbst generieren. Das dient dazu, dass ROM kurzzeitig ab Adresse 0 
einzublenden, damit der 68000er daraus den Reset Vector aus Adresse 4 
lesen kann.

OVL wird von CIAA PA0 (pra.0) gesteuert. Es wird beim Reset automatisch 
1. Durch setzen auf 0 (d.h. eigentlich wohl bei DDRA.0=1 ?) wird das ROM 
dort wieder ausgeblendet und das ChipRAM wird sichtbar.

Aus /RESET und dem Schreibzugriff auf CIAA PA0.0 bzw. DDRA.0 müsste ich 
OVL selbst generieren können. Irgendwie muss es das Golem Kickstart ROM 
Modul ja auch machen. Ob ich DDRA oder PA0 abfragen muss weiß ich nicht 
genau, DDRA ist wahrscheinlich sicherer, das muss auf jeden Fall 
geschrieben werden, PA0.0 enthält ja nach dem RESET bereits den Wert 0.

Hier ein neuer Versuch der Gleichungen:
CS_EXT_KICK =
  /AS \*  A23 \*  A22 \*  A21 \*  A20 \*  A19 \* PRW // $F80000 - FFFFFF
+ /AS \* /A23 \* /A22 \* /A21 \* /A20 \* /A19 \* OVL_LOCAL \* PRW // 
$000000 - 07FFFF

OVR = CS_EXT_KICK

; check CIAA PRA.0 = 0
;;; OVL_DISABLE = /AS \* A23 \* /A22 \* A21 \* /A13 \* A12 \* /A11 \* 
/A10 \* /A9 \* /A8 \* /D8 \* /PRW

; check CIAA DDRA.0 = 1
OVL_DISABLE = /AS \* A23 \* /A22 \* A21 \* /A13 \* A12 \* /A11 \* /A10 
\* A9 \* /A8 \* D8 \* /PRW

OVL_LOCAL = OVL_LOCAL \* /OVL_DISABLE + /RES

Wenn ich einigermaßen sicher wüsste, dass die Gleichungen jetzt passen, 
würde ich gerne jemanden die Bausteine brennen lassen, aber dazu brauche 
ich noch mindestens eine Iteration und ggf. eine Simulation. 
Wahrscheinlich baue ich mir den Afterburner nach.

  Michael

von Michael D. (nospam2000)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

jetzt habe ich mal Gleichungen, die ich auch simuliert habe für ein 
ATF16V8, siehe Anhang. Sind doch etwas komplexer geworden.

Es war einiges an Einarbeitung nötig, vor allem um den ATF zu verstehen 
und mit den Fehlern und Abstürzen von WinCUPL klarzukommen.

Platine für Afterburner ist bestellt.

Vielen Dank nochmal an alle!

  Michael

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.