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


von wago (Gast)


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?

von Nephilim (Gast)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Nephilim (Gast)


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.

von wago (Gast)


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.

?

von Nephilim (Gast)


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.

von Antti Lukats (Gast)


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/

von wago (Gast)


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.

von Antti Lukats (Gast)


Lesenswert?

nenee so geht es nicht!

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

und besser uberhaupt andere losungen benutzen

Antti

von Gast (Gast)


Lesenswert?

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

von genau so (Gast)


Lesenswert?

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

von Antti Lukats (Gast)


Angehängte Dateien:

Lesenswert?

wenn ein internes clock aus-reicht macht kein sinn kabel zu loten ;)

Xilinx benutzt selber auch fabric ring-oscillatoren..

Antti

von bko (Gast)


Lesenswert?

Dies habe ich mal beim Stöbern auf einem Xilinx Forum gefunden:

http://forums.xilinx.com/xlnx/board/message?board.id=ISE&thread.id=1516

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.

von bko (Gast)


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.

von Antti Lukats (Gast)


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

von Gast (Gast)


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?

von Gast (Gast)


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?

von Antti Lukats (Gast)


Lesenswert?

Ja kann man schon, habe ich auch getan so,


Antti

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.