Forum: FPGA, VHDL & Co. Einfacher Buffer für eine Delay Line


von Max (Gast)


Lesenswert?

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

von Markus F. (Gast)


Lesenswert?

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.

von Stephan W. (swal)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

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.

von Max (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

Man könnte sowas eventuell auch über die ISERDES aufbauen, oder mit 
einem GTP Receiver abtasten....ist aber alles ganz schönes Gefummel...

von Falk B. (falk)


Lesenswert?

@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 ;-)

von Christian R. (supachris)


Lesenswert?

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.

von Holger (Gast)


Lesenswert?

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.

von Duke Scarring (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.