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