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?
> Müssen da noch irgendwelche Constraints gesetzt werden?
auf jeden Fall, sonst kommt nur Müll rüber.
NET "GTX_CLK" TNM_NET = "CLK"; TIMESPEC "TS_clk" = PERIOD "CLK" 125 MHz HIGH 50 %; Dann wird ISE automatisch eine GCLK PIN waehlen.
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.
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
@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!!!
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
Hat funktioniert, Oszi dran und passt. Vielen Dank!!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.