www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Welcher Oszilator für FPGA?


Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich demnächst bei Reichelt bestelle wollte ich mir auch gleich mal 
einen alternativen Ozillator fürmein FPGA Board holen, bin aber etwas 
unsicher ob man da einfach die "Standard" Kästchen nehmen kann? Im 
Userguide steht leider nur, das jeder 8-Pin Oszilator "vom Sockel 
aktzeptiert wird, welcher dort reinpaßt" und das man auf Pin 1 achten 
soll...

Bevor ich jezt was kaputt spiele wollt ich mal nachfragen ob es auser 
"paßt in den Sockel" noch andere Anforderungen an die Taktquelle für den 
FPGA gibt?

Autor: Bernd G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh mal an Pin 8 nach, welche Spannung du für den Oszillator brauchst -
3,3 oder 5 V.

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

Bewertung
0 lesenswert
nicht lesenswert
> welche Spannung du für den Oszillator brauchst
Alternativ: Sieh im Datenblatt vom FPGA nach, welche Eingangsspannung am 
CLK-Pin auftauchen darf.

Du solltest eher mit einer niedrigen Frequenz ins FPGA fahren, höhere 
Frequenzen machst du auf dem FPGA mit DCM, DLL & Co.
Ich halte die externe Taktfrequenz (wegen Störstrahlung) unter max. 
50MHz.

Die restlichen Anforderungen (Temperaturstabilität, Jitter, Rauschen) 
definiert deine Anwendung.

BTW:
> den FPGA
heißt korrekt:
das Feldprogrammierbare Gate-Array

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also auf dem Board ist ein Oszilator mit 50Mhz drauf (Spartan 3A 
Starter).
Es ist nur so das ich aktuell ein Design habe was laut 
Synthese/Place&Route max 38Mhz verträgt :-\

Schaltplan ist estwas undurchsichtig scheint aber 5V zu sein, werd ich 
nochmal nachmessen.

Hab auch überlegt die DCM zu nutzen um mir 25Mhz zu erzeugen aber die 
Vielzahl an Möglichkeiten hat mich etwas abgeschreckt da ich bisher mit 
DCMs noch nix gemacht habe.

Und natürlich das FPGA :)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der Spartan hat nix mit 5V. Ich glaub der hat nicht mal 5V 
tolerante IOs. Nur 38MHz? Was ist das denn für ein komisches Design? 
Alles asynchron und das FPGA total voll? Das kann ja bald nicht normal 
sein. Hast du mal mit Timing Contraints gearbeitet? Gib ihm doch vor, 
dass es mit 50MHz laufen soll, dann versucht er es zu optimieren. Beim 
Spartan 3 sind aber bei ordentlichen synchronen Designs Frequenzen von 
weit über 100Mhz drin. Es darf halt nicht so viel Kombinatorik zwischen 
2 Registern sein, mal ganz einfach gesprochen.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.xilinx.com/products/devkits/HW-SPAR3A-S...

Also laut Userguide hat der 3.3V, 5V und eine Einstellbare Spannung für 
den ADC sowie 5V tollerante Eingänge.

Das "Design" ist ne Nachbau CPU(32bit) aus dem Buch "Structured Computer 
Organisation", das Problem dort ist, das die Register/Speicher auf der 
steigenden Flanke geschrieben und auf der fallenden gelesen werden (dann 
gehts durch die ALU etc...) dadurch rduziert sich ja schonmal die 
Taktrate.
Hatte aber sowieso noch nen (logischen) Fehler drinn, jezt hab chs 
wieder auf 50Mhz hochgebracht:
Timing Summary:
---------------
Speed Grade: -4
   Minimum period: 19.652ns (Maximum Frequency: 50.885MHz)
   Minimum input arrival time before clock: No path found
   Maximum output required time after clock: 5.531ns
   Maximum combinational path delay: No path found
Sicher könnte man da noch optimieren indem man nicht 50:50 duty-cycle 
nimmt aber das spar ich mir mal für dann auf wenns einigermaßen 
zuverlässig funktioniert :)

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

Bewertung
0 lesenswert
nicht lesenswert
> das die Register/Speicher auf der steigenden Flanke geschrieben
> und auf der fallenden gelesen werden
Toller Murks :-/
Dann weiß ich schon mal, welches Buch ich nicht kaufen werde.

Autor: bko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lothar Miller
>> das die Register/Speicher auf der steigenden Flanke geschrieben
>> und auf der fallenden gelesen werden
>Toller Murks :-/
>Dann weiß ich schon mal, welches Buch ich nicht kaufen werde.

Halt halt, nicht vorschnell Urteilen, ich denke  das gilt nur
für FPGAs, da macht es wohl keinen Sinn beide Taktflanken zu verwenden, 
aber bei ASICs kann man durch Ausnutzen beider Taktflanken Strom
sparen. Macht aber das Design  aufwändiger.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, auch beim CoolRunner II kann man damit jede Menge Strom sparen. 
Allerdings ist da sicher noch irgendwo was im argen. Übrigens diese 
Meldung nach der Synthese ist nicht ernst zu nehmen. Wichtig ist, was 
nach Implement Design rauskommt. Mir zeigt der beim Spartan 3e auch 
44,6MHz an, am Ende schafft er aber problemlos 100MHz nach dem 
Implement.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit den Unterschiedlichen FLanken mache ich zur Zeit nur um erstmal 
ein lauffähiges Beispiel zu bekommen, letztendlich kann wahrscheinlich 
alles was auf der negativen Flanke geschieht einfach als Concurrent 
Anweisung abgehandelt werden...
Die Beschreibung in dem Buch ist halt nicht auf FPGAs ausgelegt sondern 
eine Theoretische Beschreibung.
Hab das vieleicht etwas mißverständlich ausgedrückt, also auf der 
steigenden Flanke werden die Werte in die Register übernommen (kurzer 
Puls), auf der fallende Flanke werden diese dann der Alu zur Verfügung 
gestellt also etwa so:
  _            _
_| |__________| |_________
Das habe ich erstmal so übernommen (mein Takt hat halt nur 50:50), 
wengleich das sicher nicht nötig ist da in einem Prozess ja eh sich der 
Zustand eines Signals während der Ausführung nicht ändert, ich wollte 
aber wie gesagt jezt nicht an 10 Stellen debuggen sondern erstmal eine 
Lauffähige Version erstellen.
Ich hatte auch im Design noch ein Register zuviel von daher hats eh 
nicht das gemacht was es sollte, es ist also möglich das ich noch den 
ein oder anderen "BUG" drinne habe :)

@Christian R:
Ich kann irgenwie immer beim Implement nicht finden wo die "reale" 
Taktrate angegeben wird, aber so lange er nicht meckert das die Timing 
Contraints nicht eingehalten werden hoff ich mal das das so in etwa 
hinkommt ;)

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

Bewertung
0 lesenswert
nicht lesenswert
> Halt halt, nicht vorschnell Urteilen,...
Ja, gut.
Ich habe das auch schon gemacht für die Ankopplung eines SRAMs, aber 
gleich eine ganzes Design?

> Ich kann irgenwie immer beim Implement nicht finden wo die "reale"
> Taktrate angegeben wird
Statische Timinganalyse heißt das Zauberwort.
Es gibt  Post Place Static Timing  und  Post Routing Static Timing
Dort wird dir z.B. auch der kritische Pfad angegeben, der die 
Taktfrequenz beschränkt.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jezt alles auf die Postive Flanke umgeschrieben, die große 
Verbesserung hat es jezt nicht gebracht.
Post Place&Route sagt mir minimum period 19.993ns und der Kritische Pfad 
liegt irgnewo zwischen der UART Ausgabe und dem BlockRAM, also 50Mhz 
gerade noch so erreicht.
Ich werd einfach mal noch etwas probieren ob ich noch was rausholen 
kann.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du die 50MHz als Constrain vorgegeben? Wenn ja, dann hört der auf 
zu optimieren, sobald er die 50MHz erreicht hat, also bei knapp unter 
20ns. Wenn du wissen willst, was das Design schafft, musst du mal 100MHz 
oder 150 oder so vorgeben, und schauen, wo er dann landet, wenn er sagt, 
dass er die Vorgabe nicht einhalten kann. Und dann gibts da ja eh noch 
massig Stellschrauben in den Optionen von Synthese, Place und Route. Da 
kann man im Ernstfall noch viel machen. Wenn das Design relativ schnell 
durchläuft und er die 50MHz schafft, ist aber noch Luft. Wenn´s knapp 
wird merkt man das an einem hohen Timing-Score (die Zahl in der Klammer 
bei "xx Unrouted (......)") wenn da in der Klammer eine hohe Zahl steht, 
hatte er massive Probleme beim Routen des Signals. Auch die Anzahl der 
Durchläufe sagt etwas über das Timing aus. Wenn´s eng wird, braucht der 
einige Routing-Durchläufe mehr, geht dann manchmal bis 20...25 oder 
sowas hoch und es dauert Stunden...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht nicht mehr ganz zum Thema passend, aber Xilinx hat eine 
Application Note darüber, wie die Eingänge vom z.B. Spartan 3 mit 
5V-Signale betrieben werden können.

Xilinx schlägt hierzu tatsächlich Vorwiderstände vor, um den Stromfluss 
über die internen Schutzdioden auf ca. 1mA zu begrenzen.

Grüße
Gast

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist bei meinem Board auch so geregelt für das 5V LCD Display.

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.