Forum: FPGA, VHDL & Co. Spartan 3 Input Pin Problem


von ChrisB (Gast)


Lesenswert?

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

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


Lesenswert?

Welches FPGA (Typ, Hersteller)?
Welche IO-Spannung?

von ChrisB (Gast)


Lesenswert?

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.

von ChrisB (Gast)


Lesenswert?

Muss man den Input Pin als INBUF konfigurieren um das einzeulesen? oder 
ist ein einfacher "in std_logic" auch okay?

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


Lesenswert?

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

von ChrisB (Gast)


Lesenswert?

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.

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


Lesenswert?

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

von ChrisB (Gast)


Lesenswert?

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.

von ChrisB (Gast)


Lesenswert?

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

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.