mikrocontroller.net

Forum: FPGA, VHDL & Co. Portierung Raspberry zu Zynq: Multiplexing klappt nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Rüdiger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich möchte eine Schaltung, die bisher an einen Raspberry Pi 
angeschlossen war, an einem FPGA betreiben.

Die Schaltung besteht im wesentlichen aus vielen LEDs (~90) und 
Schaltern  (~25), die über ein Multiplex-Verfahren angesteuert werden, 
das ich in der Theorie leider nicht verstehe. Die LEDs blende ich mal 
aus, denn die kann ich alle erfolgreich ansteuern, nur beim Auslesen der 
Schalter hänge ich.

Die Schalter sind in 3 Zeilen mit je 12 Spalten angeordnet, es gibt also 
3 Zeilenpins, von denen jeweils nur einer aktiv ist, und 12 Spaltenpins. 
Elektronisch hängt an einem Spaltenpin ein Widerstand von 390 Ohm und an 
den Zeilenpins ein Widerstand von 1k Ohm. Ein Schalter schließt Zeilen- 
und Spaltenpin über die Widerstände und eine Diode pro Schalter kurz 
(siehe Anhang).

Zum Auslesen soll genau ein Zeilenpin auf Low geschaltet werden, die 
anderen beiden auf TriState, was ich über je ein OBUFT steuere. Dann 
sollen die 12 Spaltenpins auf Input mit Pullup geschaltet werden, ein 
geschlossener Schalter zeigt sich dann als 0.

Das funktioniert auch soweit, allerdings nur, solange ich maximal 5 
Schalter beim ZynqBerry oder 4 Schalter beim Pynq aktiviere. Der nächste 
zieht dann alle Eingänge auf 1, manchmal auch mit einer sichtbaren 
Verzögerung im Bereich 100ms oder anderen Effekten.

Da ich nicht verstehe, wie das Verfahren funktioniert - wenn col1 als 
Eingang geschaltet ist, wie soll die Diode durchbrochen werden, um row1 
als GND zu sehen? - weiß ich auch leider nicht, woran es liegen könnte. 
Am VHDL-Code liegt es ziemlich sicher nicht, denn im Minimalbeispiel 
arbeite ich ohne LEDs, steure mit konstanten Signalen die Zeilenpins ein 
und zähle einfach nur die Signale der Spaltenpins. 4 bzw. 5 Schalter 
werden gezählt, danach passieren scheinbar zufällige Effekte, egal mit 
welchen Kombinationen der Schalter.

Hat jemand eine Vermutung oder Erklärung? Liegt es daran, dass ein FPGA 
keine richtigen Pullups hat, sondern einen Stromspiegel o.ä. realisiert, 
wenn im Constraint ein Pullup gefordert ist? Könnte ich das irgendwie 
lösen, ohne die Schaltung zu ändern?

Viele Grüße
Rüdiger

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rüdiger schrieb:
> um row1 als GND zu sehen?
Dazu muss nichts durchbrochen werden: wenn row1 auf GND liegt und der 
Schalter geschlossen ist, dann Controller an col1 ein Low-Pegel raus...

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gelöst: Ich habe es heute einem Arbeitskollegen erklärt. Mein Denkfehler 
lag nicht bei der Diode, die Spannung muss tatsächlich ihre 
Durchlassspannung überschreiten. Allerdings habe ich nicht bedacht, dass 
die Pullup-Konfiguration eines Pins dafür sorgt, dass der Eingang auf 
VCC liegt. Ich habe den Widerstand von 1k auf 220 Ohm angepasst, damit 
funktioniert es nun auf beiden FPGA-Boards und weiterhin auf dem 
Raspberry.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.