Forum: FPGA, VHDL & Co. Signaltreiber zu schwach?


von guest (Gast)


Lesenswert?

Hallo,

ich hab das Problem, dass ich Eval-Board übergeifend einen synchronen 
Reset durchführe (Bitte keine Diskussion darüber, dass auf Resets 
verzichtet werden kann). D.h. ich nutze den Taster auf Board1 und kann 
darüber zwei Ausgänge (A1, A2) auf 1 setzen. Von diesen beiden Ausgängen 
wird der eine genutzt um Board1 zu resetten, der zweite resettet das 
Board2.

Und genau hier tritt das Problem auf, denn sobald ich versuche beide 
Boards ausgehend durch den Taster auf Board1 zu resetten kommt nur noch 
Grütze raus.
Nutze ich für jedes Board einen eigenen Reset, läuft alles wunderbar. 
Auch wenn ich von Board1 aus erst das eine, dann das andere Board 
resette, klappt alles wie gewünscht. Nur sobald ich beide Boards 
parallel resette geht nix mehr.

Kann es sein das hierbei der Treiber der das Resetsignal generiert zu 
schwach ist und nicht alle FFs erreicht?? Oder besitzen die Ausgänge A1 
und A2 eigene Treiber wodurch ich ein zu schwaches Signal eigentlich 
ausschließen kann??

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

guest schrieb:
> Kann es sein das hierbei der Treiber der das Resetsignal generiert zu
> schwach ist und nicht alle FFs erreicht??
Wie kommst du darauf, dass ein "schwaches" Reset-Signal nicht alle FFs 
erreichen würde?

guest schrieb:
> Oder besitzen die Ausgänge A1 und A2 eigene Treiber wodurch ich ein
> zu schwaches Signal eigentlich ausschließen kann??
Weil noch keiner weiß, was du für Boards hast, wie die miteinander 
verschaltet sind, wie die versorgt sind und was da alles am Reset 
angeschlossen ist, kann auch keine sinnvolle Antwort kommen...

> Nutze ich für jedes Board einen eigenen Reset, läuft alles wunderbar.
Zeichne doch mal eine Skizze und schreib dazu, was der Taster, Board1, 
Board2, A1, A2 usw. usf. ist...

von guest (Gast)


Lesenswert?

> Wie kommst du darauf, dass ein "schwaches" Reset-Signal nicht alle FFs
> erreichen würde?

Quasi ein Einbruch des Signals aufgrund zu großer Last? Die Frage ging 
eher in die Richtung, ob das prinzipiell sein kann? Allerdings zeigt 
meine Design Summary, dass lediglich 3% aller FFs verwendet werden daher 
kann wohl kaum von Überbelastung geredet werden..

Ich hab irgendwie keine Idee mehr woran das liegen könnte, daher kommen 
mir solche Fragestellungen in den Kopf.

Naja in der Skizze ist der Aufbau nochmal ganz simpel dargestellt:

http://rapidshare.com/files/434138448/skizze.pdf

Von K13 aus wird B14 und A14 auf 1 gesetzt. Das Reset Signal wird über 
B8 auf die beiden Boards verteilt. Es handelt sich dabei um ein AVNET 
Board (AES-SP3A-EVAL400-G) mit einem Spartan 3A darauf.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

guest schrieb:
> Von K13 aus wird B14 und A14 auf 1 gesetzt. Das Reset Signal wird über
> B8 auf die beiden Boards verteilt.
Das kann der Ausgangstreiber sicher. Dein Problem liegt woanders...

Wie ist die Masse der beiden Boards verbunden? Wie sind die versorgt?

BTW:
Anhänge lieber gleich hier im Post mit anhängen, dann spart man sich die 
Bauernfängerei bei einem Filehoster...

von guest (Gast)


Lesenswert?

Danke soweit,

> Wie ist die Masse der beiden Boards verbunden? Wie sind die versorgt?

also es gibt nur ein USB Kabel vom Board zum Laptop. Sowohl 
Spannungsversorgung, sowie das konfigurieren der FPGAs, läuft darüber. 
Beide Boards sind allerdings mit dem selben Laptop verbunden.

von Duke Scarring (Gast)


Angehängte Dateien:

Lesenswert?

guest schrieb:
>> Wie ist die Masse der beiden Boards verbunden? Wie sind die versorgt?
>
> also es gibt nur ein USB Kabel vom Board zum Laptop. Sowohl
> Spannungsversorgung, sowie das konfigurieren der FPGAs, läuft darüber.
> Beide Boards sind allerdings mit dem selben Laptop verbunden.

Und Du hast nur einen Draht von Board1/B14 zu Board2/B8 gezogen?
Dann läuft die Masse über den Läptop und das gibt eine schöne 
Masseschleife, die sich alle möglichen Störungen einfangen kann.

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Du hast also keine definierte/dedizierte Masseverbindung?
Die Masseverbindung zwischen den beiden Boards geht "nur" über die 
beiden USB-Kabel und den Laptop?
Dann verbinde doch einfach mal zwischen den beiden Boards das 
Massepotential direkt. So wie du ja das Reset-Signal zwischen den beiden 
Boards auch direkt verbunden hast...

von guest (Gast)


Angehängte Dateien:

Lesenswert?

So,

die Masse wurde verbunden, jedoch ohne Erfolg. Allerdings hab ich es 
dennoch zum laufen bekommen was meiner Meinung nach jedoch nicht gesund 
sein kann für die Hardware..

Also Fakt ist, dass wenn BTN1 oder BTN2 gedrückt wird B14 sowie A14 auf 
1 geschaltet werden. Nun sind die Pins A14/B14 bei Board 2 allerdings 
mit nichts verbunden (Ich hoffe das war kein wichtiges Detail). Wenn ich 
nun bei Board2 zusätzlich B14 auf B8 lege und dann via BTN1 den Reset 
ausführe klappt der Reset. Nur bin ich der Meinung das ich in dem Fall 
einen Kurzschluss produziere da Board2/B14 ja eigentlich auf 0 liegen 
sollte. Nachvollziehen kann ich nix von dem was dabei passiert..

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Weil unglücklicherweise nur du dein Design kennst (aus deiner 
Beschreibung vermute ich, dass auf beiden FPGAs das selbe läuft), kann 
jeder Rat nur ein unsinniges Raten sein. Das bringt dich nicht weiter...

von guest (Gast)


Lesenswert?

Sobald das Board2 über B8 mit Board1 verbunden ist scheint das 
Resetsignal, ausgehend von A14/B14 nicht auf 0 zu bleiben.
Das erklärt auch warum nur ein Teil der eigentlichen Nachricht 
übertragen wird. Wenn ich den BTN1 drücke und das Board2 durch Abziehen 
des Kabels während dessen trenne, funktioniert der Reset von Board2 
einwandfrei. Lasse ich BTN1 los anstatt das Kabel abzuziehen, kommen 
wieder nur Bruchteile der
Übertragung an.
Das Verhalten ändert sich auch beim Wechsel der Pins nicht. Falls 
dennoch jemand eine Idee hat wie sowas zustande kommen kann... immer 
raus damit.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Liest du eigentlich die Posts? Ich zitiere mich:
Lothar Miller schrieb:
> Weil unglücklicherweise nur du dein Design kennst (aus deiner
> Beschreibung vermute ich, dass auf beiden FPGAs das selbe läuft), kann
> jeder Rat nur ein unsinniges Raten sein. Das bringt dich nicht weiter...

Als kleine Hilfestellung:
Keiner hat auch nur eine grobe Ahnung, was du innerhalb deines FPGAs mit 
diesen EAs machst und auch nicht, wie sie im Constraints-File 
konfiguriert sind (Pullup/down). Wie soll man da helfen können?

guest schrieb:
> Sobald das Board2 über B8 mit Board1 verbunden ist scheint das
> Resetsignal, ausgehend von A14/B14 nicht auf 0 zu bleiben.
Sowas kann man messen. Denn der Schein kann trügen.

von guest (Gast)


Lesenswert?

> Liest du eigentlich die Posts?

Zunächst einmal ist mir ein Vorschlag der sich hinterher als falsch raus 
stellt immer noch lieber als garkeinen Ansatzpunkt zu haben.
Zum anderen wollte ich die mir bekannten Informationen im letzten Post 
komplettieren damit vielleicht doch jemand einen "aha, sowas hatte ich 
auch schon mal" Effekt bekommt und eventuell was zur Problemlösung 
beiträgt.

Und um die Frage nach meiner Lesebereitschaft abzuschließen:

guest schrieb:
> Falls dennoch jemand eine Idee hat wie sowas zustande kommen kann...
> immer raus damit.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Es ist nicht so, dass ich dir nicht helfen wollte, aber ich kann es 
so nicht... :-/

Also: miss mal den Pegel auf der fraglichen Verbindung. Und zwar einmal 
bei offener Verbindung an beiden betroffenen Bausteinen. Und dann bei 
geschlossener Verbindung.

Was immmer noch unklar ist: hast du auf beiden FPGAs das selbe Design? 
Oder wenigstens den betroffenen Teil, der die Taster und den Reset 
bedient?

von guest (Gast)


Angehängte Dateien:

Lesenswert?

Es ist das gleich Design auf beiden Boards. In der usf. Datei ist btw. 
nichts definiert außer der Pinbelegung und dem Übertragungsstandard.

Die Messung wurde an B14 durchgefüht. Bezugspunkt war bei out2 ein 
Massepin auf dem eigenen Board. Bei out3 und out4 auf dem 
gegenüberliegenden Board. Die Massen wurden vorweg über GND Pins 
verbunden.
D.h. die einzigen Verbindungen zwischen den Boards sind eine 
Datenleitung, Data_clk_leitung (Auf dem Bildern vorher nicht 
eingezeichnet) und die Masseverbindung.
Der Sprung auf ~3.3V geschieht durch Auslösen des BTN1. Es spielt auch 
keine Rolle welches der beiden Boards nun für den Reset zuständig ist, 
das Verhalten bleibt das gleiche.

Ich hab auch andere Kabel und andere GND Pins der einzelnen Boards 
miteinander verbunden, aber anscheinend gibt's keine gemeinsame saubere 
Masse. Sobald die Data_clk_leitung abgeklemmt ist siehts deutlich besser 
aus (siehe out4), aber eigentlich immer noch beschissen. Sobald dann die 
Datenleitung ebenfalls getrennt wird ist alles im Lot.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

guest schrieb:
> Die Massen wurden vorweg über GND Pins verbunden.
Diese Masseverbindung sieht aber irgendwie sehr schlecht aus...
Oder der Low-Pegel an A14 wird nicht aktiv getrieben...

EDIT:
guest schrieb:
> Die Messung wurde an B14 durchgefüht.
Von welchem B14 sprichst du? Vom FPGA-Pin B14 oder vom J34/PPin B14?

von Christian R. (supachris)


Lesenswert?

Wieviele Datenleitungen teilen sich denn eine Masseleitung? Sieht nach 
Ground Bouncing aus. Immer wenn viele Datenleitungen gleichzeitig 
schalten, ziehen sie die Masse mit hoch, wenn da zu wenige 
Masseleitungen sind. Deswegen haben beispielsweise IDE Kabel so viele 
Masseleitungen.

von guest (Gast)


Lesenswert?

> Von welchem B14 sprichst du? Vom FPGA-Pin B14 oder vom J34/PPin B14?

Von dem FPGA Pin. Das selbe bescheidene Messergebnis ergibt sich auch an 
A14 wenn ich die Masse des gegenüberliegenden Boards als Bezugspunkt 
nutze.

> Oder der Low-Pegel an A14 wird nicht aktiv getrieben

Wo kann man das konfigurieren? In der ucf? Wenn ja, ich hab wie gesagt 
nichts außer der Pinzuweisung und dem IOSTANDARD eingetragen (LVCMOS33). 
Was dann default gesetzt wird weißt du wahrscheinlich eher als ich.


> Wieviele Datenleitungen teilen sich denn eine Masseleitung?

Also ich hab hier nur eine Hin- und Rückleitung für die Daten und die 
Daten_clk. Bei der Frage welche Leitungen sich welche Massen teilen bin 
ich überfragt. Du meinst wieviele der genutzten IOs sich innerhalb des 
FPGAs einen GND Pin teilen?

von Christian R. (supachris)


Lesenswert?

Nee, ich meine das/die Kabel zwischen den Boards. Wenn da 10 
Datenleitungen und nur eine Masseleitung wäre, wäre das schlecht, dann 
gibts solche Ground Bouncing Effekte.

von guest (Gast)


Lesenswert?

So ich hab dann mal nahezu alle GND Pins die zur Verfügung stehen 
genutzt, um die Boards miteinander zu verbinden.

Resultat, die Übertragung haut hin. Wenigstens das Symptom bekämpft ..

von Duke Scarring (Gast)


Lesenswert?

guest schrieb:
> nahezu alle GND Pins

Wahrscheinlich hätte es gereicht, die "richtigen" GND-Pins zu verwenden. 
An Deiner vorhergehenden Version, war also noch irgendwas faul.

Duke

von Christian R. (supachris)


Lesenswert?

guest schrieb:
> Resultat, die Übertragung haut hin. Wenigstens das Symptom bekämpft ..

Ich denke, das war eher die Ursache.

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
Noch kein Account? Hier anmelden.