differential signal output

Gast #1211695
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.
Gast #1211703
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
Moderator (Firma: Titel) Persönliche Seite #1211771
Lesenswert?
• ▲
▼
> XC3S400-4FT256C
Wenn es nicht unbedingt gleich ein Tristate LVDS-Ausgang sein muß:
1
   LVDSO_0 : OBUFDS
2
   generic map (IOSTANDARD => "BLVDS_25")
3
   port map ( I  => lvdsout0,
4
              O  => lvdsout0_p,
5
              OB => lvdsout0_n
6
   );
Und in der UCF Datei:
1
NET "lvdsout0_n"    LOC = "W9"   | IOSTANDARD = LVDS_25 ; 
2
NET "lvdsout0_p"    LOC = "V9"   | IOSTANDARD = LVDS_25 ;

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

8
   -- D0
9
   LVDS_0 : IBUFDS
10
   port map ( O  => lvdsin0,
11
              I  => lvdsin0_p,
12
              IB => lvdsin0_n
13
   );

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren