Forum: FPGA, VHDL & Co. Unterschied IOBM/IOBS Xilinx OBUFDS Problem


von 1660ES (Gast)


Lesenswert?

Hallo, vielleicht kann mir hier jemand weiterhelfen. Ich habe das 
folgende Problem:

Ich brauche an meinen Xilinx Virtex 5 ein differentielles clock 
Ausgangssignal.

Im VHDL Code versuche ich dies über ein OBUFDS zu erzeugen:
1
   AD9952_CLK_BUF : OBUFDS
2
   generic map (
3
      IOSTANDARD => "LVDS_25")
4
   port map (
5
      O => AD9952_CLK_IN_p,     -- Diff_p output (connect directly to top-level port)
6
      OB => AD9952_CLK_IN_n,   -- Diff_n output (connect directly to top-level port)
7
      I => SysClock_125       -- SysClock_125      -- Buffer input 
8
   );

Der Code ist im Top Modul und AD9952_CLK_IN_p und AD9952_CLK_IN_n sind 
Output Ports vom Typ STD_LOGIC.

Mein Constrains File für die beiden Ports sieht folgendermaßen aus:
Net AD9952_CLK_IN_p LOC = AK13;
Net AD9952_CLK_IN_p IOSTANDARD=LVDS_25;
Net AD9952_CLK_IN_n LOC = AK24;
Net AD9952_CLK_IN_n IOSTANDARD=LVDS_25;

Die restlichen belegten Pins an dieser Bank sind vom Typ LVCMOS25. Laut 
Datasheet kann man gleiche Logiclevel mischen.

Während des Mappings bekomme ich immer die folgende Fehlermeldung:

ERROR:Pack:1107 - Unable to combine the following symbols into a single 
IOBM component:
PAD symbol "AD9952_CLK_IN_p" (Pad Signal = AD9952_CLK_IN_p)
BUFINV symbol "AD9952_CLK_BUF/OBUFDS" (Output Signal = AD9952_CLK_IN_p)
An IO component of type An IO component of type IOBM was chosen because 
the
IO contains an true differential buffer symbol.
Each of the following constraints specifies an illegal physical site for 
a
component of type IOBM:
Symbol "AD9952_CLK_IN_p" (LOC=AK13 [Physical Site Type = IOBS])
The component type is determined by the types of logic and the 
properties and configuration of the logic it contains. Please double 
check that the types of logic elements and all of their relevant 
properties and configuration options are compatible with the physical 
site type of the constraint.
Please correct the constraints accordingly.
(das gleiche nochmal für  AD9952_CLK_IN_n)

1) Ich hoffe jemand kann mir sagen was ich in meinen Contraints File 
falsch mache
2) Ich habe schon einige Xilinx Dokumente durchgeschaut aber keine klare 
Antwort gefunden: Kann es sein das nur ganz bestimmte Bank Typen
    ein OBUFDS erlauben?

Sollte es Relevanz haben - ich verwende ISE 10.1.03

von Jan M. (mueschel)


Lesenswert?

Ein differentielles Signal kannst du nur an vorgegebenen Pin-Paaren 
ausgeben. Bist du sicher, dass AK13 und AK24 ein solches Paar sind?

von 1660ES (Gast)


Lesenswert?

@Jan M .
Nein bin mir da leider nicht sicher... -- macht aber irgend wie Sinn. 
Kannst Du mir vielleicht ein Tipp geben in welchen Datasheet ich bei 
http://www.xilinx.com/support/documentation/virtex-5.htm informationen 
finden kann welche Möglichkeiten eine bestimmte Bank hat - ich habe wie 
gesagt leider nichts gefunden.

von 1660ES (Gast)


Lesenswert?

Kann ich das vielleicht aus den Package Files: 
http://www.xilinx.com/support/packagefiles/virtex-5-pkgs.htm rauslesen?

z.B.
AL13  6  IO_L3P_6
AK13  6  IO_L3N_6

wären differenziell ---

AK13  6  IO_L3N_6
AK24  6  IO_L4P_6

leider nicht...

von Jan M. (mueschel)


Lesenswert?

Genau, die differentiellen Ausgaenge haben jeweils den gleichen Namen, 
einmal mit P (positive) und einmal mit N (negative).


(Nur am Rande: Lattice markiert die Pins mit T (true) und C 
(complementary). Dort braucht man auch keinen speziellen output buffer 
zu instantiieren, es reicht, das positive Signal anzuschliessen und den 
Modus auf LVDS zu stellen)

von 1660ES (Gast)


Lesenswert?

Merci - hat mir sehr weitergeholfen!

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.