Artikel-ID: 000073672 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 11.09.2012

Können PLLs für TX und RX mit dem SPI 4.2 Kern in Stratix IV GX ES-Geräten freigegeben werden?

Umgebung

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Beschreibung

Ja, PLLs können mit der Altera® SPI 4.2 MegaCore-Funktion® in Stratix® IV GX-Geräten freigegeben werden. Die PLL-Weitergabe mit dem SPI 4.2 Kern zwischen Übertragung (TX) und Empfang (RX) ist für Stratix IV GX ES komplizierter als andere FPGA Geräte.

Die ALTLVDS-Megafunktion des SPI 4.2-Kerns für Stratix IV GX ES unterstützt keine interne Freigabe von PLL für Tx und Rx. DPA Misallignment dauert deutlich länger als erwartet, um die optimale Phase auszuwählen. Dies führt zu einer nicht idealen Phase und führt zu Datenbitfehlern, selbst nachdem das DPA-Lock-Signal bestätigt wurde. Das Zurücksetzen der DPA-Schaltung löst auch dieses Problem aus.

Um die PLL-Freigabe zu aktivieren, folgen Sie bitte den folgenden Schritt-für-Schritt-Einstellungen:

1. Überprüfen Sie im Register Parametereinstellungen der AltLVDS-Megafunktion "Externe PLL verwenden"

2. Deaktivieren Sie in den Frequenz/PLL-Einstellungen der AltLVDS-Megafunktion die Option "Shared PLL(s) für Empfänger und Sender verwenden"

3. Überprüfen Sie "Enable PLL Calibration" (PLL-Kalibrierung aktivieren) im Register "3. DPA-Einstellungen" der AltLVDS-Megafunktion.

4. Führen Sie den Megawiärd-Plug-in-Manager aus und erstellen Sie eine ALTPLL-Megafunktion. Wenden Sie die entsprechende Gerätegeschwindigkeitsstufe und Takteingabefrequenz entsprechend der Systemkonfiguration an. Wählen Sie Left_Right PLL

4-1. Wählen Sie im Register PLL-Neukonfiguration unter "Dynamische Phasenkonfiguration" "Optionale Eingänge für die dynamische Phasenkonfiguration erstellen"

4-2. Geben Sie im Register Output Clocks - clk c0 die Ausgabe-Taktfrequenz ein (den schnellen Takt, der mit LVDS-Datenrate läuft). Diese Uhr wird rx_inclock und tx_inclock füttern. Setzen Sie die Phasenumschalttaste = -180 Grad in Bezug auf den VCO-Takt. Setzen Sie den Arbeitszyklus auf 50 %. Wählen Sie "Diese Takteinstellungen für die DPA-Uhr verwenden"

4-3. Geben Sie im Register Output Clocks - clk c1 die "turboput"-Taktfrequenz (schneller Takt/Deserialisierungsfaktor) ein. Füttern Sie diese Taktfrequenz an tx_enable und rx_enable. Setzen Sie den Phasenwechsel auf [(Deserialisierungsfaktor - 2) / Deserialisierungsfaktor] * 360 Grad. Arbeitszyklus auf einstellen (100 / Deserialisierungsfaktor)

4-4. Geben Sie im Register Output Clocks - clk c2 die Ausgabe-Taktfrequenz (schneller Takt/Deserialisierungsfaktor) ein. Füttern Sie diesen Taktausgang an rx_syncclock. Setzen Sie den Phasenwechsel auf (-180-Degress/Deserialisierungsfaktor). Arbeitszyklus auf 50 % einstellen

Figure 1 

Abbildung 1 PLL zu LVDS-Taktungsschema

5. Änderungen an den SPI4.2 Rx-Kernmodulen vornehmen

5-1. Ersetzen Sie bei _rx_core.v die Instanziierung des _rx_data_phy_altlvds durch die folgende Instanziierung:

_rx_data_phy_altlvds rx_data_phy_altlvds (

.pll_areset(pll_areset),
.pll_phasedone(Phasedone),
.rx_cda_reset ({lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset}),
.rx_channel_data_align (Bitslip),
.rx_enable(rx_enable),
.rx_fifo_reset ({lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset}),
.rx_in(rx_in),
.rx_inclock(rx_inclock),
.rx_reset ({lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset}), 2 Eingabe [16:0],
.rx_syncclock(rx_syncclock),
.dpa_pll_cal_busy(dpa_pll_cal_busy),
.pll_phasecounterselect(phasecounterselect),
.pll_phasestep(Phasestep),
.pll_phaseupdown (Phaseupdown),
.pll_scanclk(Scanclk),
.rx_dpa_locked(stat_rd_dpa_lvds_locked),
.rx_out(rx_out_serdes);

5-2. In .v (SPI4.2 Rx Core Wrapper), fügen Sie die folgende Instanziierung ein:

_pl4_rx_core _pl4_rx_core_inst (

...

.rx_inclock(rx_inclock),
.rx_enable(rx_enable),
.rx_syncclock(rx_syncclock),
.dpa_pll_cal_busy(dpa_pll_cal_busy),
.phasecounterselect(phasecounterselect),
.phasestep(phasestep),
.phaseupdown(Phaseupdown),
.scanclk(scanclk),
.phasedone(phasedone),

...);

6. Ändern Sie das SPI4.2 Tx Kernmodul:

6-1. Ersetzen Sie bei _tx_core.v die Instanziierung des _tx_data_phy_altlvds durch die folgende Instanziierung:

_tx_data_phy_altlvds tx_data_phy_altlvds (

.tx_enable(tx_enable), 2,35 .tx_enable tx_enable tx_enable
.tx_in(tx_in_i), 2.tx_in tx_in_i
.tx_inclock(tx_inclock),
.tx_coreclk(tx_coreclk),
.tx_out(tx_out),.tx_out.tx_out
.tx_outclock (tx_outclock) );;

6-2. In .v (SPI4.2 Tx Core Wrapper), fügen Sie die folgende Instanziierung ein:

_pl4_tx_core _pl4_tx_core_inst (

...

.trefclk(trefclk),
.tx_enable(tx_enable),
.tx_coreclk(tx_coreclk),

... );

7. Der SPI4.2-Empfänger ALTLVDS rx_out Bus-Ausgabe mit rx_outclock registriert werden.

8. Der SPI4.2-Sender ALTLVDS tx_in Bus bei tx_coreclock vorregistriert werden.

9. Invertieren Sie die freigegebene PLL-Lock-Ausgabe und füttern Sie sie an pll_areset Port der AltLVDS-Megafunktion.

Zugehörige Produkte

Dieser Artikel bezieht sich auf 1 Produkte

เอฟพีจีเอ Stratix® IV GX

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.