Selbstlaufende Clock im FPGA

Gast #1174992
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?
Gast #1175001
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.
Gast #1175034
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.
Gast #1175035
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.

?
Gast #1175637
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/
Gast #1176090
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.
Gast #1177368
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.
Gast #1177587
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
Gast #1177783
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?
Gast #1179690
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren