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?
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.
> 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.
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.
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. ?
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.
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/
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.
nenee so geht es nicht! bit nicht so versuchen, !! das Xilinx dcm_fixed_oscillator.vhd ansehen! und besser uberhaupt andere losungen benutzen Antti
Was ist so schwierig daran, an einem externen Pin, bevorzugt den eh reservierten Clockpin ueber ein Kaebelchen einen Clock einzuspeisen ?
wenn ein internes clock aus-reicht macht kein sinn kabel zu loten ;) Xilinx benutzt selber auch fabric ring-oscillatoren.. Antti
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.
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.
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
>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?
"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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.