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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.