Singleboard-MFA mit vier universell verwendbaren Speichersockeln, Parallelinterface, Seriellinterface & gepufferten Bus

  • Hallo Zusammen,


    Da ich ja letztens zusammen mit sixtysixmhz so einige 8085-Prozessoren bekommen habe, dachten wir uns es wäre eine tolle Idee einen 8085-Einplatinencomputer zu entwerfen. Als Bus liegt natürlich der MFA nahe, da dieser sowieso einen 8085 benutzt. Ursprünglicher Plan war die ebenfalls erworbenen 8256 MUARTs zu verwenden, mit eingebautem Parallel-, Seriell-Interface und Timer, aber das wäre aufgrund des gemultiplexten Busses technisch nicht mit dem MFA-Bus realisierbar gewesen.

    Da ich ja eh Sommerferienhabe habe, hab ich mich mal zwei Wochen etwas inntensiver mit KiCad beschäftigt und nach einigen dutzend Stunden kam das heraus:


    Features:

    - MFA kompatibler Bus mit betitelten Pins, benötigt nur +5V

    - 8085 bei 2MHz (4MHz Quartz)

    - Paralleles Interface mit 24 Ports welcher variabel adressiert werden kann

    - Eine vom User konfigurierbarer DB-25 Buchse/Stecker

    - Serielles Interface auf V.24/RS232 Pegel über die SID/SOD Pins des CPUs sowhl nach vorne auf ein DE-9 Stecker sowie auf den Bus

    - Vier Speichersockel für alle denkbaren Speicherchips wie 2716-27512, 2816-28256 und 6164-61256 die alle 8KiB im Speicher platziert werden können


    Die Platine kann auch nur mit

    - CPU und zugehöriger Logik als CPU-Karte bestückt werden,

    - PPI und zugehöriger Logik als Parallel-Karte bestückt werden oder

    - Speicher und zugehöriger Logik als Speicher-Karte bestückt werden.

    Natürlich kann man die einzelnen "Module" auch beliebig kombinieren oder meherere dieser Karten in einem System verwenden (natürlich nur eine CPU pro System).


    Die Leiterbahnen sind alle Autorouter-Frei und der Siebdruck wurde liebevoll von Hand perfektioniert, auch auf der Rückseite:

    Die VG-Leiste sowie Bohrlöcher für die Frontplatte und Bauteile an der Frontseite wurden alle mikrometergenau platziert.

    DRC wurde auch Fehlerfrei ausgeführt (Bis auf zu nahe aneinanderstehene Bauteile, aber die passen in Realität tortzdem).


    Der Schaltplan dazu kann im Anhang gefunden werden, das wäre schön wenn vielleicht nochmal jemand schauen könnte ob der fehlerfrei ist. Mir ist leider später aufgefallen, dass "parallel" zu den Jumpern JP1, 3, 5 & 7 noch Dioden gehören, das passt platztechnisch leider nicht mehr und anstelle von Jumpern müssen Dioden oder "Jumper mit Dioden" verwendet werden. Alle Dateien sind auch im Anhang zu finden.
    Wenn noch jemand kleine Verbesserungsvorschläge hat oder Fehler findet freue ich mich selbstverständlich darüber.:thumbup:


    Ich würde die Platinen selber bestellen (und diesmal auch selber weiterversenden), wenn jemand Interesse hat darf man sich gerne anmelden. So wie ich mich kenne könnte sich die Bestellung allerdings ein bischen ziehen... angst


    Mit freundlichen Grüßen,

    Magnus Hagemann

  • Ich nehm auch mal 3 Platinen, je nach preis.

    Irgenwie muss ich ja mal den Lagerbestand an Bauteile abarbeiten....


    ( Hab an die 10000 TTL auf Lager. Aber die 74ls390 die ich gesteren brauchte war naturlich nicht dabei....)

  • Interesse an einer Platine ist bei mir da, wenn's preislich halbwegs im Rahmen bleibt.


    Gruss Jörg

    Okay, ich notiere mir das mal (noch in Klammern). Preislich kann ich noch nichts genaues sagen, aber aufgrund des doch etwas höheren Arbeitsaufwands würde ich erstmal 20€ sagen.

    Ich nehm auch mal 3 Platinen, je nach preis.

    Irgenwie muss ich ja mal den Lagerbestand an Bauteile abarbeiten....


    ( Hab an die 10000 TTL auf Lager. Aber die 74ls390 die ich gesteren brauchte war naturlich nicht dabei....)

    Okay, habe ich auch mal in klammern notiert. Mensch, 10000 TTL IC's, Hammer!!! Damit muss man doch was machen! Wo hast denn du die denn alle her?

  • Ich nehm auch mal 3 Platinen, je nach preis.

    Irgenwie muss ich ja mal den Lagerbestand an Bauteile abarbeiten....

    ( Hab an die 10000 TTL auf Lager. Aber die 74ls390 die ich gesteren brauchte war naturlich nicht dabei....)

    Okay, habe ich auch mal in klammern notiert. Mensch, 10000 TTL IC's, Hammer!!! Damit muss man doch was machen! Wo hast denn du die denn alle her?

    Das ehemalige Labor-lager von der Chip-entwicklungsbude wo ich gearbeitet habe....

    Bis anfang der 80 wurden auch mal Versuchsaufbauten anstatt / zusatzlich su den Simulationen gemacht.

    Der Laborfritze hat den Bedarf deutlich uberschatzt. Und als die Bude so 2010 dicht ging war nur eine Person am ganzen alten Krempel interessiert....


    Eine Apollo DN10000 hab ich liegen lassen mussen...

  • Woah, sehr interesannte Geschichte! Ich muss aber sagen dass ich so viele Chips aber auch etwas "nützlicher" finde als einen Apollo, ich hätte die gleiche Entscheidung getroffen.:thumbup:

    @Maggi#9295,


    kannst mir auch zwei mit bestellen.
    Ich muss sagen Respekt, echt saubere Arbeit.


    mfG. Klaus Loy

    Super, ist notiert! Danke, ich finde auch dass die Platine gelungen ist... :)

  • Zur Platine : vielleicht noch eine Stecker / Klemme fur die Powersupply ? Damit man nicht von der MFA Backplane abhangig ist....

    Ich wurde das Ding standalone betreiben..

  • Zur Platine : vielleicht noch eine Stecker / Klemme fur die Powersupply ? Damit man nicht von der MFA Backplane abhangig ist....

    Ich wurde das Ding standalone betreiben..

    Okay, das kriege ich noch drauf :thumbup:

    • Offizieller Beitrag

    Coole Schaltung!


    2 Kleinigkeiten sind mir aufgefallen:

    - CPU_TX passt nicht an R2IN (MAX232)

    - Pulldowns und LS passt nicht anstaendig zusammen (RN1, U13)

    LS Eingaenge geben Strom ab, das kann bei Pulldowns zu unerwuenschten/falschen Pegeln fuehren.


    Ansonsten: Keine Fehler bekannt. (Habe ich frueher immer meinem Chef geantwortet, auf die Frage "Funktioniert alles?" :) )

  • Vielen Dank für das Überfliegen!


    Erstmal zu dem MAX232. Problem: Der MAX232 (sowie MC1488/MC1489 im original) invertieren die Signale, dabei wird diese Aufgabe vom Betriebsprogramm erledigt. Die Lösung im Original: Man benutzt ein Gate des Empfängers als ersten Inverter ((TTL vom CPU)V24->TTL) und dann ein Gate des Senders (TTL->V24) zum zweifachen invertieren. Da habe ich mich allerdings nicht so hineingewühlt, ein ausschnitt des Schaltplans im Anhang. Hier war jetzt das Problem dass ich keine freien Invert-Gates mehr hatte und habe mich daher des selben Tricks bedient.

    Da das TTL Signal einen Low-Pegel von ≤ 0,4V und einen High-Pegel von ≥ 2,4V hat, scheint es zunächst unmöglich dieses als RS232 Signal (Low ≤ -3V; High ≥ +3V) zu interpretieren. ...Welches zur Erinnerung am Eingang des als "Invertier-Gate" missbrauchten RS232 Empfangs-Gate (R2IN - R2OUT) erwartet wird. JEDOCH: sagt das Datenblatt des MAX232, dass der Empfangs-Teil (R1IN, R2IN) eine Spannung von unter 0,8-1,2V als negativ und eine Spannung von über 1,7-2,4V als positiv betrachtet (Auch davon ein Bild im Anhang). Das heißt, man kann an die RS232 Pins ein TTL Signal schicken, welches dann (((hoffentlich))) als richtig Interpretiert wird.

    Es ist wirklich schwierig das ganze in Worte zu fassen, ich hoffe das ist trotzdem verständlich. angst In kurzen Worten: Ein RS232-Empfangs-Gate wird als Inverter missbraucht.


    Jetzt zu den Pulldowns: Braucht man diese gar nicht bei LS? Dass die Eingänge bei TTL eigentlich Strom "liefern" und Ausänge Strom "annehmen" hatte ich schonmal im Hinterkopf, verwirrende Sache. Als was wird denn dann der Eingang Interpretiert wenn der nicht verbunden ist? Ich stehe gerade ein bischen auf dem Schlauch...:grübel:


    Und mit "Keine Fehler bekannt" kann man sich zur Not schön aus dem Mist ziehen, das muss ich mir merken...::heilig::


    Und einen Terminal-Block zur Spannungsversorgung habe ich noch unten rechts in die Ecke gequetscht:

    Ich werde aktualisierte Dateien später hochladen, das möchte ich jetzt nicht nach jeder Kleinigkeit machen. Aber keine Panik: die kommen auf jeden Fall noch.:thumbup:


    MfG,

    Magnus

    • Offizieller Beitrag

    Es ist wirklich schwierig das ganze in Worte zu fassen, ich hoffe das ist trotzdem verständlich. angst In kurzen Worten: Ein RS232-Empfangs-Gate wird als Inverter missbraucht.

    Hab ich verstanden, alles ok.

    Der Inverter im Original-Schematic ist mir noch nie aufgefallen.

    Sollte klappen.


    Jetzt zu den Pulldowns: Braucht man diese gar nicht bei LS?

    Pulldowns sollte man bei Standard TTL (LS, S, STD, ...) weg lassen.

    Der TTL-Input schiebt einen Strom raus und mit dem Pullup ergibt sich eine Spannung (U=R*I). Diese Spannung ist i.a. hoeher als die min. Input-Voltage, d.h. entweder der Eingang wird als High erkannt oder schlimmer, liegt im verbotenen Bereich.


    Richtig(er) ist mit Pullups und Dip-Schalter/Jumper gegen GND.


    Bei HC, HCT etc ist das natuerlich was anderes, da hier am Eingang keine Stroeme fliessen.


    Und mit "Keine Fehler bekannt" kann man sich zur Not schön aus dem Mist ziehen, das muss ich mir merken...

    Das hat noch nicht mal was mit "aus dem Mist ziehen".

    Wenn ich sage, das Wasserglas ist nicht voll, heisst es nicht, das es leer ist.


    Aber genau aus dem Grund mag ich den Spruch. :)

  • Hab ich verstanden, alles ok.

    Der Inverter im Original-Schematic ist mir noch nie aufgefallen.

    Sollte klappen.

    Okay super, dann hoffen wir mal dass Praxis nicht stark von der Theorie abweicht!:thumbup:

    Pulldowns sollte man bei Standard TTL (LS, S, STD, ...) weg lassen.

    Der TTL-Input schiebt einen Strom raus und mit dem Pullup ergibt sich eine Spannung (U=R*I). Diese Spannung ist i.a. hoeher als die min. Input-Voltage, d.h. entweder der Eingang wird als High erkannt oder schlimmer, liegt im verbotenen Bereich.


    Richtig(er) ist mit Pullups und Dip-Schalter/Jumper gegen GND.


    Bei HC, HCT etc ist das natuerlich was anderes, da hier am Eingang keine Stroeme fliessen.

    Ahhh, okay, das macht Sinn. Im Schaltplan zur Original-Parallel-Karte war das auch so wie du beschreibst, aber mich hatte immer verwundert warum man das mit den Jumpern gegen Ground schaltet. Dann werde ich das mal flott korregieren.

    EDIT: Ist geändert!

    Das hat noch nicht mal was mit "aus dem Mist ziehen".

    Wenn ich sage, das Wasserglas ist nicht voll, heisst es nicht, das es leer ist.


    Aber genau aus dem Grund mag ich den Spruch. :)

    Gut gesprochen!:thumbup:

    Einmal editiert, zuletzt von Magnus ()

  • Habe ich da was übersehen, oder sind da tatsächich keine Abblockkondensatoren eingeplant?

    Jein... schwieriges Thema. Auf dem Board sind vier Bypass-Elkos. Für Kerkos an jedem Chip war das Leiterbahntechnisch schwierig realisierbar, deshalb habe ich mich dafür entschieden Sockel mit eingebauten Kerkos zu nehmen. Gegebenenfalls reichen die Elkos bei einer solch niedrigen Geschwindigkeit sogar.:grübel:

    • Offizieller Beitrag

    reichen die Elkos bei einer solch niedrigen Geschwindigkeit sogar.

    Die Blockkondensatoren haben "nichts" mit der Taktfrequenz zu tun, sondern mit der Schaltgeschwindigkeit der verbauten ICs.

    Elkos an der anderen Platinenseite helfen da oft nichts.


    IC Sockel mit Kondensatoren sind gut, aber denk auch an die ICs deren Versorgung nicht auf N und N/2 sitzt. (N = Anzahl der Pins).

    Und auch bei den Versorgungen, die per Jumper gesetzt werden.


    Ehrlich gesagt, hab ich gestern total uebersehen.

  • Die Blockkondensatoren haben "nichts" mit der Taktfrequenz zu tun, sondern mit der Schaltgeschwindigkeit der verbauten ICs.

    Elkos an der anderen Platinenseite helfen da oft nichts.

    Oops - stimmt, so wars. :fp: Allerdings habe ich die Elko's in allen vier Ecken untergebracht.;)

    IC Sockel mit Kondensatoren sind gut, aber denk auch an die ICs deren Versorgung nicht auf N und N/2 sitzt. (N = Anzahl der Pins).

    Und auch bei den Versorgungen, die per Jumper gesetzt werden.

    Stimmt auch, aber es braucht ja nicht jeder Chip einen Kerko, oder? Wenn das alle Logikchips und der CPU bekommt sollte das ja reichen.

    Der NDR-Klein-Computer sowie auch der MFA selber besitzen auch nicht an jedem Chip einen Bypass-Kondensator, deshalb bin ich der Meinung dass die Elkos zusammen mit einem Kerko unter dem CPU sowie vielleicht den Bus-Treiber-Chips reichen sollten.:grübel:


    Ehrlich gesagt, hab ich gestern total uebersehen.

    Macht ja nix - was meinst du warum ich die Bypass-Kondensatoren nicht von Anfang an mit eingeplant habe...

  • Da fällt mir ein, dass ich vergessen habe die Elkos im Schaltplan auf 10uF zu erhöhen, die sind zur Zeit noch mit 1uF im Schaltplan betitelt...

  • Mir ist leider später aufgefallen, dass "parallel" zu den Jumpern JP1, 3, 5 & 7 noch Dioden gehören, das passt platztechnisch leider nicht mehr und anstelle von Jumpern müssen Dioden oder "Jumper mit Dioden" verwendet werden.

    Schöne Arbeit! :thumbup:


    Das mit den Dioden bei den Jumpern verstehe ich nicht ganz. So wie ich die Schaltung sehe, wird je Speicherchip ein Jumper gesetzt um den Adressbereich festzulegen. Also wird der jeweilige Output vom LS138 mit dem CE vom Speicher verbunden. Wozu wären dann noch Dioden nötig?


    Grüße, PAW

  • Dankeschön!:)


    Wenn dein Speicherchip beispielsweise 16KiB groß ist, beziehungsweise zwei 8KiB-Bereiche benötigt, muss man für beide Bereiche jeweils einen Jumper setzen, insgesamt zwei. Jetzt ist das Problem, dass eine Seite der Jumper direkt miteinander verbunden ist. Wenn man jetzt zwei Jumper setzt verbindet man also zwei Select-Leitungen direkt miteinander. Dadurch werden zwei Ausgänge des 74LS138 kurzgeschlossen. Da immer nur ein Ausgang des 74LS138 Low sein kann, sind die anderen Ausgänge High. Dadurch wird "direkt" Ein High-Pegel mit einem Low-Pegel beziehungsweise +5V mit GND verbunden. Dass das nicht gesund ist sollte wohl verständlich sein... ;)


    Wenn du Specherchips mit einer Größe von 8KiB verwenden willst brauchst du keine Dioden, bei allen die mehrere 8KiB-Bereiche einnehmen beziehungsweise größer als 8KiB sind, musst du anstatt der Jumper Dioden verwenden.

    Die kannst du entweder direkt einlöten oder für spätere Änderungen auf eine 1x2-Pin Buchsenleiste löten die du anstelle der Jumper auf die Header steckst.

    Die Richtung der Dioden ist auf der Platine auf beiden Seiten zwischen den Pins markiert.:thumbup:


    MfG,

    Magnus

  • Ich wollte gestern nicht nach den Entkoppel-/Blockkondensatoren fragen, da ich diese ggf. durch entsprechende Sockel nutze. Da Dein Layout so schon sehr eng ist, habe ich das einfach mal angenommen. Trotzdem mal ein aus meiner Sicht interessanter Artikel von Lothar Miller:


    http://www.lothar-miller.de/s9y/categories/14-Entkopplung

    Gruß Torsten

    BFZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, MSX VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, TP755cx, T20, T41, T61, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e, Sharp PC1401 & PC1403H, TI59 m. PC-100c, HP48SX & HP48GX


    An die Person, die meine Schuhe versteckt hat, während ich auf der Hüpfburg war: Werd' erwachsen! :motz:


    ::matrix::

    • Offizieller Beitrag

    aber es braucht ja nicht jeder Chip einen Kerko, oder?

    Nein, es koennen auch 2 sein, fuer jeden Versorgungspin einen.


    Du kannst dir mal Dokus zum PCB Design namhafter, aktueller Halbleiterhersteller anschauen.

    Die schreiben dir vor, wieviel, welche Entfernung etc die Kondensatoren haben duerfen.

    Und wie diese am besten anzuschliesen sind.

    tokabln 's Link ist da sehr gut.


    Aber wie gesagt, es haengt von der verwendeten Technologie (Flankensteilhet etc) ab.


    Man kann an den Stellen (Spannung, Blockkondensatoren, EMV, etc) nicht immer alles optimal gestalten. Aber man muss alles im Hinterkopf bestmoeglich beruecksichtigen.

    Der Einzelfall entscheidet. Und schlimmstenfalls kann ein solcher Fehler im Totalverlust enden.

  • Danke für die vielen Info's, tokabln 's Webseite hat das gut erklärt. Ich hab das Layout nochmal überflogen, und ohne ein großes Rework bekomme ich da leider keine Entkoppel-Kondensatoren mehr rein... Sprich es müssten wenn es passt Sockel mit Entkoppelkondensatoren verwendet werden. Da sind die Kondensatoren dann auch so nah wie möglich am Chip. :thumbup:

  • ich würd dann der Vollständigkeit halber auch eine Platine nehmen

    ..ob ich sie allerdings bestücke bleibt noch fraglich ::heilig::

    ich bin signifikant genug:razz:

  • Hallo Zusammen,


    ich habe nochmal die Werte der Bypass-Elkos aktualisiert und das Pinout von JP9 geringfügig verändert, so dass Rx und Tx ggf. vertauscht werden können. PDF- und Gerber-Plots sowie Bilder habe ich auch aktualisiert. Ich würde wenn nichts weiteres Anliegt demnächst 15 Platinen auf Grundlage der unten angehängten Dateien bestellen. :thumbup:


    MfG,

    Magnus

    • Offizieller Beitrag

    Ich leg meist RTS (Pin 7) und DTR (Pin 4) an der DSub9 auf Pin 2 des MAX232. Somit sind die Signale immer aktiv.

    Kann bei manchen Terminals helfen.