Hallo zusammen Ich hab hier ein kleines Bastelprojekt. Ich habe mir einen Nintendo NES mit einem Cyclone V FPGA auf einem Terasic GX Starter Kit gebaut. Nun war mein Plan auch die original Spielmodule ansprechen zu können. Hierzu habe ich mir auf einer Lochrasterplatine 8x SN74LVC8T245DWR aufgebaut um zwischen den 3,3V des FPGAs und den 5V des GamePaks vermitteln zu können. Dabei handelt es sich grob um 4 Busse (Adress- und Datenbus) die mit 5,3 MHz (PPU) und 1,6 MHz (CPU) betrieben werden, sowie einige weitere Signale (ein- oder ausgehend) für verschiedene Zwecke. Im Grunde funktioniert das auch schon ganz gut. Allerdings habe ich je nach Spiel unterschiedlich starke Störungen. Diese Störungen betreffen größtenteils nur die schnellere PPU-Seite und man kann grob sagen, je älter das Spielmodul (Beginn der 80er) desto weniger Störungen habe ich. Die alten ROM-Chips sind wohl weniger anfällig für das Problem. Durch Experimente habe ich herausgefunden, dass wenn ich bspw. 4 oder mehr Bits am CPU Datenbus im CPU-Takt kippen lasse, ich Lesefehler am PPU-Bus erhalte. Wenn ich Teile des Flachbandkabels mit dem ich mein Adapter-Board mit dem FPGA-Board verbinde zwischen meine Finger nehme reduzieren sich die Lesefehler. Auf dem Oszilloskop kann ich schön sehen wie das Signal mit dem Takt der "anderen Seite" Spitzen aufweist wo keine sein sollten. Meine Frage ist nun, wo habe ich meine Fehler gemacht? Sind einfach nur die 20cm Flachbandkabel mein Problem? Ich habe, nachdem ich hier im Forum einige Beiträge zu diesem Thema gefunden habe, eine Ader im Flachbandkabel Platz geschaffen und diese dann auf Masse gelegt, allerdings ohne einen echten Unterschied feststellen zu können. An anderen Stellen ist es mir gar nicht möglich Platz zu schaffen, da die meisten Adern belegt sind. Was soll ich da tun? Das Kabel direkt hinter dem 40-Pol Stecker abzwicken und die Signale einzeln mit Masse durch ein TwistedPair-Kabel führen? Ich muss zugeben, ich hab in diesem Bereich sehr wenig Ahnung. Oder liegt das Problem stattdessen in meiner Schaltung? Ich würde gerne die Fehler meiner Platine weitestgehend beseitigen bevor ich ein PCB herstelle, damit ich beide 40-Pol Steckverbindungen auf eine Seite verlegen und somit die Kabel sehr kurz halten kann. Grüße Christian
Du könntest das sehr lange Flachbandkabel deutlich kürzen, indem Du den Aufbau mit dem Stecksockel um 90° zur bisherigen Ausrichtung drehst. Auch das kürzere der beiden Flachbandkabel sollte sich so auf etwa die Hälfte der Länge reduzieren lassen. Du solltest in Deinem Aufbau die Drähte für die Versorgungsspannung verstärken, insbesondere die für den Stecksockel, und dem Stecksockel auch noch einen Abblockkondensator spendieren - idealerweise eine Kombination aus Low-ESR-Elektrolytkondensator mit 10..100 µF und dazu parallelgeschaltet den üblichen 100-nF-Kondensator, so nah wie möglich am VCC- und GND-Anschluss.
> je älter das Spielmodul (Beginn der 80er) desto weniger Störungen habe ich
80er Jahre - das war noch Technik für Hobbybastler. Auf einem 20MHz Oszi
hat man noch trapezförmige Signale gesehen. Mit ECB Backplane war
Fehlersuche einfach. Verlängerungskarte aufstecken und mit Multimeter
messen.
Die heutigen Chips dagegen funktionieren nicht mal sauber mit
DIL-Adapter und Fädeldraht verbunden.
Sei froh, dass es überhaupt mit Lochraster funktioniert!
Der Ansatz mit den beiden 40-poligen Flachbandkabeln ist nicht optimal. Idealerweise hast Du in einem Flachbandkabel abwechselnd Signal und Ground. So wird es beispielsweise bei SCSI gemacht, und beim 80-poligen UDMA-IDE-Kabel. Zwei Gründe sprechen dafür: 1. werden die Signale voneinander isoliert (kapazitives Übersprechen) und 2. muss ja der Strom durch die Signalleitungen auch wieder zurück, um einen Stromkreis zu bilden. Hin- und Rückleitung bilden eine Spule mit einer Windung, und wenn ein sich wechselndes Magnetfeld innerhalb dieser 'Spule' befindet, wird eine Störspannung induziert. Das willst Du nicht, und deswegen machst Du die Fläche zwischen Hin- und Rückleitung minimal klein, damit das nicht passiert. Ich weiß, dass die Pinbelegung durch den Terasic-Adpter vorgegeben ist, aber das hilft Dir nichts - Du musst halt einen besseren bauen, dort am Besten die Pegelwandler und den Slotstecker draufpacken und damit auf das Flachbandkabel komplett verzichten. Zweiter Punkt: Das FPGA hat sehr schnelle Ausgangstreiber mit kurzen Anstiegszeiten. Die erzeugen Strom- und Spannungsspitzen und damit Störungen beim Schalten. Nimm Dir mal in Gedanken eine Signalleitung im Flachbandkabel plus der zugehörigen Groundleitung daneben. Das stellt einen Kondensator da, der beim Schalten umgeladen werden muss. Beim Umladen fließen jeweils am Anfang hohe Ströme, die dann in einer e-Kurve abfallen. Um die Störungen zu verringern, musst Du den Umladevergang verlangsamen, und das machst Du am einfachsten mit einem Widerstand. Da nimmst Du irgendwas in der Größenordnung 10...100Ω. Der optimale Wert hängt vom konkreten Aufbau ab - am besten ausprobieren und dabei mit 100Ω oder 68Ω anfangen. Diese Methode findest Du auch unter dem Stichwort "Serienterminierung". Für Deinen Zweck gibts Widerstandsarrays als DIL16 für Lochraster (†), und nachher als kleine 0603-SMD-Teile für die fertige Adapterplatine. Vielleicht kannst Du damit auch Deinen Lochrasteraufbau retten. fchk (†) Schau mal ebay #361817899350. Das wäre so etwas mit 82Ω. Wäre einen Versuch wert.
Christian F. schrieb: > Hierzu > habe ich mir auf einer Lochrasterplatine 8x SN74LVC8T245DWR aufgebaut um > zwischen den 3,3V des FPGAs und den 5V des GamePaks vermitteln zu > können. Dabei handelt es sich grob um 4 Busse (Adress- und Datenbus) die > mit 5,3 MHz (PPU) und 1,6 MHz (CPU) betrieben werden, sowie einige > weitere Signale (ein- oder ausgehend) für verschiedene Zwecke. Im Grunde > funktioniert das auch schon ganz gut. Hallo Christian, kann es sein, dass Deine 5V und 3,3V Versorgung über Flachband kommt und dann am Cartridge Adaper nur jeweils kleine 100nF an den LVCs hängen? Hast Du Dir schon mal die 5V und 3,3V Rails angeschaut wie die bei solch einem Konstrukt aussehen? Würde vielleicht helfen, eine paar 100uF keramisch und Alu dranzuhängen? rgds
Hi zusammen Vielen Dank für die Hinweise und Tips. > Du könntest das sehr lange Flachbandkabel deutlich kürzen, indem Du den > Aufbau mit dem Stecksockel um 90° zur bisherigen Ausrichtung drehst. Hast du zufällig eine Zeichnung für mich, ich kann es mir gerade nicht vorstellen wie das gemeint ist? > Du solltest in Deinem Aufbau die Drähte für die Versorgungsspannung > verstärken, insbesondere die für den Stecksockel, > und dem Stecksockel auch noch einen Abblockkondensator spendieren - > idealerweise eine Kombination aus Low-ESR-Elektrolytkondensator mit > 10..100 µF und dazu parallelgeschaltet den üblichen 100-nF-Kondensator, > so nah wie möglich am VCC- und GND-Anschluss. Ich hätte jetzt erwartet, dass das Verstärken der Drähte für die Versorgungsspannung den Querschnitt erhöht und somit den Widerstand verringert. In wie weit habe ich durch den zu geringen Querschnitt ein Problem? Den 100 nF Kondensator hab ich verstanden, aber was genau bewirkt der 10-100 µF Elko und warum nimmt man einmal einen normalen Kondensator und einmal einen Elko? > Ich weiß, dass die Pinbelegung durch den Terasic-Adpter vorgegeben ist, > aber das hilft Dir nichts - Du musst halt einen besseren bauen, dort am > Besten die Pegelwandler und den Slotstecker draufpacken und damit auf > das Flachbandkabel komplett verzichten. Ein Board mit mit diesem Terasic-Connector, ganz ohne Flachbandkabel währe eine meiner Lieblingslösungen, aber ich glaube das übersteigt meine Fähigkeiten. > Da nimmst Du irgendwas in der Größenordnung 10...100Ω. Der optimale Wert > hängt vom konkreten Aufbau ab - am besten ausprobieren und dabei mit 100Ω > oder 68Ω anfangen. Für einen ersten Test und um bestimmen zu können was denn der geeignetste Widerstandswert ist würde ich hingehen und an einem der Busse 8 Widerstände zwischen Flachbandkabel und Stiftleiste anbringen. Dadurch müsste ich ja schon einen Unterschied feststellen können wenn ich dich richtig verstanden habe? > Vielleicht kannst Du damit auch Deinen Lochrasteraufbau retten. Da meine Erfahrung in dem Bereich nicht all zu hoch und meine Lochrasterplatine schon recht gefüllt ist: Wie könnte ich den vorgehen um den Platz auf der Platine zu erweitern um rund herum die 8 Widerstandsnetzwerke noch zusätzlich anzubringen? Kann man eigentlich irgendwo größere beidseitige Lochrasterplatinen bekommen als im Euro-Format, ich hatte nichts gefunden? > kann es sein, dass Deine 5V und 3,3V Versorgung über Flachband kommt und > dann am Cartridge Adaper nur jeweils kleine 100nF an den LVCs hängen? Ja, genau so ist es. Wenn ich an dieser Stelle ein Problem habe könnte vielleicht noch meine Beobachtung helfen, dass wenn ich die Spannungsversorgungen (3,3V und 5V) aus beiden 40-Pol-Konnektoren verwende und jeweils zur linken und rechten Seite meines Boards stecke, nehmen die Lesefehler deutlich zu. > Hast Du Dir schon mal die 5V und 3,3V Rails angeschaut wie die bei solch > einem Konstrukt aussehen? Würde vielleicht helfen, eine paar 100uF > keramisch und Alu dranzuhängen? Ähhmmm, ich kann gerade nichts mit dem Begriff "Rail" und "Alu" anfangen. Kannst du mich kurz abholen? Grüße Christian
Christian F. schrieb: > Hast du zufällig eine Zeichnung für mich, ich kann es mir gerade nicht > vorstellen wie das gemeint ist? > >> Zur Seite kippen, so daß die Steckkarte in der gleichen Ebene liegt wie Deine Platine links. Damit steht die Adapterplatine senkrecht, und an ihrer Ober- und Unterkante werden die Flachbandkabel befestigt. Dafür sollten um die 10cm Länge problemlos ausreichen.
> 80-poligen UDMA-IDE-Kabel
Hat am Stecker auch nur 40 Pole die herausgeführt sind. Das sollte
einfach anpassbar sein.
uwe schrieb: > Hat am Stecker auch nur 40 Pole die herausgeführt sind. Das sollte > einfach anpassbar sein. Aber nur wenn die GND Pins zufällig passen.
Christian F. schrieb: >> Ich weiß, dass die Pinbelegung durch den Terasic-Adpter vorgegeben ist, >> aber das hilft Dir nichts - Du musst halt einen besseren bauen, dort am >> Besten die Pegelwandler und den Slotstecker draufpacken und damit auf >> das Flachbandkabel komplett verzichten. > > Ein Board mit mit diesem Terasic-Connector, ganz ohne Flachbandkabel > währe eine meiner Lieblingslösungen, aber ich glaube das übersteigt > meine Fähigkeiten. Layout oder Fertigung? Selber ätzen ist natürlich nicht, aber das ist ja klar, oder? Den Samtec-Connector bekommst Du bei Digikey (SAM8182-ND) >> Da nimmst Du irgendwas in der Größenordnung 10...100Ω. Der optimale Wert >> hängt vom konkreten Aufbau ab - am besten ausprobieren und dabei mit 100Ω >> oder 68Ω anfangen. > > Für einen ersten Test und um bestimmen zu können was denn der > geeignetste Widerstandswert ist würde ich hingehen und an einem der > Busse 8 Widerstände zwischen Flachbandkabel und Stiftleiste anbringen. > Dadurch müsste ich ja schon einen Unterschied feststellen können wenn > ich dich richtig verstanden habe? genau. Du darfst auch einen Sack Einzelwiderstände nehmen, aber ich finde die Arrays bequemer. >> Vielleicht kannst Du damit auch Deinen Lochrasteraufbau retten. > > Da meine Erfahrung in dem Bereich nicht all zu hoch und meine > Lochrasterplatine schon recht gefüllt ist: Wie könnte ich den vorgehen > um den Platz auf der Platine zu erweitern um rund herum die 8 > Widerstandsnetzwerke noch zusätzlich anzubringen? Kann man eigentlich > irgendwo größere beidseitige Lochrasterplatinen bekommen als im > Euro-Format, ich hatte nichts gefunden? Lochrasterstreifen herstellen, die an beide Seiten passen, einige cm überlappen lassen, an beiden Enden 3mm Loch und Schraube mit Mutter. Sollte reichen. Es gibt Doppel-Euro-Karten und Karten mit 100mm Breite und 300mm Länge. Ansonsten musst Du stückeln. fchk
Hi zusammen > Layout oder Fertigung? Selber ätzen ist natürlich nicht, aber das ist ja > klar, oder? Den Samtec-Connector bekommst Du bei Digikey (SAM8182-ND) Meine Idee war es ein Layout zu machen, mir das PCB herstellen zu lassen und es dann selbst zu bestücken. Meine Löterfahrung beschränkt sich im Moment auf DIP und die LogicLevel-Converter im SOIC20-Package, der Samtec-Connector erscheint mir noch feingliedriger zu sein. Ausserdem müssten Bohrungen an exakten Stellen auf dem Board sein, damit ich die beiden Boards verschrauben kann, da der Connector selbst keine Arretierung hat. Ich bin mir unsicher ob ich so präzise arbeiten kann. > 80-poligen UDMA-IDE-Kabel > Hat am Stecker auch nur 40 Pole die herausgeführt sind. Das sollte > einfach anpassbar sein. Ja, das ist mir auch schon in den Sinn gekommen, ich muss mal prüfen ob der Masse-Anschluss, wie Jim Meba gesagt hat, an der richtigen Stelle liegt > Zur Seite kippen, so daß die Steckkarte in der gleichen Ebene liegt wie > Deine Platine links. Damit steht die Adapterplatine senkrecht, und an > ihrer Ober- und Unterkante werden die Flachbandkabel befestigt. Dafür > sollten um die 10cm Länge problemlos ausreichen. Jetzt hat es klick gemacht. Ja du hast recht, da könnte ich die Leitungen massiv einkürzen, das kann ich auch noch an der bestehenden Platine machen, muss mir nur einen Halter für das Board überlegen. Grüße Christian
An deinen Steckverbindern CON_xxxx sind noch freie Pins. Lege da mal GND drauf.
Hi zusammen @fchk Ich hab testhalber die Pins eines LogicLevel-Konverters mit 100 Ohm Serienterminierung versehen. Das Ergebnis sah schon sehr gut aus. Ich kann noch Anzeigefehler provozieren wenn ich alle 8 Signalleitungen gleichermaßen im CPU-Takt ändere, aber das schiebe ich jetzt einfach mal darauf, dass ich erst 9 von 63 Signalen terminiert hab und noch nicht die anderen Ratschläge umgesetzt hab. Vielen Dank für die Hilfe. Ich hab im Forum bzgl. Serienterminierung geschaut, aber alles was ich gefunden habe war zum Thema Reflektion, was scheinbar nicht mein Problem ist/war. Hat jemand noch ein bischen passenden Lesestoff für mich? Gruß Christian
Mal eine Zwischenfrage zur Funktion: Welches Cyclone Board ist das? Nicht das DE2, oder?
Ein Cyclone V GX Starter Kit von Terasic mit GPIO Daughter-Board um mehr IOs für die Adapter-Platine zu haben.
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.