Forum: FPGA, VHDL & Co. CPLD Clock Probleme XC9572 1Hz 3V3


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael (Gast)


Lesenswert?

Hallo,

ich nutze einen xc9572xl auf einem BitConnector[1] und beobachte bei 
folgender Zählerschaltung
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4
5
entity vhdl_zaehler is
6
    Port ( 
7
    clock :   in  STD_LOGIC;
8
    Sec :   out STD_LOGIC_VECTOR (3 downto 0)
9
   );
10
end vhdl_zaehler;
11
12
architecture Behavioral of vhdl_zaehler is
13
signal x : unsigned (3 downto 0) := (others=>'0');
14
begin
15
16
  process begin
17
  
18
  wait until  rising_edge(clock);
19
    if(x>"1000") then
20
      x <= (others=>'0');
21
    else
22
      x <= x+1;
23
    end if;
24
  end process;
25
  Sec <= std_logic_vector(x);
26
27
end Behavioral;

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

von jo mei (Gast)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

> Vielleicht ist auch das Board mit dem xc9572xl bereits
> unzureichend aufgebaut bzw entkoppelt.

Nun wenn vielleicht der Schaltplan etwas Klarheit bringen könnte, der 
befindet sich hier:

https://github.com/1ux/BitConnector/blob/master/schematic_v4X.pdf

von jo mei (Gast)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

> 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 ?

von Michael (Gast)


Lesenswert?

> 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 ?

von jo mei (Gast)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

> 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

von jo mei (Gast)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

Danke, du hast mir sehr geholfen.

Ich wünsche dir noch ein schönes Wochenende.

von Achim S. (Gast)


Lesenswert?

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.

von W.S. (Gast)


Lesenswert?

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.

von Michael K. (2ux)


Lesenswert?

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

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

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.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch Moderator
von Christoph Z. (christophz)


Lesenswert?

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).

von Michael K. (2ux)


Angehängte Dateien:

Lesenswert?

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

: Bearbeitet durch User
von Fast track to /dev/null (Gast)


Lesenswert?

Ich seh da einen Kurzschluss zw. 3V3 und GND über das Netz PWR_FLG.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.pdf

Michael 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.

: Bearbeitet durch Moderator
von Michael K. (2ux)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
von A. G. (grtu)


Lesenswert?

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.

von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

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 ;-)

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Michael K. (2ux)


Lesenswert?

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

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Michael K. (2ux)


Angehängte Dateien:

Lesenswert?

> 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. ;)

: Bearbeitet durch User
von Lothar M. (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.php
https://electronics.stackexchange.com/questions/298798/capacitor-placement

: Bearbeitet durch Moderator
von Michael K. (2ux)


Angehängte Dateien:

Lesenswert?

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 ?

: Bearbeitet durch User
von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Michael K. (2ux)


Lesenswert?

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

: Bearbeitet durch User
von Michael K. (2ux)


Angehängte Dateien:

Lesenswert?

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 ?

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Duke Scarring (Gast)


Angehängte Dateien:

Lesenswert?

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

von Michael K. (2ux)


Angehängte Dateien:

Lesenswert?

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

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

: Bearbeitet durch Moderator
von Duke Scarring (Gast)


Angehängte Dateien:

Lesenswert?

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

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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!

Beitrag #6713499 wurde vom Autor gelöscht.
von Michael K. (2ux)


Angehängte Dateien:

Lesenswert?

> 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 ?

: Bearbeitet durch User
von Duke Scarring (Gast)


Lesenswert?

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

von Michael K. (2ux)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Michael K. (2ux)


Lesenswert?

> 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.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.