Forum: FPGA, VHDL & Co. Ausgang vom OBUFDS auf Taktnetz setzen?


von guest (Gast)


Lesenswert?

Hallo,

ich habe ein LVDS-Paar als Eingang an einem Spartan3A und möchte das 
Ausgangssignal des IBUFDS gerne auf einem Taktnetz haben.

"CLK_DATA_IN" wäre hierbei das Signal was ich auf dem Taktnetz haben 
möchte, jedoch ist mir nicht klar ob oder wie das geht. Und den Ausgang 
erst wieder rauszuführen um ihn dann mit einem GCLK Pin zu verbinden 
kann ja irgendwie auch nicht die Lösung sein?

1
CLK__DATA_IN_BUFF : IBUFDS
2
   generic map (
3
      DIFF_TERM => FALSE, -- Differential Termination
4
      IBUF_DELAY_VALUE => "0", -- Specify the amount of added input delay for buffer, 
5
                               -- "0"-"16" 
6
      IFD_DELAY_VALUE => "0", -- Specify the amount of added delay for input register, 
7
                                 -- "AUTO", "0"-"8" 
8
      IOSTANDARD => "DEFAULT")
9
   port map (
10
      O => CLK_DATA_IN,    -- Buffer output
11
      I => CLK_DATA_IN_P,  -- Diff_p buffer input (connect directly to top-level port)
12
      IB => CLK_DATA_IN_N -- Diff_n buffer input (connect directly to top-level port)
13
   );

von guest (Gast)


Lesenswert?

Edit: Im Betreff sollte "IBUFDS" stehen..

von Christian R. (supachris)


Lesenswert?

Um auf ein Clock-Netzwerk zu kommen, brauchst du den IBUFGDS und 
eventuell einen BUFG dahinter.

von guest (Gast)


Lesenswert?

Hat soweit geklappt. Aber auch hier hätte ich wieder die Frage nach dem 
setzen der Constraints. Das "N" und "P" Signal sind ja hierbei die 
externen Signale, daraus wird mir dann ein Signal durch den IBUFGDS 
generiert. Dieses generierte Signal verwende ich z.B. zum ansteuern von 
FFs. Wie kann ich denn hierbei die PERIOD Constraints für das 
Ausgangssignal des IBUFGDS setzen? Oder funktioniert das, wie bei der 
DCM, von selbst bzw. durch das Werkzeug gesteuert?

von Christian R. (supachris)


Lesenswert?

Einfach so angeben:
1
NET "CLK_N" TNM_NET = "CLK_N";
2
TIMESPEC TS_CLK_N = PERIOD "CLK_N" 12.5 ns HIGH 50 %;
3
NET "CLK_P" TNM_NET = "CLK_P";
4
TIMESPEC TS_CLK_P = PERIOD "CLK_P" 12.5 ns HIGH 50 %;

von Duke Scarring (Gast)


Lesenswert?

So sollte es auch gehen:
1
NET "CLK_N" TNM_NET = "CLK";
2
NET "CLK_P" TNM_NET = "CLK";
3
TIMESPEC TS_CLK = PERIOD "CLK" 12.5 ns HIGH 50 %;

Duke

von Christian R. (supachris)


Lesenswert?

Geht natürlich auch. Meine Beispiele oben wurden vom PlanAhead erzeugt, 
der macht das für jeden CLK Pin einzeln. Es könnte ja auch ein 
asymmetrischer Quarzozillator sein, dann bräuchte der P meinetwegen 40% 
und der N 60% High.

von guest (Gast)


Lesenswert?

Jau danke, in der Art hatte ich das auch für meine erste clock (nicht 
differentiell) gesetzt. Ich hatte  die Bedenken, dass sich die 
Constraints dann nicht auf den Ausgang des IBUFGDS beziehen da ja die 
differentiellen Eingänge in den Constraints eingetragen sind.

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.