Lattice IceCube2 PLL-Usage

Gast #3412581
Lesenswert?

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
#3413508
Lesenswert?

AD schrieb:
> 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?)

Habe im ersten Moment eine Einheit hinter der Zahl vermisst, scheint 
aber so zu passen, da in deinem Clock Summary korrekt steht:

Clock: my_clk                         | N/A      | Target: 12.00 MHz   |


AD schrieb:
> Clock: uart_pll|PLLOUTCORE_inferred_clock  | Frequency: 142.73 MHz  |
> Target: 108.34 MHz  |

Beim Problem, dass der 108.34 MHz Zieltakt nicht dem entspricht, was du 
möchtest, kann ich dir leider nicht helfen.

Dass sich der Frequenzwert bei der Angabe "Frequency" ändert ist normal: 
Dieser gibt nähmllich an, wie schnell dein fertiges Design getaktet 
werden könnte. (Also sind es schlechte Nachrichten wenn "Frequency" 
kleiner als "Target" ist...)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren