mikrocontroller.net

Forum: FPGA, VHDL & Co. Selbstlaufende Clock im FPGA


Autor: wago (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe folgendes Problem:

Ich habe ein kleines FPGA, welches nur passive Schaltfunktionen 
realisiert. Es arbeitet quasi voll kombinatorisch. Ich möchte nun mit 
dem ChipsScope Logic Analyzer diese Funktionen beobachten und brauche 
eine Clockfunktion. Leider habe ich aufgrund der Layoutverdrahtung keine 
Möglichkeit, einen externen Clock einzuspeisen. Kann ich mir den intern 
irgendwie erzeugen, oder braucht ein DCM immer eine Quelle?
Wie könnte man das machen?

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man kann sich über einen ringoszillator, also einer inverterkette, einen 
takt generieren (genaue umsetzung jetzt mal aussen vor gelassen). um 
sich daraus einen definierten takt einzustellen benötigt man aber 
eigentlich immer einen externen referenztakt. auch sonst ist der interne 
Takt unter umständen (bausteinabhängig) nicht konstant sondern schwankt 
in gewissen grenzen, da die Signallaufzeit in LUTs nicht konstant ist.

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

Bewertung
0 lesenswert
nicht lesenswert
> Ich möchte mit dem ChipsScope Logic Analyzer diese Funktionen beobachten
Da möchte ich mal bezweifeln, ob Chipscope das richtige für diese 
Aufgabe ist. Denn alle deine Signale sind irgendwie asynchron zu dem 
generierten Takt.

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, er kann mit chipscope dann nicht die wirklichen schaltflanken 
sehen, sondern nur die zustände zu bestimmten zeitpunkten, welche vom 
takt vorgegeben werden. aber ist doch schonmal mehr als garnix. und wenn 
der takt schnell genug ist kann man vielleicht auch den ein oder anderen 
zeitkritischen zustand beobachten.

Autor: wago (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, aber ich kann es entsprechend schnell abtasten - das passt schon.
Die Signale wechseln dort z.T. nur mit 1-2 MHz. Ich muss wissen, was 
nach bestimmten Triggern passiert. Das FPGA bekommt Reaktionen von der 
Restelektronik zurück, die ich einschätzen will. Mir würden sogar schon 
5-10 MHz Abtastgenauigkeit reichen.

Jetzt habe ich schon wieder ein Neues PRoblem: Mit dem Coregen habe ich 
einen DCM erzeugt, welcher laut Xilinx in ../Xilinx/10.1/ISE abgelegt 
wurde. Dort ist aber nichts ausser vielen Verzeichnissen.

?

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
als info, ne DCM hilft dir ohne externen Takt nicht weiter, den musst du 
schon selbst generieren.
eine DCM erzeugt kein Takt aus dem nichts.

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

na eigentlich KANN ein DCM selber signal generieren :)
bitte das Xilinx demo design fur s3e frequenz zahler
da ist ein DCM basierenderes oscillator dabei..
es hat jedoch eine make, der braucht zum starten nahmlich
einen anderen oscillator der ein paar KICK pulsen macht.

aber es gibt viele andere moglich keiten den clock
intern zu erzeugen

ich habe da ganz viele unterschiedliche getestet, sind
manchmal ganz gut brauchbar

werde hoffentlich bald auch freigeben diese oscillator
designs

Antti
http://www.microfpga.com/

Autor: wago (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hätte jetzt gedacht, dass man einfach den 270grad Ausgang, der ja 
druch Abtasten der hochgetakteten Zwischenfrequenz entsteht, auf den 
Eingang zurückführen muss und eine skew von 90grad einstellt. Dann sieht 
der Eingang immer das passende Signal, welches effektiv zeitverzögert 
ist und damit sich nicht sofort verlöschen kann. 180 Grad gehen meines 
Erachtes nicht, weil er dann nicht anschwingt, bzw man aufgrund der 
Verzögerungen der Phasen kein 100% sauberes 180 Gradverhältnis 
hinbekommt.

In elementarer Hardware geht das jedenfalls so!

Freq_Out == (4 * Freq_In) / 4
Phas_Out == Phas_In + 180
         == Phas_In + 270 - 90
         == Phas_In (4*Freq_in @ 270) - (X + Delay)

mit (X + Delay) = 90.

90 ist die zu ertielende skew, X die dafür nötige Verzögerung.


Ich meine das so:

Phase   Takt_In    Skewed     Takt_Out270
1.000   Out(t-540) Out(t-450) Out(360) = 0.000
1.090   Out(t-450) Out(t-360) Out(270) = 0.090
1.180   Out(t-360) Out(t-450) Out(180) = 0.180
1.270   Out(t-270) Out(t-360) usw.
2.000   Out(t-180) Out(t-270) usw.
2.090   Out(t- 90) Out(t-180)
2.180   Out(t-  0) Out(t- 90)
2.270                                    1.270
3.000                                    2.000

Die PLL muss also effektiv genau einen Takt Verzögerung produzieren, 
dass die Rückkopplung spät genug kommt, um der PLL vorne wieder einen 
unabhängigen voll in Phase befindlichen Takt vorzugaukeln, damit das 
einschwingen kann. Die Frage ist halt nur, ob die Zwischenfrequenzen die 
über die Multiplier entstehen, da auch mit einem Taktimpuls sauber 
mitmachen und ob das mit einem Xilinx DCM geht. Wahrscheinlich muss man 
dazu die interne Kompensation abschalten.

Probiert habe ich das, allerdings ohne Ergebnis. Irgendwie sind diese 
DCMs keine richtigen PLLs, wie mir scheint.

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nenee so geht es nicht!

bit nicht so versuchen, !! das Xilinx dcm_fixed_oscillator.vhd
ansehen!

und besser uberhaupt andere losungen benutzen

Antti

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was mit echter flexiböer Hardware geht, muss mit einem FPGA noch lange 
nicht gehen.

Autor: genau so (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist so schwierig daran, an einem externen Pin, bevorzugt den eh 
reservierten Clockpin ueber ein Kaebelchen einen Clock einzuspeisen ?

Autor: Antti Lukats (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
wenn ein internes clock aus-reicht macht kein sinn kabel zu loten ;)

Xilinx benutzt selber auch fabric ring-oscillatoren..

Antti

Autor: bko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dies habe ich mal beim Stöbern auf einem Xilinx Forum gefunden:

http://forums.xilinx.com/xlnx/board/message?board....

Der fünfte Beitrag dort verweist auf einen Frequenzzähler der
einen offiziellen Xilinx-VHDL-Code für einen Ringzähler mit ein
paar LUTs enthält.

Vielleicht hilft das was.

Autor: bko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verzeihung, aber es sollte nicht "Ringzähler" sondern
    "Ringoszillator" heisen.

Also so:
Der fünfte Beitrag dort verweist auf einen Frequenzzähler der
einen offiziellen Xilinx-VHDL-Code für einen Ringoszillator mit ein
paar LUTs enthält.

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ja eben das design was ich schon fruher als beispiel 
vorgeschlagen habe ;)


da ist auch das DCM oscillator dabei,
das DCM oscillator habe ich glaube auch auf S3A getestet
muss man aber viel selber spielen, sonst ist es nur fur s3e
benutztbar

Antti

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was ist so schwierig daran, an einem externen Pin, bevorzugt den eh
>reservierten Clockpin ueber ein Kaebelchen einen Clock einzuspeisen ?
Wenn man nicht drankommt....

>muss man aber viel selber spielen, sonst ist es nur fur s3e
>benutztbar
Was waere zu tun für z.B. den S3A?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"da ist auch das DCM oscillator dabei,"

Der benötigt noch einen externen Anstosstakt. Könnte man dazu so einen 
Ringoszillator nehmen, der die Takte generiert und der nach 
erfolgreicher LOCK sich vom Ring-Oszi trennt?

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja kann man schon, habe ich auch getan so,


Antti

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.