Eine quellensynchrone Eingabeschnittstelle ist auf ähnliche Weise eingeschränkt wie eine systemsynchrone Eingabeschnittstelle. Der FPGA empfängt eine Uhr und verwendet diese Taktfrequenz, um die Eingabedaten zu riegeln. In einer quellensynchronen Schnittstelle, die mit der Mitte ausgerichtet ist, erfolgt der Taktwechsel in der Mitte des gültigen Datenfensters. Abbildung 1 zeigt eine quellensynchrone Eingangsschnittstelle für die Quelle.
Gehen Sie wie folgt vor, um eine mit der Mitte ausgerichtete quellesynchrone Eingabeschnittstelle einzuschränken:
- Virtuelle, Basis- und generierte Taktfrequenzen erstellen
- Eingabeverzögerungsbeschränkungen hinzufügen
- Hinzufügen von Ausnahmen für falscher Pfad, um ungültige Pfade aus der Zeitablaufanalyse und -berichterstattung
Weitere Informationen zu einem dieser Schritte oder den unten beschriebenen Berechnungen und Beschränkungen finden Sie unter AN 433: Constraining and Analyzing Source-Synchronous Interfaces (PDF).
Verinnung
Ein virtueller Takt modelliert den Takt im externen Gerät, der die Datenregister steuert, um Daten an den FPGA zu übertragen.
Am Eingangsport des FPGA ist ein Basistakt erforderlich. Der Basistakt beschreibt die Takteigenschaften beim Takteingang des FPGA. Wenn der Eingabe-Takt mit der Mitte an den Daten ausgerichtet ist, muss Sie die Option -waveform verwenden, um die ansteigenden und fallenden Taktkanten anzugeben, die der Taktphasen-Verschiebung entsprechen.
Generierte Taktfrequenzen sind bei allen PLL-Ausgängen (Phase-Locked-Loop) erforderlich.
Eingabeverzögerungsbeschränkungen
Sie können eine maximale schiefe Spezifikation verwenden, um Eingabeverzögerungswerte zu berechnen. Die maximale Schiefenspezifikation bezeichnet die zulässige Zeitveränderung für einzelne Bits eines Datenbus, um zum FPGA zu gelangen.
Der Wert der maximalen Verzögerung der Eingabe ist der maximale Schrägwert.
Der Wert der minimalen Verzögerung der Eingabe ist der maximale Schrägwert.
Ausnahmen von falschem Pfad
In diesem mit dem Mittelpunkt ausgerichteten Beispiel werden Daten bei Rise-Rise- und Fall-Fall-Quellen- und Ziel-Taktübergängen übertragen. Verwenden Sie False-Path-Ausnahmen, um Rise-Fall- und Fall-Rise-Taktübergänge zu reduzieren, da Daten nicht auf Übergänge mit Gegenüber-Edge-Takt übertragen werden.
SDC-Beispieldatei
# Erstellen Sie eine virtuelle Uhr, um den Datentakt in der Nummer des externen Geräts zu beschreiben. create_clock -name virt_clk-Periodennummer 10 # Erstellen Sie einen Basis-Takt auf dem Eingabeport des FPGA, mit einer 10-ns-Periodennummer und einer 90-Grad-Phasenverlagerung, da die Schnittstelle mit der Mitte create_clock -name input_clock -period 10 -waveform { 2.5 7.5 } [get_ports clk_in] # Erstellen Sie generierte Taktfrequenzen für die PLL-Ausgänge create_generated_clock -name data_clock -source [get_pins pll|inclk[0]] \ [get_pins pll|clk[0]] Anzahl maximal hinzufügen und mindeste Eingabeverzögerungsbeschränkungen#, unter der Annahme, dass eine Schiefanforderung von +/- 250ps # besteht, verwenden Sie die Gleichungen für die eingangs aufgeführten Verzögerungswerte set_input_delay -max -clock virt_clk 0,250 [get_ports data_in*] set_input_delay -min -clock virt_clk -0,250 [get_ports data_in*] set_input_delay -max -clock virt_clk -clock_fall \ 0,250 [get_ports data_in*] -add set_input_delay -min -clock virt_clk -clock_fall \ -0.250 [get_ports data_in*] -add Anzahl Hinzufügen von Ausnahmen für Fehlpfade bei Cross-Clock-Übertragungen set_false_path -setup -end -rise_from [get_clocks virt_clk] \ -fall_to [get_clocks data_clock] set_false_path -setup -end -fall_from [get_clocks virt_clk] \ -rise_to [get_clocks data_clock] set_false_path -hold -end -rise_from [get_clocks virt_clk] \ -rise_to [get_clocks data_clock] set_false_path -hold -end -fall_from [get_clocks virt_clk] \ -fall_to [get_clocks data_clock]