Forum: FPGA, VHDL & Co. Flanke in langer Variable suchen


von Beni (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem und habe keine gute Idee. Vielleicht könnt 
ihr mir helfen?

Gegeben sei eine lange Variable (> 100 bit). Diese enthält die 
Aufzeichnung eines Pulses. Beispielsweise kann das so aussehen:

000000000111111000000000000000000

Es ist immer nur ein Puls, d.h. zwei Flanken vorhanden.

Die Frage ist nun, wie kann ich die Position der Flanken in der Variable 
schnell bestimmen? In obigen Beispiel wäre die erste 1 auf Position 10.
Gesucht ist eine synthetisierbare digitale Logik.

Natürlich kann man das in Verilog oder VHDL mit for-Schleifen lösen. Das 
ist synthetisierbar und funktioniert, allerdings ist es langsam, selbst 
wenn man unabhängig von einem Takt arbeitet. Es müssen dazu unmengen 
LUTs hintereinander geschaltet werden, sodass sich bei einem ersten Test 
eine Durchlaufzeit von über 100 ns ergeben hat. Ich suche eine Lösung, 
die das schneller kann.

Vielleicht kennt einer einen Algorithmus?

Vielen Dank.

Grüße
Beni

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


Lesenswert?

Beni schrieb:
> Natürlich kann man das in Verilog oder VHDL mit for-Schleifen lösen. Das
> ist synthetisierbar und funktioniert, allerdings ist es langsam,
> selbst wenn man unabhängig von einem Takt arbeitet.
Das ist dann ja ein riesiger Prioritätsencoder und deshalb 
logischerweise kombinatorisch. Du könntest aber deinen Vektor in mehrere 
kleinere Abschnitte auftrennen und die parallel behandeln...

Und 32 Bits gehen in 20ns:
http://www.lothar-miller.de/s9y/archives/55-Finde-das-MSB.html

BTW:
Woher kommt denn diese "Variable"?
(Ich vermute und hoffe sehr, du verwendest hier den falschen Begriff...)

Könnte man die Flanken nicht direkt beim Einlesen erkennen?

Zum Thema VHDL und "Variablen" noch der 
Beitrag "Variable vs Signal"

von Beni (Gast)


Lesenswert?

Ja, das aufteilen ist wohl eine gute Idee.
Im Moment nutze ich eine for Schleife mit Abbruchbedingung, so wie du 
sie in deinen Beispielen auch angibst.

Es war mal ein Signal, ist nun aber tatsächlich eine Variable, also im 
Speicher so abgelegt.
Direkt einlesen geht leider nicht.
Das Ganze ist Teil einer hochauflösenden Zeitmesseinrichtung. Das Signal 
läuft durch eine Verzögerungskette und wird mit dem Taktsignal 
eingefroren.
Wollte man es direkt abtasten, um die selbe Auflösung zu erhalten, 
bräuchte man einen Takt mit 80 GHz.

Wenn das Teil mal ordentlich funktionieren sollte, kann ich das gerne 
detaillierter vorstellen. Im Moment sind noch zu viele Unbekannte 
enthalten.

Grüße
Beni

von amateur (Gast)


Lesenswert?

Ich würde die Suche in zwei bzw. drei Stufen aufteilen.
1. Suche in der maximalen, natürlichen Datenbreite (8, 16 oder 32 Bit).
   Ist bei der 8-Bit-Suche eine minimale Pulsbreite von 10 Bit zu
   aufzufinden, so braucht nur jedes zweite Byte durchsucht werden.
2. Wurde die erste Änderung gefunden, so kann, falls Mehrschrittsuche
   angewandt, die Suche, ab dieser Stelle im 1-er Raster rückwärts
   und/oder vorwärts gestartet werden.
3. Ab dieser Stelle muss dann Bitweise gesucht werden.

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


Lesenswert?

Eines noch: wie lang ist der High-Puls im Paket?

von Beni (Gast)


Lesenswert?

Der Puls ist 200 bit lang, bei einer Variablenlänge von 300 bit. 
Entspricht ca. 5 ns.
Insofern habe ich in meinem ersten Beitrag Mist geschrieben. Es kann 
auch nur eine Flanke zu sehen sein. Wenn man aber die Position der 
Flanke kennt, kann man leicht prüfen, ob es sich um eine steigende oder 
fallende Flanke handelt.  Demenstprechend ist die Zeitberechnung wieder 
korrekt, da die Pulsbreite nahezu konstant ist.

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


Lesenswert?

Beni schrieb:
> Der Puls ist 200 bit lang, bei einer Variablenlänge von 300 bit.
> Entspricht ca. 5 ns.
Dann würde ich gleich mal ein paar Häppchen untersuchen mit einer 
Abfrage, ob der Pegel am Anfang und Ende z.B. einer 20er-Sequenz gleich 
ist. Falls nicht, dann lohnt es sich, die weiter zu untersuchen.

Wie oft kommt so ein Paket rein?
Musst du das Ergebnis "sofort" haben, oder kannst du die Untersuchung 
auch pipelinen?

von Schlumpf (Gast)


Lesenswert?

Wenn ich dich richtig verstehe, interessiert dich nur die Position der 
steigenden Flanke des Pulses.
Und da der Puls 200 Bits breit ist und dein Betrachtungsfenster nur 300 
Bit, kann es also in dem Fenster immer nur EINE steigende Flanke geben.

Vielleicht reduziert das schonmal die Summe der Möglichkeiten.

Über ein XOR zweier Bits kannst du erkennen, ob dazwischen eine Flanke 
ist.
Durch Plausinilisierung mit einem der beiden Bits kann man erkennen, ob 
die Flanke steigend war.
Diese Logik sollte sehr klein und schnell abbildbar sein.

Die Positionen der beiden zu vergleichenden Bits sind einstellbar.

Zuerst prüfst du, ob zwischen Pos 0 und 150 die steigende Flanke ist.
Wenn ja, dann lädst du den Vergleicher mit neuen Positionen (75 und 
150), wenn nein, dann lädst du ihn mit (150 und 225) und vergleichst 
wieder.
So kannst du das Btrachtungsfenster immer halbieren und solltest nach 8 
Takten am Ziel sein.
Da die Logik eigentlich recht schlank ausfallen sollte, gehe ich davon 
aus, dass man diesen Algorithmus auch schnell takten kann.
Ob du damit deine Anforderungen erfüllen kannst, weiss ich allerdings 
nicht

von Schlumpf (Gast)


Lesenswert?

Ach ja, setzt natürlich voraus, dass die Pause zwischen den Pulsen nicht 
zuu winzig ist ;-)

von Beni (Gast)


Lesenswert?

@Lothar
Deine Frage habe ich, glaube ich nicht ganz verstanden. Es ist so, dass 
der Puls immer gleiches Aussehen und gleiche Länge hat.
Mitteln zwischen mehreren Pulsen geht nicht. Ich brauche die 
Zeitinformation für jeden Puls.



So ein Puls kommt mit 20 MHz rein. Es kommen 1-20 Pulse hintereinander, 
dann ist für einige Zeit Pause.
Aber: Es gibt mehrere Kanäle und ich würde die Messschaltung gerne im 
Zeitmultiplexing betreiben. Das wiederrum mindert die Pause zwischen den 
Pulspaketen.
Genaue Zeiten kenne ich noch nicht. Grob kann man aber sagen, dass die 
Wandlung innerhalb von 10, besser 5-6 Taktzyklen abgeschlossen sein 
sollte, wenn es denn geht.

Es wäre gut, beide Flanken zu ermitteln. Diese können zur Kalibrierung 
der Verzögerungsleitung verwendet werden, da ja die Pulsbreite bekannt 
ist. Die Verzögerungsleitung ist etwas Temperaturempfindlich.

von Schlumpf (Gast)


Lesenswert?

20 MHz entspricht 50ns
Der Puls ist nur 5ns lang. Also ist die Pause zwischen zwei Pulsen 45ns 
lang.
Damit kann man schonmal sicherstellen, dass es im Betrachtungsfester 
immer nur EINE steigende Flanke geben kann.

Dein Betrachtungsfenster ist 300 Bit lang. Das entpricht 7,5ns.
Das heißt aber auch, dass du niemals sicherstellen kannst, dass du auch 
immer die negative Flanke des Pulses noch erfassen kannst. Daher würde 
ich da keinen Wert drauf legen, einen Mechanismus dafür einzubauen.

Wenn du es aber sicherstellen kannst, dass du die fallende Flanke noch 
siehst, dann setzt das voraus, dass die steigende Flanke innerhalb der 
ersten 100 Bits zu finden sein muss. Was die Suche nach der steigenden 
Flanke natürlich deutlich vereinfacht.
Die Fallende muss dann zwangsläufig in einem eingeschränkten Fenster am 
Ende zu finden sein. Daher musst du dann gar nicht das ganze Feld 
durchsuchen.

Entweder habe ich etwas übersehen, nicht verstanden, oder deine 
Anforderungen sind nicht ganz klar...

von Detlef _. (detlef_a)


Lesenswert?

Man kann das höchste gesetzte Bit in einem Wort mit N Bit in O(lg(N)) 
finden, also wesentlich schneller, als wenn man jedes Bit anschaut. 
Stichwort ist 'log2 eines integers', das ist das gleiche Problem.

Paar Ideen hier, das läßt sich prima auf VHDL umbiegen:
http://www-graphics.stanford.edu/~seander/bithacks.html#IntegerLog

Cheers
Detlef

von Michael S. (mikel_x)


Lesenswert?

Ich versuchs mal:

Das obige Bitmmuster repräsentiert quasi die Timeline eines breiten 
High-Impulses der die Dauer (=6) des Einsen_pakets besitzt? D.h. eine 
Bitposition ist eine Zeiteinheit und entspricht der zeitlichen 
Sampling-Auflösung deines Inputs?
Obige Bitfolge ist quasi ein binäres Oszillogramm mit Zeitbasis 1 
Bitposition, alias 5ns ?

Die Breite dieses Multi-High-Impulses schwankt zwischen 1 und 20 Bits?
Und du willst wissen, an welcher Timeline- bzw. Bit-Position der 
High-Puls beginnt und wo er endet?

Die gesamte Timeline auf der solchermassen nach mehr oder weniger 
breiten Multi-High-Impulsen gesucht wird, ist insgesamt 300 Bits lang?

Total daneben, oder stimmt die Richtung?

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


Lesenswert?

Beni schrieb:
> Der Puls ist 200 bit lang, bei einer Variablenlänge von 300 bit.
> Entspricht ca. 5 ns.
Sind die 5ns jetzt 300 oder 200 Bit lang?

Wie auch immer: du könntest das 0. und das 49. Bit miteinander 
vergleichen. Sind die unterschiedlich, dann ist irgendwo dazwischen eine 
Flanke. Das wären dann in der ersten Stufe der Pipeline 6 zu 
vergleichende Bitpärchen, dann vergleichst du das 0. und das 9., das 10. 
und das 19., usw...
So bist du nach ein paar wenigen Takten fertig.

von Fredo (Gast)


Lesenswert?

Das macht man bereits beim Einlesen

von Schlumpf (Gast)


Lesenswert?

Fredo schrieb:
> Das macht man bereits beim Einlesen

Bitte einfach alles lesen, bevor man was dazu schreibt..
Einlesen geht in diesem Fall offensichtlich nicht.

Lothar Miller schrieb:
> Wie auch immer: du könntest das 0. und das 49. Bit miteinander
> vergleichen. Sind die unterschiedlich, dann ist irgendwo dazwischen eine
> Flanke. Das wären dann in der ersten Stufe der Pipeline 6 zu
> vergleichende Bitpärchen, dann vergleichst du das 0. und das 9., das 10.
> und das 19., usw...

Das wäre eine Mischung aus der von mir vorgeschlagener Methode und einer 
darauffolgenden sequenziellen Suche in fortschreitendenden, gleichgroßen 
Fenstern.
Interessante Frage, was da am Ende den "schlankeste" Ergebnis in der 
Synthese liefert. Die Wahl der Methode, oder eine Kombination aus 
Methoden wird wohl von der Größe des Betrachtungsfensters abhängen.

Allerdings muss man die Betrachtungsfenster um 1 überlappen lassen, 
sonst würde man nicht erkennen, wenn genau an den Grenzen der 
Flankenwechsel wäre.

Angenommen, man müsste tatsächlich alle 300 Werte "scannen", könnte man 
sich auch überlegen, dies in 3 Pipeline-Stufen à 7 parallele Vergleicher 
zu machen. (300 ^1/3)

man zerlegt das Suchfeld in Siebtel

Erste Stufe vergleicht:
(0/42), (42/84), (84/126), (126/168), (168/210), (210/252), (252/294)

Trifft z.B. der erste Vergleicher, dann lädt man in die zweite Stufe die 
sieben Vergleicher folgendermaßen:

(0/6), (6/12), (12/18), (18/24), (24/30), (30/36), (36/42)

Trifft hier der fünfte Vergleicher, so folgt noch eine letzte Stufe mit 
den Werten:

(24/25), (25/26), (26/27), (27/28), (28/29), (29/30)

Man wäre also mit einer dreistufigen Pipeline "durch"..

Die Methode wäre:
Überlege, wieviele Pipelinestufen (n) man maximal zulassen will und die 
Breite der Stufen ergibt sich dann (zumindest ungefähr) aus

Datenfeldgröße ^ 1/n

Oder hab ich da nen schwerwiegenden Denkfehler?

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


Lesenswert?

Fredo schrieb:
> Das macht man bereits beim Einlesen
Wenn man zighundert Bits in 5ns einliest, dann braucht man ein schnelles 
FPGA...

von Schlumpf (Gast)


Lesenswert?

Nachtrag:

Problem bei meiner o.g. Methode könnte allerings sein, dass der Mux, der 
dann die Bits aus dem großen Datenfeld anhand des Ergebnisses aus der 
vorherigen Stufe in die nachfolgende Stufe routet, ziemlich mächtig 
werden könnte.
Aber das muss man einfach mal ausprobieren.. eventuell könnte man sich 
auch mit einer Konstruktion weiterhelfen, die anhand des Ergebnisses der 
ersten Stufe eine Kopie des betreffenden Feldes in einen Hilfs-Vektor 
zieht, aus dem sich dann die dritte Stufe "bedient"..

von Schlumpf (Gast)


Lesenswert?

Lothar Miller schrieb:
> Wenn man zighundert Bits in 5ns einliest, dann braucht man ein schnelles
> FPGA...

Wenn man dem ollen Shannon nicht auf die Füße treten will, dann sollte 
das mit mindestens 80GHz geschehen.. ein wirklich flottes FPGA gg

von berndl (Gast)


Lesenswert?

Schlumpf schrieb:
> Problem bei meiner o.g. Methode könnte allerings sein, dass der Mux, der
> dann die Bits aus dem großen Datenfeld anhand des Ergebnisses aus der
> vorherigen Stufe in die nachfolgende Stufe routet, ziemlich mächtig
> werden könnte.

koennte man damit umgehen, dass man die vielen hundert bits, die ja in 
FFs liegen muessen um parallel auf alles zugreifen zu koennen, parallel 
ja auch in BRAMs speichern koennte. Die koennten am Read-Port dann z.B. 
nur 16bit breit sein. Wenn man aus den hunderten FFs dann erkannt hat, 
wo in etwa der Flankenwechsel war, dann kann man leicht daraus eine BRAM 
Read-Adresse generieren. Vorteil: Der dicke Mux verschwindet im RAM. 
Dann muss man nur noch aus 16bit den Phasenwechsel erkennen.

Nur mal so als 'my humble opinion'...

von berndl (Gast)


Lesenswert?

Beni schrieb:
> Gegeben sei eine lange Variable (> 100 bit). Diese enthält die
> Aufzeichnung eines Pulses. Beispielsweise kann das so aussehen:
>
> 000000000111111000000000000000000
>
> Es ist immer nur ein Puls, d.h. zwei Flanken vorhanden.

uebrigens: Liest du wirklich >100bit ueber >100 Chip-I/Os gleichzeitig 
in einem Takt ein? Oder wie kommen diese Daten eigenlich ins FPGA?

von Trundle T. (shaheed)


Lesenswert?

das frag ich mich auch die ganze zeit wie kommen 300 bits in 80 ghz 
frequenz ins fpga?? also ich hab hier eh noch nicht verstanden worum es 
geht bis auf halt den flankenwechsel in 300 bit lange reg oder w/e zu 
erkennen. aber warum das nicht mit ner einfachen flankenerkennung gehen 
soll, versteh ich net?? und wenns nicht mit ner einfachen 
flankenerkennung geht (weils zu schnell ist), wie sollen die daten dann 
überhaupt ins fpga, hat der pins die daten in der geschwindigkeit 
annehmen können (in ps)? was kann überhaupt daten oder irgendwas mit 80 
ghz produzieren??

von Beni (Gast)


Lesenswert?

Hallo,

erstmal vielen Dank für die Antworten.

Das Problem mit dem stufenweisen Vergleichen ist wahrscheinlich, dass 
das ein sequentieller Vorgang ist und damit für einen FPGA nicht ideal 
ist. Das Vergleichen an sich geht schnell und braucht nicht viel Logik. 
Das Bereitstellen neuer Daten für die Vergleicher ist aber langsam und 
benötigt einen riesigen MUX. Aufgrund der hohen Singallaufzeiten im FPGA 
wird das mit deutlich unter 100 MHz takten. Die Bereitstellung der Daten 
könnte man durch ein RAM beschleunigen, allerdings müssen die Daten da 
auch erstmal reingetaktet werden.

Im Moment überlege ich, ob man nicht die Bits überlappend an LUT4 
Eingänge legen kann. Durch die Programmierung der LUTs könnte man so 
gezielt nach steigender und fallender Flanke suchen. Als Ergebnis würde 
man zwei lange Vektoren mit nur je einer 1 und vielen 0 erhalten. Dann 
müsste man nur noch die Position der 1 herausfinden.
Und da ist wieder das Problem.


Ich versuche nochmal, den Aufbau an sich zu erklären, da es hier noch 
Unklarheiten gibt:

Das Signal geht über einen einzigen Pin in den FPGA und läuft dort in 
eine lange Leitung mit vielen FF Abgriffen. Die Takteingänge der FF sind 
mit einem Takt verbunden. Da die Ausbreitung des Signals im FPGA eine 
endliche Geschwindigkeit hat, ist die Position des Signals zeitabhängig. 
Mit dem Taktzyklus kann die Position des Signals quasi eingefroren und 
die Ankunftszeit des Signals berechnet werden. Das Ganze ist eigentlich 
eine zeitkontinuierliche Analogschaltung. Um eine hohe zeitliche 
Auflösung zu erhalten muss daher nicht mit einer hohen Frequenz 
abgetastet werden.

Gruß
Beni

von Trundle T. (shaheed)


Lesenswert?

verstehe ich das richtig du willst die signallaufzeit innerhalb des 
fpgas messen ?? wenn es erlaubt ist noch mehr infos, klingt spannend ^^

von Schlumpf (Gast)


Lesenswert?

Trundle Trollkönig schrieb:
> wie sollen die daten dann
> überhaupt ins fpga

parallel?

Trundle Trollkönig schrieb:
> was kann überhaupt daten oder irgendwas mit 80
> ghz produzieren??

Die Daten kommen anscheinend mit 40 GHz an (müssten nur daher mit 80GHz 
gesampelt werden)
Das könnte eine externe Delayline sein, die pro Stage um 25ps 
verzögert...

von Schlumpf (Gast)


Lesenswert?

Beni schrieb:
> Das Signal geht über einen einzigen Pin in den FPGA und läuft dort in
> eine lange Leitung mit vielen FF Abgriffen. Die Takteingänge der FF sind
> mit einem Takt verbunden. Da die Ausbreitung des Signals im FPGA eine
> endliche Geschwindigkeit hat, ist die Position des Signals zeitabhängig.
> Mit dem Taktzyklus kann die Position des Signals quasi eingefroren und
> die Ankunftszeit des Signals berechnet werden. Das Ganze ist eigentlich
> eine zeitkontinuierliche Analogschaltung. Um eine hohe zeitliche
> Auflösung zu erhalten muss daher nicht mit einer hohen Frequenz
> abgetastet werden.

Schonmal ausprobiert?
Du kannst nicht einfach ein "Stück Draht" in ein FPGA synthetisieren und 
von dort beliebig viele Abriffe an Register machen.
Außerdem wird die Genauigkeit nicht erreichbar sein.
25ps reproduzierbarer Delay ist sehr sehr wenig. Und alleine die Stubs 
zum Abreifen machen ja auch nochmal nen Delay.
Ich behaupte mal, dass du diese Anforderungen nicht in einer Delayline 
im FPGA umsetzen kannst (zumindest nich in einem bezahlbaren FPGA)

von Michael S. (mikel_x)


Lesenswert?

Das würde mich auch interessieren, ob bzw. wie es möglich ist, anhand 
der Signal-Ausbreitungsgeschwindigkeit in einem Leiter oder Halbleiter, 
parallele Segmente des Streams im Auflösungsbereich von 80GHz zu cachen.

Serielles Samplen oder Latchen scheidet wohl aus, sonst wäre auch 
Flankenerkennung integrierbar...

von high tec ing (Gast)


Lesenswert?

Beni schrieb:
> Mit dem Taktzyklus kann die Position des Signals quasi eingefroren und
>
> die Ankunftszeit des Signals berechnet werden.

Deine Methode nennst sich time to digital conversion und wird so in 
ASICs praktiziert. Allerdings bezweifle ich, ob du mit den routing 
resourcen in einem FPGA dahin kommen kannst. Wie willst du das 
kontrollieren?

Ich glaube, dass Du Dir da was theoretisches ausgedacht hast, was 
praktisch so nicht wird funktionieren können.

Die eigentliche Aufgabe, nämlich:
" Flanke in langer Variable suchen"
ist dagegen ja förmlich trivial.

von Schlumpf (Gast)


Lesenswert?

high tec ing schrieb:
> Die eigentliche Aufgabe, nämlich:
> " Flanke in langer Variable suchen"
> ist dagegen ja förmlich trivial.

Das sehe ich auch so...

von Lattice User (Gast)


Lesenswert?

high tec ing schrieb:

> Deine Methode nennst sich time to digital conversion und wird so in
> ASICs praktiziert. Allerdings bezweifle ich, ob du mit den routing
> resourcen in einem FPGA dahin kommen kannst. Wie willst du das
> kontrollieren?
>

Wo hat er geschrieben dass er die eigentliche Conversion im FPGA machen 
will?

von Sascha W. (arno_nyhm)


Lesenswert?

schau dir mal die TDCs von ACAM an:
http://www.acam.de/products/time-to-digital-converters/
...sind erschwinglich und verfügbar. der GPX hat eine auflösung von 
10ps, sollte für deine anwendung das richtige sein.

von Signalprozessing Ingenieur (Gast)


Lesenswert?

Kleine Zwischenfrage, wie ist denn das zu verstehen:

> 500 kHz continuous rate per channel
Heisst das, dass man mit 500kHz Rate jeweils einen Wert bekommt, der 
dann ein TDC-Wert darstellt?

Ich meine, wie wird der eingesetzt?

von bko (Gast)


Lesenswert?

>Schonmal ausprobiert?
>Du kannst nicht einfach ein "Stück Draht" in ein FPGA synthetisieren und
>von dort beliebig viele Abriffe an Register machen.
>Außerdem wird die Genauigkeit nicht erreichbar sein.
>25ps reproduzierbarer Delay ist sehr sehr wenig. Und alleine die Stubs
>zum Abreifen machen ja auch nochmal nen Delay.
>Ich behaupte mal, dass du diese Anforderungen nicht in einer Delayline
>im FPGA umsetzen kannst (zumindest nich in einem bezahlbaren FPGA)
Probiert hats schon mal jemand mit einer "carry chain delay line":
http://cds.cern.ch/record/1158663/files/p383.pdf

von Schlumpf (Gast)


Lesenswert?

bko schrieb:
> Probiert hats schon mal jemand mit einer "carry chain delay line":

Probiert habe ich das selber auch schon und das funktioniert auch 
problemlos, wenn man keinen Wert auf Genauigkeit legt und es nur auf dem 
Schreibtisch zuverlässig funktionieren muss.

Damit kann man in komplett asynchronen Designs z.B. eine Flanke 
erkennen.
Aber um verwertbare Messungen im 20ps Bereich durchzuführen taugt es 
nicht. Jedenfalls nicht in bezahlbarer FPGA-Technik, da die 
Temperaturabhängigkeit nicht zu verachten ist.

von bko (Gast)


Lesenswert?

>nicht. Jedenfalls nicht in bezahlbarer FPGA-Technik, da die
>Temperaturabhängigkeit nicht zu verachten ist.
Die könnte man evtl. mit einem Referenztakt ausgleichen,
So wirds im ASIC ja auch gemacht; ok, ASIC delay-inverter kann man viel
besser matchen:
http://sus.ziti.uni-heidelberg.de/Lehre/VLSIVorlesungHS09/VLSI_06_BauteileUndLayout.pdf

von Sascha W. (arno_nyhm)


Lesenswert?

Signalprozessing Ingenieur: ja, genau das bedeutet es. im 'M-Mode' 
kannst du pro kanal mit 500kHz repetitionsrate impulse messen/messwerte 
auslesen.

von Duke Scarring (Gast)


Lesenswert?

Schlumpf schrieb:
> Aber um verwertbare Messungen im 20ps Bereich durchzuführen taugt es
> nicht. Jedenfalls nicht in bezahlbarer FPGA-Technik, da die
> Temperaturabhängigkeit nicht zu verachten ist.
Das kann man rauskalibrieren.
Siehe hier, Seite 16:
http://lnr.irb.hr/pd/daqws/images/E.Bayer.pdf

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.