mikrocontroller.net

Forum: FPGA, VHDL & Co. differential signal output


Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

Hätte da eine Frage...

Habe ich einen XC3S400-4FT256C und programmiere in VHDL.
Benutze zur Zeit meine I/Os nur als Single Ended.
Wollte jetzt gerne auf Differential Signals umsteigen.

Anscheinend reicht es nicht aus dass ich nur in der UCF Datei den 
IOSTANDARD = LVDS_25 setze...

Bei der Suche auf Xilinx.com habe nur wenig Erfolg gehabt, bzw. verstehe 
ich nicht für was ich einen Buffer erzeugen muss. Ausserdem werden dort 
auf Instanzen OBUF_LDVS, INV, und OBUF_LVDS zurückgegriffen. Kann die 
aber doch nicht einfach als Black Boxes instanzieren??

Bei den Pins in meienm Target habe ich aufgepasst dass ich auch zwei 
Paare benutze.
Bin mir auch nicht so wirklich sicher ob meine Hardware diesen Modus 
unterstützt. Das Datenblatt wiederspricht sich an einigen Stellen.

Vielen Dank im vorraus.

Autor: Ulk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michi,

so weit ich weis gibt es bei vielen neueren FPGAs PAD-Paare die dafür 
ausgelegt sind das zu machen was du willst.
Zum beispiel das:
   OBUFTDS_inst : OBUFTDS
   generic map (
      IOSTANDARD => "DEFAULT")
   port map (
      O => O,     -- Diff_p output (connect directly to top-level port)
      OB => OB,   -- Diff_n output (connect directly to top-level port)
      I => I,     -- Buffer input
      T => T      -- 3-state enable input
   );
könnte dir helfen.

Ist eine Vorlage von Xilinx im:VHDL\Device Primitive 
Instantation\FPGA\I/O Components\Output zu finden.

Ich weis von einem Kollegen das die Typen im Namen hinten ...DS heissen.
Leider gibt es die nicht für CPLDs, was mir helfen würde.

Gruß, Ulrich

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> XC3S400-4FT256C
Wenn es nicht unbedingt gleich ein Tristate LVDS-Ausgang sein muß:
   LVDSO_0 : OBUFDS
   generic map (IOSTANDARD => "BLVDS_25")
   port map ( I  => lvdsout0,
              O  => lvdsout0_p,
              OB => lvdsout0_n
   );
Und in der UCF Datei:
NET "lvdsout0_n"    LOC = "W9"   | IOSTANDARD = LVDS_25 ; 
NET "lvdsout0_p"    LOC = "V9"   | IOSTANDARD = LVDS_25 ; 

LVDS-Eingänge dann z.B. über:
   -- Takt
   LVDS_CLOCK : IBUFGDS
   port map ( O  => lvdsclkin,
              I  => lvdsclkin_p,
              IB => lvdsclkin_n
   );

   -- D0
   LVDS_0 : IBUFDS
   port map ( O  => lvdsin0,
              I  => lvdsin0_p,
              IB => lvdsin0_n
   );

Zur Simulation solltest du dann noch die Xilinx Primitives einbinden:
--  Xilinx Primitives
Library UNISIM;
use UNISIM.vcomponents.all;

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, hat gut geklappt.

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.