? Zu C16, C116 und Plus/4 (Netzteil)

Es gibt 124 Antworten in diesem Thema, welches 18.667 mal aufgerufen wurde. Der letzte Beitrag (18. Oktober 2015 um 08:54) ist von Stephan.

  • Ja, ich habe den Prozessor schon vor längerem dort gesehen und wie es meine bereitwillige Pflicht ist bestaunt :wink: Daher kam mir dein Nickname auch bekannt vor.....

    (Das Die kommt mir übrigens deutlich anders vor als das vom 6502, was aber vielleicht am Unterschied Farbe (6502 auf Bitte melde dich an, um diesen Link zu sehen.) vs. schwarzweiß liegen kann.)

    Bis heute scheint niemand einen 8501-Prozessorersatz real (und nachbaubar) gebaut zu haben; auch ich nicht.

    Von Ruud Baltissen gibt es ja ein Referenzdesign, das er aber anscheinend zurückgezogen hat (existiert nur auf der ominösen Bitte melde dich an, um diesen Link zu sehen. Seite) bzw. er steht nicht dahinter und präferiert den Neubau eines 6502-basierten Rechners (homebrew), was für mich angesichts der erforderlichen Teilezahl auch verstehbar wäre: denn der Rayzor-Prototyp zum ursprünglichen C116 besaß nur 9 Chips; die "Seele" dieser Computerreihe ist also der sehr kompakte Einsatz von Bauelementen. Nun hat aber der Entwurf von Ruud allein schon 9 Bauteile "mehr" auf dem Tochterboard, und es ist allein von der Bauhöhe her illusorisch, so ein Board, nur um die ganzen verschrobenen Besonderheiten des 8501 abzudecken (datenRICHTUNGSport ...) im beengten C116 oder auch Plus/4 unterzubringen. Also von der Bauelementezahl her und weil man im Fall des 6502 auch noch die Mehrzahl aller Pins nicht direkt durchverbinden kann (24 Pins Adress- und Daten-) sondern irgendwie "Behandeln" muss, sprich , durch Buspuffer und Latches durchleiten, verlöten und verbinden, steht das in keinem sehr günstigen bzw. gesunden Verhältnis zur Komplexität des übrigen Rechners.

    Als Haupthindernis sehe ich freilich den R/W-Pin in Verbindung mit Gate-In an.
    Obwohl hierzu schon einiges erforscht wurde, bleibt eine Rest-Unsicherheit. Mir z.b. erscheint das Verhalten im Zusammenspiel mit MUX wie du es an anderer Stelle mit Oszilloskop-Bildern gezeigt hast (R/W versus MUX) nur schlüssig, solange der Prozessor mit ~1 Mhz läuft und solange man den Speichertakt (Speicherbandbreite) als immer konstant ~ 2 Mhz annimmt. Bei jeder steigenden Flanke wird eine Zustandsänderung von R/W übernommen und der Zyklus sieht OK aus. Rennt der Prozessor doppelt schnell UND bleibt das Korsett des Speichertakts incl. MUX unverändert, stehen plötzlich zuwenig "Schaltflanken" zur Verfügung, um die R/W-Rücknahme im selben Zyklus "durchzuschalten".

    Wenn der TED aussen vor bleibt und der Prozessor mit doppeltem Takt rennt, hieße das ja, dass R/W nach einem SChreibzyklus erst mitten (oder sogar erst am Ende) im folgenden (Lese-)Takt zurückgenommen wird.

    Du hattest ja seinerzeit vermutet, das Write-Gate bewirke, dass der R/W-Puls immer gleich lang sei. Wenn die steigende Flanke von MUX schon vor dem Beginn des "internen ursprünglichen " R/W stattfindet, käme gated R/W jedoch ständig mind. einen halben Prozessortakt zu spät gültig nach draussen.

    Lösbar sehe ich das Dilemma entweder dadurch, dass die Speicherbandbreite mitsamt dem Prozessortakt (wenn dieser auf 2 Mhz geschaltet wird während TED-retrace) zeitweilig verdoppelt wird auf 4 Mhz, oder andere Umstände bestehen. Jedenfalls muss die Anzahl der Zustandswechsel auf R/W im richtigen Verhältnis zum Prozessortakt stehen. Das erscheint nicht gegeben, solange flankengetriggert wird.

    (Annahme bei alldem ist dass das Gate nicht ein Latch im engeren Sinn ist, sondern ein D-Flipflop, wie es Bil Herd nach eigener Aussage im Prototyp auch verwendet hat: Bitte melde dich an, um diesen Link zu sehen. )

    Und nun als weiteres Hindernis bei so einem Projekt sehe ich eine gewisse Besorgnis (bei mir), beim mit dem Ersatzprozessor dieden Ausgangstreiber des R/W - Signals am TED zu ruinieren.

    Weil ja - ganz untypisch für NMOS und HMOS und auch untypisch für Commodore - der TED eine einseitige PUSH-Stufe an R/W besitzt. Das heisst, wenn die angedachte Tochterplatine / 8501 Ersatzschaltung nicht von Anfang an perfekt ist, besteht ein hohes Risiko, dass wenn die Ersatzschaltung zur Unzeit LOW auf R/W legt, ein Kurzschluss auf R/W entsteht, auf den der TED treibt mit allem was er hat. Mit der Folge, dass man zwar einen 8501 - Ersatz "experimentell getestet" hat, aber den TED geschrottet, und der ist ja genauso selten.

    Nur so ein paar Gedanken von mir, hoffe ich habe mich einigermaßen verstehbar ausgedrückt..

    viele Grüße
    St.

    Dies, glaube ich, ist einer der Hauptgründe, warum es so eine Ersatzplatine noch nicht gibt. Lasse mich aber gern eines besseren belehren.

    EDIT: hab gesehen, Ruud behandelt R/W genau wie eine Adreßleitung. Gate In wird in seiner Schaltung überhaupt nicht berücksichtigt. Nicolas Welte schrieb auf der Cbm-Mailingliste auch schon vor Jahren, der Rechner liefe zur Not "auch ohne Gate In" prächtig. Wie er das genau verdrahtet hat, blieb aber im dunkeln (offen? Pull-up? Pull-down?)

  • TED ist HMOS, also sollte er eigentlich kein Problem damit haben wenn man ein von ihm auf HIGH gezogenes Signal nach LOW zieht. Was NMOS/HMOS nicht mag ist ein LOW gezogenes Signal extern nach HIGH ziehen.

    Das Problem mit R/_W ist, daß die CPU, wenn sie mit 2MHz läuft ein zu kurzes R/_W produziert und du, wahrscheinlich je nach RAM, Probleme bei Schreibzyklen bekommen kannst. Daher wurde dieser Hack verbaut. Bitte bei Betrachtung nicht vergessen, daß bei doppeltem Takt AEC die ganze Zeit HIGH ist und der 8501 damit nach aussen das normale 6502-Triming zeigt. Dort geht R/_W schon deutlich vor der steigenden Flanke von PHI2 auf LOW, ebenso erscheinen die Adressen früher. Damit kann das Latch/Flipflop schon ziemlich früh das Signal übernehmen. Dieses Timing hat auch der 6510, aber es wird normalerweise durch AEC versteckt weil es bei VIC-Zugriffen stören würde.

    Ohne dieses frühe R/_W und die frühen Adressen würde der doppelte Takt warscheinlich nicht funktionieren.

    Ich müsste das nochmal mit einem Logicanalyzer checken und dort alle relevanten Signale (Phi0, R/_W, MUX ...) gleichzeitig beobachten.

  • Danke für die Erläuterungen, insbesondere den Hinweis dass AEC ja dauernd high ist bei 2Mhz.

    Wie meinst du das genau mit

    Zitat

    Das Problem mit R/_W ist, daß die CPU, wenn sie mit 2MHz läuft ein zu kurzes R/_W produziert

    Der "Hack" kann sicherlich nicht den Beginn von R/_W = low "nach vorne" verlängern (=verfrühen), das ist durch die interne 6502-konforme Erzeugung des ursprünglichen R/_W vorgegeben. Es wird eben so früh wie irgendmöglich gültig, unbehindert durch AEC.

    Allerdings kann das R/_W nach hinten verlängert werden und wird es offenbar auch (wenn man Phi0 fallende Flanke als Ende des Zyklus betrachtet, bleibt R/_W noch ca. 150 ns low.). Nach meiner Erinnerung gem. Datenblätter DRAM müsste R/W mindestens am Anfang von CAS = Low gültig bleiben; wie lange müsste ich nochmal nachsehen...

    Der User "Nichtsnutz" hat die entgegen seinem Namen sehr nützlichen LA-Diagramme hier online gestellt, vielleicht erspart es dir etwas Mühe:
    Bitte melde dich an, um diesen Link zu sehen.

    woran ich mich ein wenig orientiert habe. (s.o., 150 ns ...)

    Deine Bemerkung hinsichtlich HMOS ist überzeugend; dennoch scheint es mir noch einen kleinen Unterschied zu geben, die normale NMOS-Ausgangsstufe scheint eine Art passives Mittelding zwischen Widerstand und Transistor nach +5 V zu haben; also eine Art passiver Pullup; während laut

    Bitte melde dich an, um diesen Link zu sehen.

    auf Seite 9 steht:
    Read/Write Pin 7
    R/W is an input to TED to distinguish the type of operation to be performed.
    TED will actively pull up the system read line during all TED fetches. The
    read signal is qualified with MUX. The pin is an open source output. (eigene Hervorheb.)

    Das kommt mir anders vor als normale NMOS (HMOS) Ausgänge, nämlich "aktiv" gesteuert; ähnlich Pin 13 des TED.
    Und während besagter 150 ns um die das R/_W nach hinten verlängert wird in den nächsten TED-Zyklus hinein (aber noch bevor _RAS wieder aktiv wird), könnte es zur temporären Kollision mit dem aktiv nach High treibenden TED kommen, der vermutlich bereits mit AEC = low bzw. Phi0 = low seine Zeit gekommen sieht. Zu bedenken gebe ich, dass die steigende Flanke von R/_W am ende von Schreibzyklen viel steiler und sauberer aussieht als auf dem C64. was für aktives Treiben durch den TED spricht.

    Dies alles beziehe ich auf einen möglichen Fehler "by design" des C16 /116 /+4. Von evtl. Ersatzschaltungen mit 6502 spreche ich hier noch nicht, sondern zunächst ums Grundlagenverstehen.

    Was ist deine geschätzte Meinung dazu? :smile:

    EDIT:
    habe nun noch das Datenblatt vom KM41464A (Samsung DRAM 64k x4) befragt.
    Twcr = write command hold time referenced to RAS = min. 100 ns,
    Twp = write command pulse width = min. 40 ns.

    (Tatsächlich aber steht das Signal viel länger an. Die Probleme (unbeabsichtigtes "early Write" in nachfolgendem TED-Lesezyklus) scheinen mir dadurch erst nähergerückt, wo doch diese Gate In-Schaltung ursprünglich dem vorbeugen sollte.)

    Somit muss der Schreibimpuls nicht unbedingt die volle CAS-Dauer anstehen; schon gar nicht muss er nach hinten in den Folgezyklus hinein verlängert werden, was aber offenbar dennoch geschieht.

    Ich muss immer wieder an den Kommentar von Nicholas Welte denken, wonach es auch ohne Gate In klappt ...

    Unter write command verstehe ich _WE am RAM = low.
    So gesehen könnte der Prozessor das Schreibsignal weit, weit vor Zyklusende loslassen. Wie sich Portbausteine wie der 6522 verhalten würde bei so kurzen R/_W Impulsen kann ich nicht sagen, aber die sind ja auch nicht verbaut :wink:

  • Es sind im C16/116/+4 schon Portbausteine verbaut... im C16 der 6529B, im Plus/4 2 x 6529B und zusätzlich noch der 6551A/8551 ACIA, Ausserdem kann man einen 6522 verbauen wenn einem danach ist, die PLA liefert PHI2 und ein passendes Select-Signal.

    Das R/_W länger LOW ist als nötig ist egal da es nur in den Bereich hineinreicht in dem RAS noch HIGH ist. Solange RAS HIGH ist ignoriert das DRAM aber alles andere.

    Aktiv gesteuerte NMOS-Treiber gibts auch woanders, z.B. beim 6522 Port B. 'Open Source' heisst hier nur, daß 'Source' (Emitter beim normalen Transistor) in der Luft hängt und es keine Verbindung nach GND gibt ausser der, die vielleicht von aussen kommt. Es bleibt aber ein NMOS-Treiber.

    Ja, TED treibt R/_W aktiv, im C64 gibt es nur einen Pullup-Widerstand, deshalb sieht die steigende Flanke dort auch so verbogen aus.

    Schau dir nochmal die Schaubilder von 'Nichtsnutz' genau an. Dann kannst du sehen, daß durch Gate-In das von der CPU generierte R/W-Signal immer gleich lang ist, egal ob sie mit normalem oder doppeltem Takt läuft. Auf diese Weise wird sichergestellt, daß alle Signale für die DRAMs immer im gleichen Verhältnis stehen, egal ob sich CPU und TED abwechseln oder die CPU mit doppeltem Takt auf den Bus zugreift.

    Ob man das jetzt braucht ist eine andere Frage (vielleicht wollte man nur sichergehen) und wäre mittels einem 6510 zu klären. Der hat kein Gate-In. Wird aber einen Zwischensockel brauchen da die Pinouts nicht ganz zusammenpassen. Für IEC und Datasette wird man im KERNAL basteln müssen und Programme mit eigenem Fastloader werden nicht laufen.

    Überlappungen der Signale (und damit einen Kurzschluss für ein paar Nanosekunden) von TED und CPU hast du schon von Haus aus, das ist auch beim C64 und anderen Rechnern dieses Alters nicht anders. Das scheint der Grund zu sein warum ein 7501 20mA weniger Strom braucht als ein 8501. Der 7501 ist HMOS-I und damit langsamer womit seine Signale länger brauchen bis sie auf dem Bus erscheinen. Bis dahin stört kein anderer mehr oder nur noch sehr kurz.

  • Habe mir inzwischen (wie von dir nahegelegt) die LA-Schaubilder von "Nichtsnutz" nochmal angesehen und das gesagte gedanklich nachvollzogen. Dabei ist mir noch aufgefallen, dass es in der Techn. Doku heisst, die "Readline" würde duch "MUX" "qualifiziert. Das ist ja zunächst recht schwammig, beim ersten mal Lesen hatte ich das noch so verstanden, dass eben *im Prozessor 8501* das R/W durch MUX "qualifiziert" wird, das ist ja ein alter Hut.

    Da aber explizit von Readline die Rede ist, aufgrund der besonderen Beschaltung auf TED-Seite und weil TED ja nicht schreibt, deute ich es jetzt als "Beschreibung der Innenbeschaltung des R/W - Pins *im TED*".

    Da frage ich mich nun, wie diese Signalbehandlung tatsächlich gelöst wird. Z.b. könnte Commodore /mos da einfach MUX direkt an den Transistor geführt haben, wodurch dieser anfänglich das Hochziehen der Leitung unterstützt und sobald MUX low wird für den eigentlichen TED-Ramzyklus die R/W -Leitung (die dann schon hinreichend umgeladen ist), sich selbst überlässt. (High-Z.) Weil ansonsten bereits AEC greift.

    Auch könnte - und das erscheint als perfekte Lösung - zusätzlich ein Flipflop und ein 74LS125-Gatter drin sein, über das MUX und AEC (letzteres in invertierter Polarität zur CPU) genau wie im 8501 verschaltet werden.

    Dann käme es zu keiner oder fast keiner Signalkollision. [ EDIT: in einer Assy des C64 ist ja ein 74LS139 vorgesehen der ähnliches wie das R/W Gate In leisten soll.]

    Die Frage ist nur, was hat COmmodore tatsächlich verbaut im TED an dieser Stelle?

    Ein simples ODER-Gatter, das mit MUX der R/W-Leitung anfänglich einen kleinen "Stupser" Richtung high-Pegel gibt, oder eine vollständig "ausdekodierte" Schaltung ?

    Bil Herd berichtete, dass sein erster Prototyp (noch mit 6510) Bildstörungen hatte und er den Entwicklungsingenieur der Hardware-Chips daraufhin fragte, ob er einen Pullup bei R/W eingebaut hätte.

    Die Antwort sei gewesen: "No, why?"

    Ich halte es ebenso für möglich, dass (wie von dir auch angedeutet) man das Problem der Störungen im VIC äh TED-Zyklus nach CPU-Schreibzyklus quasi doppelt und dreifach gelöst hat;allerdings eben auch unvollständig. Doppelt gelöst in dem Sinne, dass z.b.der Prozessor sein internes R/W pünktlich mit der fallenden Flanke von Phi 0 zurücknimmt, aber die fast gleichzeitig erfolgende Flanke von AEC den Pin - wegen des Gate In - noch nicht auf Hochohmig schalten kann, sondern erst 150 nS später mit der steigenden Flanke von MUX. in dieser Zeitspanne würde das real nach aussen gelangende modifizierte R/W nach high getrieben aber bereits von der CPU selbst. (würde die gute Flankensteilheit erklären).Und parallel dazu von dem TED. (das wäre doppelt.) Aber dass sie es so gut gemacht hätten, kann ich irgendwie nicht recht glauben.

    Auf jeden Fall verblüffend im negativen Sinne finde ich dass von 7501 zu 8501 der Stromverbrauch so angestiegen ist. Normalerweise wird bei einem Shrink doch das Die kleiner und die Strukturen, Umladekapazitäten etc., und zugleich sind wir immer noch in einem Bereich wo die Leckströme beim Shrink nicht drastisch größer werden.

    Erwägt man, welche Anstrengungen nötig sind und auch hier im Forum empfohlen werden, den C116 /16 +4 zu geringerem Stromverbrauch und damit Wärmeentwicklung zu erziehen, Schaltregler, Zementwiderstand raus, CMOS-Eproms, evtl. auch Rechner auf SRAM umrüsten,
    so sind das alles ja doch nur periphere Massnahmen,...

    ..verglichen mit der unnötigen Hitze, die durch ein evtl. konfliktträchiges Timing und Umschaltverhalten der AEC/ Adressbus / Gate-In RW-Beschaltung verursacht werden,

    weil diese Hitze von den genannten 20 mA (rund ein Viertel der ganzen Stromaufnahme der CPU) ja direkt an Ort und Stelle in CPU und TED innen drin verheizt werden und dort entsprechend Alterung fördern. OK, die Wärme verhindert wenigstens dass die Chips Rheuma oder Erkältung bekommen - hat also auch sein gutes... :smile:


    Danke für die Ascii-Art-Pinbelegungspläne... viel besser als die winzig beschrifteten Anschlussbilder aus den Wikis. Darf ich das als indirekte Aufforderung verstehen, eine Plug-In-Adapterplatine 6510 / 8501 zu erschaffen? :wink: