Hallo Spezialisten, ich will eine Hauptplatine aus einem alten Schachcomputer nachbauen. Genauer gesagt, ist es eine getunte Platine die statt mit 2MHz mit 16MHz läuft. Ich habe mir den Schaltplan (siehe Anhang) durch ausmessen der Originalplatine erstellt, mit Kicad ein Platinenlayout entworfen und die Platine fertigen lassen. Unterschiede zur Originalplatine sind nur der Speicherchip. Ich verwende einen AS6C62256 (Datasheet:https://www.mouser.at/datasheet/2/12/AS6C62256_23_March_2016_rev1_2-1288423.pdf) statt des BS62LV256PIP55. Nach dem Einschalten scheint die Platine auch zu funktionieren, aber beim Starten des Schachprogramms erkennt man, dass falsche Eröffnungszüge ausgegeben werden, die so nicht im ROM gespeichert sind. Resetet man das System werden dann meist sofort die richtigen Züge gespielt. Aber auch jetzt kommt es immer wieder zu Abstürzen. Erst nach ca. 20min. "warmlaufen" der Platine läuft diese einwandfrei. Ich habe den Schachcomputer über Nacht rechnen lassen und es kam dann zu keinem Absturz mehr. Ich habe meinen Aufbau nochmals genau mit der Originalplatine verglichen und keine Unterschiede erkennen können. Natürlich sind meine Leiterbahnen anders geroutet. Habe da den Freerouter bemüht, da ich keinerlei Erfahrungen mit manuellem Routing habe. Vielleicht habe ich hier gegen wichtige Designregeln verstossen, aber solche 6502-System wurden auch schon erfolgreich auf Breadboards aufgebaut. Ich vermute den Fehler im Timingverhalten der 65C02 (von WDC, Datasheet siehe:https://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf). Ich habe mir die Datasheets dazu genau angesehen, muss aber gestehen, dass ich daraus nicht schlau werde. Meine Vermutung basiert auf der Erkenntnis, dass, wenn ich CE vom SRAM gleich direkt an das erste Or-Gatter (U3C) hänge es gar nicht vernünftig läuft. Es kommt dann auch nach 20min. eingeschaltet sein, zu vermehrten Abstürzen (praktisch unspielbar). Kann mir jemand genau erklären wie die Kommunikation zwischen 65C02 und SRAM bzw. VIA 65C22 bzw. EPROM 27C512 genau funktioniert. Ich bilde aus den Adressleitungen die CE-Signale für die Speicherbausteine, OE ist dabei direkt mit GND verbunden. Habe mir nie Gedanken über irgendwelche Gatterlaufzeiten gemacht, weil es in der Originalplatine doch einwandfrei funktioniert. Oder funktioniert es in der Originalplatine deshalb einwandfrei, weil hier ein anderer Speicher verwendet wird? Ich habe extra darauf geachtet einen vergleichbaren mit selber Zugriffszeit zu bekommen. Ich verwende EPROMS mit 45ns oder 100ns Zugriffszeit. Im Original wird ein EPROM mit 100ns verwendet. Wie baut man ein 65C02-System, das mit 16MHz (oder höher) getaktet werden soll professionell auf? Warum läuft meine Platine nach 20min. warmlaufen erst einwandfrei? Habe ich irgendwas entscheidendes übersehen? Wie kann ich vorgehen um den Fehler zu finden? Als Messequipment steht mir ein Multimeter und ein Rigol Oszilloskop (50MHz) zur Verfügung. Ich bedanke mich im Voraus bei Allen die mir weiterhelfen wollen.
Ist jetzt nicht was ein Platinen-Schreiner hören will, aber es gibt sehr erfolgreich beschleunigte 6502 Computer komplett auf FPGA mit 100 MHz. Ein Trick dabei ist, den externen RAM auch durch den FPGA zu ersetzen : https://www.heise.de/news/Retro-Computing-6502-mit-100-MHz-6223820.html
:
Bearbeitet durch User
Die ersten Apple II nachbauten hatten das Problem das eine Leitung kürzer geroutet war und daher das Timing nicht mehr stimmte. https://www.youtube.com/watch?v=ZWf8t_mHocM
Bradward B. schrieb: > Ist jetzt nicht was ein Platinen-Schreiner hören will, aber es gibt sehr > erfolgreich beschleunigte 6502 Computer komplett auf FPGA mit 100 MHz. > Ein Trick dabei ist, den externen RAM auch durch den FPGA zu ersetzen : > > https://www.heise.de/news/Retro-Computing-6502-mit-100-MHz-6223820.html Ja, danke, die 65F02 kenne ich bereits, aber mir geht es nicht um die Geschwindigkeit, sondern ich möchte das Eröffnungsbuch erweitern und deshalb muss ich mir eine weitere Platine bauen um das ROM in den Bereich ab $2000 zu bringen. Bei der Originalplatine ist der Bereich $2000 - $3FFF sowohl vom RAM als auch vom ROM belegt. Also das zweite OR-Gatter ist dort nicht in Verwendung!
Johannes S. schrieb: > Warum läuft meine Platine nach 20min. warmlaufen erst einwandfrei? Habe > ich irgendwas entscheidendes übersehen? Hört sich fast nach schlechten Lötstellen an oder nah Haar-Rissen in einer Leiterbahn. Kältespray hilft da ggf. um den betroffenen Bereich genauer einzugrenzen. Wenn es ein Timingproblem wäre, das nur in einem bestimmten Temperaturbereich auftritt, dann wäre das ganze schon arg auf Kante genäht und eher Zufall, das es überhaupt mal funktioniert. Da wäre dann eher ein LA angesagt um sich das Timing, und vor allem die Veränderung mit der Temperatur genauer anzusehen.
Johannes S. schrieb: > Warum läuft meine Platine nach 20min. warmlaufen erst einwandfrei? Habe > ich irgendwas entscheidendes übersehen? Wie kann ich vorgehen um den > Fehler zu finden? Vielleicht sind gewisse Timings grenzwertig? Ohne diese genauer betrachtet zu haben sehe ich im Datenblatt des W65C02S nur Timing- Werte bis 12 MHz angegeben. Wird es darüber hinaus "schwierig"? Wenn es ein Timing-Problem ist und das System es erlaubt, benutze doch mal einen Takt mit 8 oder 12 MHz. Wenn dein System prinzipiell läuft dann sollten wir auch mal einen Blick auf dein Layout werfen (dürfen) ....
Wastl schrieb: > Johannes S. schrieb: > Wenn es ein Timing-Problem ist und das System es erlaubt, benutze > doch mal einen Takt mit 8 oder 12 MHz. > > Wenn dein System prinzipiell läuft dann sollten wir auch mal > einen Blick auf dein Layout werfen (dürfen) .... Hallo Wastl, ja, ich habe es auch schon mit 8MHz und mit 11MHz probiert. Mit 8MHz scheint es noch schlechter zu sein. Im Anhang ein Kicad-File meines PCB. Achtung, das ist noch das erste Layout mit einigen Fehlern die ich direkt auf der Platine behoben habe. Der 74HC4020 wurde nie eingebaut, da ich später erst begriffen habe, dass das so nicht funktionieren kann. Weiters wurden einige offene Eingänge auf Masse gelegt und die R/W-Leitung der CPU auf die VIA 6522 geführt. Es könnte nur sein, dass ich vielleicht zu dünne Leitungen verwendet habe. Die sind im Original etwas breiter.
Johannes S. schrieb: > Kann mir jemand genau erklären wie die Kommunikation zwischen 65C02 und > SRAM bzw. VIA 65C22 bzw. EPROM 27C512 genau funktioniert. Ich bilde aus > den Adressleitungen die CE-Signale für die Speicherbausteine, OE ist > dabei direkt mit GND verbunden. Sinnvoller wäre es, /OE mit R/W zu verbinden. > Habe mir nie Gedanken über irgendwelche > Gatterlaufzeiten gemacht, weil es in der Originalplatine doch > einwandfrei funktioniert. Und Du meinst, von einer mit 2 MHz getakteten Platine einfach so auf ein mit 16 MHz getaktetes Design schließen zu können? Oder verwendet Deine Schaltung eingefügte Waitstates, um mit langsamen Bausteinen wie VIA und EPROM zu kommunizieren? Sieh dir mal das Bustiming des 6502 an (im Anhang) - oder auf S. 26 Deines Datenblatts Bei 16 MHz Takt hast Du eine Zykluszeit (tcyc bzw. tpwl + tpwh) von 62.5 nsec, und da hat beim Lesezugriff ein Speicher- oder Peripheriebaustein gerade mal grob die die Hälfte der Zeit (tacc), um Daten zu liefern, also nur etwa 30 nsec. Dein Datenblatt gibt auf S. 25 hierfür schon bei 14 MHz Takt diesen Wert an. Dein EPROM ist auch mit 50 nsec viel zu langsam, und wenn Du die Gatterlaufzeiten ignorierst, erst recht. Denn die musst Du zur Zugriffszeit des EPROMs noch dazurechnen. Und auch zu der des RAMs und aller Peripheriebausteine. Welchen Sinn hat eigentlich das lustige Pdf-Wimmelbild in Deinem Anhang? Ein Schaltplan ist das nicht.
Weitere Gedanken ... Was aus dem Schaltplan leider nicht hervorgeht: ist denn SRAM und EEPROM für 16 MHz ausreichend schnell? Der Referenztakt PHI2 wird direkt vom Oszillator getrieben, sollte da nicht zumindest ein Gatter zum Puffern dazwischen? Gibt es Gründe warum 74Fxx Gatter Verwendung finden? Das sind Stromfresser und sie geben im High-Level keinen sehr befriedigenden Pegel für C-MOS Bausteine aus. Ich hätte dort - sollten Timing-Probleme zu erwarten sein - Gatter aus der 74AC Familie verwendet.
Auf die schnelle sieht der Schaltplan brauchbar aus, an der reset-leitung könnte man aber mal das Timing/Flankensteilheit messen, die CPU hat einen PullUp an der Resetleitung, der W65C22 nicht. Eventuell kann was über die NMI-Leitung vom Connector was reinspucken.
Wastl schrieb: > Weitere Gedanken ... ... hat Harald bereits z.T. gebracht während ich geschrieben habe.
Wastl schrieb: > Was aus dem Schaltplan leider nicht hervorgeht: ist denn SRAM > und EEPROM für 16 MHz ausreichend schnell? Sind sie nicht, wie ich gerade schrieb. Schon bei 14 MHz beträgt die gesamte verfügbare Zugriffszeit gerade mal 30 nsec, und das schließt Gatterlaufzeiten der Decodierlogik mit ein. Mit den erwähnten Bausteinen ist bestenfalls ein Betrieb bei 8 MHz möglich, siehe Tabelle 6-3 auf S. 25 des Datenblatts des W65C02S. Bradward B. schrieb: > Auf die schnelle sieht der Schaltplan brauchbar aus Da ist kein Schaltplan, da sind nur nicht miteinander verbundene Symbole. Wer Lust hat, Puzzle zu spielen, kann natürlich versuchen, die Logik zu suchen, die sich dadrin verbirgt.
Harald K. schrieb: > Dein EPROM ist auch mit 50 nsec viel zu langsam Hab ich was verschlafen? Gibt es 27C512 mit 50 nsec Zugriffszeit?
Johannes S. schrieb: > Erst nach > ca. 20min. "warmlaufen" der Platine läuft diese einwandfrei Kältespray, evtl. mit Hilfe von einem NOP Baustein, hartverdrahtet auf einer DIP Fassung und alle Adressleitungen auf richtigem Takteiler prüfen.
H. H. schrieb: > Sogar mit 45ns Bei meinen 512ern steht da immer (-100,) -120, -150 .... drauf ;-) Flash-EPROMs -70 ....
Johannes S. schrieb: > ARB_PCB16_V2.kicad_pro (17,4 KB) Ein (oder mehrere) einfache *.png Dateien wären hilfreich. Aber wenn es ein Autorouter-Layout ist brauchen wir wahr- scheinlich gar nicht erst einen Blick darauf werfen. Johannes S. schrieb: > Habe da den Freerouter bemüht
Bei der Stromversorgung sollte man mal die Ausgangsspannungen des U5 (LM7805) unter Last messen, es gibt da bezüglich des maximalen Laststromes unterschiedliche Sub-Typen. Die Kondensatoren am U5 scheinen mir für schnelle Flanken auch zu hoch, anbei snippet aus dem Datasheet des TI LM7805CT/NOPB .
:
Bearbeitet durch User
Rüdiger B. schrieb: > Die ersten Apple II nachbauten hatten das Problem das eine Leitung > kürzer geroutet war und daher das Timing nicht mehr stimmte. > https://www.youtube.com/watch?v=ZWf8t_mHocM OMG! Schon wieder Fake News? Was hat DIESES Video mit einer angeblich zu kurzen Leitung zu tun? GAR NICHTS! Und auch der Titel des Videos ist Unfug, denn es ist kein Glitch, der da produziert wird, sondern wie er selber sagt ein nicht ganzzahliger Teiler! Das ist was vollkommen anderes! Und in einer Kiste wie Z80 oder Apple-II sind Laufzeiten auf grund von Leitungslängen nie und nimmer ein Problem! Wenn, dann höchstens eines, welches durch schlechte Signal- und Masseführung und Störungeinkopplungen erzeugt wird!
Jetzt haben wir Johannes' Schaltung so "schlechtgeredet" dass er total schockiert ist und sich nicht mehr melden wird.
Falk B. schrieb: > Und in einer Kiste wie Z80 oder Apple-II sind Laufzeiten auf grund von > Leitungslängen nie und nimmer ein Problem! nicht mal auf einem handverdrahteten (Speicher- & Porterweiterung) PET2001
Bradward B. schrieb: > Die Kondensatoren am U5 scheinen mir für schnelle Flanken auch zu hoch, Ja, der Ausgangs-Kondensator darf nicht beliebig gross sein sonst leiden die Regeleigenschaften deutlich. Dagegen darf der Eingangs-Kondensator beliebig gross sein, denn darauf stützt sich der Spannungsregler. Eine an diesem Punkt "weiche" Spannung bringt einen Regler schon mal zum Schwingen.
Joachim B. schrieb: > nicht mal auf einem handverdrahteten (Speicher- & Porterweiterung) > PET2001 Der läuft ja auch mit Gleichstrom (1 MHz), d.h. ein typischer Speicherzugriff hat 500 nsec Zeit. Da sind Platinenlayouts in A4-Größe wie eben beim PET oder auch beim Apple II kein Thema. Das war übrigens auch beim IBM PC mit vermeintlich höherem Takt von fast 5 MHz kein Thema, denn der brauchte sechs oder sogar acht Takte für einen Zyklus, und nicht nur einen, wie der 6502. Möchte man aber wie der Threadstarter das ganze mit 16 MHz betreiben, dann sieht die Geschichte gleich ganz anders aus. Insbesondere, wenn CMOS-Bausteine mit ihren doch deutlich knackigeren Flanken verwendet werden.
Harald K. schrieb: > Und Du meinst, von einer mit 2 MHz getakteten Platine einfach so auf ein > mit 16 MHz getaktetes Design schließen zu können? Nein, meine ich nicht. Wie aus meinem Eingangspost hervorgeht habe ich hier eine mit 16MHz getaktete Platine die ich nachbauen möchte. Harald K. schrieb: > Oder verwendet Deine Schaltung eingefügte Waitstates, um mit langsamen > Bausteinen wie VIA und EPROM zu kommunizieren? Nein verwende ich nicht. Da kenne ich mich nicht damit aus. Mache das hobbymässig. Harald K. schrieb: > Sieh dir mal das Bustiming des 6502 an (im Anhang) - oder auf S. 26 > Deines Datenblatts > > Bei 16 MHz Takt hast Du eine Zykluszeit (tcyc bzw. tpwl + tpwh) von 62.5 > nsec, und da hat beim Lesezugriff ein Speicher- oder Peripheriebaustein > gerade mal grob die die Hälfte der Zeit (tacc), um Daten zu liefern, > also nur etwa 30 nsec. Dein Datenblatt gibt auf S. 25 hierfür schon bei > 14 MHz Takt diesen Wert an. Ja, das erste was ich nach dem Lesen der Diagramme gedacht habe war "das kann gar nicht funktionieren", aber wieso funktioniert es dann in der Platine die ich vor mir liegen habe? Der Elektroniker, der diese Platine entwickelte, hat auch Platinen mit bis zu 24MHz Taktfrequenz gemacht. Die funktionieren alle einwandfrei. Allerdings bei den höher getakteten Platinen hat er dann 45ns EPROMs genommen und schnelleren SRAM (MT5C6408). Harald K. schrieb: > Welchen Sinn hat eigentlich das lustige Pdf-Wimmelbild in Deinem Anhang? > Ein Schaltplan ist das nicht. Naja, ich wollte den Schaltplan als pdf-File anhängen. Da sieht man halt nur eine Vorschau. Wenn man ihn downloaded sieht man deutlich mehr. Kicad kommt mit dieser Art von Schaltplan sehr gut zurecht. Aber gut zu wissen, dass es üblich ist das anders zu machen. Danke für den Hinweis. Wastl schrieb: > Was aus dem Schaltplan leider nicht hervorgeht: ist denn SRAM > und EEPROM für 16 MHz ausreichend schnell? Das weiß ich eben nicht. Ich habe versucht einen baugleichen Typ zu finden wie auf der Platine die eben einwandfrei mit 16MHz läuft. Kann sein, dass der Entwickler dieser Platine einen SRAM genommen hat der deutlich schneller ist als auf dem Baustein draufsteht. In der funktionierenden Platine arbeitet ein BS62LV256PIP55, ich verwende einen AS6C62256PCN mit 55ns Zugriffszeit. Wastl schrieb: > Der Referenztakt PHI2 wird direkt vom Oszillator getrieben, > sollte da nicht zumindest ein Gatter zum Puffern dazwischen? Ich glaube im Datenblatt der W65C02S gelesen zu haben, dass das direkt möglich ist. Wastl schrieb: > Gibt es Gründe warum 74Fxx Gatter Verwendung finden? Das sind > Stromfresser und sie geben im High-Level keinen sehr > befriedigenden Pegel für C-MOS Bausteine aus. Ich hätte dort > - sollten Timing-Probleme zu erwarten sein - Gatter aus der > 74AC Familie verwendet. Ok, Danke für den Hinweis. Ich habe nur gesehen dass die F-Gatter schneller sind als die normalen LS-Gatter. kenne mich da nicht wirklich aus und habe die genommen die auf der funktionierenden Platine verbaut sind. Gut zu wissen, dass es geeignetere gibt. Werde ich mir beschaffen und ausprobieren. Bradward B. schrieb: > Auf die schnelle sieht der Schaltplan brauchbar aus, an der > reset-leitung könnte man aber mal das Timing/Flankensteilheit messen, > die CPU hat einen PullUp an der Resetleitung, der W65C22 nicht. > Eventuell kann was über die NMI-Leitung vom Connector was reinspucken. Die VIA W65S22 ist über die gleiche RESET-Leitung verbunden wie die CPU Harald K. schrieb: > Mit den erwähnten Bausteinen ist bestenfalls ein Betrieb bei 8 MHz > möglich, siehe Tabelle 6-3 auf S. 25 des Datenblatts des W65C02S. Ja, das war auch meine erste, laienhafte Meinung zu diesem Thema. Das kann ja gar nicht funktionieren. Wieso habe ich aber dann eine Platine hier vor mir liegen die schon jahrelang einwandfrei läuft? Ich kenne mich mit diesen Timing-Diagrammen nicht gut aus, darum glaube ich etwas falsch daraus abzuleiten. Wie funktioniert so ein Read-Vorgang tatsächlich? Bei fallender Flanke von PHI2 wird die Adresse auf den Bus gelegt, danach dauert es 10ns bis die Adresse gültig ist. Stimmt das soweit? Wann wird mein SRAM jetzt angesprochen? CE vom SRAM wird über das Or-Gatter erzeugt. Wie lange dauert das? Wann sind die Daten des SRAM dann gültig und werden diese dann mit der nächsten fallenden Flanke von PHI2 in die CPU eingelesen. Ihr seht schon, da kenne ich mich nicht wirklich gut aus. Vielleicht kann mal jemand so nett sein und so einen Vorgang detailliert beschreiben. Joachim B. schrieb: > Kältespray, evtl. mit Hilfe von einem NOP Baustein, hartverdrahtet auf > einer DIP Fassung und alle Adressleitungen auf richtigem Takteiler > prüfen. Danke für Deinen Beitrag. Muss ich mir mal genauer überlegen. habe mittlerweile eine zweite Platine mit genau demselben Problem aufgebaut. Es dürfte zumindest kein mechanisches Problem, wie kalte Lötstelle etc. sein. Wastl schrieb: > Ein (oder mehrere) einfache *.png Dateien wären hilfreich. > Aber wenn es ein Autorouter-Layout ist brauchen wir wahr- > scheinlich gar nicht erst einen Blick darauf werfen. Ok, kann ich gerne nachliefern. Dadurch, dass ich nicht weiß was wirklich wichtig ist beim Routen habe ich mir gedacht Freerouter macht es auf jeden Fall besser als ich. Ich weiß nur, dass man die Power-Signale breiter machen sollte, so um 1,5mm. Eine Groundplane mache ich immer zum Schluss. Aber wie breit die Adressleitungen bzw. Datenleitungen sein müssen weiß ich nicht genau und wie da die Leitungsführung sein sollte. Wo kann ich weiterführende Informationen finden um später mal selbst Platinen routen zu können. Kann mir jemand paar hilfreiche Tipps dazu geben? Bradward B. schrieb: > Bei der Stromversorgung sollte man mal die Ausgangsspannungen des U5 > (LM7805) > unter Last messen, es gibt da bezüglich des maximalen Laststromes > unterschiedliche Sub-Typen. > Die Kondensatoren am U5 scheinen mir für schnelle Flanken auch zu hoch, > anbei snippet aus dem Datasheet des TI LM7805CT/NOPB . Ok, Danke, werde ich mir ansehen. Ich verwende einen 78S05CV. Das ist derselbe Typ wie in der funktionieren Platine. Den Ausgangskondensator werde ich mal deutlich verkleinern. Wastl schrieb: > Jetzt haben wir Johannes' Schaltung so "schlechtgeredet" dass > er total schockiert ist und sich nicht mehr melden wird. Nein, keine Sorge, es ist ja nicht meine Schaltung. Ich könnte das noch gar nicht so entwickeln. Wie eingangs erwähnt habe ich hier eine Platine der ich diese Schaltung entnommen habe und die einwandfrei funktioniert. Ich möchte diese nur nachbauen und etwas modifizieren. Es ist natürlich gut möglich, dass ich etwas übersehen habe beim Ausmessen der Platine. Habe das allerdings mittlerweile schon mehrmals nachgeprüft. Bin nach wie vor für jede Hilfe dankbar! Da bei uns sehr heißes Wetter ist nutze ich natürlich diese Stunden um mich etwas abzulenken und antworte dadurch erst wieder am Abend :-) Wastl schrieb: > a, der Ausgangs-Kondensator darf nicht beliebig gross sein > sonst leiden die Regeleigenschaften deutlich. Dagegen darf > der Eingangs-Kondensator beliebig gross sein, denn darauf > stützt sich der Spannungsregler. Eine an diesem Punkt > "weiche" Spannung bringt einen Regler schon mal zum Schwingen. Danke Wastl, werde heute Abend mal ein wenig experimentieren und dann berichten.
Harald K. schrieb: > Joachim B. schrieb: >> nicht mal auf einem handverdrahteten (Speicher- & Porterweiterung) >> PET2001 > > Der läuft ja auch mit Gleichstrom (1 MHz), d.h. ein typischer > Speicherzugriff hat 500 nsec Zeit. > Da sind Platinenlayouts in A4-Größe wie eben beim PET oder auch beim > Apple II kein Thema. Das war übrigens auch beim IBM PC mit vermeintlich > höherem Takt von fast 5 MHz kein Thema, denn der brauchte sechs oder > sogar acht Takte für einen Zyklus, und nicht nur einen, wie der 6502. > > Möchte man aber wie der Threadstarter das ganze mit 16 MHz betreiben, > dann sieht die Geschichte gleich ganz anders aus. Insbesondere, wenn > CMOS-Bausteine mit ihren doch deutlich knackigeren Flanken verwendet > werden. Hallo Harald, bitte nicht falsch verstehen: Ich möchte nicht eine Platine mit 16MHz W65C02-System aufbauen, sondern ich habe hier eine Platine die eben mit den angegebenen Bausteinen wie CPU, VIA, F-Gatter SRAM BS62LV256PIP55 einwandfrei läuft. Den Schaltplan habe ich durch Ausmessen der Platine gemacht. Ich habe mir nun diese Platine auf Grund dieses Schaltplans fertigen lassen, aufgebaut und eben die o.a. Probleme und suche hier Hilfe diese zu beseitigen.
Johannes S. schrieb: > Danke Wastl, werde heute Abend mal ein wenig experimentieren und dann > berichten. Immerhin zeigst du jetzt dass du dialogfähig bist, das unterscheidet dich von vielen anderen Postern hier. Dass es zu einem lauffähigen und zuverlässigen 16MHz-Sstem noch weit ist wirst du hoffentlich schon verinnerlicht haben. Sagen wir mal: für 16 MHz wird es nicht reichen da das ROM (EEPROM) nicht beliebig schnell werden kann. Vielleicht wird es für 8 MHz reichen .... und das Layout wird sicher auch ein Gegenstand der Diskussion werden (sein müssen).
Harald K. schrieb: > Möchte man aber wie der Threadstarter das ganze mit 16 MHz betreiben, > dann sieht die Geschichte gleich ganz anders aus. Insbesondere, wenn > CMOS-Bausteine mit ihren doch deutlich knackigeren Flanken verwendet > werden. Aber auch das sind keine Laufzeitprobleme sondern Signalführungsproblem! 16 MHz sind 62,5ns Periodendauer! Das entspricht einer Laufzeit von 12,5m Kabel mit 5ns/m! Selbst wenn wir nur 10% der Zeit als kritisch betrachten, sind das immer noch 1,2m, die man auf so einem Brett als Einzelleitung kaum erreicht, schon gar nicht als Differenz zwischen zwei kritischen Signalen!
> Ok, Danke, werde ich mir ansehen. Ich verwende einen 78S05CV. 2 Ampere Typ - könnte für die IC reichen, wobei ich die Leistungsaufnahme der Komponenten nur grob überschlagen habe. Die 8xLED sind aber schon "halbe Scheinwerfer", bei "modernen" LED sollte man mit deutlich weniger Strom (und damit höheren Vorwiderständen) für diese auskommen. Wobei nir nicht bekannt ist, welche Schaltung hinter J2 folgt.
Johannes S. schrieb: > bitte nicht falsch verstehen wie soll man es denn verstehen? 1. Johannes S. schrieb: > Unterschiede zur Originalplatine sind nur der Speicherchip Johannes S. schrieb: > ich will eine Hauptplatine aus einem alten Schachcomputer nachbauen und der hat SMD? Johannes S. schrieb: > Wie aus meinem Eingangspost hervorgeht habe ich > hier eine mit 16MHz getaktete Platine die ich nachbauen möchte. Bild, ICs lesbar? Es gibt nicht nur 74-F sondern auch S AS ALS AC ACT usw. such dir die passenden in Spannung und Schaltzeit, kann ein Glücksspiel werden und manchmal mit Erfolg, aber da du ja auf einen thermischen Fehler bestehst, Kältespray und Föhn.
Wastl schrieb: > Wenn dein System prinzipiell läuft dann sollten wir auch mal > einen Blick auf dein Layout werfen (dürfen) .... Anbei zwei Fotos meines Layouts dieser Platine. Bitte beachten: das ist das erste Layout wie die Platinen gefertigt wurden. Offene Eingänge habe ich auf der Platine direkt mit Drahtbrücken auf GND gelegt. den 74HC4020 verwende ich nicht, da ich später erst erkannt habe, dass das nicht funktionieren kann. Bitte um Mitteilung wie man das professionell macht. Welche Dinge sind besonders wichtig beim Layout solcher Systeme? Danke für die rege Beteiligung mir zu helfen!
mir fiel noch ein das es bei dynamischen Steinen auch um den PI 0 bzw PI 1 Takt geht der nach den stabilen Daten passend den Pegel wechseln muß. Als ich selber Erweiterungen mit einer VIA 65C22 an den LH5801 (Sharp) ging, mußte ich manchmal den Takt un eine HC Gatterlaufzeit verzögern bis es passte, aber auch da waren 1,3MHz echt lahm, nur so ein Gedanke.
Joachim B. schrieb: > und der hat SMD? Nur die Koppelkondensatoren sind SMD und der 74F02. Alle anderen Bauteile sind ebenfalls bedrahtet bzw. DIP. Joachim B. schrieb: > Bild, ICs lesbar? Ja, alle ICs sind einwandfrei lesbar und habe ich bereits benannt. Joachim B. schrieb: > aber da du ja auf einen thermischen Fehler > bestehst, Kältespray und Föhn. Nein, ich bestehe nicht auf einen thermischen Fehler, ich erkenne nur, dass es nach 20min. funktioniert. Warum, weiß ich leider nicht. Vielleicht bringt das Layout Klarheit warum sich das System so verhält. Natürlich mache ich mir auch Gedanken dazu und habe tagelang rumprobiert den Fehler zu finden, leider ohne Erfolg. Ihr habt viel mehr Erfahrung mit solchen Aufbauten, darum denke ich, dass Ihr mir dabei helfen könnt den Fehler zu finden.
Bradward B. schrieb: > Die 8xLED sind aber schon "halbe Scheinwerfer", bei "modernen" LED > sollte man mit deutlich weniger Strom (und damit höheren > Vorwiderständen) für diese auskommen. Wobei nir nicht bekannt ist, > welche Schaltung hinter J2 folgt. Es handelt sich um einen alten Schachcomputer aus Ende 70 Anfang 80. Damals wurden noch 20mA LEDs verwendet. Hinter J2 verbirgt sich die LED bzw. Tastenmatrix der einzelnen Felder und noch acht Bedienungstasten.
Johannes S. schrieb: > Wastl schrieb: >> a, der Ausgangs-Kondensator darf nicht beliebig gross sein >> sonst leiden die Regeleigenschaften deutlich. Dagegen darf >> der Eingangs-Kondensator beliebig gross sein, denn darauf >> stützt sich der Spannungsregler. Eine an diesem Punkt >> "weiche" Spannung bringt einen Regler schon mal zum Schwingen. > > Danke Wastl, werde heute Abend mal ein wenig experimentieren und dann > berichten. Ich habe nun den 330µF Elko durch einen 10µF ersetzt, leider mit dem gleichen Fehlerbild. Das 16MHz-System läuft nach ca. 20min. einwandfrei! Vorher scheint es so, als ob er zeitweise falsche Werte aus dem RAM lesen würde, da sich gewisse Funktionen des Schachcomputers immer wieder selbst einschalten und sich nicht ausschalten lassen. Wie z.B. die Anzeige des besten Zugs während seines Rechenvorgangs.
Johannes S. schrieb: > Das 16MHz-System läuft nach ca. 20min. einwandfrei! Reiner Zufall dass es dann funktioniert. Solange die Speicherzugriffszeiten nicht penibel eingehalten werden brauchst du nicht weiter experimentieren. Das ist ein entscheidendes Kriterium. Nimmst du irgendein anderes EEPROM und/oder SRAM, schon kann es nicht mehr funktionieren. Das Elko-Dimensionierungs-Thema ist ein untergeordnetes, sollte aber trotzdem nicht total unterschlagen werden.
Das heisst ich brauche schnelleres RAM und EEPROM. Das ist schon mal gut zu wissen. SRAM habe ich hier mit 15ns Zugriffszeit. ROM muss ich erst schauen ob ich vielleicht was pinkompatibles finde. Danke schon mal für diesen Input. Hat sich schon jemand das Layout angesehen und da schwere Mängel/Fehler entdeck? Ich möchte demnächst beginnen eine neue Platine zu routen und dabei gleich die Leiterbahnführung optimieren.
Johannes S. schrieb: > Das heisst ich brauche schnelleres RAM und EEPROM. Nicht unbedingt, IMHO bietet auch eine 6502 CPU die Möglichkeit Waitstates einzuschieben und den Zugriff für langsame Busteilnehmer zu verlängern. https://hackaday.io/project/174128-db6502/log/187116-wait-states-explained-14mhz-part-ii Falls das langsame device nicht selbst eine entsprechende Leitung hat, musste extra logic an den RDY-Eingang der CPU stricken. http://6502.org/mini-projects/rdy-generation/index.html Wenn es nur um den Speicher für die Eröffnungsbibliothek geht sollte die Gesamt leistung nicht sonderlich beeinträchtigt werden. BTW: In welcher liegt die Eröffnungsbibliothek vor ? Ist das ausführbarer Code oder ist das lediglich ein Parametersatz der wie eine Tabelle (vom Code im RAM) ausgelesen wird? Es gibt auch Architekturen bei denen der ROM-Inhalt aus Geschwindigkeitsgründen vor der Ausführung in den RAM kopiert wird.
> Solange die Speicherzugriffszeiten nicht penibel eingehalten > werden brauchst du nicht weiter experimentieren. Das ist ein > entscheidendes Kriterium. Das ist richtig solange er bei 16Mhz bleibt. Aber ich meine gelesen zu haben das die Probleme auch bei geringeren Taktfrequenzen bestehen bleiben. Das spricht dann noch zusaetzlich fuer ernste Layoutprobleme weil auch eine langsam getaktete schnelle MCU dieselben schnellen Flanken behaelt und daher dieselben Ansprueche an das Layout stellt. Vermutlich klingeln die Signale da ueberall lustig rum. Ist natuerlich nachtraeglich Pfusch, aber da man die Platine sonst eh nur in die Tonne werfen kann, wuerde ich mal alle Daten/Adressleitungen an der MCU auftrennen und da einen 100R in 0402 drueber loeten. Vanye
Rüdiger B. schrieb: > Die ersten Apple II nachbauten hatten das Problem das eine Leitung > kürzer geroutet war und daher das Timing nicht mehr stimmte. > https://www.youtube.com/watch?v=ZWf8t_mHocM Der clock stretch hat nichts mit zu kurzen Leitungen auf der Platine zu tun. "line" meint eine Zeile des Fernsehbildes. Beim Analogfernsehen gibt es zwei Takte, die zwar phasenverkoppelt sind, aber die kein ganzzahliges Teilerverhältnis haben. Das ist zum einen die Farbe mit 3.579545 MHz, und zum anderen die Synchronisation mit 15.734 kHz. Der Apple II gewinnt seinen Takt aus einem 14,318 MHz-Quarz. Diese Frequenz geteilt durch vier ergibt den Color Burst, den Farbreferenzträger. Durch das Teilen hat man vier Impulse, die zum Burst um -90°, +90°, 0° und 180° phasenverschoben sind. Das sind die vier Farben. Jetzt muss man aber noch auf die 63,557 µs Zeilenlänge kommen, also die 15,734 kHz. Durch reines Abzählen von 3,579 MHz Takten funktioniert das nicht, daher müssen einzelne Pulse verlängert werden. Dazu dient der clock stretch. Das ist also kein Fehler, sondern ein ziemlich genialer Schachzug, um das gesamte Timing der Maschine auf einem einzelnen Takt aufzubauen. Die meisten Computer aus der Ära hatten zwei Quarze. Einen für den CPU-Takt und einen für die Fernseh-Farbe.
Bradward B. schrieb: > Nicht unbedingt, IMHO bietet auch eine 6502 CPU die Möglichkeit > Waitstates einzuschieben und den Zugriff für langsame Busteilnehmer zu > verlängern. > > https://hackaday.io/project/174128-db6502/log/187116-wait-states-explained-14mhz-part-ii > > Falls das langsame device nicht selbst eine entsprechende Leitung hat, > musste extra logic an den RDY-Eingang der CPU stricken. > > http://6502.org/mini-projects/rdy-generation/index.html Danke Bradward, genau so etwas schwebt mir vor. Ich werde mir das heute mal genau durchlesen. Das wäre sicher die optimalste Lösung, die Platine muss ich sowieso neu machen. Bradward B. schrieb: > Wenn es nur um den Speicher für die Eröffnungsbibliothek geht sollte die > Gesamt leistung nicht sonderlich beeinträchtigt werden. > > BTW: In welcher liegt die Eröffnungsbibliothek vor ? Ist das > ausführbarer Code oder ist das lediglich ein Parametersatz der wie eine > Tabelle (vom Code im RAM) ausgelesen wird? Die 16MHz-Platine die mir vorliegt und die einwandfrei funktioniert, hat einen entscheidenden Nachteil. Der Speicherbereich von $2000 - $3FFF wird sowohl vom RAM als auch vom ROM verwendet, ist praktisch also nicht verwendbar. Darum will ich diese Platine nachbauen und diesen Bereich vom SRAM ausblenden indem ich zusätzlich noch die Adressleitung A13 zur Codierung des CE-Eingangs des RAMs heranziehe. Also sobald auch nur eine Leitung A15, A14 oder A13 High-Pegel aufweist bleibt CE ebenfalls High. Das EPROM hingegen bekommt das Signal am CE-Eingang über ein Nand-Gatter deren Eingänge mit A14 und A13 belegt sind. Die OE-Eingänge liegen beide auf GND. Dann habe ich die Möglichkeit große Eröffnungsbücher in den Speicherbereich von $2000 - 7FFF zu legen. Von $8000-$9FFF liegt die VIA 65C22. Von $A000 - $FFFF das übrige EPROM. Das Eröffnungsbuch ist nur ein Datensatz im EPROM. Vanye R. schrieb: > Aber ich meine gelesen > zu haben das die Probleme auch bei geringeren Taktfrequenzen bestehen > bleiben. Das spricht dann noch zusaetzlich fuer ernste Layoutprobleme > weil auch eine langsam getaktete schnelle MCU dieselben schnellen > Flanken behaelt und daher dieselben Ansprueche an das Layout stellt. Ja, auch bei 8MHz habe ich Probleme. Da tritt auch nach längerer Wartezeit kein stabiler Betrieb auf. Man kann zwar spielen, aber zwischendurch kommt es immer wieder zu kurzen Störungen (Tonausgaben, wie wenn eine Figur vom Brett genommen wurde) bis hin zu Abstürzen. Bei 16MHz kann ich nach einer Einschaltdauer von ca. 20min. ganz normal spielen. Es kommt auch nach längerer Rechendauer (über Nacht) zumkeinem Absturz. Was mich allerdings noch verwundert ist folgender Umstand: Wenn ich den Schachcomputer das erste Mal mit Strom versorge, spielt er Züge die nicht in der Eröffnungsbibliothek des Programms gespeichert sind. Auch zeigt er mir während des Rechenvorgangs seinen bis dahin gefundenen besten Zug an. Das sollte er erst tun, sobald ich diese Funktion eingeschaltet habe. Die ersten zwanzig Minuten nach dem Einschalten kann ich diese Funktion auch nicht wieder ausschalten, da sie sich sofort wieder einschaltet. Ich nehme an, dass da falsche Werte aus dem RAM gelesen werden.
Vanye R. schrieb: > Das spricht dann noch zusaetzlich fuer ernste Layoutprobleme > weil auch eine langsam getaktete schnelle MCU dieselben schnellen > Flanken behaelt und daher dieselben Ansprueche an das Layout stellt. > > Vermutlich klingeln die Signale da ueberall lustig rum. Das ist durchaus möglich. Weiter oben habe ich Bilder von meinem Layout angehängt. Kannst du bitte mal drüber sehen und mir erklären was ich besser machen könnte? Ich habe mit manuellem Routing absolut keine Erfahrung. Vanye R. schrieb: > Ist natuerlich nachtraeglich Pfusch, aber da man die Platine sonst eh > nur in die Tonne werfen kann, wuerde ich mal alle Daten/Adressleitungen > an der MCU auftrennen und da einen 100R in 0402 drueber loeten. Das werde ich mir überlegen. Ist doch ein ziemlicher Aufwand. Trotzdem Danke für diesen Tipp.
So richtig systematische Fehlersuche sehe ich nicht: - Zeige bitte mal die Memory-Map fuer die Maschine. Prosa ist nicht so mein Ding, und dann kann man auch die CS-Logik pruefen. - Wenn Deine Aussage "Das System laeuft nach 20 Minuten Uptime einwandfrei" wahr ist, dann hast Du thermisches Problem. Die Methoden sind dann Kaeltespray und Foehn. - 16MHz fuer die 6502-CPU ziemlich viel, insbesondere durch die Besonderheit beim Speicherzugriff bei Phi1/2 (deswegen war ja der Apple ][ und die CBM-Maschinen relativ schnell trotz "nur" 1MHz Taktbus). Ich wuerde versuchen, mit 1-2 Mhz das System stabil laufen zu bringen. Und dann spaeter ueberlegen, ob ich das RDY-Signal brauche/benutze. - Was fuer Messgeraete hast Du? Wenn Du auf 1MHz runtergehst, kannst Du mit einem 10EUR-Logikanalyzer (z.B. https://www.ebay.de/itm/255283244102) den Bits beim Klickern zugucken. - Mir ist nicht klar, welches das Orginal-Geraet, der 16MHz-Nachbau und Dein eigener Nachbau sind. - Software-Fehler sind ausgeschlossen? Th. (der Sargon II auf einer 8Mhz-Z80 laufen laesst)
:
Bearbeitet durch User
Thomas W. schrieb: > - 16MHz fuer die 6502-CPU ziemlich viel, Insbesondere wenn sie nur für 14MHz spezifiziert ist. Aber es scheint sich ja um ein generelles Timingproblem zu handeln.
Thomas W. schrieb: > So richtig systematische Fehlersuche sehe ich nicht: > - Zeige bitte mal die Memory-Map fuer die Maschine. Prosa ist nicht so > mein Ding, und dann kann man auch die CS-Logik pruefen. Hi Thomas, $A000 - $FFFF ROM (EPROM W27C512-45Z) $8000 - $9FFF VIA W65C22S (Western Design Center) $2000 - $7FFF ROM (EPROM W27C512-45Z siehe oben) $0000 - $1FFF RAM (SRAM As6C62256 55ns) Thomas W. schrieb: > - Wenn Deine Aussage "Das System laeuft nach 20 Minuten Uptime > einwandfrei" wahr ist, dann hast Du thermisches Problem. Die Methoden > sind dann Kaeltespray und Foehn. Ja, kann durchaus sein, aber vermutlich durch unterdimensionierten / falsch dimensionierten Baustein, kein mechanisches Problem durch kalte Lötstelle oder ähnliches, da eine zweite Platine genau das selbe Verhalten zeigt. Thomas W. schrieb: > - 16MHz fuer die 6502-CPU ziemlich viel, insbesondere durch die > Besonderheit beim Speicherzugriff bei Phi1/2 (deswegen war ja der Apple > ][ und die CBM-Maschinen relativ schnell trotz "nur" 1MHz Taktbus). Es handelt sich nicht um die NMOS-Variante sondern um die neuere, modernere CMOS-Variante von Western Design Center (W65C02S) die sogar mit 24MHz noch stabil laufen kann. Thomas W. schrieb: > - Was fuer Messgeraete hast Du? Wenn Du auf 1MHz runtergehst, kannst Du > mit einem 10EUR-Logikanalyzer (z.B. > https://www.ebay.de/itm/255283244102) den Bits beim Klickern zugucken. Habe Multimeter und ein 50MHz Rigol Oszilloskop. Gute Idee mit dem Logikanalyzer. Kann man immer brauchen. Danke für den Tipp. Thomas W. schrieb: > Mir ist nicht klar, welches das Orginal-Geraet, der 16MHz-Nachbau und > Dein eigener Nachbau sind. Die Original-Platinde von Applied Concepts aus den späten 70ern verwendet eine 6502 CPU, VIA 6522, vier 2114 static Rams, und hat einen Printanschluss für externe Module in denen ein EPROM mit dem Programm vorhanden ist. Diese Platine läuft mit CPU-Takt von 2MHz. Dieser Takt wird durch zwei geteilt und tastet dann die VIA 6522. Um diese Platine geht es nicht. Ein Elektroniker hat einen Nachbau entwickelt mit der W65C02S und o.a. Bauteilen. Das Rom befindet sich schon auf dieser Platine. Diese Platine bezeichne ich in diesem Thread als "Original" da diese einwandfrei läuft. Tut mir leid wenn's hier zu Missverständnissen gekommen ist. Thomas W. schrieb: > Software-Fehler sind ausgeschlossen? Ja, da gegengecheckt in der "Original-Platine"
Johannes S. schrieb: > Ein Elektroniker hat einen Nachbau entwickelt mit der > W65C02S und o.a. Bauteilen. Dieser Nachbau ist halt Pfusch, weil er sich nicht an die Spezifikationen der Bauteile hält, sondern sie alle recht gründlich übertaktet. Das kann gutgehen, muss es aber nicht. Sowohl die CPU als auch die VIA sind für maximal 14 MHz spezifiziert, Dein "Elektroniker" betreibt sie mit 16 MHz. Das ist jetzt nicht besonders viel, da aber auch das EPROM und das SRAM weit jenseits der spezifizierten Parameter betrieben werden, wird das ganze um so unzuverlässiger. Wenn ein Hersteller eines Bausteines eine Zugriffszeit spezifiziert, heißt das, daß der Baustein diese bei spezifizierte Umgebungsbedingungen (saubere Versorgungsspannung, gesamter Temperaturbereich) einhält. In deutlich engeren Bereichen (Temperatur) kann der Baustein auch viel schneller sein. Das ist das, was Dein "Elektroniker" als Übertakter ausgenutzt hat, genauso übrigens wie es auch die PC-Übertakter machen, die dazu ihre CPUs teilweise sogar mit flüssigem Stickstoff kühlen. Sowas kann man machen, aber wenn man ein stabil und zuverlässiges Gerät haben will, macht man das eben nicht. Da hält man sich an die Angaben aus dem Datenblatt, und dann funktioniert das Gerät auch bei 30° Raumtemperatur, und nicht nur bei 18°. Wie schon ad nauseam wiederholt, die insgesamt zur Verfügung stehende Zeit für einen Speicher- oder Peripheriezugriff beträgt gerade mal 30 nsec, wenn da nicht sehr sauber bei der Adressdecodierung gearbeitet wird, wenn die Spannungsversorgung nicht sehr stabil ausgeführt ist, mit wohlplazierten Abblockkondensatoren und ausreichend breiten Leiterbahnen, wenn die Bausteine für die Adressdecodierung ungünstig ausgewählt sind, dann funktioniert so ein Übertaktermonster halt irgendwann gar nicht mehr. Wenn Du Deinen Aufbau aktiv kühlst (Kühlschrank?), dann könnte er vermutlich etwas stabiler werkeln. Was aber ist der Sinn des eigentlichen Unterfangens? Ein steinaltes Schachcomputerdesign schneller zu machen? Wozu? Um ebenfalls steinalte für einen aus heutiger Sicht sehr ineffizienten Prozessor geschriebene Software etwas schneller laufen zu lassen?
Was soll das /OE von RAM und ROM fest auf GND zu legen? Das gibt zusammen mit dem Adressdecoder ohne Phi2 jede Menge Buskollisionen.
Johannes S. schrieb: > $A000 - $FFFF ROM (EPROM W27C512-45Z) > $8000 - $9FFF VIA W65C22S (Western Design Center) > $2000 - $7FFF ROM (EPROM W27C512-45Z siehe oben) > $0000 - $1FFF RAM (SRAM As6C62256 55ns) > > Thomas W. schrieb: >> - 16MHz fuer die 6502-CPU ziemlich viel, insbesondere durch die >> Besonderheit beim Speicherzugriff bei Phi1/2 (deswegen war ja der Apple >> ][ und die CBM-Maschinen relativ schnell trotz "nur" 1MHz Taktbus). > > Es handelt sich nicht um die NMOS-Variante sondern um die neuere, > modernere CMOS-Variante von Western Design Center (W65C02S) die sogar > mit 24MHz noch stabil laufen kann. Das aendert nichts an der Problematik (verschaerft es sogar): Du hast sehr wenig Zeit, um die Daten stabil auf den Bus zu packen. Du solltest auch noch mal das Timing bei den Speicher (EPROM, RAM) angucken. Da war noch etwas mit dem Timing von /CS und /OE (das ist aber > 30Jahre her, da muss man sich noch mal einlesen). > Die Original-Platinde von Applied Concepts aus den späten 70ern > verwendet eine 6502 CPU, VIA 6522, vier 2114 static Rams, und hat einen > Printanschluss für externe Module in denen ein EPROM mit dem Programm > vorhanden ist. Diese Platine läuft mit CPU-Takt von 2MHz. Dieser Takt > wird durch zwei geteilt und tastet dann die VIA 6522. Um diese Platine > geht es nicht. Ein Elektroniker hat einen Nachbau entwickelt mit der > W65C02S und o.a. Bauteilen. Das Rom befindet sich schon auf dieser > Platine. Diese Platine bezeichne ich in diesem Thread als "Original" da > diese einwandfrei läuft. > Tut mir leid wenn's hier zu Missverständnissen gekommen ist. > Noe, dass kann nicht so richtig sein: Der Takt ist immer Phi1 und ist der System-Takt (Phi1 definiert die Gueltigkeit der Adresse [hhinz hatte Dich ja darauf hingewiesen]). Du koenntest Dir einen Primer fuer 6502-Systeme angucken, schoen simple waere z.b. die Junior-Handbuecher (Band 1). Gruesse
> Was aber ist der Sinn des eigentlichen Unterfangens? Das ist doch eine ziemlich dumme Frage. Wuerde man alles weit genug hinterfragen haettest du heute Morgen im Bett bleiben koennen weil alles sinnlos ist. .-) > Ein steinaltes Schachcomputerdesign schneller zu machen? Was spricht dagegen? Aber das Problem ist natuerlich das man bei so schnellen MCUs schon etwas Grundlagenwissen ueber Hardware braucht. Beim alten 6502 in meinem Apple][+ konnte ich noch im Kinderzimmer mit 15 meine eigenen Karten faedeln ohne viel Ahnung von Details zu haben. Wenn man also Hardware lernen will dann muss man halt sein Layout mehrmals machen und jedesmal verbessern. Will man das nicht und ist besser in Software wie in Hardware kann man ja so ran gehen: https://github.com/jfoucher/pico-6502 Also den 6502 komplett in einem Pi-Pico emulieren und die alten Images darauf laufen lassen. Vanye
Johannes S. schrieb: > Das wäre sicher die optimalste Lösung nur wenn man optimal steigern kann, wenn man aber optimal steigern kann war es vorher nicht optimal.
Soul E. schrieb: > Die meisten Computer aus der Ära hatten zwei Quarze. > Einen für den CPU-Takt und einen für die Fernseh-Farbe. Wobei sich die 4,77 MHz der anfänglichen IBM PCs auch am NTSC Farbträger orientieren. Die Genialität dieser Entscheidung darf man indes in Zweifel ziehen. Das 14.31818 MHz Signal auf dem Bus sparte bei ausschliesslich für den NTSC-Markt produzierten CGAs ein paar Cent ein, war sonst aber völlig überflüssig, eher schädlich
:
Bearbeitet durch User
Für 6502 bin ich kein Spezialist, eher für Z80. Aber mir fallen trotzdem paar Dinge zu deinen Fragen ein: Layout: Die 4 grossen ICs sollten möglicherweise "in einer Reihe" liegen, nicht nebeneinander. Könnte das Layout vereinfachen. Optimal wäre natürlich 4 Layer. 6502: Ist dies hier bekannt? http://forum.6502.org/viewtopic.php?f=4&t=7964#p106554 Richtigerweise sollte man konsequent 74AC Bauteile einsetzen. Speziell bei der Decodierung 74AC138 oder 74AC139. Unbedingt "einstufig", notfalls auf GAL 15ns ausweichen. Ob jetzt Übertaktung was bringt, wenn dann Waitstates Generator gebraucht wird ist eher fraglich. Ein stabiles System das statisch arbeitet muss dies auch, und vor allem, auch bei niedriger(er) Taktrate tun. Wenn 8 MHz nicht stabil ist, braucht man an 14 oder 16 überhaupt nicht denken. Den Takt aus 2x gewinnen (Osz. 32 MHz), wg. 50% Tastverhältnis (über 74AC74 teilen z.B.). Manche Bauteile wollten kein 40:60 oder 45:55.
Klaus F. schrieb: > Den Takt aus 2x gewinnen (Osz. 32 MHz), wg. 50% Tastverhältnis (über > 74AC74 teilen z.B.). Manche Bauteile wollten kein 40:60 oder 45:55. Guter Einwand bzw. Tipp. Ein im Pegel driftender Oszillator könnte sein Tastverhältnis verändern und zum temporären Ausfall der auf Kante genähten Schaltung beitragen.
Klaus F. schrieb: > Unbedingt "einstufig", notfalls auf GAL 15ns ausweichen. Dann müssten RAM und ROM mit ebenfalls 15ns auskommen. Oder die Schaltung muss recht gründlich umgestellt werden, damit das RDY-Signal des 6502 bei Zugriffen auf zu langsame Bausteine passend bespielt wird. Dem Wimmelbild kann man aber entnehmen, daß da nur ein Pullup dranhängt.
OE immer auf GND bei verschiedenen ICs geht garnicht. Dann sind bei den ICs und ggf. von der CPU die Date-Leitungen gleichzeitig aktiv, Der Stärkere Output gewinnt dabei, ggf. auch temperaturabhängig. Ist es korrekt, dass die CA und CB-Anschlüsse offen sind? Lass das System doch mal mit einem geringeren Takt laufen.
Wolfgang S. schrieb: > OE immer auf GND bei verschiedenen ICs geht garnicht Ganz so schlimm ist es nicht, denn die ICs haben ja auch einen /CS-Eingang. Ist der nicht aktiv, hat /OE keine Funktion. Ist trotzdem Pfusch.
Der 65C22 wird bei fast jeder Adresse angesprochen ohne Berücksichtigung der Zustände von A4 bis A12.
Wolfgang S. schrieb: > Der 65C22 wird bei fast jeder Adresse angesprochen ohne > Berücksichtigung > der Zustände von A4 bis A12. Das soll und darf so sein.
Harald K. schrieb: > Sowohl die CPU als auch die VIA sind für maximal 14 MHz spezifiziert, > Dein "Elektroniker" betreibt sie mit 16 MHz. Das ist jetzt nicht > besonders viel, da aber auch das EPROM und das SRAM weit jenseits der > spezifizierten Parameter betrieben werden, wird das ganze um so > unzuverlässiger. Was soll die Abbildung 6-2 (F Max vs Vdd) im Datasheet der W65C02S auf Seite 24 zeigen? Wenn ich das richtig deute, sieht man hier bei 4.2V Vdd eine max. Frequenz von 19MHz! Oder was zeigt diese Abbildung? Harald K. schrieb: > Wenn Du Deinen Aufbau aktiv kühlst > (Kühlschrank?), dann könnte er vermutlich etwas stabiler werkeln. Bei mir scheint es ja genau umgekehrt zu sein. Die ersten 20min. nach Anlegen der Stromversorgung kommt es zu Problemen, danach nicht mehr! Harald K. schrieb: > Was aber ist der Sinn des eigentlichen Unterfangens? Ein steinaltes > Schachcomputerdesign schneller zu machen? > > Wozu? Um ebenfalls steinalte für einen aus heutiger Sicht sehr > ineffizienten Prozessor geschriebene Software etwas schneller laufen zu > lassen? Ganz einfach: um die alten Programme etwas stärker zu machen. Ein Betrieb von 16MHz ist zumindest ein 8x höhere Geschwindigkeit in dem das System wesentlich tiefer rechnen kann als mit 2MHz. Natürlich bleibt das Spielerei. Die Jungs machen das mit ihren Mopeds, die Älteren mit den Autos - warum nicht? H. H. schrieb: > Was soll das /OE von RAM und ROM fest auf GND zu legen? Das gibt > zusammen mit dem Adressdecoder ohne Phi2 jede Menge Buskollisionen. Warum? Ich dachte solange CE high-Pegel hat ist der Baustein inaktiv und belegt den Datenbus nicht, da seine Datenausgänge im hochohmigen Bereich liegen. Wo soll es da zu Buskollisionen kommen? Habe ich da irgendwas nicht richtig verstanden? Bitte um Aufklärung. Ich achte darauf, dass egal welche Adresse anliegt immer nur ein Baustein ausgewählt (selektiert) sein kann. Thomas W. schrieb: > Das aendert nichts an der Problematik (verschaerft es sogar): Du hast > sehr wenig Zeit, um die Daten stabil auf den Bus zu packen. Du solltest > auch noch mal das Timing bei den Speicher (EPROM, RAM) angucken. Da war > noch etwas mit dem Timing von /CS und /OE (das ist aber > 30Jahre her, > da muss man sich noch mal einlesen). Ja, das ist eben meine Problematik, dass ich diese Dinge nicht sofort verstehe. Ich hätte gerne, dass mir jemand mal so einen Lese bzw. Schreibvorgang detailliert beschreiben kann. Aus den Timing-Diagrammen werde ich nicht so recht schlau daraus. Leider. Thomas W. schrieb: > Noe, dass kann nicht so richtig sein: Der Takt ist immer Phi1 und ist > der System-Takt (Phi1 definiert die Gueltigkeit der Adresse [hhinz hatte > Dich ja darauf hingewiesen]). Ok, die Bezeichnung des Takteingangs weiß ich jetzt nicht mehr genau. Aber an diesen Platinen werden an der CPU Pin 37 2MHz Clock angelegt und an der VIA 6522 Pin 25 1MHz. Das ist Fakt! Bitte nicht von der älteren 6502 auf die neuere W65C02S schliessen. Da kann es nur zu Missverständnissen kommen. Thomas W. schrieb: > Du koenntest Dir einen Primer fuer 6502-Systeme angucken, schoen simple > waere z.b. die Junior-Handbuecher (Band 1). Danke, das ist ein guter Ratschlag. Werde ich machen. Ist sicher sehr interessant und lehrreich. Joachim B. schrieb: > nur wenn man optimal steigern kann, wenn man aber optimal steigern kann > war es vorher nicht optimal. Sehr weise Worte :-) Klaus F. schrieb: > Layout: > Die 4 grossen ICs sollten möglicherweise "in einer Reihe" liegen, nicht > nebeneinander. Könnte das Layout vereinfachen. > Optimal wäre natürlich 4 Layer. Danke Klaus, endlich mal ein Hinweis zum Layout. Klingt einleuchtend, werde mich mal damit spielen die großen ICs nebeneinander anzuordnen. Gibt es generell Probleme bei meinem Layout? Klaus F. schrieb: > Richtigerweise sollte man konsequent 74AC Bauteile einsetzen. > Speziell bei der Decodierung 74AC138 oder 74AC139. > Unbedingt "einstufig", notfalls auf GAL 15ns ausweichen. Ok, werde mir mal die AC-Gatter besorgen und mir vorerst mal die Datenblätter dazu ansehen. Danke. Klaus F. schrieb: > Ein stabiles System das statisch arbeitet muss dies auch, und vor allem, > auch bei niedriger(er) Taktrate tun. > Wenn 8 MHz nicht stabil ist, braucht man an 14 oder 16 überhaupt nicht > denken. Ja, gebe ich dir vollkommen recht. Darum bin ich immer noch auf der Suche was bei meiner Platine nicht stimmt. Die läuft zumindest nach 20min. stabil mit 16MHz, aber nicht mit 8MHz. Eventuell hat doch vielleicht der Spannungsregler Schuld? Habe im Datenblatt gelesen, dass der nur 1,5A kann. Jemand hat zuvor geschrieben 2A könnte sich gerade ausgehen. Wolfgang S. schrieb: > OE immer auf GND bei verschiedenen ICs geht garnicht. Dann sind bei den > ICs und ggf. von der CPU die Date-Leitungen gleichzeitig aktiv, > Der Stärkere Output gewinnt dabei, ggf. auch temperaturabhängig. Ich dachte die Speicher können erst Daten auf den Bus legen wenn sie auch über CS bzw. CE angesteuert werden? Ist das nicht korrekt? Habe ich das falsch verstanden? Wolfgang S. schrieb: > Lass das System doch mal mit einem geringeren Takt laufen. Wie bereits mehrmals geschrieben: Bei 8MHz immer Probleme, bei 16MHz nach 20min Einschaltdauer stabiler Betrieb über mehrere Stunden getestet!
Wolfgang S. schrieb: > Der 65C22 wird bei fast jeder Adresse angesprochen ohne Berücksichtigung > der Zustände von A4 bis A12. Wieso? ER wird nur angesprochen wenn A15 high ist und A14 und A13 low!
H. H. schrieb: > Das soll und darf so sein. Meinem Verständnis nach, darf das eben nicht so sein. Es darf immer nur ein Baustein (Speicher, IO etc.) selektiert sein. Sonst kann das nicht funktionieren! In meiner Schaltung wird das sehr wohl berücksichtigt! Der 65C22S wird nur im Adressbereich $8000 - $9FFF selektiert.
Johannes S. schrieb: > H. H. schrieb: >> Was soll das /OE von RAM und ROM fest auf GND zu legen? Das gibt >> zusammen mit dem Adressdecoder ohne Phi2 jede Menge Buskollisionen. > > Warum? Ich dachte solange CE high-Pegel hat ist der Baustein inaktiv und > belegt den Datenbus nicht, da seine Datenausgänge im hochohmigen Bereich > liegen. Wo soll es da zu Buskollisionen kommen? Habe ich da irgendwas > nicht richtig verstanden? Die Adressleitungen wechseln weder instantan noch synchron ihren Pegel. Dadurch kann und kommts es zu Überschneidungen.
H. H. schrieb: > Die Adressleitungen wechseln weder instantan noch synchron ihren Pegel. > Dadurch kann und kommts es zu Überschneidungen. deswegen gab es ja den PI 0 und invers den PI 1 Pin der signalisiert wann die Daten übernommen werden können bzw. wann die Adressdaten stabil sind.
Zu beachten ist auch, dass die 6502 CPU mangels gegenteiliger Signalisierungsmöglichkeit in jedem Zyklus einen Zugriff durchführt, ob sinnvoll oder nicht. Nicht genutzte Zugriffe sind allerdings stets lesend. Will man sicherstellen, dass die Adressbits gültig sind, muss phi2=high eingebunden werden. Das verkürzt allerdings die Zugriffszeit ab vorhandener Adresse. Ob man OE nutzt oder nicht, ist dann eine Frage des Timings. Wenn die Zugriffszeit ab OE kürzer als ab CE ist, kann es sinnvoll sein, OE/WE mit phi2 zu verknüpfen und CE nur aus den Adressen abzuleiten.
:
Bearbeitet durch User
H. H. schrieb: > Johannes S. schrieb: >> H. H. schrieb: >>> Was soll das /OE von RAM und ROM fest auf GND zu legen? Das gibt >>> zusammen mit dem Adressdecoder ohne Phi2 jede Menge Buskollisionen. >> >> Warum? Ich dachte solange CE high-Pegel hat ist der Baustein inaktiv und >> belegt den Datenbus nicht, da seine Datenausgänge im hochohmigen Bereich >> liegen. Wo soll es da zu Buskollisionen kommen? Habe ich da irgendwas >> nicht richtig verstanden? > > Die Adressleitungen wechseln weder instantan noch synchron ihren Pegel. > Dadurch kann und kommts es zu Überschneidungen. Ok, kann ich das so lösen, dass ich das an CE führende Signal dann auch auf OE führe?
Johannes S. schrieb: > Ok, kann ich das so lösen, dass ich das an CE führende Signal dann auch > auf OE führe? Natürlich nicht.
H. H. schrieb: > Johannes S. schrieb: >> Ok, kann ich das so lösen, dass ich das an CE führende Signal dann auch >> auf OE führe? > > Natürlich nicht. Und wie macht man das nun? Was kommt dann an OE?
Johannes S. schrieb: > Und wie macht man das nun? Was kommt dann an OE? Kommt auf das Device an. - 65xx/68xx Peripherie wird selbst schon über ϕ2 gesteuert. Da reicht es, die CEs nur aus den Adressleitungen abzuleiten. - Bei Speicher mit /OE und ggf /WE ist die höflichste und schnellste Variante, /CE nur aus Adressleitungen zu decodieren, und /OE,/WE als f(R/W, ϕ2). In älteren auf 1 MHz NMOS und LSTTL getrimmten Schaltungen kann man auch Varianten finden, die /OE bei ROMs auf low legen, und es auf einen Konflikt auf dem Bus ankommen lassen. Bei treiberstärkeren Devices und Logikbausteinen ist das weniger ratsam.
:
Bearbeitet durch User
H. H. schrieb: > Johannes S. schrieb: >> Was kommt dann an OE? > > R/W mit PHI2 verknüpft. Das macht er auch dem Wimmelbild "R/W-Signal generation": R/W_CPU und PHI2 fuer das R/W zu RAM.
Wenn Du das Datenblatt anguckst (p.26) siehst Du, dass die fallende Flanke von Phi2 die Adressen auf dem Bus definiert (die Fussnote im Datenblatt sagt explizit). Es waere jetzt pfiffig, Phi2 mit dem Adressbus zu verknuepfen, so dass die Chipselect stabil fuer den gesamten Halbtakt bleiben. Wenn Du jetzt schon das Datenblatt anguckst, siehst Du, dass die tACC (also die Zeit, nach dem die Daten vom Speicher auf den Bus anliegen), bei Deiner Frequenz 30ns sind (die 30ns tADS (Adress-setuptime) kommen nach dazu). D.h. Dein EPROM muss eine max. Zugriffzeit von 70ns haben. Bringt Dein EPROM diese Zugriffzeit? Wenn das z.b. ein EPROM mit Zugriffzeit von 100ns hat, werden einige Daten schon gueltig sein, manche aber nicht (genau das Fehlerbild das Du hast). -> Du koenntest mit Wait-States arbeiten, aber dann stellt sich die Frage: Why bother? Das erklaert aber leider nicht, warum das Ding nicht bei 1 - 2 MHz nicht funktioniert.
Harald K. schrieb: > Dem Wimmelbild kann man aber entnehmen, daß da nur ein Pullup dranhängt. Den Knubbel an GND nicht übersehen. :) In der Ära klassischer 1 MHz 6502 war das ziemlich egal. Wenn zwei NMOS Ausgänge gegeneinander laufen, weil man versehentlich ins ROM schreibt, brennt bei denen nichts an. Bei schnellem CMOS sind die Ströme grösser, und daher auch die damit verbundenen Transienten.
Thomas W. schrieb: >> R/W mit PHI2 verknüpft. > > Das macht er auch dem Wimmelbild "R/W-Signal generation": R/W_CPU und > PHI2 fuer das R/W zu RAM. Also kann ich das im Schaltplan dargestellte R/W vom Pin 11 des 74F32 direkt an OE des RAMs und ROMs legen? Wäre das dann korrekt? Phi2 wird dort invertiert bevor es mit CPU_R/W verodert wird. Ich habe das aus der funktionierenden Platine so ausgemessen.
Johannes S. schrieb: > Also kann ich das im Schaltplan dargestellte R/W vom Pin 11 des 74F32 > direkt an OE des RAMs und ROMs legen? Wäre das dann korrekt? Ja. Und lass ϕ2 aus /CE der RAMs und ROMs draussen.
:
Bearbeitet durch User
Thomas W. schrieb: > D.h. Dein EPROM muss eine max. Zugriffzeit von 70ns haben. Bringt Dein > EPROM diese Zugriffzeit? Wenn das z.b. ein EPROM mit Zugriffzeit von > 100ns hat, werden einige Daten schon gueltig sein, manche aber nicht > (genau das Fehlerbild das Du hast). Ich verwende ein Winbond 27C512 mit 45ns Zugriffszeit. Thomas W. schrieb: > Das erklaert aber leider nicht, warum das Ding nicht bei 1 - 2 MHz nicht > funktioniert. Ja, und auch nicht warum es nach 20min. Einschaltdauer dann plötzlich stabil läuft. Über Nacht getestet.
Johannes S. schrieb: > Thomas W. schrieb: >> Das erklaert aber leider nicht, warum das Ding nicht bei 1 - 2 MHz nicht >> funktioniert. > > Ja, und auch nicht warum es nach 20min. Einschaltdauer dann plötzlich > stabil läuft. Über Nacht getestet. OK. CPU PHI2_Out (Pin 39) ist unbeschaltet? Ansonsten, jetzt ist der Punkt: Send Pics. Zeige den Aufbau. Denn wenn Du die Frequenz auf 1 - 2MHz runtergehst, sollte das Ding funktionieren (die 16MHz sind wohl wishful thinking, aber 1MHz sollte es schaffen).
Du hattest geschrieben, dass das Ding mehr als 1A bei 5V zieht. Warum?
Johannes S. schrieb: > Also kann ich das im Schaltplan dargestellte R/W vom Pin 11 des 74F32 > direkt an OE des RAMs und ROMs legen? Nein, das hat die falsche Polarität.
Beitrag #7717922 wurde vom Autor gelöscht.
Johannes S. schrieb: > Also kann ich das im Schaltplan dargestellte R/W vom Pin 11 des 74F32 > direkt an OE des RAMs und ROMs legen? Ich hatte vorhin überlesen, dass du damit /OE machen willst, nicht /WE. Nimm dieses Signal als das, was es sein soll und im Plan auch ist: Als /WE der RAMs.
:
Bearbeitet durch User
(prx) A. K. schrieb im Beitrag #7717922:
> Es mag etwas unglücklich sein, ein Signal R/W zu nennen
Naja, das hat schon seinen Sinn. Schliesslich gibt es beim
6502 (et al) kein explizites Read-Signal wie es bei anderen
Prozessoren oder Controllern meist ein /RD und ein /WR-
Signal gibt.
Ich habe es mir als Eselsbrücke immer "Read_not_Write"
gemerkt, also Lesen high, Schreiben low.
:
Bearbeitet durch User
Wastl schrieb: > Naja, das hat schon seinen Sinn. Schliesslich gibt es beim > 6502 (et al) kein explizites Read-Signal wie es anderen > Prozessoren oder Controllern meist ein /RD und ein /WR- > Signal gibt. Eben. Mit obigem OR(INV(ϕ2), CPU-RW) baut man sich genau das fehlende /WR. Dieses Signal R/W zu nennen, führt eher zu Verwirrung. Und mit NAND(ϕ2, CPU-RW) kriegt man ein /RD, das man als /OE verwenden kann, wenn man vor Übergangs-Transienten in der ϕ1 Phase sicher sein will. Hat allerdings früher anno NMOS kaum jemanden interessiert.
:
Bearbeitet durch User
ist das mal mit einem IR betrachtet worden während dieser 20min ?
(prx) A. K. schrieb: > OR(INV(ϕ2), CPU-RW) Wem der OR/NAND Mix bei /OE und /WE auf den Geist geht: Das ist äquivalent zu NAND(ϕ2, INV(CPU-RW)), und so obendrein schneller.
:
Bearbeitet durch User
H. H. schrieb: > Gibts denn vom WDC keine AppNotes? Wenn ich mal annehmen darf, dass WDC das Rad nicht neu erfunden hat, findet man eine epische Beschreibung der 6500 Familie in: http://retro.hansotten.nl/uploads/aim65/r6500_hard.pdf Feine Unterschiede zwischen den WDC und NMOS-Implementierungen kann man suchen, wenn man die Grundlagen der 6500 drauf hat.
:
Bearbeitet durch User
(prx) A. K. schrieb: > H. H. schrieb: >> Gibts denn vom WDC keine AppNotes? > http://retro.hansotten.nl/uploads/aim65/r6500_hard.pdf Bezieht sich auf die lahmen alten NMOS Teile. > Feine Unterschiede zwischen den WDC und NMOS-Implementierungen kann man > suchen, wenn man die Grundlagen der 6500 drauf hat. Kann man, aber es hätte ja sein können, dass das WDC das schon getan hat.
H. H. schrieb: > PHI2 verknüpft ok, habe noch mal nachgesehen, die beiden von der CPU zur Abstimmung mit externe Bausteine hießen PI1 & PI2 PI0 war für die CPU ein in
H. H. schrieb: > Bezieht sich auf die lahmen alten NMOS Teile. Klar. Aber um Arbeitsweise und Signale zu verstehen, reicht es. Dazu dann das Datasheet der schnellen CMOS Teile verwenden. Man kann nicht ernsthaft erwarten, dass WDC sich wegen Komponenten die Finder wund schreibt, die es schon lange gibt, und die Anwender adressieren, die sich bereits auskennen. Der AIM65 adressierte Einsteiger auf genau dieser Ebene, war deshalb sehr gut dokumentiert. Dieses Manual betrachtet die 6500 Familie allgemein, nicht den AIM65 speziell.
:
Bearbeitet durch User
(prx) A. K. schrieb: > AIM65 Hab meinen noch, incl aller Handbücher. Bei mehr als dem zehnfachen Takt tauchen aber damals unbekannte Probleme auf.
H. H. schrieb: > Bei mehr als dem zehnfachen Takt tauchen aber damals unbekannte Probleme > auf. Wobei es in seinem Fall ja wohl schon ein Erfolg wäre, wenn das Teil bei 1 MHz sauber funktioniert.
H. H. schrieb: > Hab meinen noch, incl aller Handbücher. Und wann das letzte Mal eingeschaltet? Meiner landete von ein paar Jahren umzugsbedingt im Müll. Kein Platz, kein Sinn ausser Nostalgie.
Johannes S. schrieb: > Was mich allerdings noch verwundert ist folgender Umstand: > Wenn ich den Schachcomputer das erste Mal mit Strom versorge, spielt er > Züge die nicht in der Eröffnungsbibliothek des Programms gespeichert > sind. Hört sich ein Stück weit nach der Resetlogik an. Kann es sein das du den Reset zufrüh aufhebst, bevor die Spannung überhaupt stabil ist? Eventuell mal die Spannung und Reset gleichzeitig auf dem Oszi anzeigen lassen (beides am besten direkt an der CPU abgreifen). Dabei auch mal genauer auf die Pegel achten, diene Mischung aus TTL und CMOS kann gut gehen, muss es aber nicht. - https://de.wikipedia.org/wiki/Logikfamilie#Entstehung_der_Logikfamilien #### Was verstehst du unter "Abstürzen"? Betriebssysteme kennen diesen Begriff, aber eine CPU/µC kennen sowas eigentlich nicht. Die machen immer irgendwas und wenn es irgendwo in einer Dauerschleife herumspringen ist. Wenn RAM und ROM extern angebunden sind, kann mal das eigentlich anhand der Adressleitungen mit einem LA recht gut analysieren wo die CPU gerade herumeiert.
Wenn das alles nicht so klappt, vielleicht koennte der TO diese Drop-In-Replacement-CPU verwenden: https://monster6502.com/ OK, maximale Taktfrequenz von 50kHz, aber viele Blinken-Lights.
(prx) A. K. schrieb: > Dieses Signal R/W zu nennen, führt eher zu Verwirrung. Tatsächlich heißt das Signal R/W̅, wie alle negierten Signale trägt es ein ̅ .
Thomas W. schrieb: > OK. CPU PHI2_Out (Pin 39) ist unbeschaltet? > Ja, Pin 39 ist unbeschaltet. > Ansonsten, jetzt ist der Punkt: Send Pics. Zeige den Aufbau. Denn wenn > Du die Frequenz auf 1 - 2MHz runtergehst, sollte das Ding funktionieren > (die 16MHz sind wohl wishful thinking, aber 1MHz sollte es schaffen). Gerne, kann ich morgen machen. Ich weiß jetzt noch nicht genau ob er mit 1MHz funktioniert. Habe die Platine ausprobiert, da hat es nicht funktioniert, erst ca. 20min. später. Habe jetzt nochmals die Platine auskühlen lassen und nochmals probiert mit 1MHz, aber diesmal hat es sofort funktioniert. Kann sein dass alles noch zu warm war. Thomas W. schrieb: > Du hattest geschrieben, dass das Ding mehr als 1A bei 5V zieht. Warum? Das hat Bradward gestern um 18:09 geschrieben. Wieviel die Platine Strom zieht weiß ich nicht. H. H. schrieb: > Nein, das hat die falsche Polarität. Ok, müsste also nochmals invertiert werden oder besser gleich über ein Nor-Gatter ein separates Signal erzeugen? Martin M. schrieb: > ist das mal mit einem IR betrachtet worden während dieser 20min ? Meinst Du Infrarot oder was genau? (prx) A. K. schrieb: > Wobei es in seinem Fall ja wohl schon ein Erfolg wäre, wenn das Teil bei > 1 MHz sauber funktioniert. Ja, irgendwo ist der Wurm drinnen! Irgend W. schrieb: > Hört sich ein Stück weit nach der Resetlogik an. Kann es sein das du den > Reset zufrüh aufhebst, bevor die Spannung überhaupt stabil ist? > Eventuell mal die Spannung und Reset gleichzeitig auf dem Oszi anzeigen > lassen (beides am besten direkt an der CPU abgreifen). Dabei auch mal > genauer auf die Pegel achten, diene Mischung aus TTL und CMOS kann gut > gehen, muss es aber nicht. Danke, das ist eine gute Idee. Hatte den Reset schon lange in Verdacht. Habe darum eine zweite Platine aufgebaut und den Widerstand R1 von 10k auf 22k erhöht. Diese zweite Platine macht das nach dem ersten Einschalten nicht mehr. Aber funktioniert auch erst nach 20min. Irgend W. schrieb: > Was verstehst du unter "Abstürzen"? Betriebssysteme kennen diesen > Begriff, aber eine CPU/µC kennen sowas eigentlich nicht. Die machen > immer irgendwas und wenn es irgendwo in einer Dauerschleife > herumspringen ist. Naja, Der Fehler zeigt sich indem der Schachcomputer keinen Zug mehr macht. Die "Thinking"-LED blinkt weiter im selben Takt wie wenn alles funktionieren würde, aber er spielt keinen Zug mehr. Auch durch Drücken der Taste, die normal den Rechenvorgang unterbricht, wird kein Zug ausgegeben. Wenn ich dann nach ca. 20min. resete, funktioniert er plötzlich einwandfrei. Ich habe hier irgendwie den 7805 in Verdacht. Den Elko C6 am Ausgang mit 330µF habe ich schon auf 10µF reduziert mit leicht verändertem Fehlerbild. Jetzt läuft er zwar, zeigt aber während seines Rechenvorgang den bis dahin besten Zug an, ohne dass ich das eingeschaltet habe. Das läßt sich auch nicht ausschalten, da er diese Funktion sofort wieder einschaltet, bzw. das irgendwie aus dem RAM liest.
Johannes S. schrieb: > Thomas W. schrieb: >> OK. CPU PHI2_Out (Pin 39) ist unbeschaltet? >> > > Ja, Pin 39 ist unbeschaltet. Oha!
H. H. schrieb: > Johannes S. schrieb: >> Thomas W. schrieb: >>> OK. CPU PHI2_Out (Pin 39) ist unbeschaltet? >>> >> >> Ja, Pin 39 ist unbeschaltet. > > Oha! Nein, das ist so geplant: Bei der wdc65c02 ist das so geplant, weil man den PHI2 einspeisen kann (oder man kann einen Oszilator bauen, dann muss aber PHI2_Out den Ausgang sein). Da der TO ja einen Quarz-Oszilator benutzt: Alles wie gewuenscht. Das ist einer der offensichtliche Aenderungen zwischen der Original-6502 und dem WDC.
Johannes S. schrieb: > Ich habe hier irgendwie den 7805 in Verdacht. Den Elko C6 am Ausgang mit > 330µF habe ich schon auf 10µF reduziert mit leicht verändertem > Fehlerbild. In solchen Fehlern hole ich meine Powerbank raus: 5V mit einem USB-Anschluss.
Thomas W. schrieb: > Nein, das ist so geplant: Bei der wdc65c02 ist das so geplant, weil man > den PHI2 einspeisen kann (oder man kann einen Oszilator bauen, dann muss > aber PHI2_Out den Ausgang sein). Ich hatte Bedenken wegen der Phasenverschiebung, aber: 3.8 Phase 2 In (PHI2), Phase 2 Out (PHI2O) and Phase 1 Out (PHI1O) Phase 2 In (PHI2) is the system clock input to the microprocessor internal clock. During the low power Standby Mode, PHI2 can be held in either high or low state to preserve the contents of internal registers since the microprocessor is a fully static design. The Phase 2 Out (PHI2O) signal is generated from PHI2. Phase 1 Out (PHI1O) is the inverted PHI2 signal. An external oscillator is recommended for driving PHI2 and used for the main system clock. All production test timing is based on PHI2. PHI2O and PHI1O were used in older systems for system timing and internal oscillators when an external crystal was used. Man sollte aber kontrollieren ob der Oszillator auch ein taugliches Signal liefert.
H. H. schrieb: > Man sollte aber kontrollieren ob der Oszillator auch ein taugliches > Signal liefert. Gute Idee, werde ich mir mit dem Oszilloskop ansehen. Danke.
Johannes S. schrieb: > H. H. schrieb: >> Man sollte aber kontrollieren ob der Oszillator auch ein taugliches >> Signal liefert. > > Gute Idee, werde ich mir mit dem Oszilloskop ansehen. > Danke. Und das Reset-Signal auch. Man kann natuerlich den Kondensator mit einer Taste ueberbruecken.
(prx) A. K. schrieb: > Feine Unterschiede zwischen den WDC und NMOS-Implementierungen kann man > suchen, wenn man die Grundlagen der 6500 drauf hat. Ein gemeiner Unterschied ist z.B., dass die 6502-CMOS ein paar Befehle kennen, die es bei den NMOS nicht gab. Wenn man die Phasenbedingung einhält, kann man den CMOS anhalten, den Quarz abschalten und ein paar Minuten später an genau der Stelle weiter machen. Das habe ich mal an einem Prüfplatz genutzt, weil der µC-Takt den Abgleich des Empfängers (um 150 MHz) störte. Der In-Circuit-Emulator für 6502 nutzt das ebenfalls aus, fault hier im Regal vor sich hin und wird wohl nie wieder in Betrieb zu bringen sein. H. H. schrieb: >> AIM65 > Hab meinen noch, incl aller Handbücher. Den gab es mit Gehäuse drum als Siemens PC-100, hat uns damals überfordert.
Beitrag #7718099 wurde vom Autor gelöscht.
Thomas W. schrieb: > Ansonsten, jetzt ist der Punkt: Send Pics. Zeige den Aufbau. Denn wenn > Du die Frequenz auf 1 - 2MHz runtergehst, sollte das Ding funktionieren > (die 16MHz sind wohl wishful thinking, aber 1MHz sollte es schaffen). Hallo Thomas, im Anhang die versprochenen Bilder vom Aufbau der Platine. Diese Platine hat ein paar Designfehler die ich nachträglich korrigiert habe. So geht auf die VIA 65C22 (Kupferlitze) jetzt das CPU_R/W, vorher war das mit Phi2 veroderte CPU_R/W dran. Das funktionierte überhaupt nicht. Die Drahtverbindungen sind nun offene Eingänge die ich auf Gnd gelegt habe. Johannes S. schrieb: > Gerne, kann ich morgen machen. Ich weiß jetzt noch nicht genau ob er mit > 1MHz funktioniert. Habe die Platine ausprobiert, da hat es nicht > funktioniert, erst ca. 20min. später. Habe jetzt nochmals die Platine > auskühlen lassen und nochmals probiert mit 1MHz, aber diesmal hat es > sofort funktioniert. Kann sein dass alles noch zu warm war. Also mit 1MHz habe ich selbes Verhalten wie mit 16MHz. Eben nochmals geprüft. Thomas W. schrieb: > In solchen Fehlern hole ich meine Powerbank raus: 5V mit einem > USB-Anschluss. Ich habe stark die Stromversorgung in Verdacht. Ich werde heute versuchen eine externe Spannungsquelle mit ausreichend Leistung an die Platine zu hängen. Werde danach berichten.
> Ich habe stark die Stromversorgung in Verdacht.
Du hast Verdacht? Aber kein Oszi um das in 3min zu pruefen?
Vanye
Vanye R. schrieb: > Du hast Verdacht? Aber kein Oszi um das in 3min zu pruefen? Ja, doch ich habe ein Oszi. Ich werde mir das heute Abend mal genauer ansehen. Kann es sein, dass der 7805 zu wenig Strom liefert? Habe den gleichen Typ verbaut (78S05CV) der auch in der funktionierenden Platine verbaut ist.
Gehört die Spannungsversorgung nicht zu den ersten Dingen welche man im Fehlerfall testet?
Johannes S. schrieb: > Kann es sein, dass der 7805 zu wenig Strom liefert? Welche Eingangsspannung gibst Du dem denn? Das ist kein LDO, d.h. er braucht am Eingang schon ein paar Volt mehr als 5V. Zu viel sollte das dann aber auch nicht sein, weil er die Spannungsdifferenz in Wärme umwandelt - je mehr Strom, desto mehr Wärme. Es gibt auch Stepdown-Regler, man muss nicht unbedingt auf 70er-Jahre-Niveau stehenbleiben.
Harald K. schrieb: > Welche Eingangsspannung gibst Du dem denn? Das ist kein LDO, d.h. er > braucht am Eingang schon ein paar Volt mehr als 5V. Zu viel sollte das > dann aber auch nicht sein, weil er die Spannungsdifferenz in Wärme > umwandelt - je mehr Strom, desto mehr Wärme. Angeschlossen wird ein 9V AC Netzteil.
Johannes S. schrieb: > H. H. schrieb: >> Nein, das hat die falsche Polarität. > > Ok, müsste also nochmals invertiert werden Nein. @hhinz hat das sehr kurz gefasst. /OE und /WE dürfen nur dann low sein, wenn die CPU-R/W Leitung den dazu passenden Pegel hat und ϕ2 high ist.
:
Bearbeitet durch User
(prx) A. K. schrieb: > /OE und /WE eben das / steht für ! oder auch NICHT also negiert seit den Zeiten als es keine grafischen Buchstaben und kein Überstrich gab, also ist: Harald K. schrieb: > Tatsächlich heißt das Signal R/W̅, wie alle negierten Signale trägt es > ein ̅ . wieder reine Provokation oder eben doppelt gemoppelt wie LCD Display
> Ja, doch ich habe ein Oszi. Ich werde mir das heute Abend mal genauer > ansehen. Denk daran kein Pigtail zu verwenden sonst ist die Messung sinnlos. Vanye
Johannes S. schrieb: > Angeschlossen wird ein 9V AC Netzteil. Gleichgerichtet sind das etwa 12V, d.h. Dein 7805 muss 7 Volt in Abwärme umsetzen. Hast Du mal den Kühlkörper angefasst, wenn der Kram 'ne Weile lang in Betrieb ist? Warum nur macht man sowas? Wozu Wechselspannungsnetzteile? Sowas war in den 70ern und 80ern nötig, weil man da nichts besseres hatte, aber jetzt ...
Vanye R. schrieb: > Denk daran kein Pigtail zu verwenden sonst ist die Messung sinnlos. Danke für den Hinweis, aber so gut kenne ich mich damit nicht aus. Weiß nicht was ein Pigtail ist. Kannst Du mir das bitte näher erklären? Problematisch ist, dass ich nicht mehr zur Platine komme wenn das Brett angeschlossen ist. Ohne Brett ist eine Messung sinnlos da keine Last dran hängt. Harald K. schrieb: > Gleichgerichtet sind das etwa 12V, d.h. Dein 7805 muss 7 Volt in Abwärme > umsetzen. Hast Du mal den Kühlkörper angefasst, wenn der Kram 'ne Weile > lang in Betrieb ist? Ja, natürlich wird der Kühlkörper heiß. Der 7805 schaltet aber noch nicht ab. Harald K. schrieb: > Warum nur macht man sowas? Wozu Wechselspannungsnetzteile? Sowas war in > den 70ern und 80ern nötig, weil man da nichts besseres hatte, aber jetzt Ich möchte natürlich zum Original kompatibel bleiben. Wenn jemand in seinen originalen Schachcomputer dann diese Platine verwenden würde, müsste er darauf achten ein anderes Netzteil zu verwenden. Da ist es doch besser, das zu diesem Schachcomputer gehörende Netzteil auch für die getunte Platine verwenden zu können. Ich selber tue mir auch leichter. Der Elektroniker der diese Platine entwickelte, hat auch eine mit 24MHz gemacht. Diese Platine wird direkt mit einem stabilisierten Netzteil mit 5V betrieben, da sie für einen anderen Schachcomputer entwickelt wurde. Da kann man das Netzteil gar nicht verwechseln, da andere Anschlussbuchse. Natürlich könnte man das auch bei diesem alten Schachcomputer machen, aber ich möchte kompatibel bleiben und die Platinen zwischendurch auch tauschen können.
Johannes S. schrieb: > im Anhang die versprochenen Bilder vom Aufbau der Platine. Kondensatoren die dem Spannungsregler zugeordnet sind gehören auch direkt zum Spannungsregler positioniert sonst funktionieren sie nicht wie erwartet. Das gilt auch wenn es sich scheinbar um eine Gleichspannungs-Problematik handelt. Das ist nämlich nicht der Fall. Auf der Platine sind diese Kondensatoren "irgendwo" platziert. Wenn da vielleicht 1-2 Ampere fliessen sollten dann sind die betreffenden Versorgungsleitungen zu dünn ausgelegt.
Wastl schrieb: > Johannes S. schrieb: >> im Anhang die versprochenen Bilder vom Aufbau der Platine. > > Kondensatoren die dem Spannungsregler zugeordnet sind gehören > auch direkt zum Spannungsregler positioniert sonst funktionieren > sie nicht wie erwartet. Das gilt auch wenn es sich scheinbar um > eine Gleichspannungs-Problematik handelt. Das ist nämlich nicht > der Fall. > > Auf der Platine sind diese Kondensatoren "irgendwo" platziert. > > Wenn da vielleicht 1-2 Ampere fliessen sollten dann sind die > betreffenden Versorgungsleitungen zu dünn ausgelegt. Danke Wastl, Power-Leitungen sind 0,9mm breit. Die Signale die zum Stecker führen sind 0,5mm und der Rest 0,3mm breit. Wie breit soll ich die machen? Letztendlich kenne ich die gesamte Stromaufnahme nicht.
Thomas W. schrieb: >> H. H. schrieb: >>> Man sollte aber kontrollieren ob der Oszillator auch ein taugliches >>> Signal liefert. >> >> Gute Idee, werde ich mir mit dem Oszilloskop ansehen. >> Danke. > > Und das Reset-Signal auch. Man kann natuerlich den Kondensator mit einer > Taste ueberbruecken. Im Anhang das Taktsignal wie es am Eingang der CPU anliegt. Die Resetleitung bleibt nach Anlegen der Spannung für ca. 20ms auf low. Gemessen auf der Platine auf der ich Einschalt-Reset-Probleme habe. R1 ist auf dieser Platine 10k. Bei der zweiten Platine habe ich diesen Widerstand auf 22k erhöht und deshalb bleibt RESET auch für ca. 45ms auf low nach Anlegen der Versorgungsspannung.
> Danke für den Hinweis, aber so gut kenne ich mich damit nicht aus. Weiß > nicht was ein Pigtail ist. Du darfst am Tastkopf nicht das angeschlossene Massekabel verwenden sondern musst die hoffentlich mitgelieferte Massefeder nutzen damit die Verbindung zu einer Masse so kurz wie moeglich ist. Hier mal ein Bild: https://www.admess.de/pmk-5x-massefedern-fuer-2-5mm-tastkopf-891-400-004 Ausserdem muss es ein 10:1 Tastkopf sein und du solltest dir sicher sein das er korrekt an den Oszi angepasst ist. Dann kannst du mal schauen ob Vcc sauber ist. Ausserdem liefer doch mal einen Singelshot eines DAten und einer Adressleitung damit man mal die Flanken beurteilen kann und zwar so das man auf jedem Bild mehrere Pegelwechsel sehen kann. Oh..und dein Oszi solltest wenigstens eine Bandbreite von 60Mhz haben, idealerweise sogar deutlich mehr. Vanye
Vanye R. schrieb: >> Danke für den Hinweis, aber so gut kenne ich mich damit nicht aus. Weiß >> nicht was ein Pigtail ist. > > Du darfst am Tastkopf nicht das angeschlossene Massekabel verwenden > sondern musst die hoffentlich mitgelieferte Massefeder nutzen damit > die Verbindung zu einer Masse so kurz wie moeglich ist. > > Hier mal ein Bild: > > https://www.admess.de/pmk-5x-massefedern-fuer-2-5mm-tastkopf-891-400-004 > Sowas war bei meinem Rigol nicht dabei. > Ausserdem muss es ein 10:1 Tastkopf sein und du solltest dir > sicher sein das er korrekt an den Oszi angepasst ist. > > Dann kannst du mal schauen ob Vcc sauber ist. > > Ausserdem liefer doch mal einen Singelshot eines DAten und einer > Adressleitung damit man mal die Flanken beurteilen kann und zwar > so das man auf jedem Bild mehrere Pegelwechsel sehen kann. > > Oh..und dein Oszi solltest wenigstens eine Bandbreite von 60Mhz haben, > idealerweise sogar deutlich mehr. > Ich habe nur 50MHz und nicht viel Erfahrung mit einem Oszilloskop. Leider! Werde es morgen trotzdem mal versuchen.
:
Bearbeitet durch User
Johannes S. schrieb: > Ich habe nur 50MHz und nicht viel Erfahrung mit einem Oszilloskop. Dennoch sollte das Signal vom Oszillator erheblich eckiger aussehen.
H. H. schrieb: > Johannes S. schrieb: >> Ich habe nur 50MHz und nicht viel Erfahrung mit einem Oszilloskop. > > Dennoch sollte das Signal vom Oszillator erheblich eckiger aussehen. Problematischer als die rundgelutschten Flanken könnte die Spitzen-Spitzenspannung von ca. 5.6 V sein. Erzeugt der Spannungswandler tatsächlich 5.0V ?
Johannes S. schrieb: > Thomas W. schrieb: >>> H. H. schrieb: >>>> Man sollte aber kontrollieren ob der Oszillator auch ein taugliches >>>> Signal liefert. >>> >>> Gute Idee, werde ich mir mit dem Oszilloskop ansehen. >>> Danke. >> >> Und das Reset-Signal auch. Man kann natuerlich den Kondensator mit einer >> Taste ueberbruecken. > > Im Anhang das Taktsignal wie es am Eingang der CPU anliegt. Das ist Muell. No matter what. Denn Phi2 kommt direkt aus dem Quarz-Oszillator. Warum nicht mit freundlichen 1MHz starten und gucken, warum Du keinen Rechteck-Signal findest. Spannungen an der CPU?
Thomas W. schrieb: > Das ist Muell. No matter what. Denn Phi2 kommt direkt aus dem > Quarz-Oszillator. Wastl schrieb: > Der Referenztakt PHI2 wird direkt vom Oszillator getrieben, > sollte da nicht zumindest ein Gatter zum Puffern dazwischen?
H. H. schrieb: > Dennoch sollte das Signal vom Oszillator erheblich eckiger aussehen. Kommt drauf an welche Bandbreite der Rigol hat. Vielleich ist es viel eckiger und die Messung trügt? Immerhin ist die 3. Harmonische bereits bei 48 MHz .....
Johannes S. schrieb: > Letztendlich kenne ich die gesamte Stromaufnahme nicht. Dann nimmst Du Dein Multimeter und misst zumindest die Groessenordnungen. Der max. Strom der CPU ist 1.5mA/Mhz clock-Frequenz, Dein RAM zieht kaum Strom, das EPROM ca. 30mA -> max. 100mA. wenn der Kuehlkoerper warm ist ist das falsch.
Vanye R. schrieb: >> Danke für den Hinweis, aber so gut kenne ich mich damit nicht aus. Er hat vor allem noch nicht erkannt, die Relevanz der klugen Tipps den Verfassern zuzuordnen. >> Weiß nicht was ein Pigtail ist. > Du darfst am Tastkopf nicht das angeschlossene Massekabel verwenden > sondern musst die hoffentlich mitgelieferte Massefeder nutzen damit > die Verbindung zu einer Masse so kurz wie moeglich ist. Du schreibst ab oder kannst wirklich eigene Vergleichsmessungen belegen? x-tausende Leute messen mit dem Kabelchen am Tastkopf und erzielen damit ausreichende Ergebnisse.
Johannes S. schrieb: > Letztendlich kenne ich die gesamte Stromaufnahme nicht. Hmm, vielleicht mal messen ?? ! Da du einen 7808 auf der Platine hast, ist der Eingangsstrom exakt der Betriebsstrom bei 5 Volt hinter dem 7805. Denn diese Regler machen ja nix anderes als die "überschüssige Spannung" in Wärme zu verwandeln. Eine Amperemeter mit Messbereeich bis mind. 2A sollte ja vorhanden sein. ICh wie man's anschließt erklär ich jetzt hier nicht. Alternativ kann man mit Oszi schauen daß die 5 Volt "glatt" sind und keine "Bögen" von 50 / 100 Hz haben. Für das neue Layout schlage ich dringend vor, einen "7805-Pinkompatiblen" Schaltregler vorzusehen (braucht eigentlich nicht mehr Platz, v.a. auch kein Kühlblech (weitere Frage: ist so eines derzeit am 7805 dran???). Pollin: Produktnummer: 352856 Reichelt: R-78B50-15L Die Frage "Wie breit soll ich die machen?" zu den Power-Leitungen ist einfach zu beantworten: So breit wie möglich. Keinesfalls weniger als 1,0 mm , besser wäre 1,5 mm. Vor allem vom Eingang bis hinter dem (neuen) Spannungsregler. Wo es sich dann mal verteilt kann man etwas runtergehen. Zu 6502 , Decodierung, Kuttelmuttel mit R/W, OE an Ram und Eprom: Bereits gestern verwies ich auf http://forum.6502.org/viewtopic.php?f=4&t=7964#p106554 Dort weiter bei http://forum.6502.org/viewtopic.php?f=4&t=7964#p106557 wird das Schaltbild "pocv130.pdf" eines schnellen W65C816 Systems gezeigt. In diesem Schaltbild auf Seite 4/12 werden ordentliche "/RD" und "/WR" Signale generiert, die dann auf Seite 5/12 zu den "/OE" des Ram und Eprom, sowie "/WE" des Ram eingesetzt werden. Das sieht vernünftig aus. Mit den Phi-Zeugs bei 6502 kenne ich mich nicht aus (bei Z80 alles einfacher und klarer). Aber auch da mal in o.g. Plan schauen und vergleichen. Irgendwie ist da auch der "Wait" Generator noch mit drin.
Bradward B. schrieb: > Problematischer als die rundgelutschten Flanken könnte die > Spitzen-Spitzenspannung von ca. 5.6 V sein. Erzeugt der > Spannungswandler tatsächlich 5.0V ? Ja, ziemlich genau. Anzeige Multimeter: 4,98 Thomas W. schrieb: > Das ist Muell. No matter what. Denn Phi2 kommt direkt aus dem > Quarz-Oszillator. Warum nicht mit freundlichen 1MHz starten und gucken, > warum Du keinen Rechteck-Signal findest. Ok, werde ich morgen mit 1MHz wiederholen. > Spannungen an der CPU? Wie am Ausgang des 7805 5,0V. Wastl schrieb: > Kommt drauf an welche Bandbreite der Rigol hat. 50MHz. Thomas W. schrieb: > Dann nimmst Du Dein Multimeter und misst zumindest die > Groessenordnungen. Der max. Strom der CPU ist 1.5mA/Mhz clock-Frequenz, > Dein RAM zieht kaum Strom, das EPROM ca. 30mA -> max. 100mA. wenn der > Kuehlkoerper warm ist ist das falsch. Ja, Kühlkörper ist deutlich warm, auch wenn das Brett noch gar nicht dran hängt. Ist aber bei der funktionierenden Platine genau so.
Klaus F. schrieb: > Johannes S. schrieb: >> Letztendlich kenne ich die gesamte Stromaufnahme nicht. > > Hmm, vielleicht mal messen ?? ! Naja, da muss ich zumindest irgendwo eine Leiterbahn auftrennen. Das wollte ich mir noch ersparen. Werde ich aber probieren. > Da du einen 7808 auf der Platine hast, ist der Eingangsstrom exakt der > Betriebsstrom bei 5 Volt hinter dem 7805. Ahh, ok, dann kann ich mich schon vor dem Spannungsregler rein hängen. Das müsste relativ einfach gehen. Danke für den Tipp. > Denn diese Regler machen ja nix anderes als die "überschüssige Spannung" > in Wärme zu verwandeln. > Eine Amperemeter mit Messbereeich bis mind. 2A sollte ja vorhanden sein. > ICh wie man's anschließt erklär ich jetzt hier nicht. > Alternativ kann man mit Oszi schauen daß die 5 Volt "glatt" sind und > keine "Bögen" von 50 / 100 Hz haben. Ja, wie man Strom misst weiß ich. Die 5 Volt rauschen schon leicht, wenn ich das mit dem Oszi betrachte. So ca. +-0,2V. > > Für das neue Layout schlage ich dringend vor, einen > "7805-Pinkompatiblen" Schaltregler vorzusehen (braucht eigentlich nicht > mehr Platz, v.a. auch kein Kühlblech (weitere Frage: ist so eines > derzeit am 7805 dran???). Ja, ein kleiner Alu-Kühlkörper für TO220 Bauteile. > Pollin: Produktnummer: 352856 > Reichelt: R-78B50-15L > Ok, werde ich mir besorgen. Habe hier noch einen Traco der allerdings nur bis 1A liefert. Mal sehen wieviel Stromaufnahme ich wirklich habe. > Die Frage "Wie breit soll ich die machen?" zu den Power-Leitungen ist > einfach zu beantworten: So breit wie möglich. > Keinesfalls weniger als 1,0 mm , besser wäre 1,5 mm. > Vor allem vom Eingang bis hinter dem (neuen) Spannungsregler. > Wo es sich dann mal verteilt kann man etwas runtergehen. Danke ist ein guter Hinweis. Werde ich beim nächsten Layout so umsetzen. > > Zu 6502 , Decodierung, Kuttelmuttel mit R/W, OE an Ram und Eprom: > Bereits gestern verwies ich auf > http://forum.6502.org/viewtopic.php?f=4&t=7964#p106554 > Dort weiter bei http://forum.6502.org/viewtopic.php?f=4&t=7964#p106557 > wird das Schaltbild "pocv130.pdf" eines schnellen W65C816 Systems > gezeigt. In diesem Schaltbild auf Seite 4/12 werden ordentliche "/RD" > und "/WR" Signale generiert, die dann auf Seite 5/12 zu den "/OE" des > Ram und Eprom, sowie "/WE" des Ram eingesetzt werden. > Das sieht vernünftig aus. Danke, ich hab es jetzt gefunden. Hatte es gestern nicht mehr auf dem Schirm. Werde ich bei der nächsten Version dieser Platine so umsetzen. > Mit den Phi-Zeugs bei 6502 kenne ich mich nicht aus (bei Z80 alles > einfacher und klarer). Aber auch da mal in o.g. Plan schauen und > vergleichen. Irgendwie ist da auch der "Wait" Generator noch mit drin.
> Du schreibst ab oder kannst wirklich eigene Vergleichsmessungen belegen? > x-tausende Leute messen mit dem Kabelchen am Tastkopf und erzielen damit > ausreichende Ergebnisse. Machst du Witze? Es geht hier um 16MHz Rechteck. Da hast du Frequenzen bis in den UKW Bereich die du sehen musst um die Kurvenform zu beurteilen. Vorhanden ist aber ein 50MHz Rigol, keine Ahnung wie man damit umgeht, falsche Anbindung an die Platine und vermutlich ein Tastkopf der noch niemals kompensiert wurde. Damit kannst du Messungen bei zappelnden Gleichstrom machen, aber nicht mehr. BTW: Fuer Messungen an Versorgungsspannunge hab ich sogar eine TPR4000 hier rumliegen die extra dafuer gemacht wurde. Aber natuerlich kann man das bei Leuten die ihr Geld nicht mit sowas verdienen eher nicht erwarten. Aber man kann sich wenigstens Anstrengen so gut wie moeglich zu messen. Da Bild vom Takt hier ist doch von vorne bis hinten ein Witz. Wuerde mich nicht wundern wenn das ein 1:1 Tastkopf war. Vanye
Im Anhang zwei Oszillogramme. Das eine zeigt das 1MHz- Taktsignal. Das zweite den Flankenanstieg eines Datenbits. Das Überschwingen des Taktsignals finde ich schon ein wenig beunruhigend. Zum Flankenanstieg kann ich nichts dazu sagen. Schätze etwas langsam vielleicht. Die Stromaufnahme der Platine liegt bei maximal 300 - 350mA. Mit angestecktem Schachbrett. Im "Idle-Mode" zeigt das Multimeter 0,27A während eines Rechenvorgangs 0,29A und knapp über 0,3A bei Zugausgabe mit Signalton. Da ich noch einen deutlich schnelleren SRAM hier habe werde ich versuchen den einzubauen. Muss mir dafür aber erst einen Adapter bauen. Von 600mil auf 300mil, da der schnelle RAM schmäler ist. Irgendwelche Vorschläge was ich noch testen könnte? Nochmals Danke für die vielen Vorschläge und Anregungen.
Johannes S. schrieb: > Das Überschwingen des Taktsignals finde ich schon ein wenig > beunruhigend. Wäre typisch für eine lange Masseanbindung des Tastkopfs per Krokokabel, der erwähnte "Pigtail". Eine steile Flanke produziert Oszillationen in einem solchen Tastkopf-Anschluss. Wer misst misst Mist.
:
Bearbeitet durch User
Manfred P. schrieb: > kannst wirklich eigene Vergleichsmessungen belegen? Sowas hatte ich vor vielen Jahren selbst ausprobiert. Mit Takt aus 74AC, für extra ruppige Flanken, weil es mir genau darum ging. Der Unterschied zwischen klassischem Massekabel und einer kurzen Anbindung zum Masserahmen des Tastkopfs war erheblich. 100 MHz Rigol. > x-tausende Leute messen mit dem Kabelchen am Tastkopf und erzielen damit > ausreichende Ergebnisse. Wer um solche Effekte weiss, ignoriert sie ggf auch schon mal. Es hilft gewissermassen, solche Messungen mit einem 20 MHz Oszi zu machen. Das vermeidet Irritationen, die bei einem Oszi mit ausreichend hoher Bandbreite auftreten. :)
:
Bearbeitet durch User
Johannes S. schrieb: > Da ich noch einen deutlich schnelleren SRAM hier habe werde ich > versuchen den einzubauen. Spar dir den Aufwand, so lange es auch bei 1 MHz nicht stabil läuft. Je schneller die Bauteile sind, ob RAMs oder Logikbausteine, desto anspruchsvoller ist das Layout, wenn dadurch die Flanken steiler und die Transienten im Stromverbrauch höher werden. Ersetze 74LS/HC durch 74AC, oder normale RAMs durch Cache-RAMs, und du kriegst vielleicht Probleme, die überhaupt erst dadurch auftreten.
:
Bearbeitet durch User
> Das Überschwingen des Taktsignals finde ich schon ein wenig > beunruhigend. Wenn das wirklich so vorhanden ist, ja dann ist das beunruhigend. Deshalb hab ich gesagt das es wichtig ist vernuenftig zu messen weil du sonst genau sowas siehst obwohl es nicht da ist. Also: 1. Tastkopf auf 10:1 stellen. 2. Am Oszi kompensieren 3. Krokoklemme ab und Federklemme aus etwas Silberdraht am Tastkopf selber draufwickeln und dann GND in 1-2cm Abstand vom Messpunkt auf der Platine suchen. Vanye
Vanye R. schrieb: > Machst du Witze? Es geht hier um 16MHz Rechteck. Da hast du Frequenzen > bis in den UKW Bereich die du sehen musst um die Kurvenform zu > beurteilen. jau, der Faktor >=5 also über 80MHz Bandbreite wäre nicht schlecht will man noch die Anstiegszeiten vernünftig auflösen (besser wäre natürlich 10-fache Bandbreite 160MHz)
Joachim B. schrieb: > Vanye R. schrieb: >> Machst du Witze? Es geht hier um 16MHz Rechteck. >> Da hast du Frequenzen bis in den UKW Bereich >> die du sehen musst um die Kurvenform zu beurteilen. Naja, Leute, etwas überbewertet hier. Weil, wenn der Oszillator läuft und die Frequenz stimmt, dann passt das. 16 MHz auf Eurokarte, das ist eher unkritisch. Man sieht ja Leitungslänge und Anzahl Pins an diesem Netz. Wie wird sie dann denn sein, die Kurvenform aus 'nem digitalen IC? Ja: Rechteckig. Am Hameg 412 sah das vor 40 Jahren auch so aus und hat funktioniert. Wichtig ist aber: Tastkopf 1:10 verwenden (wurde bereits geschrieben).
> Weil, wenn der Oszillator läuft und die Frequenz stimmt, dann passt das. > 16 MHz auf Eurokarte, das ist eher unkritisch. Nein, es ist beherrschbar wenn man alles richtig gemacht hat. Aber der Ausgangspunkt dieses Threads ist das nicht alles richtig gemacht wurde und wenn man dann nicht die Flanken sehr gut sehen kann dann kann man das nicht beurteilen. Und wir haben hier keine 16Mhz. Du hast hier jeder Menge Oberwellen die du sehen willst und zwar so wie sie sind, nicht so wie sie bei schlechter Messung vergurkt werden. Vanye
Bei mir ist das nun auch schon wieder 30Jahre her (AH52BASIC oder so?). War jetzt auch kein zweiphasentakt, sondern 8052 mit eingebautem Basic-Interpreter (hatten sich viele). Das Layout war aber dort so organisiert, dass die Daten- und Adressleitungen so kurz wie möglich gehalten wurden. Ob die nun bei 16Mhz auch schon alle gleich lang sein müssen, weiß ich nicht und ob evtl. einige steuerleitungen absichtlich länger oder kürzer sein müssen, kann ich mir auch nicht vorstellen. Aber man kann das ja, bei den heutigen Möglichkeiten, beim routing mit in Betracht ziehen. So kann man den Adressbus und den Datenbus doch sicher als „Drahthaufen“ Routen und hat beispielsweise D0-D7 gemeinsam am Mauszeiger hängen. Durch die Beine von ThT (dachte, das soll SMD werden) kommt man ja wohl locker hindurch. Ich hatte damals so ein dickes Buch „U880 und Peripherie“ aus m Militärverlag. Da war alles(!) haarklein erklärt, wer was wann macht und wer welche Signale zu welcher Zeit erwartet. Sowas muss es doch hier auch geben. Ich weiß nicht recht; man kann sowas nicht mal eben einfach so nachbauen und hoffen, dass es funktioniert. Na auf jeden Fall tät ich die ICs so anordnen, dass die AdressPins und auch die Daten-Pins schön in einer Reihe liegen und sinngemäß, am Timing angelegt, so Routen, dass Signale auch alle halbwegs übernommen werden (hab gelesen, dass die hier sogar bei JEDER Takflanke Neachtung finden). Von daher: Timings studieren, neues Layout. Das kommt nämlich davon, wenn man für 8Mark ein komplettes Design gefertigt bekommt. Wenn das 800 gekostet hätte, wärest du garnicht auf die Idee gekommen, da irgendeinen „freerouter“ dranzusetzen, sondern hättest dich solange mit dem Timing-Diagrammen beschäftigt, bis du sie verstanden hättest. Jetzt kannste alles nochmal von vorne entwerfen. Scheisse. Schade um die viele, gutgemeinte, Arbeit bis hierher.
> Bei mir ist das nun auch schon wieder 30Jahre her (AH52BASIC oder so?). > War jetzt auch kein zweiphasentakt, sondern 8052 mit eingebautem > Basic-Interpreter (hatten sich viele). [Doublepalmface] Die ollen Schnarchkisten liefen mit 1Mhz. Sie liefen deshalb nur mit 1Mhz weil die olle Elektronik damals so lahm war. Die Frequenz ist nur ein Nebenprodukt der Anstiegszeit. Das erlaubt ueberhaubt keinen Vergleich mit aktuellen Bauteilen. Schau mal hier: https://de.wikipedia.org/wiki/Rechteckschwingung#Fourieranalyse Und falls man da Ringing bis zum abwinken hat dann kann man, wie ich schon sagte da mal einen 100R zwischen machen und schauen ob es dann zumindest mal besser wird. So kann man vielleicht aus einem schlechten Layout ein funktionierende machen. Es muss ja nicht in den EMV test. :-D Vanye
Axel R. schrieb: > Na auf jeden Fall tät ich die ICs so anordnen, dass die AdressPins und > auch die Daten-Pins schön in einer Reihe liegen und sinngemäß, am Timing > angelegt, so Routen, dass Signale auch alle halbwegs übernommen werden > (hab gelesen, dass die hier sogar bei JEDER Takflanke Neachtung finden). > Von daher: Timings studieren, neues Layout. > Das kommt nämlich davon, wenn man für 8Mark ein komplettes Design > gefertigt bekommt. Wenn das 800 gekostet hätte, wärest du garnicht auf > die Idee gekommen, da irgendeinen „freerouter“ dranzusetzen, sondern > hättest dich solange mit dem Timing-Diagrammen beschäftigt, bis du sie > verstanden hättest. > Jetzt kannste alles nochmal von vorne entwerfen. Scheisse. Schade um die > viele, gutgemeinte, Arbeit bis hierher. Danke Axel, du hast natürlich vollkommen recht. Ich wußte halt nicht, dass das Timing so wichtig ist. Ich gebe zu, dass ich da etwas zu naiv an die Sache gegangen bin. Ja, an einem neuen Routing führt kein Weg vorbei. Ich sehe das eher als Lehrgeld, da es sich um ein Hobbyprojekt handelt, spielt die (verlorene) Zeit nur eine untergeordnete Rolle. Prinzipiell funktioniert die Platine ja mit 16MHz, aber eben erst nach 20min. Einschaltdauer. Dafür hätte ich schon gerne eine Erklärung. Ist es wirklich so, dass das Timing so knapp daneben ist, dass erst nach einer gewissen Temperaturerhöhung eines Bauteils alles funktioniert? Kaum zu glauben.
Vanye R. schrieb: > Machst du Witze? Es geht hier um 16MHz Rechteck. Da hast du Frequenzen > bis in den UKW Bereich die du sehen musst um die Kurvenform zu > beurteilen. > > Vorhanden ist aber ein 50MHz Rigol, Ja - macht ja nix? Aus der gesehenen Anstiegszeit, der Anstiegszeit des Oszis lt. Datenblatt, und hoffentlich einigermaßen abgeglichenem Tastkopf läßt sich lässig der Anstieg des Signals selber bestimmen, solange die Signal-Zeiten nicht zu sehr von der Oszi-Anstiegszeit gegen 0 zustreben. Für übliche MOS, CMOS, TTL völlig ausreichend, um die Signalanstiegszeiten als ausreichend oder schon als kritisch zu betrachten, oder Flankendifferenzen zu ermitteln. Um mehr geht es hier ja nicht ...
Johannes S. schrieb: > Danke Axel, > du hast natürlich vollkommen recht. Ich wußte halt nicht, dass das > Timing so wichtig ist. Ich gebe zu, dass ich da etwas zu naiv an die > Sache gegangen bin. > Ja, an einem neuen Routing führt kein Weg vorbei. Ach, laß Dich nicht so einwickeln. Wenn hier, wie von manchen angesprochen, irgendwelche Signallaufzeiten auf dem Kupfer eine Rolle spielen sollten, dann ist das gesamte Schaltungsdesign schon 'eh Kacke, und nicht das PCB-Design. Selbst bei einem Leiterzug mit ein paar 10cm Länge hat man gerade Signallaufzeiten weit unterhalb einer Gatterlaufzeit von "normalen" TTL- oder HC-CMOS. Und dann kommt es auch eher nur auf Laufzeit-Differenzen an, und nicht so sehr auf absolute Werte. Da sind paar cm oder gar dm noch immer unkritisch bei einem 16MHz-System (Taktzeiten bei reichlich 60ns). Viel wichtiger ist da das Schaltungsdesign, bei dem Gatterlaufzeiten sauber mit eingerechnet sind, so daß die Timing-Angaben der ICs lt. Datenblatt sicher mit etwas Reserve erfüllt sind. Wenn das System erst nach einer Warmlaufphase sicher läuft, selbst bei nur wenigen MHz, dann hast Du wohl irgendwo ein Problem mit zu knappen Flanken-Timings zw. irgendwelchen "zueinander gehörenden" Signalen. Da muß man eben die Datenblätter hernehmen, und schauen, ob der Schaltplan potentiell sicher die Timings der IC erfüllen kann. > Ich sehe das eher als Lehrgeld, da es sich um ein Hobbyprojekt handelt, > spielt die (verlorene) Zeit nur eine untergeordnete Rolle. > Prinzipiell funktioniert die Platine ja mit 16MHz, aber eben erst nach > 20min. Einschaltdauer. Dafür hätte ich schon gerne eine Erklärung. Ist > es wirklich so, dass das Timing so knapp daneben ist, dass erst nach > einer gewissen Temperaturerhöhung eines Bauteils alles funktioniert? > Kaum zu glauben. Ja, so wird es eben sein ...
Mit einigem Amüsement beobachte ich die Diskussion um die schlimmen und kaum zu bändigenden 16MHz und das überaus delikate Routing auf der Leiterplatte. Hier mal ein ›Quick and dirty hack‹ mit einem fliegend verdrahteten TFT Display. Spezifiziert isses übrigens für ~15MHz auf dem SPI. Läuft aber problemlos schneller (mit einem wirklich uralten analogen 50MHz Oszilloskop verifiziert).
Jens G. schrieb: > Johannes S. schrieb: >> Danke Axel, >> du hast natürlich vollkommen recht. Ich wußte halt nicht, dass das >> Timing so wichtig ist. Ich gebe zu, dass ich da etwas zu naiv an die >> Sache gegangen bin. >> Ja, an einem neuen Routing führt kein Weg vorbei. > > Ach, laß Dich nicht so einwickeln. Wenn hier, wie von manchen > angesprochen, irgendwelche Signallaufzeiten auf dem Kupfer eine Rolle > spielen sollten, dann ist das gesamte Schaltungsdesign schon 'eh Kacke, > und nicht das PCB-Design. Selbst bei einem Leiterzug mit ein paar 10cm > Länge hat man gerade Signallaufzeiten weit unterhalb einer > Gatterlaufzeit von "normalen" TTL- oder HC-CMOS. Insbesondere weil die Maschine schon ein Problem hat, wenn er einen 1MHz Oszillator verwendet. Und das das Ding nach 20min Burn-In einwandfrei laeuft (unabhaengig von Takt-Frequenz). Ein paar Sachen waeren schon verbesserungsfaehig, aber da das Ding ja nach 20 Minuten laeuft, laeuft es ja prinzipiell. Meine Vorschlaege waren leider auch in flasche Richtung (Was man noch gucken koennte waere die Guete der Stromversorgung, aber so schlecht ist ein 7805 auch wiederum nicht, die Schaltung ist auch Deppen geeignet). Mir faellt z.Z. nichts dazu ein. Mah! Gruesse Th.
H. H. schrieb: > Norbert schrieb: >> Mit einigem Amüsement > > Habe ich deinen Apfel/Kartoffel-Vergleich gelesen. Na dann denkst du bestimmt, das mögliche Signalverzerrung/Verschleifung und Phasenverschiebungen bei 62.5 MHz auf dem SPI keinerlei Bedeutung haben. Da gratuliere ich aber herzlich. ;-)
Johannes S. schrieb: > Ja, an einem neuen Routing führt kein Weg vorbei. Dann würde ich auch gleich auf 4 Layer übergehen: GND, VCC und 2x Signale. Neben einer stabilen Versorgung können dann auch die Signale kurz und direkt verdrahtet werden. Wenn nicht gleich 4-fach-Layer, dann sollte zumindest der GND besser vernetzt sein. Bei dir sind beim GND etliche "Halbinseln" entstanden, die teilweise recht locker "rumhängen". Also zumindest diese Inseln mit dicken Leiterbahnen zusammenhäkeln. Hintergrund: Das Schalten von CMOS produziert hohe kurze Stromspitzen auf den Versorgungsleitungen. Wenn dann die GNDs an verschiedenen Orten gegeneinander "hüpfen" können die dazwischen ausgetauschten Signale falsche Ergebnisse liefern. Der GND ist die Basis, auf die sich alle Signale beziehen. Zu dem Thema gehört auch die richtige Anordnung der Stützkondensatoren: mindestens einer an jedem IC (was du lt. Schaltplan ja auch gemacht hast) in der Nähe der Vorsorgungs-Pins.
:
Bearbeitet durch User
Okay okay; noch ein blöder Vergleich, der evtl. genauso hinkt. Mich erinnert das daran, „als wie als wenn“ wenn man bei SPI den falschen Mode verwendet und die Daten trotzdem irgendwie als gültig erklärt werden, trotz falscher Clock-Flanke, weils eben gerade noch so passt.
Axel R. schrieb: > Okay okay; noch ein blöder Vergleich, der evtl. genauso hinkt. > Mich erinnert das daran, „als wie als wenn“ wenn man bei SPI den > falschen Mode verwendet und die Daten trotzdem irgendwie als gültig > erklärt werden, trotz falscher Clock-Flanke, weils eben gerade noch so > passt. Es ging auch nicht darum, das die beiden Dinge verglichen werden sollten. Das scheint — wie man weiter oben erkennen kann — bei einigen Lesern nicht vollständig angekommen zu sein. Es geht vielmehr darum, das hier ein riesiges Bohei um eine Schaltung macht, welche man auf einer Lochstreifenplatine (funktionierend) aufbauen kann. Das die Schaltung ja selbst bei einem 1MHz Takt (etwas schneller als Morsetaste) nicht läuft, scheint geflissentlich ignoriert zu werden. Dafür wird über dringend benötigtes Laborequipment philosophiert, welches selbst für den Bau eines Raumschiffes Overkill wäre.
Dietrich L. schrieb: > Wenn nicht gleich 4-fach-Layer, dann sollte zumindest der GND besser > vernetzt sein. Bei dir sind beim GND etliche "Halbinseln" entstanden, > die teilweise recht locker "rumhängen". Also zumindest diese Inseln mit > dicken Leiterbahnen zusammenhäkeln. Danke Dietrich, ich werde beim nächsten Layout darauf achten. Das war mir gar nicht bewußt, dass ich GND-Halbinseln habe. Dietrich L. schrieb: > Zu dem Thema gehört auch die richtige Anordnung der Stützkondensatoren: > mindestens einer an jedem IC (was du lt. Schaltplan ja auch gemacht > hast) in der Nähe der Vorsorgungs-Pins. Ja, darauf habe ich auch geachtet. Norbert schrieb: > Das die Schaltung ja selbst bei einem 1MHz Takt (etwas schneller als > Morsetaste) nicht läuft, scheint geflissentlich ignoriert zu werden. Ja, momentan ist es so, dass die Platine schon nach ca. 10min. Einschaltdauer einwandfrei läuft, weil es mittlerweile im Zimmer schon 27°C hat. Also eindeutig ein thermisches Problem. Leiterbahnen schlecht geroutet, zu dünn oder ähnliches, vermutlich. Sofort nach dem Einschalten läuft die Platine zwar, aber der Schachcomputer zeigt während des Rechenvorgangs seinen bis dahin gefundenen, besten Zug an. Diese Funktion dürfte aber nicht eingeschalten sein und läßt sich auch nicht ausschalten. Erst wenn das System ausreichend warm ist. Ich habe mir überlegt wie ich rausfinden könnte ob es zu Problemen beim RAM oder ROM-Zugriff kommt. Dazu könnte ich mal ein kleines Testprogramm ins EProm brennen und schauen was passiert. Eine Art Speichertest. Parallel dazu arbeite ich bereits an einer neuen Schaltung. Werde OE vom RAM/ROM wie oben empfohlen ansteuern. Möchte diesmal alles richtig machen :-). Danke für die vielen Hinweise und Tipps.
:
Bearbeitet durch User
H. H. schrieb: >> Mit einigem Amüsement > Habe ich deinen Apfel/Kartoffel-Vergleich gelesen. Ich habe hier Kartoffeln, die geschält wie ein Apfel aussehen und schlecht schmecken. Zu anderen Spekulationen: Ich hatte eine CMOS-Logik layouten lassen und drei Platinen bestückt, nur eine davon funktionierte. Ich hatte mich an einer Stelle mit den Flanken (Zähler / FlipFlops) vertan, weshalb sie theoretisch garnicht funktioniert. Bei der einen war wohl ein Gatter zufällig etwas langsamer ... in die Richtung könnte man auch bei Johannes' Aufbau gucken.
Berücksichtige bei einem neuen Layout doch mal die Klassiker bei doppelseitigen Leiterplatten: * Beim Placement die 100nF Caps beim VCC-Anschluss ansiedeln * Top: Nur waagerechte Leiterbahnen * Bottom: Nur senkrechte Leiterbahnen * Dicke Power-Leitungen als erstes routen * Taktleitungen (Clock, R/W etc.) mit mehr Abstand zum Rest verlegen * Busse möglichst gleichförmig routen * min. 20% auf die minimalen Breiten- bzw. Abstandsvorgaben des LP-Herstellers aufschlagen. Gibt hinterher Reserven. * Wenn beim fertigen Layout das Design vereinfacht werden kann, kann man auch von der waagerecht/senkrecht Aufteilung abweichen und Vias sparen. Aber erst, wenn das Layout fertig ist! waagerecht/senkrecht bezogen auf die Ausrichtung der ICs (senkrecht)
Hat schon mal jemand an eine kalte Lötstelle gedacht? Also mal nachlöten. Sind in der Ausfallzeit die Zustände an allen Adress- und Datenleitungen an der CPU und den anderen Bausteinen jeweils gleich? Gibt es überhaupt Signalveränderungen während den toten 20 Minuten? Gibt es beim erneuten Einschalten eine Minuten nach der ersten Totzeit wieder eine 20minütige Totzeit?
Carsten W. schrieb: > Berücksichtige bei einem neuen Layout doch mal die Klassiker bei > doppelseitigen Leiterplatten: > * Beim Placement die 100nF Caps beim VCC-Anschluss ansiedeln > * Top: Nur waagerechte Leiterbahnen > * Bottom: Nur senkrechte Leiterbahnen > * Dicke Power-Leitungen als erstes routen > * Taktleitungen (Clock, R/W etc.) mit mehr Abstand zum Rest verlegen > * Busse möglichst gleichförmig routen > * min. 20% auf die minimalen Breiten- bzw. Abstandsvorgaben des > LP-Herstellers aufschlagen. Gibt hinterher Reserven. > * Wenn beim fertigen Layout das Design vereinfacht werden kann, kann man > auch von der waagerecht/senkrecht Aufteilung abweichen und Vias sparen. > Aber erst, wenn das Layout fertig ist! > > waagerecht/senkrecht bezogen auf die Ausrichtung der ICs (senkrecht) Danke Carsten, das sind sehr gute Tipps, die ich mir merken werde. Wolfgang S. schrieb: > Hat schon mal jemand an eine kalte Lötstelle gedacht? > Also mal nachlöten. Ich habe mittlerweile schon eine zweite Platine aufgebaut mit dem gleichen Fehlerbild. > Sind in der Ausfallzeit die Zustände an allen Adress- und Datenleitungen > an der CPU und den anderen Bausteinen jeweils gleich? Ein richtiger Ausfall ist es meist nicht. Der Schachcomputer ist nicht tot, rechnet noch, zeigt aber Funktionen an, die nicht eingeschaltet wurden, oder läßt sich nicht mehr unterbrechen. > Gibt es überhaupt Signalveränderungen während den toten 20 Minuten? Wie oben erwähnt, tot ist er nicht, er arbeitet nur anders. Manchmal kommt es aber auch zu Fehlern wo er nicht mehr bedienbar ist. Ich habe den Eindruck, dass er fehlerhafte Werte aus dem RAM liest. Wieso er dabei nicht komplett unspielbar wird, weiß ich nicht. Es scheint nur gewisse Speicherzellen zu betreffen. Das RAM wurde schon getauscht. Meistens wird aber die IRQ-Routine abgearbeitet, da LEDs blinken und er mit einer Tonausgabe auf Tastendrucke reagiert. > Gibt es beim erneuten Einschalten eine Minuten nach der ersten Totzeit > wieder eine 20minütige Totzeit? Nein, wenn er mal "warm" ist dann funktioniert es mehrere Stunden lang (über Nacht getestet.
Hallo Johannes, erstmal Respekt für deine bisherige Arbeit. Da gehört schon Einiges dazu, mal eben so ne Platine zu reengineeren und komplett mit KiCad neu machen und aufzubauen. Du hast ja leider nicht (vielleicht hab ich es auch überlesen) geschrieben, welcher Schachcomputer das genau ist, ich hab aber gesehen, dass du dein Layout ARB genannt hast. Handelt es sich da um einen Auto Response Bord(ARB) von Chafitz? Dann verstehe ich, warum du das wieder zum Laufen bringen willst, das scheinen ja tolle Dinger gewesen zu sein damals in den 80ern. Jedenfalls die, die ich bei - https://www.schachcomputer-online-museum.de/index-1/applied-conceps-chafitz/chafitz-auto-response-board-1980 gesehen habe. Wenn ich dich richtig verstanden habe, dann hast du das Board zweimal aufgebaut und beides Mal den gleichen Fehler und mit 1Mhz Quarz ebenfalls das gleiche Fehlerbild. Dann ist das sehr deterministisch und deutet m. M. nicht auf Timing Problem hin, jedenfalls solltest du andere Ursachen erst ausschließen. Besorge dir unbedingt Kältespray, wie oben schon mehrfach empfohlen, damit wirst du den thermischen Fehler vielleicht schnell eingrenzen können. Johannes S. schrieb: > Ich habe mir überlegt wie ich rausfinden könnte ob es zu Problemen beim > RAM oder ROM-Zugriff kommt. Dazu könnte ich mal ein kleines Testprogramm > ins EProm brennen und schauen was passiert. Eine Art Speichertest. Das wollte ich dir auch vorschlagen. Vielleicht kannst du den Code soweit nachvollziehen um zu verstehen, wie die LEDs auf dem Schachfeld angesteuert werden, dass wird ja sicher mit dem VIA über ne Matrix passieren, oder ist in dem Schachbrett selbst auch noch Hardware verbaut? Vielleicht postest du mal ein Photo. Dann könntest du alle 1KByte eine LED weiterschalten und immer A5 5A oder sowas ins RAM schreiben und auslesen und testen, die ganzen 64KB durch. Womöglich fällt dir dann auf, welche Speicherbank/Adressbit die Probleme macht und du weißt, wo du den Fehler suchen musst, oder du weißt wenigstens, dass der Speicher in Ordnung ist. Vielleicht erklärst du nochmal, was du mit dem Vergrößern der Eröffnungbibliothek genau meinst, das hab ich nicht verstanden, was du da geändert hast. Es zeigt sich halt immer wieder, dass genau das nicht funktioniert, was man gegenüber dem Original verändert hat, da würde ich auch nochmal drüberschauen. Ich wünsche dir weiterhin gutes Gelingen und viel Erfolg bei der elendigen Fehlersuche VG Thomas
Hallo Tom, danke für Deinen freundlichen Post. Tom K. schrieb: > Du hast ja leider nicht (vielleicht hab ich es auch überlesen) > geschrieben, welcher Schachcomputer das genau ist, ich hab aber gesehen, > dass du dein Layout ARB genannt hast. Handelt es sich da um einen Auto > Response Bord(ARB) von Chafitz? Dann verstehe ich, warum du das wieder > zum Laufen bringen willst, das scheinen ja tolle Dinger gewesen zu sein > damals in den 80ern. Ja, es ist das Auto Response Board von Chafitz. Ich habe vier Stück davon. Einen komplett Original. Vor Jahren restaurieren lassen, sieht schöner aus als Neu. Zwei mit 130MHz Emulation auf einem Beaglebone und eben diesen der eine 16MHz-Platine verbaut hat, die ein Elektroniker vor ca. 10 Jahren entwickelte. Leider hat er sich bei der Decodierung des Adressbereichs nicht allzu sehr bemüht und den Bereich von $2000 - $3FFF sowohl mit ROM als auch mit RAM belegt. Daher ist dieser Bereich nicht nutzbar. Darum habe ich mich entschlossen die Platine komplett neu nachzumachen und das RAM vom Bereich $2000 - $3FFF auszuschliessen. Das klappt auch einwandfrei. > Wenn ich dich richtig verstanden habe, dann hast du das Board zweimal > aufgebaut und beides Mal den gleichen Fehler und mit 1Mhz Quarz > ebenfalls das gleiche Fehlerbild. Dann ist das sehr deterministisch und > deutet m. M. nicht auf Timing Problem hin, jedenfalls solltest du andere > Ursachen erst ausschließen. Ja, ich könnte mir vorstellen, dass es an einem zu geringen Abstand einer Adressleitung zu einer anderen Leitung liegen könnte. Welche anderen Ursachen könnten noch in Frage kommen? > Besorge dir unbedingt Kältespray, wie oben schon mehrfach empfohlen, > damit wirst du den thermischen Fehler vielleicht schnell eingrenzen > können. Das hätte ich schon längst gemacht, aber ich komme nicht mehr zur Platine wenn das Brett darauf ist. Ohne montiertem Brett sehe ich aber keine Fehler und das Board wäre auch unbelastet. Naja, vielleicht geht es doch irgendwie, mal sehen. > Das wollte ich dir auch vorschlagen. Vielleicht kannst du den Code > soweit nachvollziehen um zu verstehen, wie die LEDs auf dem Schachfeld > angesteuert werden, dass wird ja sicher mit dem VIA über ne Matrix > passieren, oder ist in dem Schachbrett selbst auch noch Hardware > verbaut? Ja, den Code versteht ich ganz gut, außer das Schachprogramm selbst. Ich werde mal versuchen eine Taste des Schachcomputers auf eine eigene Testroutine umzuprogrammieren. > Vielleicht erklärst du nochmal, was du mit dem Vergrößern der > Eröffnungbibliothek genau meinst, das hab ich nicht verstanden, was du > da geändert hast. Es zeigt sich halt immer wieder, dass genau das nicht > funktioniert, was man gegenüber dem Original verändert hat, da würde ich > auch nochmal drüberschauen. Im Rom des Schachcomputers ist die Eröffnungsbibliothek in Form eines Datenbereichs abgelegt. Nach mühsamen, wochenlangen Tüfteln ist es mir gelungen die Codierung dieses Buchs zu verstehen. Daraufhin habe ich mir ein Programm für meinen Mac geschrieben, dass Eröffnungsbücher im PGN-Format in dieses "ARB-Format" übersetzen kann und ein neues Buch ins ROM "eingepflanzt". Das funktionierte einwandfrei. Wurde wochenlang mit der Emulation und der funktionierenden 16MHz-Platine getestet. Dieses Buch, das ich unbedingt im ROM haben möchte ist aber so groß, dass es den Bereich von $2000 bis $7xxx einnimmt. Das geht auf der "originalen" 16MHz-Platine nicht, da der Bereich von $2000 - $3000 auch von RAM belegt ist. Das habe ich in meinem Nachbau modifiziert. Nach Warmlaufen der Platine funktioniert auch alles. Ich kann mir ansehen ob der Schachcomputer alle Eröffnungszüge kennt, und das tut er. > Ich wünsche dir weiterhin gutes Gelingen und viel Erfolg bei der > elendigen Fehlersuche Danke, die Fehlersuche kann ja auch richtig Spaß machen :-) Lg
Vielleicht können ja noch einige prüfende Blicke auf das Adress-Decoding geworfen werden. Ich sehe da momentan (alles 4Kib Blöcke):
1 | RAM ¬CE: 0…1 — ¬(15∧14∧13) |
2 | ROM ¬CE: 2…7 und 10…15 — 14∨13 |
3 | VIA CS1/CS2B: 10…15 — (15∧(14∨13) |
¬OE ist ja knallhart immer enabled. Da hätten wir mit der Dekodierung dann ein Problem. Oder habe ich da etwas übersehen?
Johannes S. schrieb: > Leider hat er sich bei der Decodierung des > Adressbereichs nicht allzu sehr bemüht und den Bereich von $2000 - $3FFF > sowohl mit ROM als auch mit RAM belegt. Daher ist dieser Bereich nicht > nutzbar. Darum habe ich mich entschlossen die Platine komplett neu > nachzumachen und das RAM vom Bereich $2000 - $3FFF auszuschliessen. Das > klappt auch einwandfrei. Pruef bitte noch mal, ob Deine Adressdekodierung (
1 | $A000 - $FFFF ROM (EPROM W27C512-45Z) |
2 | $8000 - $9FFF VIA W65C22S (Western Design Center) |
3 | $2000 - $7FFF ROM (EPROM W27C512-45Z siehe oben) |
4 | $0000 - $1FFF RAM (SRAM As6C62256 55ns) |
) richtig funktioniert, insbesondere fuer das EPROM (0x2000 - 0x7fff und 0xa000 - 0xffff) und einen Konflikt mit dem RAM (0x0000 - 0x1fff): Ich habe so haeufig auf den Schaltplan geguckt, dass ich jetzt so oder so nix mehr sehe :-) Gruesse Th. (der mit Sargon II und 8MHz Z80)
Beitrag #7720211 wurde vom Autor gelöscht.
Thomas W. schrieb: > $8000 - $9FFF VIA W65C22S (Western Design Center) Hmmm, VIA wird auf CS1 von A15 angesteuert, also 0x8000…0xFFFF Zusätzlich auf CS2B sobald A14∨A13, ergibt also 0xA000…0xFFFF Und damit schepperts. EDIT: Ich nehme das zurück. Anscheinend muss CS2B auf ›0‹ sein, was man durch die blödsinnige Bezeichnung und ohne studieren des Datenblatts nicht erkennen kann. Die Dekodierung lautet also:
1 | RAM ¬CE: 0…1 — ¬(15∧14∧13) |
2 | ROM ¬CE: 2…7 und 10…15 — 14∨13 |
3 | VIA CS1/CS2B: 8…9 — 15∧¬(14∨13) |
:
Bearbeitet durch User
Norbert schrieb: > ¬OE ist ja knallhart immer enabled. > Da hätten wir mit der Dekodierung dann ein Problem. > Oder habe ich da etwas übersehen? Nicht unbedingt. Die Decodierung erfolgt am CE. Das das schlechter Stil ist, OE grundsätzlich auf Und zu legen weiß ich mittlerweile. Die funktionierende Vorlage hat das aber genauso. > Hmmm, VIA wird auf CS1 von A15 angesteuert, also 0x8000…0xFFFF > Zusätzlich auf CS2B sobald A14∨A13, ergibt also 0xA000…0xFFFF Die VIA wird selektiert wenn CS1 high Pegel führt und CS2B Low-pegel. In meinem Fall wenn A15 gesetzt ist und beide Adressleitungen A14 und A13 low sind (Or-Gatter). Thomas W. schrieb: > Pruef bitte noch mal, ob Deine Adressdekodierung (1$A000 - $FFFF ROM > (EPROM W27C512-45Z) > 2$8000 - $9FFF VIA W65C22S (Western Design Center) > 3$2000 - $7FFF ROM (EPROM W27C512-45Z siehe oben) > 4$0000 - $1FFF RAM (SRAM As6C62256 55ns) > ) richtig funktioniert, insbesondere fuer das EPROM (0x2000 - 0x7fff und > 0xa000 - 0xffff) und einen Konflikt mit dem RAM (0x0000 - 0x1fff): Ich > habe so haeufig auf den Schaltplan geguckt, dass ich jetzt so oder so > nix mehr sehe :-) > > Gruesse Also, ich erkenne da jetzt kein Problem. Das EPROM wird nur dann selektiert wenn eine der beiden Adressleitungen A14/A13 high ist. DAs ist weder bei 0x0000 noch bei 0x1fff so. Schön langsam komme ich auch schon durcheinander :-)
Norbert schrieb: > EDIT: > Ich nehme das zurück. Anscheinend muss CS2B auf ›0‹ sein, was man durch > die blödsinnige Bezeichnung und ohne studieren des Datenblatts nicht > erkennen kann. Die Dekodierung lautet also:1RAM ¬CE: 0…1 > — ¬(15∧14∧13) > 2ROM ¬CE: 2…7 und 10…15 — 14∨13 > 3VIA CS1/CS2B: 8…9 — 15∧¬(14∨13) Ja, genau.
Johannes S. schrieb: > Also, ich erkenne da jetzt kein Problem. Dekodierung sieht OK aus. 8K RAM, 24K ROM, 8K VIA, 24K ROM Die Verwirrung kam daher, das Western sich blödsinnigerweise entschlossen hat CS1 active high zu machen und CS2B active low. Da sollte es gemäß allgemeiner Konventionen ¬CS2B oder /CS2B oder mit Überstrich heißen.
Da das System ja sowieso einen neuen Design-Durchgang braucht würde ich auf jeden Fall die gesamte Dekodier-Logik in ein oder zwei GALs implementieren. GALs weil man ja 5V Logik braucht, ersatzweise auch ein XILINX CPLD welches in 5V arbeitet. In beide Fällen ist man im fertigen Design flexibel bei der Ausdekodierung und man könnte sich redundante Ausgänge schaffen um leichter zu debuggen und zu diagnostizieren.
Johannes S. schrieb: > Ja, ich könnte mir vorstellen, dass es an einem zu geringen Abstand > einer Adressleitung zu einer anderen Leitung liegen könnte. Das ist eher unwahrscheinlich. Zwar ist Übersprechen zwischen Signalleitungen tatsächlich ein Thema, nicht aber zwischen Signalleitungen, die gleichzeitig geschaltet werden - und das ist bei Adress- und auch Datenleitungen der Fall.
Ja, die Decodierung ist "fragwürdig". Und daß es sowohl bei 1 / 2 MHz nicht stabil läuft, angeblich aber dann nach 20 Minuten auch mit 16 MHz, hmmm, da mache ich paar Fragezeichen dran??? Falls du selbst (kleine) 6502 Programme erstellen kannst, so schlage ich vor ein kleines Testprogramm zu schreiben: Start: (Reset-Vector hierher) Schreibe ins Ram Adresse 0x?555 Wert 0xAA (? == dein Ram Adressbereich) NOP Schreibe ins Ram Adresse 0x?AAA Wert 0x55 NOP Lese aus Ram Adresse 0x?555 NOP Lese aus Ram Adresse 0x?AAA NOP JMP Start Das sollte sich dann gut mit Scope verfolgen lassen. = Wann liegt Adresse an = Wann kommt /CE /OE und /WR des Ram (Laufzeit Decodierung) <-- Wichtig = Wann stehen Daten an schreibend = Wann stehen Daten an lesend Im zweiten Schritt o.g. Programm ohne die NOPs. Das erstmal mit kleinem Takt 1 MHz verifizieren. Ein Kanal bzw. Trigger immer von /CE des Eproms oder des Rams. Ggf. eine Platine umbauen auf "bessere" Decodierung, auch unter Berücksichtigung der Sachen in Doku "pocv130.pdf" Für das neue Layout hatte ich ja bereits Hinweise gegeben Beitrag "Re: 6502 System funktioniert nicht richtig"
Wastl schrieb: > Da das System ja sowieso einen neuen Design-Durchgang braucht > würde ich auf jeden Fall die gesamte Dekodier-Logik in ein > oder zwei GALs implementieren. GALs weil man ja 5V Logik > braucht, ersatzweise auch ein XILINX CPLD welches in 5V > arbeitet. Was bitte sind GALs? So tief bin ich nicht in der Marterie drinnen. Ich lerne aber gerne dazu. Bitte um kurze Erklärung. Klaus F. schrieb: > Ja, die Decodierung ist "fragwürdig". > Und daß es sowohl bei 1 / 2 MHz nicht stabil läuft, > angeblich aber dann nach 20 Minuten auch mit 16 MHz, > hmmm, da mache ich paar Fragezeichen dran??? Naja, so sieht es aber leider aus. Kann nur berichten, wie es sich verhält. Klaus F. schrieb: > Falls du selbst (kleine) 6502 Programme erstellen kannst, > so schlage ich vor ein kleines Testprogramm zu schreiben: > > Start: (Reset-Vector hierher) > Schreibe ins Ram Adresse 0x?555 Wert 0xAA (? == dein Ram > Adressbereich) > NOP > Schreibe ins Ram Adresse 0x?AAA Wert 0x55 > NOP > Lese aus Ram Adresse 0x?555 > NOP > Lese aus Ram Adresse 0x?AAA > NOP > JMP Start Ok, klingt einleuchtend. Ich hoffe, dass ich das noch mit meinem 50MHz Oszi messen kann. Bei 1Mhz sollte das auf jeden Fall möglich sein. Ich habe mir eben ein kleines Ramtest-Programm geschrieben, das den Wert $55 in den Speicher des RAM schreibt und anschließend wieder ausliest. Sobald Unterschiede in einer Zelle auftreten, soll das Programm die beiden Adressbytes am Schachbrett ausgeben. Ergebnis: kein Fehler im Ramtest feststellbar. Vielleicht war es aber auch nur zu warm im Raum. Werde das bei kühleren Temperaturen wiederholen. Dein Test klingt aber noch besser, da man hier dann auch wirklich falsches Timing erkennen könnte. Bin gespannt. Werde ich morgen machen. Klaus F. schrieb: > Für das neue Layout hatte ich ja bereits Hinweise gegeben > Beitrag "Re: 6502 System funktioniert nicht richtig" Ja, das habe ich mittlerweile kapiert. Die nächste Platine wird diese Ansteuerung berücksichtigen. Bin froh das ich nun weiß wie man das wirklich richtig macht. Danke.
Johannes S. schrieb: > Ergebnis: kein Fehler im Ramtest feststellbar. Vielleicht war es aber > auch nur zu warm im Raum. Werde das bei kühleren Temperaturen > wiederholen. Der Thread geht schon seit 5 Tagen, du hättest schon längst eine Büchse Kältespray haben können, statt dessen wird hier weitergeeiert obwohl sich noch Details auftaten.
Johannes S. schrieb: > Was bitte sind GALs? So tief bin ich nicht in der Marterie drinnen. Ich > lerne aber gerne dazu. Bitte um kurze Erklärung. Programmierbare und löschbare Logik-Bausteine. Vorläufer sind die PALs, Nachfolger die CPLDs. Haben auch den Vorteil dass man viel passende Logik auf kleinem Raum unterbringen kann. https://f-ei.hszg.de/fileadmin/user_upload/Redakteure/PRIVAT/sbischoff/Digitaltechnik/Versuchsanleitungen/Grundlagen_der_GALs.pdf
:
Bearbeitet durch User
Wastl schrieb: >> Was bitte sind GALs? > Programmierbare und löschbare Logik-Bausteine. Und das Problem ist, dass man einen Compiler und das passende Programmiergerät braucht. Damit kommt es für Johannes eher nicht in Betracht.
Joachim B. schrieb: > Der Thread geht schon seit 5 Tagen, du hättest schon längst eine Büchse > Kältespray haben können, statt dessen wird hier weitergeeiert obwohl > sich noch Details auftaten. Das Problem ist, dass ich bei angeschlossenem Brett nicht mehr so einfach an die Platine komme. Da müsste ich mir ein Gestell bauen, damit das funktioniert. Wastl schrieb: > Programmierbare und löschbare Logik-Bausteine. Vorläufer sind > die PALs, Nachfolger die CPLDs. Haben auch den Vorteil dass > man viel passende Logik auf kleinem Raum unterbringen kann. Danke für die Aufklärung. Ist mir noch nicht untergekommen, klingt aber sehr interessant. Manfred P. schrieb: > Und das Problem ist, dass man einen Compiler und das passende > Programmiergerät braucht. Damit kommt es für Johannes eher nicht in > Betracht. Ja, wahrscheinlich.
Johannes S. schrieb: > Das Problem ist das du immer noch kein Kältespray hast obwohl du auch weißt, daß das Problem auch/nicht nur thermisch ist.
:
Bearbeitet durch User
Norbert schrieb: > Anscheinend muss CS2B auf ›0‹ sein, was man durch > die blödsinnige Bezeichnung und ohne studieren des Datenblatts nicht > erkennen kann. Na wenn man genau hinschaut, sieht man das schon: CS1 -> high active CS2B -> low active Das angehängte 'B' (='BAR') steht in der englischsprachigen Welt für low active oder negiert.
Rick schrieb: > Das angehängte 'B' (='BAR') steht in der englischsprachigen Welt für low > active oder negiert. Ich habe zwar nur einige Jahre in den V S von A gelebt und gearbeitet, aber bin da anscheinend nur mit den vormals genannten, gängigen Bezeichnungen konfrontiert worden. Gibt's denn für das angehängte ›B‹ an Signalbezeichnungen auch irgendwo eine formelle Definition? inquiring minds…
Norbert schrieb: > Gibt's denn für das angehängte ›B‹ an > Signalbezeichnungen auch irgendwo eine formelle Definition? Das ist ein (schlechter) Notbehelf, wenn der verwendete Zeichensatz so etwas wie C̅S̅2̅ nicht zulässt. Alternative Schreibweisen sind /CS2 oder !CS2, manchmal auch #CS2 oder nCS2. Alle Varianten beschreiben ein Active-Low-Signal.
Harald K. schrieb: > Das ist ein (schlechter) Notbehelf, wenn der verwendete Zeichensatz so > etwas wie C̅S̅2̅ nicht zulässt. Habe hier einen Sack voll Manuals aus USA(SCII). Von 1976. Da konnten die das schon.
Norbert schrieb: > Habe hier einen Sack voll Manuals aus USA(SCII). Von 1976. Da konnten > die das schon. Kenne ich. Auf Schreibmaschine gesetzt und übereinander getippt - oder auch von Hand nachgetragen. Und so ging es dann in den Druck. Als Input für Weiterverarbeitung taugt diese Technik indes weniger. Etwa bei einem PAL. Norbert schrieb: > irgendwo eine formelle Definition Vorzugsweise DIN. Deutscher gehts nicht. :) Amis sind lockerer. Der Autor lässt sich etwas einfallen, und wenn der Adressat nichts versteht, ist er vielleicht sowieso falsch. Oder es findet sich irgendwo ein Glossar.
:
Bearbeitet durch User
(prx) A. K. schrieb: > Als Input für Weiterverarbeitung Dafür war ja bereits:
1 | /CS oder auch /CS/ oder auch ~CS später dann noch ¬CS |
vollumfänglich etabliert. Kein wirklich guter Grund sich etwas Weiteres aus den Fingern zu saugen. (prx) A. K. schrieb: > Amis sind lockerer. Ach das musst du mir nicht erzählen. Aber auch die denken sich nicht irgend etwas aus und hoffen dann das alle anderen es schon irgendwie korrekt interpretieren werden. ** **OK, das mag bei Boeing vielleicht anders sein… Jetzt sollte es aber gut sein, der ansonsten erstaunlich zivile ›thread‹ zerfranst gerade…
:
Bearbeitet durch User
Norbert schrieb: > hoffen dann das alle anderen es schon irgendwie > korrekt interpretieren werden. Nein! Sie hoffen dann dass alle anderen es schon irgendwie korrekt interpretieren werden.
Joachim B. schrieb: > Der Thread geht schon seit 5 Tagen, du hättest schon längst eine Büchse > Kältespray haben können, statt dessen wird hier weitergeeiert obwohl > sich noch Details auftaten. Joachim hat leider Recht. Auch wenn es schwierig ist, das Spray zu applizieren: momentan stocherst du komplett im Nebel und löst mit einem Neulayout vielleicht Probleme, die eigentlich keine sind. Kannst du nicht eine Art Adapter vom Board zum Schachbrett bauen, so dass du auch im Betrieb am Board messen kannst?
Klaus F. schrieb: > Start: (Reset-Vector hierher) > Schreibe ins Ram Adresse 0x?555 Wert 0xAA (? == dein Ram > Adressbereich) > NOP > Schreibe ins Ram Adresse 0x?AAA Wert 0x55 > NOP > Lese aus Ram Adresse 0x?555 > NOP > Lese aus Ram Adresse 0x?AAA > NOP > JMP Start > > Das sollte sich dann gut mit Scope verfolgen lassen. > = Wann liegt Adresse an > = Wann kommt /CE /OE und /WR des Ram (Laufzeit Decodierung) <-- > Wichtig > = Wann stehen Daten an schreibend > = Wann stehen Daten an lesend Hallo Klaus, ich habe jetzt mal Deinen Vorschlag umgesetzt und o.a. Testprogramm in ein EPROM gebrannt und mit dem Oszilloskop gemessen (siehe Bilder). Das Programm: org $A000 start: lda #$aa sta $0555 nop lda #$55 sta $0aaa nop lda $0555 nop lda $0aaa nop jmp start org $fffc dw start gemessen mit 1MHz Taktfrequenz! Nach meinem Verständnis nach, sehe ich nichts außergewöhnliches. Bitte teile mir doch mit welche Signale du gerne sehen möchtest um dir ein Urteil zu bilden.
Max G. schrieb: > Kannst du nicht eine Art Adapter vom Board zum Schachbrett bauen, so > dass du auch im Betrieb am Board messen kannst? Hallo Max, so einfach ist das leider nicht. Das Schachbrett ist ca. 50x50cm groß und hat an der Unterseite jede Menge Leitungen. Die Verdrahtungen der LEDs und der Reed-Kontakte etc. Das Flachbandkabel zur Platine ist relativ kurz. Aber eine Möglichkeit werde ich finden. Die Frage ist aber: was zeigt mir der Kältespray? Ich werde damit vielleicht eine Region ausmachen können, die, wenn ich gezielt kühle das Fehlverhalten wieder auftreten läßt. Vielleicht läßt sich der Fehler dann doch irgendwie erkennen, mal sehen. Ich bestelle mir mal eine Dose.
Aber du könntest die Messungen einmal mit kalter CPU machen und dann nochmal, wenn sie nach 20 Minuten warmgelaufen ist. Wenn du Kältespray hast, dann nochmal einsprühen. Abweichung im Timing könnte man da vielleicht schon sehen.
Johannes S. schrieb: > Das Flachbandkabel zur Platine ist relativ kurz. Dann nimm halt ein längeres.
Johannes S. schrieb: > gemessen mit 1MHz Taktfrequenz! Und jetzt - zum Vergleich - dieselben Messungen mit 16 MHz bitte!
Harald K. schrieb: > Dann nimm halt ein längeres. Lieber Harald, ich weiß nicht was Dich so stört an meinen Posts, aber Deine Antworten sind immer mit einem gewißen negativen Unterton. Das Flachbandkabel ist nicht austauschbar. Der Stecker ist im Internet gar nicht mehr zu finden. Die einzelnen Drähte gehen über die gesamte Brettbreite. Seinerzeit hat man das alles noch ganz anders gebaut. Glaubst Du wirklich ich wüßte mir nicht zu helfen wenn das Flachbandkabel so einfach tauschbar wäre? Glaub' mir, ich werde eine Lösung finden! Rick schrieb: > Und jetzt - zum Vergleich - dieselben Messungen mit 16 MHz bitte! Mache ich gerne! Robert W. schrieb: > Aber du könntest die Messungen einmal mit kalter CPU machen und dann > nochmal, wenn sie nach 20 Minuten warmgelaufen ist. > Wenn du Kältespray hast, dann nochmal einsprühen. > Abweichung im Timing könnte man da vielleicht schon sehen. Das werde ich gerne ausprobieren. Kältespray bekomme ich erst Mitte nächster Woche.
> Das Flachbandkabel ist nicht austauschbar. Der Stecker ist im Internet
gar nicht mehr zu finden.
Würde mich auch interessieren.
Zeig doch mal bitte ein Foto hierzu
Axel R. schrieb: >> Das Flachbandkabel ist nicht austauschbar. Der Stecker ist im Internet > gar nicht mehr zu finden. > > Würde mich auch interessieren. > Zeig doch mal bitte ein Foto hierzu Hi Axel, anbei ein Foto vom Stecker dieses Boards. Ich habe seinerzeit nichts dazu gefunden. Ist ein 2x18 Stecker. Wäre nett wenn Du mir einen Link mitteilen könntest wo dieser Stecker zu bekommen wäre. Danke für Deine Bemühungen.
https://www.digikey.com/en/products/detail/te-connectivity-amp-connectors/583859-5/1136914 Kontakte muss man separat kaufen.
Harald K. schrieb: > Johannes S. schrieb: >> Ja, ich könnte mir vorstellen, dass es an einem zu geringen Abstand >> einer Adressleitung zu einer anderen Leitung liegen könnte. > > Das ist eher unwahrscheinlich. Zwar ist Übersprechen zwischen > Signalleitungen tatsächlich ein Thema, nicht aber zwischen > Signalleitungen, die gleichzeitig geschaltet werden - und das ist bei > Adress- und auch Datenleitungen der Fall. Ich würde auch sagen, eher unwahrscheinlich. Erst recht da der Fehler auch bei 1MHz auftritt und sowas ist eher nicht Temperaturabhängig. Da das Problem auch bei 1MHz auf triff, dürfte es auch nichts mit zu langsamen Bausteinen zu tun haben. Da wäre eher: große Probleme bei 16MHz, weniger Probleme bei 8MHz und keine bei 1MHz oder so in der Art. Vermutung, da sind irgendwo einige Signale, die eigentlich gewisse Abstände zueinander haben sollten, zeitlich so eng beieinander, dass eine leicht unterschiedliche Erwärmung schon ausreicht, um wieder in den "geht gerade so Bereich" zu kommen. So ein LA mit 32 Kanälen ist schon was feines (aber auch teuer und ein Kabelsalat:-) -> 16 Adressleitungen, 8 Datenleitungen und dann noch 8 für die wichtigsten Steuerleitungen. Da sieht man eventuell auch wo das Programm im Fehlerfall rumeiert. Da der Fehler ja auch bei 1MHz auftritt, muss der LA ja garnicht so viele Samples/Sek. liefern um auch die zeitlichen Abstände der Signale zueinander zu sehen. Das dann einmal "kalt" und einmal "warm" nebeneinander gelegt, dann sollte auch erkennbar sein, was sich da verändert. Mit nur 2 Kanälen wird das schon schwierig, wenn man nicht genau weiß wo man suchen muss. Mit 16Ch sollte man schon einiges sehen können. Ich würde hier, bevor ich ein neues Layout mache und das auch noch fertigen lasse, erstmal suchen wo das Problem sitzt. Nicht, dass das neue genau dasselbe macht. Nur vielleicht bei ein paar °C mehr oder weniger.
15-poliges Flachkabel kann man schneiden und verlängern https://www.reichelt.com/it/de/shop/produkt/d-sub-stecker_15-pol_flachbandkabel_ohne_isolator-6995 https://www.reichelt.com/it/de/shop/produkt/d-sub_steckverbinder_15_pol_stecker-224913 https://www.reichelt.com/it/de/shop/produkt/d-sub_buchse_15-polig_fuer_idc-flachbandkabel-294015 alternativ 16-polig mit 15-pol Kabel ab 1 belegen https://www.amazon.de/POPESQ%C2%AE-2-54mm-Buchse-Verl%C3%A4ngerung-Flachbandkabel/dp/B079DSHLJT schon vorbereitet, erleichtert die Arbeit, besser ohne Metall als oben https://www.amazon.de/sourcing-map-Regenbogen-Flachbandkabel-Anschluss/dp/B07TK9TGSS
Rick schrieb: > Und jetzt - zum Vergleich - dieselben Messungen mit 16 MHz bitte! Hi Rick, anbei die Bilder von den Oszillogrammen mit 16MHz Taktfrequenz gemessen. Ich hoffe, Du kannst da was brauchbares erkennen.
Irgend W. schrieb: > Vermutung, da sind irgendwo einige Signale, die eigentlich gewisse > Abstände zueinander haben sollten, zeitlich so eng beieinander, dass > eine leicht unterschiedliche Erwärmung schon ausreicht, um wieder in den > "geht gerade so Bereich" zu kommen. Danke für Deine Meinung. Also Du denkst, dass es am Timing liegt. Evtl. zu lange Zugriffszeit oder zu lange Gatterlaufzeiten? Ja, kann natürlich sehr gut sein. Was hält ihr davon, gezielt mal das RAM und das EPROM mit Heißluft vorzuwärmen und schauen ob der Fehler nach dem Einschalten dann weg ist? Sich so herantasten ob es an einem Baustein liegt oder es vielleicht doch ein mechanisches Problem ist, wie Leiterbahnen zu knapp nebeneinander.
Was soll ich da schreiben? Ist halt ein „Card-Edge-Connector“ mit 36(2x18) Polen. Hier ein Link https://www.ebay.de/itm/404414772355 Vielleicht reicht das ja schon. Als Stecker nimmst Du einfach ein passend abgesägtes Stück einer der Platinen (sind ja sicher 5Stück gefertigt worden). Ich hätte das bunte Kabel in der Mitte geteilt und einreihige präzisionsfassungen als Stecker/Buchse zwischengelötet und zur Fehlersuche mit eine (vielleicht ebenso bunte) verlängerungsschur gebastelt. Komplett auf etwas „modernes“ würde ich, der Originalität wegen, wohl auch verzichten. Daher wäre die Idee, das Kabel zu zerschneiden auch meine zweite Wahl.
Moin Johannes, deine Diagramme bei 1 MHz sehen doch rechteckig aus, diese Überschwinger sind bei der Geschwindigkeit wohl kein Problem. Was ich nicht verstehe ist das Diagramm mit der Clk, da solltest du eine andere Auflösung wählen, nicht nur ein paar Nanosekunden. Das PHI2 Signal sollte nach 500 ns auf high gehen und dann immer toggeln. Vielleicht verstehe ich das ja vollkommen falsch, aber ich meine, dass der 6502 die Daten bei jeder fallenden Flanke von PHI2 übernimmt, macht es nicht Sinn A0/D0/... über PHI2 also Clk statt CE zu triggern, so dass man sieht, ob die Signale da stabil sind? Vielleicht schaust du dir auch mal A13, A14, A15 an, da ist ja noch etwas zusätzliche Gatterlogik. Du musst dann natürlich auch von den oberen Adressen zumindest lesen (das sollte immer möglich sein, im VIA Bereich vielleicht nochmal genau überlegen, was du tust), momentan bleibst du ja in den unteren 4K, da sind A13-A15 logischerweise Null, außer beim Lesen des program counters, da solltest du zumindest 0xA000 = 1010...b also A15 und A13 sehen. Statt Kältespray Heissluft einzusetzen ist natürlich auch ne gute Idee, so gehts auch, nur das Warten, bis alles wieder abgekühlt ist, ist nervig. Weiterhin viel Erfolg Thomas
Tom K. schrieb: > Vielleicht verstehe ich das ja vollkommen falsch, aber ich meine, dass > der 6502 die Daten bei jeder fallenden Flanke von PHI2 übernimmt Richtig. > über PHI2 also Clk statt CE zu triggern, so dass > man sieht, ob die Signale da stabil sind? Richtig. In CE steckt kein Takt drin, das ergibt sich nur aus den Adressleitungen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.