Forum: FPGA, VHDL & Co. Seltsames Verhalten Nexys2


von Gustl B. (-gb-)


Lesenswert?

Hallo,

ich habe hier ein Nexys2 500 und möchte Dinge anschließen. Und zwar an 
den FX2 Stecker. Natürlich habe ich eine Pinzuordnung und die wollte ich 
überprüfen.

Also habe ich immer je 8 Pins vom FX2 (PIO) in VHDL den 8 LEDs 
zugeordnet.

LED(7 downto 0) <= PIO(7 downto 0);

Und dann bin ich miteinem Jumperkabel auf die +3,3V gegangen und danach 
nacheinander auf die PIO Pins und habe geguckt welche LED leuchtet.

Das Seltsame: Es leuchtet manchmal nicht nur eine sondern mehrere LEDs. 
Woran kann sowas liegen? Bei 3,3V müsste das doch alles passen?

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


Lesenswert?

Gustl Buheitel schrieb:
> LED(7 downto 0) <= PIO(7 downto 0);
Das ginge kürzer:
LED <= PIO;

> Woran kann sowas liegen?
Meine Vermutung: Übersprechen bei offenen CMOS Eingängen.

von Gustl B. (-gb-)


Lesenswert?

Klar geht das kürzer, hatte ich auch nur hier so geschrieben um zu 
zeigen, dass die auch wirklich gleich lang sind.

Ok, Danke! Dann wäre es also ratsam die anderen Eingänge auf Masse zu 
legen? Oder wenn ich die nicht verwende, dann sollte das sowieso egal 
sein ...

Ich probiere das mal aus.

von klaro (Gast)


Lesenswert?

Gustl Buheitel schrieb:
> 8 LEDs zugeordnet.

inkl. Vorwiderstände?

Ich würde dann auch mal drauf achten ob beim Stimulieren der
Eingänge die Versorgung stabil bleibt wenn Vor-und Pull-up-Widerstände
fehlen.

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


Lesenswert?

Gustl Buheitel schrieb:
> Dann wäre es also ratsam die anderen Eingänge auf Masse zu legen?
Es wäre ratsam, CMOS-Eingänge auf einen definierten Pegel zu legen. Ich 
würde an deiner Stelle für unbenutzte Pins einen Pullup definieren.

von Gustl B. (-gb-)


Lesenswert?

Klar überall Vorwiderstände ist ja das standard Nexys2 Board von 
Digilent.

Ist das mit den internen Pullups auch wichtig wenn man die Eingänge 
nicht verwendet? Also ich meine, was nicht irgendwie zu der Logik 
geschalten wird, das stört auch nicht, oder doch?

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


Lesenswert?

Gustl Buheitel schrieb:
> Ist das mit den internen Pullups auch wichtig wenn man die Eingänge
> nicht verwendet?
Naja, "nicht verwenden" gibt es eigentlich nicht. Denn du verwendest das 
FPGA. Also verwendest du auch die Pins des FPGAs. Und somit musst du 
dich um diese Pins kümmern.

Sehr schlecht wäre z.B. eine LED blinke zu lassen unad alle anderen Pins 
einfach zu ignorieren, egal was sonst noch dranhängt. Dann kann es 
nämlich sein, dass die Eingangstreiber alle "so halb" durchschalten und 
dein FPGA den Hitzetod stirbt. Und auch angeschlossenes RAM/Flash möchte 
lieber definiert disabled sein...

von Tobias L. (murxwitz)


Lesenswert?

Die Xilinx ISE hat ne Standardeinstellung für unbenutze Pins, 
Rechtsklick auf "Generate Programming File" und dann unter 
"Configuration Options". Standard ist Pulldown. -> automatisch keine 
offenen Pins

Altera ist da schlimmer deren Standard ist GND, falls es also ein 
Eingang ist an dem entwas hängt, der aber net verwendet wird hat man nen 
schönen kurzen....

wieso mehrere angehen kann ich so direkt keinen Grund für sehen

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


Lesenswert?

Tobias L. schrieb:
> Standard ist Pulldown.
Das ist dann auch der Standard, wenn man ein Flash oder ein RAM 
enablen will. Und schlagartig sind dann durch den Pulldown alle 
RAM-Bausteine und die parallelgeschalteten Flashs aktiv und treiben auf 
einen gemeinsamen Bus.

Wie gesagt: diesen Schalter auf "Pullup". Immer!

von Gustl B. (-gb-)


Lesenswert?

Ok, dann mach ich das mal so, vielen Dank! Sieht schon so aus als wäre 
das Problem erledigt wenn man alle verwendeten Eingänge auch wirklich 
auf ein definiertes Potential legt.

von Duke Scarring (Gast)


Lesenswert?

Lothar Miller schrieb:
> Wie gesagt: diesen Schalter auf "Pullup". Immer!
Ich such mir entsprechend die chip selects und chip enables aus dem 
Schaltplan und treibe diese definiert auf inaktiv. Hier ein Beispiel für 
das SP601:
1
    flash_a                  <= (others => '1');
2
    flash_d                  <= (others => 'Z');
3
    flash_we_b               <= '1';
4
    flash_oe_b               <= '1';
5
    flash_ce_b               <= '1';
6
    fpga_awake               <= '1';
7
    fpga_cclk                <= '1';
8
    fpga_init_b              <= '1';
9
    fpga_mosi_csi_b_miso0    <= '1';
10
    spi_cs_b                 <= '1';

Duke

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.