Moin, für einen Time-to-Digital Converter möchte ich ein Delay-Element erzeugen mit möglichst minimalem Delay (~Auflösung). Ich überlege wie sich das am intelligentesten lösen lässt. Man könnte zwei Inverter hintereinander schalten. Eine andere Möglichkeit wäre einen MUX rückzukoppeln. Gibt es noch andere, effizientere Möglichkeiten so etwas zu bewerkstelligen? Wie sähe ein entsprechender Code in Verilog aus? Ich finde überall nur Paper die allgemein einen Delay-Buffer angeben, aber nie eine konkrete Implementierung. Beste Grüße, Max
Dafür gibt es keine Implementierung. Du musst dies mit LUTs nachbilden und das ist von der Auflösung begrenzet, weil die nur 6 inputs haben. Für mehr musst Du Dir was überlegen.
Vielleicht eine blöde Idee, aber kann man dieses Delay nicht außerhalb des FPGA realisieren? FPGA und asynchrone Logik ist halt immer so eine Sache.
@ Max (Gast) >für einen Time-to-Digital Converter möchte ich ein Delay-Element Das wollten schon viele, aber als konfigurierbare Logik ist das alles nicht so gas Wahre. Denn man muss die Delay Line temperaturkompensieren etc. Das wird aufwändig. Solche Delay Lines stecken als festverdrahteter Funktionsblock in vielen FPGAs, z.B. den DCMs bei Xilinx oder den IO-Delay Blöcken. >erzeugen mit möglichst minimalem Delay (~Auflösung). Nimm eine LUT mit der Logikfunktion Y=X. Die muss man für das jeweilige FPGA als Primitive instanziieren und mittels spezieller Compileranweisungen (#pragma etc.) vor einer Wegoptimierung schützen.
Falk B. schrieb: > Die muss man für das jeweilige > FPGA als Primitive instanziieren und mittels spezieller > Compileranweisungen (#pragma etc.) vor einer Wegoptimierung schützen. Ein keep constraint / (bei vivado das don't touch) wäre das z.B. >TDC im FPGA Vor 10 Jahren war das vielleicht noch interessant, das per FPGA zu machen, aber die wenigen richtig guten Implementierungen sind unter NDA oder unter Patent. Alle anderen Lösungen, die ich da bisher gesehen habe, waren am Ende unvollständig und nichtsbringend. Zuviel Silizium und zuviel Geld und Platz für die Funktion. Es gibt TDC-Chips zu kaufen, die das locker leisten, kaskadiert und parallelisiert werden können und dann per FPGA gelesen werden können. Ein FPGA lohnt da nur, wenn die Anforderungen niedrig, der Platz gering und unbedingt ein FPGa für andere Dinge benötigt wird.
Weltbester FPGA-Pongo schrieb im Beitrag #4553154: > Ich brauche das für meine Bachelorarbeit um erstmal ein Konzept zu testen. Es geht daher um reine Funktionstests, perfekt muss das nicht sein. Ich denke mit den LUT's probieren ich das mal.
Man könnte sowas eventuell auch über die ISERDES aufbauen, oder mit einem GTP Receiver abtasten....ist aber alles ganz schönes Gefummel...
@Christian R. (supachris) > oder mit >einem GTP Receiver abtasten....ist aber alles ganz schönes Gefummel... DAS ist schon eine DEUTLICH bessere Idee!!! Aber wenn es zu Studienzwecken ist, kann man das auch per LUTs machen. Man lernt so oder so was dabei ;-)
Naja bei der Geschichte mit den Buffern und dem Keep Attribut lernt man dass das bei jedem Routing Durchlauf anders wird und dann auch noch extrem temperaturabhängig. Wir hatten sowas früher auch mal für die Verzögerung bei Phased Array Ultraschall in CPLDs aber war alles Murks. Mit den 90° versetzten Takten des DCM im FPGA geht das stabil.
Hier ein Link: Using Variable Delays in an FPGA... http://www.ti.com/lit/an/sbaa205/sbaa205.pdf ############################################ 3.1.1 Using Delay Elements An important consideration when using this scheme is the delay variation across process, supply voltage, and temperature. Also, ensure that timing is met at both minimum and maximum delay values. With these considerations in mind, using circuits such as delay-locked loops (DLLs) is preferable to generate delays that do not vary with process, supply voltage, and temperature. Many FPGAs have built-in DLL elements that can be used to provide delays within certain ranges (up to a few hundred picoseconds). Figure 3-1 shows a diagram of variable delays used in an FPGA. ------------------------------------------------------------------------ - 3.1.2 Using PLLs An alternate scheme for deriving a delayed bit clock makes use of a PLL with multiple delayed edges in each clock cycle. Figure 3-2 shows a case where eight equally-spaced clock edges are available within each bit clock cycle. In the receiver, additional logic is required for selecting the correct clock edge. The edge selection logic must run when the ADC interface initializes after power-up and when the bit clock output is stable. Figure 3-3 shows the timing of multiple phase clocks at the PLL output. Gruss Holger.
Max schrieb: > für einen Time-to-Digital Converter möchte ich ein Delay-Element > erzeugen mit möglichst minimalem Delay (~Auflösung). Definiere Auflösung. 500 ps gehen mit den ISERDES vom Spartan 6. Wenn es besser werden muss, nimmt man die Carry-Chain und die jeweils aktuellste Chipgeneration. (Kleinere Strukturbreite -> schneller) Außerdem wäre noch interessant, wieviele Kanäle Du brauchst. Da verbieten sich dann ggf. die GTPs aufgrund des Preises von alleine. > Ich finde überall nur Paper die allgemein einen Delay-Buffer angeben, > aber nie eine konkrete Implementierung. Such mal bei den Teilchenphysikern. Da wird inzwischen viel über time-of-flight gemacht. DESY, GSI und CERN haben definitiv Veröffentlichungen dazu. Duke
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.