Hallo,
ich nutze einen xc9572xl auf einem BitConnector[1] und beobachte bei
folgender Zählerschaltung
1
libraryIEEE;
2
useIEEE.STD_LOGIC_1164.ALL;
3
useIEEE.NUMERIC_STD.ALL;
4
5
entityvhdl_zaehleris
6
Port(
7
clock:inSTD_LOGIC;
8
Sec:outSTD_LOGIC_VECTOR(3downto0)
9
);
10
endvhdl_zaehler;
11
12
architectureBehavioralofvhdl_zaehleris
13
signalx:unsigned(3downto0):=(others=>'0');
14
begin
15
16
processbegin
17
18
waituntilrising_edge(clock);
19
if(x>"1000")then
20
x<=(others=>'0');
21
else
22
x<=x+1;
23
endif;
24
endprocess;
25
Sec<=std_logic_vector(x);
26
27
endBehavioral;
synthetisiert auf der Hardware folgendes Zählverhalten:
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1001 <- !!!
9
0001 <- !!!
Sobald ich ein Oszi an die Taktleitung zum Messen der Steilheit der
Fanke anlegen (CPLD + LED bei 3.3V), wird es noch verrückter:
1
0001
2
0010
3
0011
4
0101 <- !!!
5
0110
6
0111
7
1001 <- !!!
8
0001 <- !!!
Dabei sehen die Fanken des Rechteckgenerators bei 20ms unendlich steil
aus (läuft mit 1Hz).
Wenn ich im .ucf File aber
NET "clock" LOC="1";
durch bzw
NET "clock" LOC="23";
ersetze, funktioniert alles bestens. Sobald ich wieder das Oszi anlege,
verschluckt er sich aber beim zählen von 7 auf 9
Hat jemand eine Idee woran das liegen könnte ?
Beste Grüße,
Michael
[1] https://github.com/1ux/BitConnector
Michael schrieb:> Hat jemand eine Idee woran das liegen könnte ?
Am elektrisch-physikalischen Aufbau, den wir allerdings nicht
kennen.
Wer misst, misst Mist.
Das gilt auch für den Aufbau allgemein, sowie für die
Einspeisung von Signalen.
Vielleicht ist auch das Board mit dem xc9572xl bereits
unzureichend aufgebaut bzw entkoppelt.
Michael schrieb:> Nun wenn vielleicht der Schaltplan etwas Klarheit bringen könnte
Leider nur sehr wenig.
Keine Spannungsversorgung, keine Info wo ein Clock eingespeist
wird, wie ein Clock eingespeist wird etc.
Hier nur einer von vielen Verdächtigen:
Michael schrieb:> Fanken des Rechteckgenerators bei 20ms unendlich steil
Wenn du wirklich Hilfe haben möchtest dann müsstest du viel
mehr offenlegen. Links auf irgendwelche vorgefertigte Dinge
helfen da nicht weiter.
> Das gilt auch für den Aufbau allgemein, sowie für die> Einspeisung von Signalen.
OK, du scheinst wirklich auf der richtigen Spur zu sein.
Ich habe einmal den günstigen China Rechteckgenerator XY-PWM durch ein
Laborgerät ersetzt und das Problem auf dem Pin LOC="1" ist auch hier
verschwunden.
Sobald ich aber ein Oszi dranhänge (1MOhm Vorwiederstand), habe ich
wieder Sprünge im Zähler. Da scheinen wohl irgendwelche Kapazitäten eine
Rolle zu spielen ?
> Wenn du wirklich Hilfe haben möchtest dann müsstest du viel> mehr offenlegen. Links auf irgendwelche vorgefertigte Dinge> helfen da nicht weiter.
Ja sehr gerne. Als Spannungsversorgung ist ein Labornetzteil mit
Strombegrenzer im Einsatz (3V3). CPLD + LEDs ziehen rund 50mA und der
Begrenzer liegt bei 400mA
Clock wird jetzt über einen FG-506 eingespeist. (Tastknopf + 2 kurze
Kabel an den Spitzen )
Frequenz liegt bei 1 bis 2 Herz, DC-Offset auf Messebezug
(Rechteckspannung)
Was genau möchtest du denn wissen ?
Michael schrieb:> Ja sehr gerne.
Schaltpläne und Aufbauten in Prosa sind scheisse.
Das wurde hier auf uC.net schon oft genug gesagt.
Michael schrieb:> Tastknopf + 2 kurze Kabel an den Spitzen )
Was ist ein Tastknopf?
Wenn du einen Tastkopf meinst, also das was man an einem
Oszilloskop anschliesst, das ist das ungeeignet einen
Clock irgendwo einzuspeisen.
> Schaltpläne und Aufbauten in Prosa sind scheisse.
Gut der Schaltplan [1] ist ja nun nicht in Prosa.
Da der restliche Aufbau so überschaubar ist (4 LEDs mit 120 Ohm
Vorwiederstand am Port 44,43,42,41 des CPLSs [2] bzw.
IO33,IO32,IO31,IO30 des BitConnectors) möchte ich mir den Aufwand
sparen.
An dieser Stelle opfere ich gerne die Philosophie des Herzens, der Prosa
der Verhältnisse.
Fehlt noch der Takt, der am Pin 1 des CPLDs hängt.
Das ganze alles in 3V3
> Was ist ein Tastknopf?> Wenn du einen Tastkopf meinst,
Ich sehe, du verstehst mich ja doch :), oder wolltest du mich nur
verbessern ?
>...Tastkopf ... ungeeignet einen Clock irgendwo einzuspeisen
Warum ?
[1] https://github.com/1ux/BitConnector/blob/master/schematic_v4X.pdf
[2] https://www.xilinx.com/support/documentation/data_sheets/ds057.pdf
Michael schrieb:> Vorwiederstand
Ohne Worte.
Michael schrieb:> An dieser Stelle opfere ich gerne die Philosophie des Herzens, der Prosa> der Verhältnisse.
Beratungsresistenz ist eine Zier, doch weiter kommt man ohne ihr.
Bin dann mal weg bzw. 'raus.
Michael schrieb:> NET "clock" LOC="1";> durch bzw> NET "clock" LOC="23";
Diese beiden Pins sind an deinem CPLD schon dedizierte Takteingänge,
oder? Sonst liegt da das Problem.
Michael schrieb:> Dabei sehen die Fanken des Rechteckgenerators bei 20ms unendlich steil> aus (läuft mit 1Hz).
Hast du dabei auch das Oszi auf 20ms eingestellt? Dann sieht fast alles
unendlich steil aus. Auf der ns-Skala (auf der der CPLD reagiert) wird
es interessanter.
Eine mögliche Erklärung: du hast am Takt-Eingang durch deine Einspeisung
(Leitungslänge, nicht abgeschlossene Leitung....) einen Wackler auf der
Taktflanke. Ein Teil der Macrozellen taktet dabei doppelt, ein anderer
Teil nicht. Dadurch entstehen "verbotene" Zählergebnisse.
Eine andere Möglichkeit: die Taktflanke ist am CPLD-Pin so schlapp, dass
du zu lange im Umschaltbereich bist und es durch den Strompuls beim
Umschalten der Makrozellen zu einer Doppeltaktung in einem Teil der
Zählerbits kommt. (Unzureichende Versorungs-Kondensatoren würden das
wahrscheinlicher machen).
Im ersten Fall sollte ein "Bremsen" der Taktflanke helfen, im zweiten
Fall wäre es kontraproduktiv. In jedem Fall sollte eine hoch aufgelöste
Messung der Taktflanke mehr Klarheit bringen, ob diese Erklärungsansätze
zutreffen können.
Michael schrieb:> Frequenz liegt bei 1 bis 2 Herz, DC-Offset auf Messebezug> (Rechteckspannung)
Also, dein Stromlaufplan sieht erstmal recht unverdächtig aus. Was du
hingegen mit deinem DC-Offset meinst, kann ich dort nicht herauslesen.
Ich würde allerdings so eine Schaltung auf dem Board versorgen, d.h. ein
einziger Versorgungsanschluß und auf dem Board dann die nötigen
Regler-IC's. Kosten ja nicht die Welt und man hat bei sauberem GND dann
auch saubere Spannungen am CPLD.
Was mir fehlt, ist der Teil, wo die Musike spielt: also was ist dein
Takteingang (und was ist da konkret verbaut)? und was sind deine
Ausgänge für's Zählergebnis? Und was ist dort verbaut?
Bedenke mal, daß man mit einem CPLD einen recht sauschnellen Chip in der
Hand hat. Die XC95 kommen m.W. locker auf 200 MHz und bei den
Coolrunnern kommt man bis auf mehr als 600 MHz, da ist das Layout und
auch die E/A-Beschaltung mit etwas Vorsicht zu gestalten.
Wenn man das nicht bedenkt, dann kann man sich einfach schon durch
Fehlanpassung ein Echo auf der Zuleitung des Signals erzeugen, das dann
zu doppelt gezählten Flanken führt.
Nochwas: Wenn du in solchen Schaltungen herum oszillografierst, dann
setze in Reihe mit deiner Tastspitzen einen simplen kleinen Widrstand,
so 47..100 Ohm. Das entkoppelt die Kapazität der Tastspitzen ganz
passabel von der Schaltung.
Und nochwas: Bei VHDL weiß unsereiner nie so recht, was tatsächlich
dabei heraus kommt (ich mach sowas ja nicht hauptberuflich). Also
versuche mal, deine Logik einfach mit dem der ISE/Webpack beiliegenden
Schematics zu machen. Xilinx liefert ja passende Zähler dort mit. Ja,
das Schematics der ISE ist ein Graus, aber dennoch: wenn damit plötzlich
dein Zähler tut, was er soll, dann müßtest du in deinem Quellcode nach
dem Fehler suchen.
W.S.
Vielen Dank Achim & W.S. ich werde darüber nachdenken.
Da dies nicht mein Beruf ist, muss ich die Sache bis nächstes WE
aufschieben. Es besteht hier allerdings eine intrinsische Motivation.
Ich habe den BitConnector entworfen und gebaut. Dass ich jetzt an einem
Zähler scheiter, frustriert mich ein wenig.
Was ich dazu schon sagen kann:
1
@Achim
> Diese beiden Pins sind an deinem CPLD schon dedizierte Takteingänge,> oder? Sonst liegt da das Problem.
Nun LOC="1" hat die interne Zusatzfunktion globalCLOCK,
LOC="23" ist hingegen ein einfacher general purpose input/output
Ist es das, was du mit dediziert meinst ?
> Hast du dabei auch das Oszi auf 20ms eingestellt? Dann sieht fast alles> unendlich steil aus. Auf der ns-Skala (auf der der CPLD reagiert) wird> es interessanter.
Ja,also 20ms/Teilung, und ja das stimmt wohl bei der Auflösung.
OK ich sehe mir mal 50 ns an, mehr schafft die alte Dame „Fluke3335“
nicht.
> du hast am Takt-Eingang durch deine Einspeisung> (Leitungslänge, nicht abgeschlossene Leitung....) einen Wackler
Ich werde mal einen Taster mit Hardwareentprellung (RC +
Schmitt-Trigger) dranhängen und schauen, ob er da richtig zählt.
> die Taktflanke ist am CPLD-Pin so schlapp, dass> du zu lange im Umschaltbereich bist ...
Ja, auch da sollte der RC + Schmitt-Trigger-Ansatz für Klarheit sorgen.
> In jedem Fall sollte eine hoch aufgelöste> Messung der Taktflanke mehr Klarheit bringen, ob diese Erklärungsansätze> zutreffen können.
Ja, Bis nächstes WE in Arbeit
1
@W.S.
> Was du hingegen mit deinem DC-Offset meinst, kann ich dort nicht> herauslesen.
Ja, damit wollte ich sagen, dass das Rechtecksignal keine negative
Flanke hat. Es schaltet zwischen 0V und 3V3.
> Ich würde allerdings so eine Schaltung auf dem Board versorgen, ... man> hat bei sauberem GND dann auch saubere Spannungen am CPLD.
Die Platine ist so gedacht, dass Sie auf ein größeres Board
„aufgesockelt“ werden kann, was dann genau diese Eigenschaften haben
sollte.
Aktuell wird es mit einem stabilisierten Labornetzteil betrieben.
> Was mir fehlt, ist der Teil, wo die Musike spielt: also was ist dein> Takteingang (und was ist da konkret verbaut)? und was sind deine> Ausgänge für's Zählergebnis? Und was ist dort verbaut?
Ich komm wohl doch nicht um einen Schaltplan herum :(
Der Takt geht direkt auf einen CPLD Pin (Pin 1)
> ...Ausgänge für's Zählergebnis?
4 LEDs + 120 Ohm Vorwiderstand (hängen auch am CPLD)
Mehr gibt es nicht.
> Die XC95 kommen m.W. locker auf 200 MHz und bei den> Coolrunnern kommt man bis auf mehr als 600 MHz, da ist das Layout und> auch die E/A-Beschaltung mit etwas Vorsicht zu gestalten.
Ja, ich habe schon so etwas gelesen. Ich dachte nur bei meinem 1Hz
Taktsignal muß ich mir diesbezüglich wenig sorgen machen ?
> Nochwas: Wenn du in solchen Schaltungen herum oszillografierst, dann> setze in Reihe mit deiner Tastspitzen einen simplen kleinen Widrstand,> so 47..100 Ohm. Das entkoppelt die Kapazität der Tastspitzen ganz> passabel von der Schaltung.
Danke !
> Und nochwas: Bei VHDL weiß unsereiner nie so recht, was tatsächlich> dabei heraus kommt (ich mach sowas ja nicht hauptberuflich). Also> versuche mal, deine Logik einfach mit dem der ISE/Webpack beiliegenden> Schematics zu machen....Arrg, davon wollte ich doch eigentlich weg kommen ;)
Und Lothar hat mir da einigermaßen Mut gemacht, dass VHDL vielleicht
doch kein Hexenwerk ist.
Liebe Grüße,
Michael
Michael K. schrieb:> Nun LOC="1" hat die interne Zusatzfunktion globalCLOCK,
dann kannst du ihn als Takteingang verwenden.
Michael K. schrieb:> LOC="23" ist hingegen ein einfacher general purpose input/output
dann kannst du ihn nicht vernünftig als Takteingang verwenden. Wirft dir
deine Entwicklungssoftware keine Warnungen aus, wenn du den Takt darüber
einspeist?
Michael K. schrieb:> Arrg, davon wollte ich doch eigentlich weg kommen ;)> Und Lothar hat mir da einigermaßen Mut gemacht, dass VHDL vielleicht> doch kein Hexenwerk ist.
Ist es auch nicht. Deine Logikbeschreibung ist sauber, das Problem kommt
nicht von der Seite. Ein Problem auf der Codeseite gibt es höchstens im
ucf, wenn du dort einen ungeeigneten Pin zum Einspeisen des Takts
angibst.
Michael K. schrieb:> Ja, damit wollte ich sagen, dass das Rechtecksignal keine negative> Flanke hat. Es schaltet zwischen 0V und 3V3.
??? Du willst wohl sagen, dass es keine negativen Spannungswerte
annimmt. Natürlich hat ein Rechtecksignal genau so viele negative
Flanken wie positive Flanken.
Michael K. schrieb:> OK ich sehe mir mal 50 ns an, mehr schafft die alte Dame „Fluke3335“> nicht.
Wenn dein Messobjekt (CPLD) um ein Vielfaches schneller ist als dein
Messgerät (60 MHz Oszi), dann kannst einige Fehlerursachen damit nicht
rausmessen (z.B. einen CLK-Reversal in der Mitte der Flanke, der für das
CPLD schon zur Doppeltaktung führt).
Michael schrieb:> Clock wird jetzt über einen FG-506 eingespeist. (Tastknopf + 2 kurze> Kabel an den Spitzen )https://www.ersinelektronik.com/class/INNOVAEditor/assets/Funktionsgenerator-FG-506.pdf
Deine Beschreibung der Takteinspeisung klingt für mich im Augenblick als
Hauptkandidat für die Fehlerquelle.
Ansonsten:
Ich hab mir grade auf github den Schaltplan deines CPLD-Boards
angeschaut. Hast du sowohl +3,3V als auf VCC sauber versorgt?
Das Board hat grade mal einen GND-Pin. Wenn mehre Ausgänge des CPLDs
gleichzeit schalten kann bei so einer sparsamen GND-Anbindung das
Problem auftreten, dass sich die GND-Potentiale zwischen dem CPLD-Board
und deinem Basisboard verschieben. Wenn die Verschiebung so weit geht,
dass die Schaltschwelle von Eingängen angekratzt wird, lässt sich damit
keine saubere Taktung realisieren (außer der Takt käme nicht vom
Basisboard sondern würde auf dem CPLD-Board selbst erzeugt).
Aber fang erst mal an, die bestehende Takteinspeisung zu verbessern - so
wie du es dir vorgenommen hast. Vielleicht läuft es dann ja schon wie
gewünscht.
W.S. schrieb:> Und nochwas: Bei VHDL weiß unsereiner nie so recht, was tatsächlich> dabei heraus kommt
Das kann man sich ganz problemlos im RTL-Schaltplan ansehen. Und für den
Zähler oben ist ganz klar, was dabei herauskommt. Wenn dieser Zähler
falsch zählt, dann ist irgendwas Grundlegendes faul. Dieses
Hardwareproblem wird dieser Zähler auch bei einer direkten
Schaltplaneingabe haben. Wie sieht denn die Hardware samt
Entkopplungskondensatoren aus?
Michael schrieb:> Sobald ich ein Oszi an die Taktleitung zum Messen der Steilheit der> Fanke anlegen (CPLD + LED bei 3.3V), wird es noch verrückter:
Da hast du wohl Klingeln auf der Leitung. Immerhin kann dein CPLD mit
Frequenzen im halben GHz-Bereich schon was anfangen.
Und mit solchem "Klingeln" lässt sich dann das wirre Verhalten des
Zählers auch recht einfach erklären: weil so ein Überschwinger ggfs.
eben nicht alle 4 Flipflops des Zählers zum Speichern bringt, wird ein
beliebiger oder auch ungültiger Zustand angesprungen.
Achim S. schrieb:> Ein Problem auf der Codeseite gibt es höchstens im ucf, wenn du dort> einen ungeeigneten Pin zum Einspeisen des Takts angibst.
Das teilt der Synthesizer dann aber auch mit.
Michael schrieb:> [1] https://github.com/1ux/BitConnector
Hilft leider nicht viel, wenn man nur das aus dem Screenshot zu sehen
bekommt. Häng das Layout und den Schaltplan doch mal hier an.
Michael schrieb:> Clock wird jetzt über einen FG-506 eingespeist. (Tastknopf + 2 kurze> Kabel an den Spitzen )
Wird in deinem Aufbau immer noch der Clock mit Hilfe von einem
Oszilloskoptastkopf eingespeist? Am besten noch einer der mit 10:1
Vorteiler?
Dann wird das nichts, einen CPLD Eingang mit irgendwas 10 bis 100 kOHm
Eingangswiederstand zuverlässig zu treiben. Dein Tastkopf hat einen 10
MOhm Widerstand in Serie (wenn 10:1).
Hallo,
ich muss mir und euch leider zugestehen, dass ich momentan nicht Herr
meiner eigenen Zeit bin. Ich bitte um Entschuldigung für diese
Verzögerung.
1
@Achim S.
> dann kannst du ihn nicht vernünftig als Takteingang verwenden. Wirft dir> deine Entwicklungssoftware keine Warnungen aus, wenn du den Takt darüber> einspeist?
Nein, 1. bemerke ich keinen Unterschied und 2. gibt es keine derartige
Warnung. Aber ich nutze nun ausschließlich „globalCLOCK“, wie du es dir
wünscht.
> ... Deine Logikbeschreibung ist sauber, das Problem kommt nicht von der> Seite. ...
Ich danke dir für die Klarstellung.
> Ist es auch nicht. Deine Logikbeschreibung ist sauber, das Problem kommt> nicht von der Seite. Ein Problem auf der Codeseite gibt es höchstens im> ucf, wenn du dort einen ungeeigneten Pin zum Einspeisen des Takts> angibst.
Die ucf-Datei ist nicht das Problem. Auch mit einem „geeigneten“ Pin
habe ich die selben Resultate.
> Wenn dein Messobjekt (CPLD) um ein Vielfaches schneller ist als dein> Messgerät (60 MHz Oszi), dann kannst einige Fehlerursachen damit nicht> rausmessen (z.B. einen CLK-Reversal in der Mitte der Flanke, der für das> CPLD schon zur Doppeltaktung führt).
Das klingt für mich schon plausibel. Aber ich frage mich, ob dies bei
solche niedrigen Frequenzen zum Tragen kommt? (Tastendruck)
> Aber fang erst mal an, die bestehende Takteinspeisung zu verbessern - so> wie du es dir vorgenommen hast. Vielleicht läuft es dann ja schon wie> gewünscht.
Wie besprochen habe ich den Takt über einen Taster mit Tiefpass und
Schmitt-Trigger angeschlossen. Resultat: läuft, aber sobald ich das Oszi
dran hänge (habe es mit zwei verschiedenen Geräten getestet )
überspringt der Zähler wieder einige Ziffern.
siehe anbei das Oszillogramm zum Tastendruck (bit_flanke.png)
1
Lothar M.
> ...Und für den Zähler oben ist ganz klar, was dabei herauskommt....
Ich danke dir für die Klarstellung.
> Wie sieht denn die Hardware samt Entkopplungskondensatoren aus?
Guter Punkt! Ich habe gerade nochmal in der Xilinx-Spezifikation „A
Quick JTAG ISP Checklist- XAPP104 (3.0.1) December 20, 2007“
nachgelesen:
„For CPLDs and PROMs, provide both 0.1 μF and 0.01 μF capacitors at
every VCC point of the chip, attached directly to the nearest ground.“
Den 0.01 μF Kondensator habe ich nicht vorgesehen, nur den 0.1 μF. Soll
mir das jetzt wirklich auf die Füße fallen ?
> Hilft leider nicht viel, wenn man nur das aus dem Screenshot zu sehen> bekommt. Häng das Layout und den Schaltplan doch mal hier an.
Lieber Lothar, ich habe es dir angehangen.
1
Christoph Z.
> Wird in deinem Aufbau immer noch der Clock mit Hilfe von einem> Oszilloskoptastkopf eingespeist? Am besten noch einer der mit 10:1> Vorteiler?
Ich habe wirklich vieles versucht (aktuell mit Taster +
Hardwareentprellung), unter anderem auch einen 1:1 Tastkopf.
Auf die Idee einen 1:10 Tastkopf zu verwenden, bin ich noch nicht
gekommen ;) .
Liebe Grüße,
Michael
Fast track to /dev/null schrieb:> das Netz PWR_FLG
Das POWER_FLAG ist vermutlich ein Bauteil... ;-)
Michael K. schrieb:> Aber ich frage mich, ob dies bei solche niedrigen Frequenzen zum Tragen> kommt? (Tastendruck)
Es ist keine Frage der Frequenz sondern der Flankensteilheit und
das, was in dieser Flanke versteckt ist. Deine Messung ist da um
mindestens 3 Zehnerpotenzen zu langsam. Wie gesagt: das, was das CPLD
interessiert, spielt sich im ns-Bereich ab.
Blöderweise ist genau diese minimale Flankensteilheit bei den XC9500
nirgends spzifiziert. Es wird lediglich gefordert, dass die Flanke
"monoton" sein müsse. Und wie steil die Flanke dann sein muss, das wird
hier ziemlich flapsig abgehandelt:
https://forums.xilinx.com/t5/CPLDs-Archived/XC9500-Clock-requirements/td-p/207765
Fazit: mach die Flanke so steil wie nur möglich!
> Den 0.01 μF Kondensator habe ich nicht vorgesehen, nur den 0.1 μF.> Soll mir das jetzt wirklich auf die Füße fallen ?
Muss nicht, kann aber, kommt ja eben auf das Layout an. Und wie du darin
das "directly to nearest" umgesetzt hast.
Die "Conclusions" der XAPP784 fassen das recht griffig zusammen: wenn
man alle Regeln einhält, dann geht das:
https://www.xilinx.com/support/documentation/application_notes/xapp784.pdfMichael K. schrieb:> sobald ich das Oszi dran hänge überspringt der Zähler wieder
Überspringt der Zähler auch schon, wenn du nur die Messleitung ganz ohne
Oszi anhängst?
Und wo wir grade beim Thema 1:1 und 10:1 sind: was für einen Tastkopf
hast du da zur Messung verwendet?
Denn wenn so eine Messleitung solche Einflüsse zeigt, dann deutet das
auf Reflexionen an der Flanke aufgrund nicht angepasster Impedanz hin.
Hallo Lothar,
abermals möchte ich um Entschuldigung für meine späte Antwort bitten.
Leider hat mein momentaner Job so nichts mit dem hier gemeinsam.
> Es ist keine Frage der Frequenz sondern der Flankensteilheit ...
Ich glaube ich verstehe, was du sagen möchtest.
Ich habe mir mal die Flanken bei einem diskret aufgebauten CMOS Inverter
angesehen.
Normalerweise schalten diese ja leistungslos, aber beim Umschalten gibt
es einen kurzen Augenblick, an dem beide leiten. Wenn man nun eine
Spannung an diesen Inverter anlegt, die irgendwo zwischen Leiten und
Sperren ist, so kann es passieren, dass beide MOS-Fets "aufmachen". Wenn
ich dann etwas mit dem Spannungspegel spiele, dann ist undefiniert, wann
welcher Transistor wieder sperrt oder leitet.
Geht das in die Richtung, die du meinst ?
> Und wie steil die Flanke dann sein muss, das wird> hier ziemlich flapsig abgehandelt
Du hast dir wirklich die Mühe gemacht, um für mich nachzusehen? Ich
möchte mich herzlich bei dir bedanken.
> Muss nicht, kann aber, kommt ja eben auf das Layout an. Und wie du darin> das "directly to nearest" umgesetzt hast.
Ach ja, das Layout. Ich habe es mal angehangen. Vielleicht fällt
jemanden etwas auf. Die Entkopplungskondensatoren sind C3 auf der
Vorderseite und C1 und C2 auf der Rückseite.
> Die "Conclusions" der XAPP784 fassen das recht griffig zusammen: ...
Ja, „Bulletproof CPLD Design Practices“ das ist genau nach meinem
Geschmack. Vielen Dank !
> Überspringt der Zähler auch schon, wenn du nur die Messleitung ganz ohne> Oszi anhängst?
Ja, sobald ich die Masseleitung des Tastkopfes mit an GND hänge, beginnt
der Ärger. Der Zähler verschluckt sich noch mehr, wenn dann auch noch
ein Oszi daran hängt.
> was für einen Tastkopf hast du da zur Messung verwendet?
Es ist ein PVP2150 von Rigol.
P.S. Das mit dem PWR_FLG war ein Notbehelf, um eine Fehlermeldung von
KiCat aufzulösen. Ich weiß aber nicht mehr um was es ging, nur dass ich
sie nicht verstanden habe. Es ist aber kein Kurzschluss.
Ich vermute, dass die fehlende Terminierung des Rechtecksignals (wie
u.A. W.S. schon schrieb) Reflexionen verursacht, so dass die Flanken
teilweise doppelt gezählt werden. Schaue mal wie dein Taktgenerator
terminiert werden muss und baue eine entsprechende Terminierung ein
(eventuell 50-Ohm-Widerstand gegen Ground).
Bei der nächsten Version des Boards würde ich dir vorschlagen gerade die
Versorgung nochmal etwas 'stabiler' zu Routen, d.h. breitere
Leiterbahnen (oder sogar Flächen), Ground nicht durch einen Ground-Pin
durchzurouten usw.
Michael K. schrieb:> Wenn> ich dann etwas mit dem Spannungspegel spiele, dann ist undefiniert, wann> welcher Transistor wieder sperrt oder leitet.> Geht das in die Richtung, die du meinst ?
Das ist eine Möglichkeit (wenn die Flanken "zu langsam" sind und
deswegen zu mehrfachem Umschalten führen).
Daneben gibt es nocht die Möglichkeit, dass die Flanken zu schnell sind
und deswegen im Umschaltmoment aufgrund von Relektionen unsauber werden
(das ist die Variante, bei der eine Terminierung helfen würde).
Michael K. schrieb:> Ja, sobald ich die Masseleitung des Tastkopfes mit an GND hänge, beginnt> der Ärger.
Das ist schon mal ganz, ganz schlecht. Es spricht dafür, dass dein
Massebezug der verschiedenen Schaltungsteile zueinander nicht so ist,
wie er sein sollte.
Michael K. schrieb:> Ach ja, das Layout. Ich habe es mal angehangen. Vielleicht fällt> jemanden etwas auf. Die Entkopplungskondensatoren sind C3 auf der> Vorderseite und C1 und C2 auf der Rückseite.
Die Gute Nachricht vorweg: der Kondensator füf VCC_IO ist gut platziert
(C3). Ich habe im Anhang mal beide Ebenen übereinander geblendet und in
Gelb eingezeichnet, welchen Weg der Strom vom jeweiligen
Stützkondensator zu den zugehörigen Anschlussbeinchen des ICs nehmen
muss. C3 (unten) liegt direkt neben den zugehörigen Anschlussbeinchen
und ist direkt angebunden. So soll es sein (nur dass die
Versorgungsleitungen noch deutlich dicker sein sollten als in dieser
Schaltung).
C1 (links) und C2 (rechts) dienen zum Stützen von VCC_INT - also der
Spannung, mit der die Logik betrieben wird. C1 liegt zwar eigentlich auf
der Rückseite direkt neben den beiden Anschlussbeinchen platziert. Aber
es fehlt eine Durchkontaktierung für GND. Deswegen muss der GND-Strom
von C1 erst zu der DuKo neben C2 fließen und dann wieder zurück -
dadurch wird die Wirksamkeit von C1 deutlich verschlechtert.
C2 hat ebenfalls keine kurze Anbindung ans IC (wobei das beim VCC-Pin
rechts auch nicht einfach möglich wäre, weil dort kein GND-Pin daneben
liegt). Auch C2 wird durch die langen, dünnen Leiterbahnen kaum als
Stützkondensator wirksam.
Tatsächlich ist das Layout so gebaut, dass der gesamte GND-Strom von
VCC_int durch die eine, kleine DurchKontaktierung neben C2 fließen muss
(wo sich die von Hand eingezeichneten gelben Linien kreuzen). Das ist
ein No-Go - die GND-Anbindung deines CPLDs auf der Platine ist leider
miserabel.
(Aber das Logo mit der Diana im Handstand ist künstlerisch ansprechend.
Ich hab bei meinen Layouts aus Studie-Zeiten an solchen Stellen
höchstens mal Strichmännchen oder so gemalt, die deutlich
unprofessioneller aussehen ;-)
Michael K. schrieb:> Ach ja, das Layout. Ich habe es mal angehangen. Vielleicht fällt> jemanden etwas auf.
Mir stechen die unheimlich ultraschmalen Leiterbahnen der gesamten
Versorgung ins Auge. Aber auch die sonstigen Leiterbahnen sind unnötig
schmal. Zudem sieht das gesamte Layout irgendwie etwas "unbeholfen" oder
nach Autorouter aus.
Achim S. schrieb:> die GND-Anbindung deines CPLDs auf der Platine ist leider miserabel.
Und die GND-Anbindung ist nur die eine Hälfte der Versorgung. Die
Vcc-Anbindung sieht nicht wesentlich besser aus. Und HF-mäßig sollte Vcc
das selbe Potential wie GND sein.
Kurzversion: diese Platine wird nie zuverlässig laufen, denn irgendein
Design wird garantiert für zu viel Ground-Bouncing durch zu viele SSO
(Simultan schaltende Outputs) sorgen (z.B.
https://www.xilinx.com/support/answers/20417.html).
Du kannst niemals sicher sein, ob du einen Fehler in deinem neuen
HDL-Design hast, oder ob wieder mal das schlechte Layout der
Leiterplatte urige Effekte macht.
BTW: wenn du auch die restlichen Bauteile wie den Schalter und den
JTAG-Pinheader usw. in SMD ausführst, dann gehen diese Bauteile nur auf
einer Lage "im Weg um". Die andere Kupferlage hast du frei zur
Verfügung.
Wow, ich danke euch Dreien, das klingt sehr plausibel. Das ist zwar eine
ganz schöne Klatsche, aber so kann ich daraus lernen.
Ich werde mich der Sache annehmen und wieder kommen wenn ich fertig bin.
Herzlich Dank noch einmal für eure Kritikpunkte.
Michael
Michael K. schrieb:> Das ist zwar eine ganz schöne Klatsche
Blumen waren grade alle... ;-)
> Ich werde mich der Sache annehmen und wieder kommen wenn ich fertig bin.
Viel Erfolg, lass uns das Layout mal sehen, vor du die Platine in
Auftrag gibst. Und beim Layouten immer wieder mal nur eine einzige
Kupferlage (ohne Bestückungsdruck o.ä.) einschalten. Denn nur so siehst
du, wo auf der Platine tatsächlich noch Platz ist und ob sich irgendwo
Leiterbahnen unnötig in einer Ecke drängeln.
> Ich werde mich der Sache annehmen und wieder kommen wenn ich fertig bin.
So da bin ich wieder, langsam aber unnachgiebig.
Wesentliche Änderungen:
- Verbesserte Vcc und GND Anbindung
- Auch die Breite der Signalleitungen habe ich größtenteils erweitert.
- Entkopplungskondensatoren eng angebunden
- Zusätzlich 3 Entkopplungskondensatoren a 10nF hinzugefügt
Hier das Layout fürs kritische Betrachten vor dem Auftrag.
Für mehr Details: git clone https://github.com/1ux/BitConnector.git
Bitte steckt eure Knüppel weg. ;)
Michael K. schrieb:> - Verbesserte Vcc
Das mit den Namen VCCIO und VCC und den Pins und den Labels solltest du
aber nicht so beliebig sortieren.
Und die Leiterbahnen für Vcc dürfen ruhig so breit wie möglich sein.
> und GND Anbindung
Ich würde mich im Leben nicht drauf verlassen, dass ein Bauteil wie ein
Taster eine sinnvolle Massebrücke darstellt. Mit ein wenig Umsortieren
lässt sich da Klarheit schaffen.
Mach zusätzliche Leitungen und vor allem Vias auf die Leiterplatte. Die
"Masse" rechts unten hat zur Zeit wenig mit der Masse gleich darüber zu
tun. Eine (möglichst breite) Leiterbahn und ein paar Vias helfen da.
Du musst auch die Thermals nicht so ausgeprägt machen (ich würde gar
keine verwenden und die Pads ins flächige Kupfer legen).
> - Auch die Breite der Signalleitungen habe ich größtenteils erweitert.
Ich sehe da noch Platz für mehr...
> - Entkopplungskondensatoren eng angebunden
Es geht noch enger bzw. niederimpedanter...
> - Zusätzlich 3 Entkopplungskondensatoren a 10nF hinzugefügt
Hmpf, nunja, bei den Blockkondensatoren kommt es zuallererst auf die
kürzestzmögliche Anbindung an die Pins an. Nicht umsonst ordnen die
IC-Hersteller die Vcc/GND-Pins gerne paarweise an. Und genau dort
dazwischen und direkt an die Pins gehört dann z.B. idealerweise ein 10nF
Kondensator in 0402 oder 0201.
In der Bauform gleich große Blockkondensatoren haben unabhängig von der
Kapazität eine ähnliche Filterwirkung. Deutlicher wird der Unterschied
bei der Filterfrequenz mit unterschiedlicher Baugröße.
Ein 10nF/0603 parallel zu einem 100nF/0603 bringt nicht viel Neues.
Ein 100nF/0402 parallel zu einem 100nF/0603 packt höhere Frequenzen
besser.
https://www.techsystemsembedded.com/bypass_caps.phphttps://electronics.stackexchange.com/questions/298798/capacitor-placement
Ok, da waren schon wieder ein paar unschöne Layoutfehler drin, danke
Lothar.
> Das mit den Namen VCCIO und VCC und den Pins und den Labels solltest du> aber nicht so beliebig sortieren.
Ich verstehe an dieser Stelle nicht, was du mir sagen möchtest.
> Und die Leiterbahnen für Vcc dürfen ruhig so breit wie möglich sein.
Jap, ich habe sie nochmal nachgezogen. Aber beim VQ44 Package und dessen
Pads ist bei ungefähr 15 mils Schluss. (ein wenig mehr geht noch)
> ... Taster eine sinnvolle Massebrücke darstellt. Mit ein wenig Umsortieren> lässt sich da Klarheit schaffen.> ... Mach zusätzliche Leitungen und vor allem Vias auf die Leiterplatte.
Ok, ich habe es versucht, diese Sachen nach deiner Zeichnung umzusetzen.
> ... die Pads ins flächige Kupfer legen> ... Blockkondensatoren,... 0402 oder 0201
Ich möchte kein Waschlappen sein, aber Lothar ich muss das alles per
Hand löten.
Ich habe zumindest die DuKo-Pins direkt ins Kupfer gelegt. Das mit den
Blockkondensatoren klingt sehr interessant. Auch danke dafür. Aber ich
habe momentan kein anderes Package und ich fürchte mich vor 0402. Einen
kleinen Zugewinn wird den beiden Werte aber schon auch in deinen Quellen
nachgesagt.
Wirkt mein Layout immer noch unbeholfen ?
Michael K. schrieb:>> Das mit den Namen VCCIO und VCC und den Pins und den Labels solltest du>> aber nicht so beliebig sortieren.> Ich verstehe an dieser Stelle nicht, was du mir sagen möchtest.
Die Namen sind im Schaltplan an beliebigen falschen Stellen.
> Aber beim VQ44 Package und dessen Pads ist bei ungefähr 15 mils Schluss
Ja, dann mach die Leitung dort eng und davor und danach wieder so breit
wie möglich. Denn 15 mil sind nicht "viel", sondern lediglich mickrige
0, 4 mm...
>> ... die Pads ins flächige Kupfer legen>> ... Blockkondensatoren,... 0402 oder 0201> Ich möchte kein Waschlappen sein, aber Lothar ich muss das alles per> Hand löten.
Gerade dann ist das ja eh schnurz. Eine ungleiche Wärmeverteilung durch
unterschiedliche Kupferflächen könnte bestenfalls beim maschinellen
Löten zum Grabsteineffekt führen.
> Wirkt mein Layout immer noch unbeholfen ?
Wenn Übung den Meister macht, dann hast du jetzt in etwa das 1. Lehrjahr
überstanden...
> Einen kleinen Zugewinn wird den beiden Werte aber schon auch in deinen> Quellen nachgesagt.
Wenn du das unbedingt herauslesen willst...
Ich wollte hiermit ein kurzes Statusupdate geben.
Dank eurer Unterstützung im neuen Platinenlayout ist der ursprüngliche
Fehler (Zähler zählt nicht/hat Sprünge) beseitigt.
Alles funktioniert nun, wie es sein soll.
Ich möchte mich herzlich bei jeden von euch bedanken, der sich die Mühe
gemacht hat über mein Problem nachzudenken.
in Dank,
Michael
https://github.com/1ux/BitConnector
Hallo, leider war ich etwas zu voreilig. Nach ausgiebigen Tests und
einigen Nachbessern möchte ich noch einmal eure Hilfe in Anspruch
nehmen.
Um das (Clock-)Problem genauer zu beschreiben, möchte ich erst einmal
den aktuellen Stand aufzeigen.
Ich habe mir die folgenden Ratschläge im aktuellen PCB-Design noch zu
Herzen genommen:
- Verzicht auf Thermals und Pads ins flächige Kupfer legen
- Signalleitungen weiter verbreitern
- Entkopplungskondensatoren noch enger anbinden
Das Resultat habe ich in in den Bildern: „PCB_Uebersicht, Chip_oben,
Chip_unten“ versucht zu illustrieren.
Nun zum Problem:
Im Bild „Aufbau_ok“ funktioniert der Zähler aus dem 1. Beitrag von mir
wie erwartet. Er zählt von 0 bis 9. Der rote Kreis zeigt die VCC
Anbindung. Dabei sind Vcc_io und Vcc kurzgeschlossen.
Im Bild „Aufbau_fail“ hat der Zähler Aussetzer und überspringt die 0 und
9.
Geändert hat sich nur eine längere Vcc Anbindung (siehe wieder roten
Kreis).
Dabei ist der Clock Input ein globaler (GCK) (weißes Kabel am
BitConnector).
Ich kann den Fehler umgehen, indem ich in ISE die „global clocks“
deaktiviere (Bild: „ISE_clock“), aber das scheint mir keine angemessene
Lösung zu sein.
Kann jemand versuchen mir zu erklären, was genau da passiert ? Hat es
etwas mit einer ungewollten Impedanz zu tun ?
Michael K. schrieb:> Der rote Kreis zeigt die VCC Anbindung.
Generell geht das, was du auf der CPLD-Leiterplatte begonnen hast,
natürlich im Gesamtsystem weiter: ohne vernünftiges Versorgungskonzept
samt Entkopplung wirst du laufend kuriose Probleme bekommen. Im gesamten
Aufbau ist keinerlei Stütz-/Block-/Entkopplungskondensator zu sehen.
Steck da mal beliebig verteilt ein paar 100nF Kondensatoren zwischen Vcc
und GND auf dein Brotbrett.
> Ich kann den Fehler umgehen, indem ich in ISE die „global clocks“> deaktiviere (Bild: „ISE_clock“)
1. So wie im Bild ist der Global Clock aber aktiviert.
2. Wenn das Herumschrauben am Takt was ändert, dann hast du vermutlich
Probleme mit genau diesem.
> der Clock Input ein globaler (GCK) (weißes Kabel am BitConnector).
Wie sieht das Oszibild aus, wenn du mit einer Massefeder(*) direkt
zwischen dem Taktpin und dem nächstliegenden Massepin des CPLDs misst?
Klingelt der Takt, hat er Überschwinger oder Unstetigkeiten? Ist die
Taktleitung am Treiberausgang serienterminiert?
BTW: Was machst du mit den unbenutzten Pins? Sind das einfach nur offene
Eingänge? Wird dein CPLD warm?
(*) schon der 10cm lange Masseclip am Tastkopf wird die Messung
verfälschen, deshalb muss für eine brauchbare Messung am Takteingang die
Verbindung vom Tastkopf zum CPLD mit der Massefeder so kurz wie gehalten
werden.
Michael K. schrieb:> Geändert hat sich nur eine längere Vcc Anbindung
Dann würde ich mir einen Oszi schnappen und mir die Spannung an allen
Vcc-Pins genau anschauen.
Man kann die Anforderungen an die Stromversorgung auch noch weiter
reduzieren (siehe Anhang).
Michael K. schrieb:> Im Bild „Aufbau_fail“ hat der Zähler Aussetzer und überspringt die 0 und> 9.
Ist das ein synchroner oder ein asynchroner Zähler?
Und woher kommt das Signal, welches den Zähler weiterschalten soll?
Von einem Taster? Oder von dem ominösen Gadget rechts oben?
Duke
Danke für die hilfreichen Antworten :)
> Im gesamten> Aufbau ist keinerlei Stütz-/Block-/Entkopplungskondensator zu sehen.> Steck da mal beliebig verteilt ein paar 100nF Kondensatoren zwischen Vcc> und GND auf dein Brotbrett.
Ja das stimmt. Und was soll ich sagen: Sobald ich einen 100nF
Kondensator zwischen Vcc und GND stecke, spielt die Länge der Vcc
Verbindung keine Rolle und der Takt läuft zuverlässig. (Einschränkung
siehe gleich)
Ohne nervös zu werden, sondern rein aus Gründen des Verständnis: Warum
muss ich nun nochmals Vcc auf dem Steckbrett stützen? An dem Ende der
AC-Quelle steht ein stabilisiertes Labornetzteil (GPS-3030D) und auf dem
PCB des CPLD sind doch nun mehr als genug Stützkondensatoren. (3* 100 nf
und 3 * 10nf).
> 1. So wie im Bild ist der Global Clock aber aktiviert.
Die Xilinx Illustration ist mehrdeutig. Obwohl die Option „nogclkopt“
heißt, bedeutet ein fehlendes Kreuz, kein „Global Clock“, was man z.B.
an den Pterms sieht: 12/180 ohne Kreuz und 8/180 mit Kreuz.
> 2. Wenn das Herumschrauben am Takt was ändert, dann hast du vermutlich> Probleme mit genau diesem.
Ich denke es sind wohl zwei Probleme, die sich einander bedingen:
1. „Der planlose Versuch meiner Versorgungsspannung“ und
2. „Das klingeln auf der Clock-Leitung.“
Nach dem 100nF Stützkondensator auf dem Steckbrett läuft zwar der
Zähler, aber jedes „husten“ oder schon „schief ansehen“ reicht aus und
er verschluckt sich wieder. Will sagen: Sobald ich ein Oszi-Tastkopf
anhänge, (oder schon eine 10 cm Drahtbrücke zwischen Clock und Luft
hinzufüge) reicht aus, um den Zähler zu stören.
Zum Oszi:
Hier erstmal der Messaufbau in Bild „Messaufbau_nah“ und
„Messaufbau_Übersicht“ mit Berücksichtigung der kurzen Masseleitung und
im Schlafanzug. Gemessen am Clock-Eingang über ein „Via“ und GND direkt
an einem GND Pin. Das Ergebnis sieht man in Bild „clock_Messung“.
Auf die Gefahr hin, dass auch mein „DSO-2090 Oszi“ mit selbst
geschriebener Screenshot-Darstellung als „ominöses Gadget“ verstanden
wird ;) , habe ich mal eine Referenzmessung am 2V/1KHz
Kalibrierungseingang angehangen (siehe 2V_1KHz), um ein Gefühl für das
Raschen meines alten DSO-2090 zu bekommen.
> BTW: Was machst du mit den unbenutzten Pins? Sind das einfach nur offene> Eingänge? Wird dein CPLD warm?
Der CPLD wird nicht warm. Laut [1] heißt es:
„Each CPLD family has one or more methods of I/O pin termination
available to prevent pins from floating at high-impedance and causing
noise and excessive power dissipation. These termination methods include
the weak resistive pull-up circuit, the weak keeper circuit (also known
as a "bus hold" circuit) and user-configurable ground pins.“
Ich habe die default I/O Pin Termination „Keeper“ aktiv. (siehe
Abbildung „keeper“). Damit sollte ich sicher sein. („When the pad is not
driven either externally or by the CPLD macrocell, the weak keeper
circuit maintains the last logic state present on the pad to prevent the
pad from floating.“)
Zu Duke:
> Man kann die Anforderungen an die Stromversorgung auch noch weiter> reduzieren (siehe Anhang).
Danke für den Hinweis. Ich werde damit mal etwas experimentieren.
> Ist das ein synchroner oder ein asynchroner Zähler?
Das ist ein synchroner Zähler. Ich bin mir unsicher, ob sich ein
asynchroner Zähler über ISE VHDL synthetisieren lässt.
> Und woher kommt das Signal, welches den Zähler weiterschalten soll?> Von einem Taster? Oder von dem ominösen Gadget rechts oben?
Ja, es ist das ominöse Gadget :) dass ein 1Hz Taktsignal bei 3V3
liefert.
[1]
https://www.xilinx.com/support/documentation/sw_manuals/help/iseguide/mergedProjects/destech/html/cd_configuring_i_o.htm
Michael K. schrieb:> Ich bin mir unsicher, ob sich ein asynchroner Zähler über ISE VHDL> synthetisieren lässt.
Ich kann das... ;-)
Die Toolchain zieht dann zwar jede Warnung, die sie findet, aber
trotzdem taktet (ohne viel Aufwand) der Ausgang eines FF das nächste FF.
Und es ist einfach jeweils der Ausgang jedes FF invertiert auf den
eigenen Eingang gelegt
Michael K. schrieb:> habe ich mal eine Referenzmessung am 2V/1KHz Kalibrierungseingang> angehangen
Da sieht man nicht arg viel. Der eigentlich interessante Zeitbereich
steckt in den Flanken, da muss das Oszi im 10.. 100ns/div Bereich
messen und anzeigen...
Michael K. schrieb:>> Und woher kommt das Signal, welches den Zähler weiterschalten soll?>> Von einem Taster? Oder von dem ominösen Gadget rechts oben?>> Ja, es ist das ominöse Gadget :) dass ein 1Hz Taktsignal bei 3V3> liefert.
Wie sieht die Masseführung aus?
Der Strom, der durch den Signaldraht zum CPLD geht, muß ja auch irgendwo
zurückfließen können. Dieser Rückweg sollte keine große Schleife bilden,
sondern so nah wie möglich neben der Signalleitung liegen.
Michael schrieb:> Dabei sehen die Flanken des Rechteckgenerators bei 20ms unendlich steil> aus (läuft mit 1Hz).
Bei 20ms Zeitauflösung kannst Du z.B. keine Überschwinger sehen, die
wenige ns lang sind.
Die XC9500 sind bis über 100 MHz spezifiziert. Die sehen das aber.
Im Anhang mal ein Beispiel, wie die Flanke eines 1 Hz Rechtecksignals
bei näherer Betrachtung nicht aussehen sollte.
Duke
Duke Scarring schrieb:> Dieser Rückweg sollte keine große Schleife bilden,> sondern so nah wie möglich neben der Signalleitung liegen.
In der Praxis heißt das für derart von aussen eingespeiste Takte samt
Masse: verdrillte Leitungen!
> asynchroner Zähler über VHDL
Wenn du dann noch die Flipflops aus kombinatorischer Logik aufbaust,
wäre das ein interessanter Beitrag für „lothar-miller.de“ :)
> Da sieht man nicht arg viel. Der eigentlich interessante Zeitbereich> steckt in den Flanken, da muss das Oszi im 10.. 100ns/div Bereich> messen und anzeigen...
...
> Bei 20ms Zeitauflösung kannst Du z.B. keine Überschwinger sehen, die> wenige ns lang sind.
Ja, hier zwei neue Messungen, mit dem was das Oszi hergibt.
Einmal mit 25Ms/s (10Hz_25MsPs.png) und einmal mit 50Ms/s
(10Hz_50MsPs.png) Der Rest ist mit dem Oszi nur noch Matsch.
Das Signal sieht aber schon aus „der Entfernung“ recht unheimlich aus.
Danke vielmals Duke, dass du dir die Mühe mit den vielen Beispielen
gemacht hast, das fand ich sehr interessant und aufschlussreich. Wobei
mein Signal sich in die Sammlung noch einreihen könnte.
> Wie sieht die Masseführung aus?> Der Strom, der durch den Signaldraht zum CPLD geht, muß ja auch irgendwo> zurückfließen können.
Tja, wie genau der Stromfluss ist, ist mir offen gestanden nicht ganz
klar, da es 3 GND Anbindungen gibt, die zumindest alle mit einander
verbunden sind. Ich habe mal meine Vermutung vom Clock Pin aus
eingezeichnet. (Masseführung.png)
Hilft das weiter ?
Michael K. schrieb:> Hilft das weiter ?
Nur bedingt. Du zeigst ja nur den Teil bis zum Rand vom CPLD-Board.
Danach muß es ja irgendwo mit Drähten weitergehen...
Duke
Ich habe den Fehler gefunden.
Er liegt in der unsauberen 3V3 DC Spannung (Bild DC_Ripple.png) hier vom
China Gadget (Bild DC_Power.png).
Zwar hatte der 100nF Kondensator dem CPLD geholfen, aber der kleine
„Rechteckgenerator“ wurde auch mit der „schmutzigen“ DC Spannung
versorgt und hat die Ripple auf die CLK Leitung weiter gegeben.
Ich habe nun ausschließlich ein ordentliches Labornetzteil ans
Steckbrett angeschlossen und nun läuft alles (sogar längere CLK
Leitungen sind nun kein Problem mehr).
Ich habe gelernt: Besser keine China Gadget mehr bei der
Schaltkreisentwicklung. Sorry.
Michael K. schrieb:> mit der „schmutzigen“ DC Spannung versorgt
Wenn der Rest passt, hätte die mir aber keine Sorgen gemacht.
> die Ripple auf die CLK Leitung weiter gegeben.
Die 100mV dürfen da baer eigentlich nichts ausmachen. Es sei denn, dass
hinter diesen Impulsen mehr steckt als das Bild hergibt. Dann hätte aber
ein Kondensator am DCDC-Ausgang auch Abhilfe geschafft.
> Wenn der Rest passt, hätte die mir aber keine Sorgen gemacht.
Ich weiß was du meinst, ein ungutes Gefühl habe ich auch noch.
> Es sei denn, dass hinter diesen Impulsen mehr steckt als das Bild hergibt.
Für eine genaue Analyse muss auf kurz oder lang ein besseres Oszi her.
Ich habe nochmal 100nF und 10nF direkt an den DCDC-Ausgang des
China-Gadget gesteckt. Die Spannung ist jetzt mit zusammengekniffenen
Augen halbwegs glatt.