mikrocontroller.net

Forum: FPGA, VHDL & Co. Xilinx IOs als open-collector


Autor: Hartmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich moechte eine IIC Kommunikation mit einem CMOS Kamera chip(QV7620)
herstellen, und dafuer benoetige ich eine bi-direktionalen
Datenleitung. In meinem Modul habe ich folgendes implementiert:
############
module I2C(Clock, Reset, SDA, SCL, ...);
...
inout SDA;
reg SDAreg;

assign SDA = SDAreg;
...
##########

Ich kann dann problemlos SDA lesen und schreiben.
Meine Frage: muss ich explizit vor Place&Route den SDA Input als
open-collector spezifizieren, und wie mache ich das? Ich nutze Spartan3
von Xilinx und ISE7.1.

Gruss,
H

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
genau genommen müsste man sagen Open-Drain.
Nein, die Synthese erkennt aus der Beschreibung,
ob ein Open-Drain implementiert werden soll oder
ein Push-Pull Ausgang. Input-mäßig ist es eh immer
dasselbe: ein Input-Buffer der den Logik-Pegel vom
Pin einliest.

Hier mal 2 Beispiele VHDL(nur für die Output-Seite):

Datenbus bidirektional, push-pull:

my_databus <= data when rd_n = '0' else (others=>'Z');

I2C, Open-Drain am SDA:

sda <= '0' when sda_intern = '0' else 'Z'; -- keine '1' !

Autor: Thomas Pototschnig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das genze ist eigentlich nur ein Trick.
Bei sda<='0' wird der push-pull-treiber so getrieben, dass eben LO
rauskommt - bei sda<='Z' wird der Aus-/Eingang nur auf Tristate
geschaltet - ist bei den AVRs eigentlich das Gleiche.

Übrigens muss man in der Entity dann

sda : inout std_logic;

verwenden.

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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