Hallo an Alle,
ich habe einen IP Core, der einfach einen Pin vom FPGA einliest und den
Wert in ein Register schreibt, jedoch habe ich mit der Hardware
folgendes Problem:
An dem Pin habe ich einen Taster gegen Masse und einen Widerstand (4,7K)
gegen 3,3V, leider liegen im Ruhezustand nur 1 Volt an dem Pin, beim
gedrückten Taster liegen 0 Volt an (was ja auch richtig ist).
Mit ist unerklärlich, warum bei nicht gedrücktem Taster nur 1 Volt am
Pin anliegen. Ich habe den Pin auch schon mit internem PULLUP belegt,
jedoch hat sich nichts geändert.
Hat jemand eien Ahnung, was ich falsch mache?
Lieben gruß,
Christoph
Ich benutze das Xilinx Spartan 3. Die IO Spannung an der bank beträgt
3,3 Volt.
Ich habe auch schon einen Ausgang definiert, der sich je nach
registerinhalt ändert. Diese Richtung funktioniert ohne Probleme. Setze
ich ein bit im Register auf 0 liegt keine Spannung am Pin an, setze ich
es auf 1 liegen 3,3Volt am Pin an.
> ein einfacher "in std_logic"
reicht üblicherweise aus, irgendwelche handverdrahteten Buffer sind nur
bei speziellen IOs (LVDS...) sinnvoll.
> An dem Pin habe ich einen Taster...
Welcher Pin in welcher Gehäusebauform ist das?
Hat der evtl. noch andere Funktionen?
Naja das FPGA ist nen BGA676. Die Spannung messe ich natürlich nicht
direkt am Pin, sondern an nem Stecker wo ich drankomme. Es ist momentan
der Pin AA23 an dem ich den Taster habe.
Ich habe gerade folgendes überlegt: Kann es sein, dass das EDK das
komplette Signal und auch die Konfiguration des Pins wegoptimiert, wenn
ich das Signal in meinem IP Core nicht benutze? Momentan ist das Signal
in meinem IP Core nämlich nicht benutzt.
Ich würde gerne Testen, ob es funktioniert, wenn ich das Signal intern
benutze, jedoch funktioniert mein externes SDRam nicht, wenn ich das
Signal in meinem IP Core benutze. Dieses Problem hatte ich in einem
anderen Thread hier schon beschrieben. Ich verstehe irgendwie nicht, was
ich falsch mache.
> Kann es sein, dass das EDK das komplette Signal und auch die Konfiguration> des Pins wegoptimiert, wenn ich das Signal in meinem IP Core nicht benutze?
Sieh dir den Pad-Report von Place&Route an, da steht drin, welche Pins
mit welcher Konfiguration wohin verdrahtet wurden.
Aber es kann tatsächlich sein, dass das Signal komplett rausfliegt. Ich
verdrahte solche nicht verwendete Eingangssignale z.B. mit einem OR auf
ein internes Signal, das ich wieder ausgebe. Dann wird es garantiert
geroutet.
Ja, sowas habe ich auch probiert, das Problem bei mir: Sobald ich das
Eingangssignal in irgendeiner Art und Weise in meinem IP Core benutze
funktioniert mein externer SDRam nicht mehr. Dieses Phänomen ist mir
völlig unklar, vor allem, da mein IP Core zwar wie der SDRam Controller
am PLB Bus hängt, die beiden Cores aber sonst nichts miteinander zu tun
haben. Mein SPI Interface, was am gleichen Bus hängt funktioniert jedoch
noch... Ich habe die Vermutung das irgendwas mit den Adressen nicht
stimmt, obwohl alles gut aussieht, keine Überschneidungen etc.
Ich hab mir das ganze System nochmal angeguckt, es ist aber meiner
Ansicht nach kein Fehler drin. Trotz all dem, sobald ich einen Eingang
des FPGA's verwende komme ich nicht mehr auf mein externes SDRam, wenn
irgendwer eine Idee hat, woran das liegen kann wäre ich sehr dankbar
diese mir mitzuteilen.
Vielen Dank schon einmal.
Christoph