Gast
#3412581
Hallo FPGA-Gemeinde, Ich sitze gerade an einem Projekt mit dem iCEStick Evaluation Kit von Lattice und habe einige Probleme mit der Benutzung der PLL. Habe mir für den Anfang ein einfaches UART-Modul geschrieben, dass auch sehr gut funktioniert, solange ich direkt die 12 MHz vom Quarz nehme. Da ich aber höhere Frequenzen benötige, brauche ich die PLL. IceCube2 stellt hierzu einen PLL-Generator bereit. Nach Instantiieren der PLL in meinem Top-Level und das hinzufügen von folgendem timing-constraint: create_clock -period 83.33 -name {my_clk} [get_ports {clk_in}] (Damit sag ich dem Programm eigentlich, dass es an dem Pin clk_in die 12 MHz-Clock zu erwarten hat, oder liege ich da falsch?) und den ganzen weiteren Schritten(Synthese,P&R,..) bekomme ich im Report folgenden Clock Summary: 1::Clock Frequency Summary ===================================================================== Number of clocks: 3 Clock: I9.uart_pll_inst/PLLOUTGLOBAL | N/A | Target: 100.50 MHz | Clock: my_clk | N/A | Target: 12.00 MHz | Clock: uart_pll|PLLOUTCORE_inferred_clock | Frequency: 142.73 MHz | Target: 108.34 MHz | Ich habe also eine Clock, nur leider ist die zu schnell und was ich vor allem nicht verstehe ist, dass der MHz-Wert variabel ist. Verändere ich ein paar Konstanten im Code,ändert sich auch der Wert. Liegts also am Code/Design? Hat schonmal wer mit IceCube2 gearbeitet und kann mir eventuell weiterhelfen? (für den Ice40 gibts leider keine Diamond-Unterstützung). Gibts irgendwelche Richtlinien/Tipps um das ganze sauber zu designen? Ich bin noch nicht recht erfahren auf dem ganzen Gebiet und bin für jede Hilfe dankbar, auch was Timing-Constraints etc. angeht. Vielen Dank schonmal für jegliche Hilfe, MfG, AD
