www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Clock für sekundären Mikrocontroller aus FPGA?!


Autor: arno nyhm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin relativ neu auf dem Gebiet der FPGA-Programmierung und habe in 
einem Design ein Spartan-3-Derivat, nebst einem ATmega128, sitzen... Der 
Spartan-3 wird mit maximaler Geschwindigkeit (und Oszillator nach 
Appnote) betrieben - nun frage ich mich, ob es nicht sinnvoll wäre, das 
Clock-Signal (16MHz) für den AVR mittels des FPGAs zu realisieren - um 
mir so weitere Bauteile für den ATmega128 zu sparen.
Die beiden müssen nicht synchron getaktet sein o.ä., hauptsache der AVR 
bekommt stabile 16MHz, keine erweiterten Anforderungen... Die 
Kommunikation zwischen dem FPGA und diesem Controller läuft ohnehin 
asynchron.

Wie gehe ich denn bzgl. des Clock-Signals am besten vor? Einfach einen 
Modulo-n-Zähler aufbauen und auf einen beliebigen Ausgangspin das FPGAs 
legen? Oder gibt es elegantere Lösungen? ...das ganze Clockmanagement 
beim Spartan habe ich noch nicht wirklich durchschaut.

Ich danke für jeden Hinweis
Sascha

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der Spartan-3 wird mit maximaler Geschwindigkeit
> (und Oszillator nach Appnote) betrieben
Die maximale Geschwindigkeit eines FPGA-Designs hängt erst in zweiter 
Linie vom Baustein ab. In erster Linie begrenzt dein Design die 
Taktfrequenz.

> Wie gehe ich denn bzgl. des Clock-Signals am besten vor? Einfach einen
> Modulo-n-Zähler aufbauen und auf einen beliebigen Ausgangspin das FPGAs
> legen?
Ich würde das so machen. Und auf jeden Fall den Ausgangstakt 
registrieren (also als letztes Glied ein FF setzen), damit der 
garantiert glitchfrei ist.

> ...das ganze Clockmanagement
> beim Spartan habe ich noch nicht wirklich durchschaut.
Das ist eigentlich nur für Singale/Takte innerhalb des FPGAs 
interessant. Natürlich kann man mit DCMs und externen Loops auch 
Laufzeiten auf der LP korrigieren, aber das ist in deinem Fall unnötig.

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre zu beachten, dass der Takt erst da ist, wenn der FPGA geladen ist.
Manchmal kann das stören, dass der Prozessor erst dannn anläuft.

Autor: Plapperer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sinnvollerweise verwendet man den 16MHz Clock des AVR fuer den 
Taktgenerator des FPGAs.

Autor: arno nyhm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Hilfe!

Den Oszillator des AVRs zur Takterzeugung zu nutzen ist natürlich die 
beste Idee - so benötige ich gar keinen zusätzlichen Quarzoszillator als 
Taktgeber, sondern nur einen schnöden Quarz und eben den im AVR 
integrierten Oszillator.
Der Spartan-3 hat ja PLL und wasweißich-noch-alles (nützliches für genau 
diesen Zweck) integriert, ich muss mir das direkt einmal im Detail 
ansehen; jedenfalls scheint dieser Ansatz optimal, danke!

Beste Grüße
Sascha

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
arno nyhm schrieb:
> Danke für Eure Hilfe!

> Der Spartan-3 hat ja PLL und wasweißich-noch-alles (nützliches für genau
> diesen Zweck) integriert, ich muss mir das direkt einmal im Detail
> ansehen; jedenfalls scheint dieser Ansatz optimal, danke!

Nein, der Spartan 3 hat keine PLL, nur DCMs mit DLL für die Delays. Du 
kannst aber andere Frequenzen aus deinem AVR-Takt erzeugen, das geht.

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nein, der Spartan 3 hat keine PLL, nur DCMs mit DLL für die Delays.

Na, dann lies dir mal die Beschreibung der DCM mal etwas genauer durch.
Ich habe die dort vorhandenen PLL-Dinger bisher gut gebrauchen können.
Gute Besserung!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd G. schrieb:
>> Nein, der Spartan 3 hat keine PLL, nur DCMs mit DLL für die Delays.
>
> Na, dann lies dir mal die Beschreibung der DCM mal etwas genauer durch.
> Ich habe die dort vorhandenen PLL-Dinger bisher gut gebrauchen können.
> Gute Besserung!

Eine PLL ist aber was anderes als der DFS im DCM. PLL gibts beim Spartan 
6 und Virtex 5 dann. Die Funktionsweise ist allerdings ähnlich. Den DCM 
mit dem DFS und der DLL nutze ich ebenfalls täglich.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm...mag der Atmega es, wenn sein Reset schon freigegeben ist und noch 
kein Takt anliegt? Eventuell sollte der FPGA dann auch die Gewalt über 
den Reset bekommen....

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PLL - eine Definitionsfrage. Ich sehe das im Spartan 3 verbaute Teil 
nach landläufigem Verständnis als PLL an. Der Mitlaufbereich mag nicht 
unendlich groß sein. Technisch gesehen ist die DFS aber eine 
PLL-Schaltung.
Was sonst?

Autor: Plodderer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Clock des AVR zapft man mit einem 74SZ04 ab dem Pin XTAL2 an. Dazu 
muss man den Oszillator des AVR auf grossen Amplitude stellen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Technisch gesehen ist die DFS aber eine PLL-Schaltung. Was sonst?
Na, eine Digital Locked Loop eben   :-o
Dazu die XAPP174:
As shown in Figure 2, the fundamental difference between the PLL and DLL 
is that instead of a delay line, the PLL uses a voltage controlled 
oscillator, which generates a clock signal that approximates 
the input clock CLKIN.

Autor: Michael Sauron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu bachten wäre noch, das du mit den 16 Mhz keinen DCM benutzen kannst, 
die fangen erst bei 18 Mhz an zu arbeiten. Also kannst du deinen Takt 
nicht erhöhen, und bei nur 16 Mhz langweilt sich der Spartaner mit 
sicherheit.

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Lothar Miller: Bisher war es mir eigentlich Wumpe, ob die PLL als 
Oszillator einen VCO oder einen Laufzeitgenerator hat, aber danke - 
jetzt weiß ich es :-).

@ Michael Sauron: UG 331, Tabelle 3.8 - ganz so ist es nicht. Wenn die 
DFS
allein benutzt wird, darf CLKIN_FREQ_FX_MIN beim S3 auf 1 MHz 
runtergehen, beim S3A und S3E sogar bis auf 200 kHz!
Die von dir genannten 18 MHZ (Tabelle 3.10) gelten für den DLL-Betrieb 
des S3. Bei den Derivaten S3A und S3E lese ich aus Tabelle 3.9 den Wert 
von 5 MHz heraus.

So, jetzt habe ich dem Oberlehrer in mir aber mal freien Lauf gelassen.

Autor: Michael Sauron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich war bisher immer der Meinung das zu einer Frequenzverdopplung der 
PLL zwingend notwendig ist. Lässt sich wirklich nur mit dem DFS ein 10 
Mhz Signal auf ein 20 Mhz Signal verdoppeln ?

> Bei den Derivaten S3A und S3E...
Ich bezog mich auf den "original" S3

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Lässt sich wirklich nur mit dem DFS ein 10
Mhz Signal auf ein 20 Mhz Signal verdoppeln ?

Ja. Warum benutzt du das Ding nicht, sind doch üblicherweise vier Stück 
und mehr davon drin (beim 3S50... weiß ich es derzeit nicht genau, ob es 
da bloß zwei gibt).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.