Die folgenden HPS-Peripherietakte können an die FPGA Logik geroutet werden:
- emac0_md_clk
- emac0_gtx_clk
- emac1_md_clk
- emac1_gtx_clk
- qspi_sclk_out
- spim0_sclk_out
- spim1_sclk_out
- i2c0_clk
- i2c1_clk
- i2c2_clk
- i2c3_clk
Aufgrund eines Problems in den Quartus II Softwareversionen 13.0 und höher kann Quartus® fit eine Fehlermeldung generieren, wenn diese Uhren direkt an einen externen FPGA-Pin angeschlossen sind. Im Folgenden finden Sie ein Beispiel für das spim1_sclk_out Signal, das an einen externen Pin angeschlossen ist:
Fehler (14566): 1 Peripheriekomponente(n) konnte aufgrund von Konflikten mit bestehenden Einschränkungen nicht platziert werden (1 automatisch heraufgestufter Takttreiber)
Fehler (175020): Illegale Einschränkung des automatisch heraufgestuften Uhrtreibers, der Teil Arria V/Cyclone V Hard Processor System ist ghrd_hps_0 der Region (92, 67) bis (183, 137): keine gültigen Standorte in der Region
Info (14596): Informationen zur fehlerhaften Komponente:
Info (175028): Der automatisch heraufgestufte Name des Uhrtreibers: ghrd:soc_inst|ghrd_hps_0:hps_0|ghrd_hps_0_fpga_interfaces:fpga_interfaces|spim1_sclk_out[0]~CLKENA
Weitere Informationen zu diesen Taktfrequenzen finden Sie im Abschnitt "Periphere FPGA Uhren" des Cyclone® V or Arria® V Device Handbook, Band 3: Hard Processor System Technical Reference Manual (http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf, Seite 27-12).
Um diese Fehlermeldungen zu vermeiden, muss das Taktsignal zunächst durch eine LUT geleitet werden. Dies kann erreicht werden, indem ein lcell_comb Primitiv instanziiert wird, das für Ihre Gerätefamilie geeignet ist. Im Folgenden finden Sie ein Beispiel für lcell_comb Verilog-Instanziierung für die Arria® V SoC spim1_sclk_out Uhr:
arriav_lcell_comb wirelut( .dataa(spim1_sclk_from_hps), .combout(spim1_sclk_to_pin) );
defparam wirelut.lut_mask = 64\'hAAAAAAAAAAAAAAAA ;
defparam wirelut.dont_touch = "ein";
Im obigen Beispiel ist das spim1_sclk_from_hps Signal mit dem spim1_sclk_out Ausgangsport der HPS-Instanz verbunden. Das spim1_sclk_to_pin Signal kann an den Top-Level-Ausgangsport angeschlossen und einem FPGA Pin zugewiesen werden.
Durch die Verwendung eines lcell_comb Primitivs werden Ressourcen minimiert. Durch die Verwendung einer kleinen abgeleiteten booleschen Kombinationsfunktion wird dieser Fehler ebenfalls vermieden. Durch die Verwendung der booleschen Funktion wird vermieden, dass ein Primitiv instanziiert werden muss, kann jedoch zu einer etwas höheren Ressourcennutzung führen.
Im Folgenden finden Sie ein Beispiel für einen Verilog-Code, der einen abgeleiteten booleschen Wert zeigt, der ebenfalls einen Fehler vermeidet, indem er den Taktgeber mit einem aktiven, niedrigen Reset-Signal AND-verknüpft (was zu einer abgeleiteten LUT-Instanz führt):
assign spim1_sclk_to_pin = spim1_sclk_from_hps & resetn;
Dieses Problem wurde ab Version 15.1 der Quartus® II Software behoben.