Forum: FPGA, VHDL & Co. FPGA basierter Time-to-Digital Converter


von Gast (Gast)


Lesenswert?

Hallo,

hat hier jemand schon einmal einen TDC in einem FPGA realisiert? Im Netz 
gibt es eine Menge Papers darüber, leider habe ich aber keinen VHDL-Code 
gefunden.

Viele Gruess,
Gast

von Gast (Gast)


Lesenswert?

Vielleicht einfach mal nachdenken und selber was schreiben ?

von Fpgakuechle K. (Gast)


Lesenswert?

TDC meint einen schneller Zähler, oder was soll konkret realisiert 
werden?

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


Lesenswert?

> hat hier jemand schon einmal einen TDC in einem FPGA realisiert?
Welche Zählfrequenz/Auflösung willst du denn?
Wie soll der ermittelte Digitalwert aufbereitet/ausgelesen werden?

von J. S. (Gast)


Lesenswert?

Gibt es eigentlich überhaupt irgendeinen Weg, es nicht! mit einem Zähler 
zu machen?

von Stefan Salewski (Gast)


Lesenswert?

>Gibt es eigentlich überhaupt irgendeinen Weg, es nicht! mit einem Zähler
>zu machen?

Der Trick ist wohl, irgendwie Gatterlaufzeiten zu verwenden -- die 
natürlich u.a. von Temperatur und Versorgungsspannung abhängen.

von Gast (Gast)


Lesenswert?

Ja, also die Idee ist, die Gatterlaufzeit zum Messen zu verwenden. Man 
sollte damit im pico-Sekunden Bereich Messungen machen können..

von Purzel H. (hacky)


Lesenswert?

In VHDL ? Soll das ein Witz sein ? Der Compiler wird kaum 100 Inverter 
hintereinander generieren. Allenfalls schaft man das mit schematischer 
Eingabe und Deaktivierung aller Optimierungen. Richtig ist, dass die 
Zeiten temperaturabhaengig sind, was sich mit einem Peltier unten dran 
loesen liesse.

von Christian R. (supachris)


Lesenswert?

Geht auch in VHDL, bei Xilinx hilft das Attribut KEEP oder 
NOREDUCE...aber schön ist das nicht, eher in Richtung Bastelmurks. Zumal 
man bei jedem Routingdurchlauf etwas andere Laufzeiten rausbekommt.....

von Falk B. (falk)


Lesenswert?

Selbst wenn man das Ganze mit handplatzierten Gattern und 
Temperaturkompensation macht, schön wird es nicht. Sowas ist eine 
klassische Domäne eines echten ASICs. Die DLLs habe solche Gatterketten, 
drin, die sind auch temperaturkompensiert (über einen schlauen 
Algorithmus). Zeitauflösung um die 40ps. Diverse PWM ICs, bzw. 
Mikrocontroller wie z.B der Piccolo von TI haben das auch drin, 
letzterer mit AFAIK 150ps Auflösung. Für sowas nimmt man einen fertigen 
IC, alles Andere ist nur akademische Spielerei.

MfG
Falk

von Antti Lukats (Gast)


Lesenswert?

es ist machtbar ganz gut in FPGA wenn weiss wie man es macht
zb einen langen "carry chain" durch ganzes chip benutzen

Antti

von Uwe Bonnes (Gast)


Lesenswert?

In Veröffentlichungen zur Instrumentierung in der Kernphysik findet man 
des öfteren FPGA basierte TDC. Googeln nach "TDC FPGA" bringt schon 
einige Treffer. Allerdings habe ich noch keinen HDL Code oder ähnliches 
dazu gesehen. Über die Sinnhaftigkeit läßt sich auch streiten.

von Hagen R. (hagen)


Lesenswert?

>Über die Sinnhaftigkeit läßt sich auch streiten

Wieso ? Denken wir uns mal ein Laser-Entfernungsmeßsystem. Der FPGA 
erzeugt sowohl das gesendete Signal und verarbeitet auch das empfangene 
Signal. Somit interessiert nur der TDC relativ zu ausgesendetem und 
empfangem Signal. Zur Aussenwelt hin gibt der FPGA die Absolutzeit und 
die ist nur abhängig von der Genauigkeit der Taktreferenz des FPGAs.

Gruß Hagen

von Helmut L. (helmi1)


Lesenswert?

So was gibt es auch fertig

http://www.acam.de/products/time-to-digital-converters/

Gruss Helmi

von Stefan Salewski (Gast)


Lesenswert?

>So was gibt es auch fertig

Ja sicher, die Frage war ja ob man das mit einem FPGA nachmachen kann.

Wobei ich allerdings nur zwei Hersteller kenne, Acam und

http://www.msc-ge.com/de/produkte/elekom/sensors/msc_tdc/1686-www.html

von Gast (Gast)


Lesenswert?

"Alle, setzen sechs!"

Bisher kam hier nur unqualifiziertes Rauschen und keiner ist so richtig 
auf meine Frage eingegangen. Anstatt mal ehrlich zu schreiben, "nein, so 
etwas habe ich noch nicht realisiert" oder "ich habe keine Ahnung", 
schreibt Ihr hier nur Käse!

Ich versuche mal, die Frage zu konkretisieren, vielleicht kann mir ja 
noch jemand weiterhelfen..

Wie kann man denn dem Router/Optimierer in VHDL sagen, daß er nur 
bestimmte Gatterelement auf dem FPGA verwenden soll? Also zum Beispiel 
das kritische Signal nur durch einen Carry-Chain routen soll?

Ich habe mal auf ner Messe mit einem Vertreter von acam.de gesprochen, 
die haben so etwas schonmal auf nem FPGA getestet, der konnte mir aber 
verständlicherweise keine Sourcen geben.

Vielen Dank schon einmal für eine konkrete Antwort!

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


Lesenswert?

> keiner ist so richtig auf meine Frage eingegangen.
Weil deine Frage an sich natürlich schon irre exakt formuliert war.
Wer undefiniert frägt, bekommt undefinierte Antworten.   :-/
> schreibt Ihr hier nur Käse!
Wer nach Käse frägt, bekommt Käse.


Ich habe sowas noch nicht gemacht, und weiß zudem nicht wie gut du 
dich mit FPGAs auskennst, aber hier mein Senf zum Thema:

> Wie kann man denn dem Router/Optimierer in VHDL sagen
Das wird über Attribute und Constraints gesteuert.

> Also zum Beispiel das kritische Signal nur durch einen Carry-Chain
> routen soll?
Helfen dir evtl. LOC-Constraints weiter?

Du könntest einen Slice oder Teile davon auch manuell instatiieren, und 
bekommst so Zugriff auf die Anschlüsse und Konfigurationsmöglichkeiten.

von Christian R. (supachris)


Lesenswert?

Xilinx bietet viele der Slice-Elemente auch als instanziierbare Teile 
an. LUTs sind auf jeden Fall dabei. Über das LOC Attribut kannst du 
festlegen, welche genau du haben möchstest. Dann kannst du noch über das 
KEEP Attribut festlegen, dass bestimmte Signale nicht in andere Function 
Blocks gezogen werden. Damit kannst du eine Kette durch den ganzen Chip 
aufbauen, wenn du möchtest.

Ah, Lothar war wieder schneller. Naja.

von berndl (Gast)


Lesenswert?

> "Alle, setzen sechs!"
da du ja so superschlau bist, mach's doch einfach selber und frag' hier 
nicht bloed rum!

von Hagen R. (hagen)


Lesenswert?

Ich habe sowas schon ganz konkret gemacht, Laserentfernungsmessung in 
10ps Auflösung. Aber Sourcen geben kann ich dir nicht und darüber reden 
auch nicht.

Vielleicht hilfts dir ja weiter das du nun weist das ich sowas schon 
gemacht habe.

> schreibt Ihr hier nur Käse!

Jo, jetzt stimmt deine Beleidigung auch.

von Uwe Bonnes (Gast)


Lesenswert?

@Hagen:

Kannst Du etwas mehr Infos geben?
- Hast Du das in einem FPGA realisiert? Welche Familie?
- Wie handhabst Du Temperaturaenderungen und Bauteiletoleranzen
- Was kannst Du und noch verraten?

Danke

von AlteraQuäler (Gast)


Lesenswert?

>Ich habe sowas schon ganz konkret gemacht,
me too

>Laserentfernungsmessung in 10ps Auflösung.
laser distance measurement @3ps / 20GHz resolution

>darüber reden auch nicht.
Hast nun aber, ich habe es daher meinem Chef gegenüber nochmal angeregt, 
dies nochmal konkret patentieren zu lassen, wobei wir da schon eins 
haben.

Die Lösung der zeitvarianten Messung im ps-Bereich wurde im Übrigen mit 
Altera zusammen erarbeitet.

von Fpgakuechle K. (Gast)


Lesenswert?

Gast schrieb:
> "Alle, setzen sechs!"

> Wie kann man denn dem Router/Optimierer in VHDL sagen, daß er nur
> bestimmte Gatterelement auf dem FPGA verwenden soll? Also zum Beispiel
> das kritische Signal nur durch einen Carry-Chain routen soll?

http://www.xilinx.com/itp/xilinx10/books/docs/cgd/cgd.pdf p.110

In VHDL sagen is nich da wiring resources architekturspez..


Arbeite an deinen Umgangsformen!

von Lupinus Digitalus (Gast)


Lesenswert?

Servus miteinander,

ich habe diese Ansätze auf einem Lattice Seminar mit einen der FAE's 
diskutiert und dieser hatte zwei Ansätze parat:

1, Verwendung der internen Carry Chain
Durch die festverdrahteten Routing Resourcen hat man immer 
gleichbleibende Delays zwischen den Elementen, damit hat man nur noch 
die Einflüsse auf das Timing durch Spannung und Temperatur. Damit sollte 
eine Auflösung von ca. 60 ps machbar sein, wobei das Signal natürlich 
auch in den Chip rein muss.

2, Verwendung der High Speed SERDES Blöcke
Die seriellen Empfänger der ECP3 Familie scheinen auch auf den 
Referenztakt synchronisieren zu können. Damit schafft man dann eine 
Auflösung von 300 ps ohne Klimmzüge machen zu müssen.

Zumindest die zweite Lösung wurde laut dem FAE schon in Hardware 
getestet und funktioniert.

Vielleicht sprichst Du mal jemanden von Lattice darauf an.

Gruss

Lupi

von Kritischer (Gast)


Lesenswert?

>, Verwendung der internen Carry Chain
> Durch die festverdrahteten Routing Resourcen hat man immer
> gleichbleibende Delays zwischen den Elementen,

Das stimmt nicht, allein prozesstechnologisch unterscheiden sich 
einzelne Transistoren schon im Bereich 1ps von FPGA zu FPGA. Das ist 
alles nicht determinisisch.

von Entwickler (Gast)


Lesenswert?

Kann man es nicht so machen, dass man irgendeine Kette baut, mit 
Toleranzen etc., und die dann einfach regelmäßig kalibriert? Evtl. auch 
zwei oder mehr identische Systeme von denen eins immer kalibriert wird 
während die anderen scharf sind? Und bei mehreren Systemen einen 
Durchschnittswert berechnet?

Sollte doch (wie immer) irgendwie möglich sein. Der Trick liegt (wie 
immer) nur im cleveren Ansatz.

von Kolja Sulimma (Gast)


Lesenswert?

>so etwas gibt es auch fertig:
Es gibt auch einige deutsche Hersteller von solchen Geräten.
Wir bauen z.B. TDCs als Einsteckkarten:
http://cronologic.de/products/time_measurement/

Außerdem gibt es noch Becker-Hickl (sehr hohe Auflösung, aber auch sehr 
teuer)
http://www.becker-hickl.de/products_new.htm

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.