Forum: FPGA, VHDL & Co. Gigabit PHY Takt auf Spartan 3A DSP 1800A rausführen


von Thomas M. (faustus)


Lesenswert?

Hallo!

Ich habe ein Spartan 3A DSP 1800A Board und möchte gerne das Gigabit Phy 
in Betrieb nehmen. Der Gigabit Phy benötigt auf dem Pin GTX_CLK ein 
125MHz Taktsignal. Der Pin selbst ist mit dem FPGA verbunden, der 
wiederum mit einem 125MHz Oszillator betrieben ist.

Kann mir jemand sagen, wie ich diesen 125MHz Takteingang auf den Pin 
lege, der GTX_CLK treiben soll? Eine einfache Zuweisung xxx <= yyy wird 
vermutlich nicht funktionieren oder?
Müssen da noch irgendwelche Constraints gesetzt werden?

von dose (Gast)


Lesenswert?

> Müssen da noch irgendwelche Constraints gesetzt werden?

auf jeden Fall, sonst kommt nur Müll rüber.

von Uwe Bonnes (Gast)


Lesenswert?

NET "GTX_CLK" TNM_NET = "CLK";
TIMESPEC  "TS_clk" = PERIOD "CLK" 125 MHz HIGH 50 %;

Dann wird ISE automatisch eine GCLK PIN waehlen.

von Thomas M. (faustus)


Lesenswert?

Uwe Bonnes schrieb:
> NET "GTX_CLK" TNM_NET = "CLK";
> TIMESPEC  "TS_clk" = PERIOD "CLK" 125 MHz HIGH 50 %;
>
> Dann wird ISE automatisch eine GCLK PIN waehlen.


Sind GCLK Pins nicht als Clock Input gedacht? GTX_CLK muss ein Output 
sein.

von Thosch (Gast)


Lesenswert?

Moin,

da habe ich Thomas anders verstanden:
(korrigier mich, wenn ich falsch liege)

Der Takteingang vom PHY ist mit einem normalen I/O-Pin des FPGA 
verbunden, der als Output den Takt an den PHY liefern soll.

Das FPGA bekommt an einem GCLK-Pin den 125 MHz-Takt von einem Oszillator 
geliefert.

Es geht darum, wie der im FPGA vorhandene Takt an den Ausgangspin 
gelangt

Soweit meine Zusammenfassung der Fragestellung von Thomas.

-->
Um einen Takt, der FPGA-Intern auf einem BUFG(MUX) getriebenen Taktnetz 
liegt sauber und jitterarm mit definiertem Timing auf einen Output zu 
bekommen, gibts eigentlich nur eine Lösung:

Instanziiere ein ODDR2 für den Taktausgangs-Pin:

Die Takteingänge C0 und C1 werden an den internen Takt angeschlossen;
C0 direkt, C1 invertiert.
R(eset) und S(et) auf GND legen.
Die Dateneingänge werden fest verdrahtet: D0 auf VCC, D1 auf GND.

Das ODDR2 schaltet somit bei jeder steigenden Taktflanke den Ausgang auf 
D0 = High, bei jeder fallenden Taktflanke auf D1 = Low und repliziert 
somit den internen Clock mit reproduzierbarem Timing an den 
Ausgangs-Pin.

Gruß,
Thorsten

von Thomas M. (faustus)


Lesenswert?

@Thosch:

Ja genau, das habe ich gemeint.

Ich weiß zwar nicht was ein ODDR2 ist, aber das werde ich mit Google 
noch herausfinden.
Werd das morgen dann gleich ausprobieren und hoffen, dass das dann auch 
funktioniert.

Danke!!!

von Thorsten S. (thosch)


Lesenswert?

Schau mal hier:

Spartan-3A and Spartan-3A DSP Libraries Guide for HDL Designs
Dokument UG613: spartan3a_hdl.pdf
im ISE-Installationsverzeichnis unter: doc\usenglish\isehelp\

VHDL Instantiation Template
1
Library UNISIM;
2
use UNISIM.vcomponents.all;
3
4
-- ODDR2: Output Double Data Rate Output Register with Set, Reset
5
-- and Clock Enable.
6
-- Spartan-3A
7
-- Xilinx HDL Libraries Guide, version 12.1
8
9
ODDR2_inst : ODDR2
10
generic map(
11
  DDR_ALIGNMENT => "NONE", -- Sets output alignment to "NONE", "C0", "C1"
12
  INIT => 0, -- Sets initial state of the Q output to ’0’ or ’1’
13
  SRTYPE => "SYNC") -- Specifies "SYNC" or "ASYNC" set/reset
14
port map (
15
  Q => Q,   -- 1-bit output data
16
  C0 => C0, -- 1-bit clock input
17
  C1 => C1, -- 1-bit clock input
18
  CE => CE, -- 1-bit clock enable input
19
  D0 => D0, -- 1-bit data input (associated with C0)
20
  D1 => D1, -- 1-bit data input (associated with C1)
21
  R => R,   -- 1-bit reset input
22
  S => S    -- 1-bit set input
23
);
24
25
-- End of ODDR2_inst instantiation


Stichwort ist "Clock Forwarding"

Siehe auch im Spartan-3 Generation User Guide
http://www.xilinx.com/support/documentation/user_guides/ug331.pdf
S. 114 ff
S. 140

Siehe auch hier: http://www.xilinx.com/support/answers/35032.htm
Dort ist genau die von mir im letzten Posting vorgeschlagene Lösung mit 
dem ODDR2 beschrieben.
Das ist zwar für Spartan 6, aber genauso auch auf Spartan 3A anwendbar.


Gruß,
Thorsten

von Thomas M. (faustus)


Lesenswert?

Hat funktioniert, Oszi dran und passt.

Vielen Dank!!!

von Thorsten S. (thosch)


Lesenswert?

Gern geschehen.
Danke Dir für die Rückmeldung :)
(die bekommt man leider nicht von jedem ...)

Gruß,
Thorsten

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.