FPGA basierter Time-to-Digital Converter

Gast #1441489
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.
#1441801
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.
#1441990
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
Gast #1442254
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.
#1442306
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
Gast #1442864
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!
Moderator (Firma: Titel) Persönliche Seite #1442948
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.
#1442952
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.
#1443015
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.
Gast #1443213
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.
Gast #1443652
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!
Gast #1445460
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
Gast #1445914
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.
Gast #1446582
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.

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