Mein SP601 Evaluierungsboard wird mit einem 2,5 V LVDS Differential 200 MHz Oszillator geliefert. Bisher habe ich nur die mit dem Board gelieferte Single-Ended-Clock verwendet. Ich habe Probleme mit der Formatierung der Benutzereinschränkungsdatei zur Verwendung der Differentialuhr. Folgendes habe ich bisher in meiner Benutzereinschränkungsdatei.
NET "clk_N" LOC = "K16"; ## 5 on U5 EG2121CA, 5 of U20 SI500D (DNP)
NET "clk_P" LOC = "K15"; ## 6 on U5 EG2121CA, 4 of U20 SI500D (DNP)
Was ich vorher hatte, als ich die Single-Ended-Clock benutzte, war:
NET "clk" LOC = "V10"; ## 5 on X2 USER OSC Socket
NET "clk" TNM_NET = "clk";
TIMESPEC "TS_clk" = PERIOD "clk" 37 ns HIGH 50%;
Welche Änderungen muss ich außerdem, nachdem ich die Uhr erfolgreich in meine Benutzereinschränkungsdatei aufgenommen habe, an meinem Code vornehmen, um von der Single-Ended-Uhr auf die differentielle Uhr umzuschalten? Ursprünglich habe ich ein Signal namens clk
, und ich triggere die steigende Flanke dieses Signals. Jetzt, da ich zwei Signale habe, scheint die Methode der steigenden Flanke nicht zu funktionieren. Soll ich ein neues Signal machen, das heißt clk_1
- clk_2
, wo clk_1
und clk_2
sind die beiden Differenzsignale? Ich weiß nicht, ob das Ändern meiner Taktquelle Auswirkungen darauf haben sollte, wie der Rest meines Codes geschrieben wird.
Was ich sagen will, ist, dass ich neu bei FPGAs bin und eine Vorstellung davon habe, wie differenzielle Signalisierung theoretisch funktioniert, aber ich bin mir nicht sicher, wie es in der Praxis funktioniert. Ich verwende VHDL.
Gehen Sie für Einschränkungen wie folgt vor:
NET "clk_P" LOC = "K15" | IOSTANDARD=LVDS_33; ## 6 on U5 EG2121CA, 4 of U20 SI500D (DNP)
NET "clk_N" LOC = "K16" | IOSTANDARD=LVDS_33; ## 5 on U5 EG2121CA, 5 of U20 SI500D (DNP)
NET "clk_P" TNM_NET = "clk";
TIMESPEC "TS_clk" = PERIOD "clk" 5 ns HIGH 50%;
Sie müssen nur die P-Seite gemäß http://www.xilinx.com/support/answers/57109.html einschränken . Stellen Sie sicher, dass Sie den richtigen IOSTANDARD erhalten. Vielleicht LVPECL_25, LVPECL_33, LVDS_25 oder LVDS_33, je nach Taktquelle. Siehe Xilinx UG381. Möglicherweise müssen Sie auch DIFF_TERM = TRUE zusammen mit IOSTANDARD festlegen, um den internen 100-Ohm-Differentialabschluss zu aktivieren. Überprüfen Sie das Platinenlayout/Schaltbild, um festzustellen, ob bereits ein diskreter Abschlusswiderstand vorhanden ist. In diesem Fall sollten Sie DIFF_TERM aus lassen oder DIFF_TERM = FALSE hinzufügen.
Dann müssen Sie ein IBUFGDS anstelle eines IBUFG instanziieren, vielleicht so etwas wie das:
IBUFGDS ibufg_inst (.I(clk_P), .IB(clk_N), .O(clk_ibufg));
BUFG bufg_inst (.I(clk_ibufg), .O(clk));
Verwenden Sie dann einfach clk wie zuvor. Wenn Sie ein DCM oder PLL verwenden, sollten Sie in der Lage sein, die DCM- oder PLL-Instanz zwischen IBUFGDS und BUFG zu platzieren.
mng
alex.forencich
mng
mng
alex.forencich
alex.forencich
Eugen Wu
alex.forencich
alex.forencich