Forum: FPGA, VHDL & Co. Rekonfigurierbare PLL mit Mikrocontroller steuern (ALTERA)


von Andre K. (round_one)


Lesenswert?

Hallo zusammen!

Ich bin gerade dabei mich in das Thema "PLL Rekonfiguration" 
einzuarbeiten.
Es geht darum einen Prozess mit unterschiedlichen Geschwindigkeiten zu 
taken.
Es ist zwar nicht wichtig, dass dies zur Laufzeit passiert, da ich aber 
immer wieder gelesen hab, dass Clock-Multiplexing eine Philosophie für 
sich ist und viele Probleme birgt, habe ich mich für diesen Weg 
entschieden.
Da im Datenblatt dazu aber immer nur die Rede von externen RAMs ist, 
wollte ich mich hier mal umhören, ob schon jemand das gleich mit einem 
externen Controller gemacht hat, der die Daten in die Scan Chain des 
FPGAs geschrieben hat.
Ich verwende einen Cyclone III.

von Björn B. (elmo)


Lesenswert?

Hallo Andre,

ich hatte mal, allerdings sehr rudimentär, die PLL Rekonfiguration durch 
einen Nios2 gesteuert. Zwischen PLL und Nios2 saß ein ALTPLL_RECONFIG 
Block:

www.altera.com/literature/ug/ug_altpll_reconfig.pdf

Die Ansteuerung dieses Blocks gestaltet sich relativ übersichtlich.

Gruß
Björn

von Björn B. (elmo)


Angehängte Dateien:

Lesenswert?

So sieht das bei mir in Quartus aus. Hier ein kurzer Ausschnitt vom 
Nios2 Code:
1
    IOWR_8DIRECT(PIO_PLL_DYN_ADC_RESET_BASE, 0x0, 1); // Reset
2
    IOWR_8DIRECT(PIO_PLL_DYN_ADC_RESET_BASE, 0x0, 0);
3
4
    IOWR_8DIRECT(PIO_PLL_DYN_ADC_COUNTER_TYPE_BASE, 0x0, 4); // Adresse fuer c0
5
    IOWR_8DIRECT(PIO_PLL_DYN_ADC_COUNTER_PARAM_BASE, 0x0, 0); // Adresse fuer High Counter
6
    IOWR_8DIRECT(PIO_PLL_DYN_ADC_DATA_BASE, 0x0, val); // Setze Low Counter auf val
7
8
    IOWR_8DIRECT(PIO_PLL_DYN_ADC_WRITE_PARAM_BASE, 0x0, 1); // strobe write param
9
    IOWR_8DIRECT(PIO_PLL_DYN_ADC_WRITE_PARAM_BASE, 0x0, 0); // strobe write param
10
    while(IORD_8DIRECT(PIO_PLL_DYN_ADC_BUSY_BASE,0)); // wait for transmission finish

von Andre K. (round_one)


Lesenswert?

Hey Björn!

Danke für deine Antwort!
Da ich bislang noch nichts mit Nios2 gemacht hab (liege ich richtig 
damit, dass das ein Controller auf SW-Basis ist?) kann ich nicht soo 
viel mit dem Code anfangen. Aber wenn der sequentiell abgearbeitet wird 
versteh ich schon was gemacht wird.
Also könnte man doch, wenn man die Eingänge der altpll_reconfig0 auf die 
HW-Pins des FPGAs legt, von außen in gleicher Weise einen µC 
anschließen, der dann die Config-Signale bereitstellt bzw. sendet, oder?

von Björn B. (elmo)


Lesenswert?

Andre K. schrieb:

> Da ich bislang noch nichts mit Nios2 gemacht hab (liege ich richtig
> damit, dass das ein Controller auf SW-Basis ist?)
Genau. Das ist der Softcore von Altera.

> Also könnte man doch, wenn man die Eingänge der altpll_reconfig0 auf die
> HW-Pins des FPGAs legt, von außen in gleicher Weise einen µC
> anschließen, der dann die Config-Signale bereitstellt bzw. sendet, oder?

Richtig ;-)

von Andre K. (round_one)


Lesenswert?

Wunderbar, dann wird das auch so gemacht :)
Bzw. versuche ich erst mal das Ganze zu simulieren. Denn da hängt's 
immer noch. Da hab ich noch keine Ahnung wieso ich dem c0 keinen Takt 
entlocken kann.. Ich hab das "pll_reconfig und pll - Konstrukt" nach 
Datenblatt - relativ ähnlich wie bei dir - aufgebaut und versuche das 
jetzt mit MultiSim zu testen. Du weißt nicht noch zufällig wo sich da 
mögliche Tretminen verstecken könnten?

von Andre K. (round_one)


Lesenswert?

.. ich meine natürlich ModelSim.. ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.