Frage zu 1-Bit-Analog-Digital-Wandler

Ich arbeite an einem Forschungsprojekt, und für einen Teil davon muss ich ein analoges Signal in ein digitales umwandeln. Nun, Elektronik ist nicht meine Stärke, also weiß ich nicht, was ich tue und tappe im Dunkeln. Ich habe gestern und heute recherchiert, um die spezifische Art und Weise zu beantworten, wie ich diese Konvertierung durchführen möchte, und ich glaube, ich habe eine Antwort, aber ich weiß nicht, was für mein Projekt am besten ist.

Gerät 1 gibt ein analoges Signal aus. Dieses analoge Signal bleibt auf Spannung low, bis es für einige Zeit tauf pulsiert high. Dann geht es wieder auf Spannung low. Dieses analoge Signal wird immer entweder auf Spannung lowoder sein high.

Gerät 2 möchte dieses Signal lesen. Es kann jedoch nur Signale mit einem UART-Protokoll mit seiner internen Baudrate empfangen. Die Art und Weise, wie Gerät 2 dieses Signal versteht, besteht darin, dass ein Interpreter die Informationen dafür in regelmäßigen Abständen in Bits zerlegt b0und „ in diesem Moment“ und „ in diesem Moment“ b1darstellt .highlow

Dolmetscher ist, was ich will. Der Interpreter sollte die von Gerät 1 ausgegebene Spannung alle 100 Nanosekunden (idealerweise alle 2 Nanosekunden) überprüfen. Wenn die Spannung anliegt, highsollte der Interpreter ein Signal aufzeichnen b1. Wenn die Spannung anliegt, lowsollte der Interpreter ein Signal aufzeichnen b0. Es sollte diese Bits in einem UART-Protokoll verpackt an Gerät 2 senden, damit Gerät 2 die Bits interpretieren kann. Gerät 2 verfügt über Software, um die Bits von dort zu verarbeiten.

Ich weiß nicht, welches Gerät ich für Interpreter verwenden soll. Ich weiß, dass alles, was ich codiere, zu langsam wäre, also hoffte ich, ein Gerät zu verwenden, das es schneller machen könnte. Zuerst habe ich versucht, einen Low-Bit-ADC mit einer hohen Geschwindigkeit im Bereich von> 500 MSPS zu finden, aber ich denke, dass ein Komparator auch funktionieren würde. Trotz meiner Recherchen konnte ich mich jedoch nicht für ein Produkt entscheiden, da ich nicht weiß, welches Teil für mein System am besten geeignet ist. Die einzigen schnellen ADCs sind teuer und ich weiß nicht, ob ein Komparator schnell genug für mich ist oder mit einem UART-Protokoll ausgibt. Oder ich weiß nicht, ob es ein Teil gibt, das ich kaufen könnte, das die Arbeit besser macht als beide. Wenn also jemand gute Vorschläge hat, werde ich sie recherchieren.

Danke schön.

EDIT: Wusste nicht, dass TTL kein Protokoll ist, und mir wurde klar, dass ich ein UART-Protokoll wollte. TTL durch UART in der Post ersetzt.

EDIT: Wenn ich eine Abtastrate von 10 MHz habe, ist es ausreichend, aber eine Abtastrate von 500 MHz ist erwünscht, wenn es erschwinglich ist.

BEARBEITEN: Wenn Sie meine Frage ablehnen, teilen Sie mir bitte mit, warum Sie dies getan haben. Ich lerne und möchte konstruktives Feedback.

BEARBEITEN: Der Beitrag wurde zur Verdeutlichung umgeschrieben und Bilder unten eingefügt, um zu verdeutlichen, was ich frage.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

  1. Zeile 1 oben zeigt ein Beispiel dafür, was von Gerät 1 ausgegeben werden könnte. Beachten Sie, dass die Impulse zu zufälligen Zeiten kommen, aber alle lang sind t(so gut ich konnte).
  2. startZeile 2 oben zeigt, was der Interpreter vor dem Packen und den Bits tun kann stop. Beachten Sie, dass jede Spannung mit den blauen Linien übereinstimmt. Ich verwende die blauen Linien, um die Intervalle anzuzeigen.
  3. startZeile 3 oben zeigt, was der Interpreter nach dem Einfügen von / -Bits an Gerät 2 ausgeben soll stop.
Comparator reicht wahrscheinlich aus, wenn nur zwei Werte vorhanden sind. Wie schnell ist dieses Signal?
Sie müssen einige reelle Zahlen angeben, bevor irgendjemand überhaupt versuchen kann, Vorschläge zu machen. Was sind die beiden Spannungen, die b1-Impulsdauer und die typische Zeit zwischen den Impulsen?
TTL ist kein Kommunikationsprotokoll wie UART; es ist eine Spezifikation für Standard-Logikpegel. Insbesondere ist ein "TTL-kompatibles" Signal einfach ein niedriges (0 V) oder hohes (5 V) Signal mit niedriger Ausgangsimpedanz ( < 500 Ω ), wie es bei den meisten digitalen Signalen üblich ist. Die Konvertierung von Ihren willkürlichen Logikpegeln in TTL-Pegel wird von praktisch jedem Komparator auf dem Markt durchgeführt.
(Nun, <0,8 V und> 2,0 V, aber wer zählt)
Versucht zu vereinfachen =)
Sobald Sie herausgefunden haben, welchen Komparator Sie verwenden sollen, dreht sich der Rest Ihrer Frage im Wesentlichen darum, wie Sie ein TTL-kompatibles Signal mit einem ungeraden Timing in ein TTL-kompatibles UART-Signal mit einem guten Timing konvertieren. Das liegt weit außerhalb des Bereichs der Analog-Digital-Wandlung .
Ich verstehe immer noch nicht, wo Sie denken, dass dieser A / D ins Spiel kommt. Das analoge Signal ist anscheinend bereits in den Impulsen codiert. Es scheint, als müssten Sie diesen Impulsstrom decodieren, in eine Zahl umwandeln und dann über UART weiterleiten. Wozu dient der A/D? Außerdem werden Sie keine 500 Millionen Messwerte pro Sekunde über einen gewöhnlichen UART senden. Nicht einmal annähernd in der Nähe.
Was bedeuten die Impulse ? Sie müssen das festnageln, wenn Sie es in einen UART einspeisen möchten. Die einzige Information, die sie tragen, scheint zu sein, wann der Puls auftritt, ist das richtig? Könnte es kurze Perioden von b1 geben oder haben sie garantiert die angegebene Länge?
Ich denke, die Leute gehen mit dieser Frage unnötig hart um - sie ist vage, wird aber langsam geklärt.
Zeigen Sie ein Blockdiagramm Ihres Systems. Aber Sie sollten sich beeilen, denn dies wird in seiner jetzigen Form geschlossen.
@ pjc50: Richtig, es ist sowohl vage als auch langsam geklärt. Direkte Fragen erhalten keine direkten Antworten. Es gibt offensichtlich viel Kontext im Kopf des OP, den er uns nicht sagt, und wir sind nicht hier, um "20 Fragen" zu spielen. Scheiß drauf. Bitte helfen Sie, indem Sie für die Schließung stimmen, damit nicht noch mehr ehrenamtliche Bemühungen vergeudet werden.
OK, jetzt haben wir ein Diagramm. Es ist jedoch immer noch nicht klar, was mit dem „Lesen“ eines Pulses gemeint ist. Würde es ausreichen, eine Zeicheneingabe in den UART zu haben, wenn ein Impuls auftritt (offensichtlich mit einer Serialisierungsverzögerung)?
Auch wenn Sie einen "4-Draht" -UART haben, können Sie das Signal möglicherweise nur pegelverschieben und an CTS anschließen, das auf der anderen Seite in Software gelesen werden kann.
@Paul: Um die Aussagen anderer zu bestätigen: Sie brauchen keinen ausgewachsenen ADC. Vergessen Sie diese Idee, denn ein Komparator reicht aus. (Tatsächlich ist ein Komparator ein Hochgeschwindigkeits-Ein-Bit-ADC). Allerdings lassen Sie noch eine sehr wichtige Frage unbeantwortet: Wie werden die Daten verschlüsselt? Die Beschreibung ist viel zu vage. Irgendwie codiert dieser Impulsstrom einen 8-Bit-Wert. Als was? Zeiten? Puls zählen? Oder sind die Impulse vielleicht wirklich zufällig, in diesem Fall sind sie bedeutungslos?
Danke @pjc50. Mit "Lesen der Impulse" meine ich, dass es ein Bild davon erzeugen möchte, wie sich die Spannung von Zeit t0zu Zeit geändert hat t1. So kann ich zum Beispiel ein Teil haben, das die Spannung alle TSekunden überprüft, einen highImpuls oder lowImpuls sendet, wenn die Spannung hoch oder niedrig ist, das alle 8 Mal mit Stopp- und Startspannungen bündelt Tund diese Spannungen seriell an das System sendet das will die Pulse "lesen". Ist das klar? Ich verliere etwas Auflösung, aber das ist zu erwarten.
Ich habe den Beitrag zur Verdeutlichung umgeschrieben und ein weiteres Bild eingefügt.
Möchten Sie dies kontinuierlich tun oder möchten Sie eine Periode erfassen (abtasten), puffern und dann senden? Das UART-Protokoll ist nicht gerade für 10 MHz geeignet, geschweige denn für 500 MHz. Und was befindet sich auf der anderen Seite der UART-Leitungen?
@Paul Terwillinger: Würdest du jemanden ernst nehmen, wenn er sagt "Es reicht, wenn der Motor meines Autos 100 PS hat, aber 5000 PS sind erwünscht, wenn es erschwinglich ist"?

Antworten (4)

Ich glaube, ich verstehe vielleicht , was du vorhast. Sie wollen:

  1. Abtasten Sie in regelmäßigen (schnellen) Intervallen eine Impulsfolge, die zwei mögliche Werte hat und die nicht wirklich irgendwelchen Standardspannungen für "normale" digitale Eingänge entsprechen.
  2. Melden Sie diese Daten an ein anderes System.

Wenn das stimmt, hier ist mein Schaltungsvorschlag:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

und meine vorgeschlagene Theorie der Operation:

  1. Verstehen Sie Nr. 2 dieser Liste und richten Sie den Chip so ein, dass er dies mit minimaler Befehlsanzahl und maximaler Befehlsrate tut. (Möglicherweise müssen Sie die Montage auf einem High-Spec-Chip verwenden, was nicht oft der Fall ist.)
  2. Richten Sie in der Software einen Timer-Interrupt ein, der mit der gewünschten Abtastrate ausgelöst wird. Wenn der Interrupt ausgelöst wird:
    1. Eine Byte-Variable um 1 nach oben (links) verschieben.
    2. Lesen Sie den digitalen Eingang in das niedrige Bit dieser Variablen. (leer wegen #1)
    3. Dekrementiere eine Zählervariable.
    4. Wenn der Zähler jetzt Null ist, verschieben Sie die Variable Byte (Akkumulator) in das UART-Senderegister (wie auch immer Ihr Chip es nennt) und setzen Sie den Zähler auf 8 zurück. Der UART sendet das Byte ganz von selbst, während Sie die nächsten 8 Abtastungen erfassen .

Einige Notizen:

  • Einige Chips haben den Komparator eingebaut. (das Dreiecksding selbst) Dies kann die Anzahl der Teile reduzieren, wenn es schnell genug ist. Lesen Sie in jedem Fall das Datenblatt für den Komparator, den Sie verwenden möchten.
  • Der Impulseingang muss innerhalb der Spannungsversorgung des Komparators liegen. Ich habe hier 5 V gezeigt, weil es ziemlich üblich ist, aber es könnte alles sein, was das Datenblatt erlaubt.
  • Der Ausgang des Komparators verwendet die gesamte verfügbare Versorgung, es sei denn, es handelt sich um einen Open-Collector-Typ (Force-Low, Allow -High). In diesem Fall können Sie einen Widerstand zwischen Out und Ihrer digitalen Versorgung hinzufügen.
  • Der UART benötigt wahrscheinlich 10 Bit pro Datenbyte - 1 Start, 8 Daten, 1 Stopp -, sodass seine Baudrate tatsächlich schneller ist als Ihre Abtastrate. Stellen Sie sicher, dass es an beiden Enden funktioniert.
  • Wenn die Baudrate nicht so schnell sein kann, können Sie eine Form der Datenkomprimierung in Betracht ziehen. Vielleicht nur zu jedem Ereignis (nicht kontinuierlich) einen Bericht senden und die Zeit seit dem vorherigen Ereignis angeben? Das würde eine völlig andere Betriebstheorie erfordern und wahrscheinlich auch viel einfacher zu implementieren sein.

Sie haben die Frage grob geändert, also schreibe ich eine ganz neue Antwort. Obwohl die neue Version einige Dinge klärt, lässt sie immer noch viele Fragen unbeantwortet (obwohl sie von mehreren Personen ausdrücklich gestellt wurden) und weist weiterhin Missverständnisse auf. Der einfachste Weg, dies zu tun, besteht darin, auf einzelne Teile Ihrer Frage zu antworten:

Gerät 1 gibt ein analoges Signal aus.

Nein, das tut es eindeutig nicht.

Dieses analoge Signal bleibt auf niedriger Spannung, bis es für einige Zeit t auf hoch pulsiert. Dann wird es auf niedrige Spannung zurückkehren. Dieses analoge Signal wird immer entweder auf niedriger oder hoher Spannung sein.

Dann ist es kein analoges Signal. Es hat eindeutig nur zwei mögliche Zustände. Sie sagten vorher, dass T fest ist. Dies ist eine Folge von Impulsen.

Die wichtige Frage, die Ihnen wiederholt gestellt wurde, ist die Bedeutung dieses Signals. Die Spannungspegel sind fest, die Puls-High-Zeit ist fest, sodass Informationen nur in der Puls-Low-Zeit codiert werden können. Sie sagten zuvor, dass das Timing dieser Impulse "zufällig" ist (Ihr Wort). Wenn das stimmt, enthält diese Pulssequenz überhaupt keine Informationen, in diesem Fall ist diese ganze Übung sinnlos. Ich nehme an, Sie meinten, dass die Pulszeiten unvorhersehbar sind, was sich sehr von zufällig unterscheidet. Bleibt noch die Frage, welche Daten diese Impulsfolge enthält und wie genau sie kodiert ist?

Gerät 2 möchte dieses Signal lesen. Es kann jedoch nur Signale mit einem UART-Protokoll mit seiner internen Baudrate empfangen.

OK, was ist diese Baudrate? Beachten Sie, dass dies die Bandbreite der Informationen begrenzt, die Gerät 2 empfangen kann. Die schnellste gemeinsame UART-Geschwindigkeit beträgt 115,2 kBaud, kann aber schneller sein. Alles über 1 Mbit/s ist jedoch sehr unwahrscheinlich.

Dolmetscher ist, was ich will.

Nein, dieser Dolmetscher ist das, was Sie sich als Lösung vorstellen. Sie möchten anscheinend die im Impulsstrom codierten Informationen über einen UART an Gerät 2 übertragen. Ich überspringe den Rest Ihrer Frage, da es sich um sinnlose Details zu Ihrer imaginären Lösung anstelle des tatsächlichen Problems handelt.

Nun, da das eigentliche Problem etwas klarer ist, ist auch klarer, was wir wissen müssen. Um etwas zu finden, das zwischen dem Impulsstrom und dem UART liegt, müssen wir wissen:

  1. Welche Art von Daten werden in diesem Impulsstrom codiert? Ist es ein einzelner Skalarwert? Es wäre hilfreich zu wissen, was es physikalisch darstellt.

  2. Was ist die feste Pulshochzeit?

  3. Was ist die minimal mögliche Puls-Low-Zeit? Dies gibt uns zusammen mit #2 auch die maximale Pulsfrequenz an.

  4. Wie genau ist der Datenwert in diesem Pulsstrom kodiert?

  5. Welche UART-Baudrate erwartet Gerät 2?

  6. Was sind die hohen und niedrigen Spannungspegel des Impulssignals?

Ich erwarte klare und spezifische Antworten auf jede dieser Fragen, sonst bin ich hier raus. Diese werden alle nach einem Grund gefragt. Sie müssen alle beantwortet werden, unabhängig davon, ob Sie verstehen, warum sie gefragt werden oder nicht. Und nein, Sie können diese Fragen nicht „interpretieren“ und fragen, was ich Ihrer Meinung nach wissen möchte oder was Sie mir lieber sagen möchten.

Hinzugefügt

Sie haben jetzt echte Spezifikationen für den eingehenden Impulsstrom angegeben. Es kommt von einem Photonendetektor, und jeder Impuls repräsentiert ein Photon. Das Signal ist TTL digital, mit Low ≤ 800 mV und High ≥ 3,5 V. Jeder Impuls dauert 30 ns, und zwischen aufeinanderfolgenden Impulsen liegen mindestens 50 ns. Damit beträgt die minimale Pulsperiode 80 ns und die maximale Pulsfrequenz 12,5 MHz.

Die Aufgabe besteht darin, die Informationen in diesem Impulsstrom irgendwie über eine UART-Verbindung an ein zweites Gerät zu übermitteln. Die UART-Baudrate ist nicht bekannt, daher gehe ich vorerst von der schnellsten gängigen Rate von 115,2 kBaud aus.

Der elektrische Empfang des Impulssignals ist einfach, da alles mit einem TTL-kompatiblen Eingang direkt funktioniert. Dies könnte beispielsweise ein beliebiges 74HCTxxx-Gate sein, das mit 5 V betrieben wird. Gewöhnliche CMOS-Eingänge funktionieren möglicherweise nicht, je nachdem, was ihr minimaler garantierter logischer High-Pegel ist. Das Datenblatt dessen, was dieses Signal empfängt, muss überprüft werden, aber es wird kein Problem sein, etwas Kompatibles zu finden. Außer der Auswahl des richtigen Digitaleingangs für den Empfang dieses Signals ist nichts Besonderes zu tun.

Um das Ding zwischen dem Impulsstrom und dem UART zu entwerfen, müssen wir wissen, welche Informationen aus dem Impulsstrom relevant sind. Interessieren Sie sich nur für die durchschnittliche Lichtstärke? Wenn ja, was ist die höchste Frequenz des Lichtniveaus, das Ihnen wichtig ist? Oder müssen Sie wissen, wann einzelne Impulse auftreten? Das wäre viel schwerer. Das grundlegende Problem besteht darin, dass der Impulsstrom viel mehr Informationen enthält, als Sie möglicherweise über die UART-Verbindung kommunizieren können. Daher muss eine gewisse Datenreduktion durchgeführt werden.

Werfen wir einen ersten Blick auf das Ausmaß der Datenreduktion. Angenommen, Sie müssten nur die Anzahl der Photonen pro Zeitintervall kennen. Jedes UART-Byte benötigt bei 115,2 kBaud 10 Bitzeiten, also 87 µs. Bei der maximalen Impulsrate von 12,5 MHz sind bis zu 1085 Impulse pro UART-Byte möglich. Da ein Byte 0-255 ausdrücken kann, könnten Sie die Anzahl der Impulse, die jedes Byte-Zeitintervall beobachtet werden, um 0,235 skalieren. Das würde Ihnen den Lichtpegel geben, der auf ungefähr 4 Photonen aufgelöst ist, die bei 11,5 kHz abgetastet werden. Die maximale Lichtpegelfrequenz beträgt daher 5,7 kHz. Ist das gut genug?

Ein möglicher Trick besteht darin, den Fehler vom vorherigen Byte auf das nächste Byte zu übertragen. Das gibt Ihnen den langfristigen Countdown auf einzelne Photonen auf Kosten von etwas Rauschen bei jeder Messung.

Eine andere Möglichkeit besteht darin, in jedem Zählintervall zwei Bytes zu senden. Jetzt können Sie bis zu 2170 Zählungen pro Abtastintervall haben, aber das kann direkt in zwei Bytes übertragen werden. Sie erhalten die volle Auflösung, aber die maximale Frequenz sinkt auf 2,9 kHz. Mit ein wenig Geschick können Sie zwei Messwerte in 3 Bytes packen, um die volle Auflösung bei einer höheren Frequenz zu erhalten, wenn auch mit mehr Latenz.

Es gibt viele mögliche Datenreduktionsschemata. Es ist unmöglich, eine auszuwählen, ohne zu wissen, welcher Aspekt der Daten Sie interessiert.

Vorwort: Alle diese Fragen beantworte ich nach bestem Wissen. Wenn ich eine Frage mit einer falschen Vorstellung beantworte, weiß ich wahrscheinlich nicht, dass ich eine falsche Vorstellung habe. Ich möchte wirklich eine Antwort auf mein Problem, also sage ich Ihnen nichts, was mein Ziel behindern könnte. 1) Die Daten repräsentieren physisch gesammelte Photonen. Wenn ein Photon von meinem Sensor erfasst wird, wird ein Spannungsimpuls von Gerät 1 emittiert. 2) Ich kenne die feste Impulshochzeit nicht. Das kann ich herausfinden. 3) Die minimal mögliche Puls-Low-Zeit ist unbestimmt. weiter...
4) Der Impuls stellt ein Photon dar, das gesammelt wird, daher highist der Wert von nicht wichtig. Das Photon sind die Daten und werden als Impuls aufgezeichnet. 5) Ich kenne die Baudrate nicht, aber ich kann sie herausfinden. Ich weiß von meinem Vorgesetzten, dass wir ein Teil in dem Bereich brauchen, den ich angefragt habe, 10MHz-500MHz.
Hmm, zählen Sie Photonen in einem voreingestellten Zeitraum? Denn das würde das Problem viel einfacher machen. Dann könnten Sie einen dedizierten Zählerchip finden, der eine Uhr dieser Geschwindigkeit aufnehmen und in viel langsameren Intervallen lesen / zurücksetzen kann.
Hinweis: Obwohl ich es eine Uhr genannt habe und das Datenblatt es wahrscheinlich auch tun wird, muss es keineswegs regelmäßig sein. Je nach Chip werden lediglich steigende oder fallende Flanken gezählt.
Wir fingen an, etwas zu erreichen, als Sie schließlich erklärten, dass jeder Impuls ein Ereignis darstellt. Wie ich Sie jedoch gewarnt habe, können Sie nicht entscheiden, was wichtig ist und was nicht. Ich wiederhole den letzten Absatz in meiner Antwort hierin durch Bezugnahme.
Gibt es noch etwas, das Sie wissen müssen?
Sie haben nur 1 und 4 beantwortet. Ich habe gerade 6 hinzugefügt, weil ich vergessen habe, vorher zu schreiben. Daher sind die ausstehenden Fragen derzeit 2, 3, 5 und 6.
JA: Was befindet sich auf der anderen Seite der UART-Leitung und welche Informationen werden benötigt? Der einzige Startpunkt jedes Photonenpulses? Und/oder Länge? Gibt es eine maximale High-Time und/oder eine minimale Low-Time (dies könnte die Datenmenge erheblich einschränken!)
@Paul: Sie scheinen anzunehmen, dass es insgesamt einfacher ist, alle Daten im UART-Stream zu codieren, aber es ist sehr wahrscheinlich, dass es einfacher ist, einige Daten zu verarbeiten, bevor Sie sie im UART-Datenstrom codieren, da dies wahrscheinlich der Fall ist die benötigte Bandbreite erheblich senken. Deshalb werden Sie gefragt, was Sie im weiteren Kontext erreichen wollen.
@OlinLathrop Ich habe die Antworten auf Ihre Fragen gefunden. 2) 30 Nanosekunden. 3) 50 Nanosekunden 5) Ich recherchiere, was die Baudrate ist, aber Gerät 2 ist ein Intel Edison mit einem Arduino-Breakout-Board. Es hat einen 100-MHz-Mikrocontroller plus Prozessor 6) Niedrig 0-0,8 V Hoch-3,5-5,25 V
@Paul: Siehe Ergänzung zur Antwort.
Vielen Dank für Ihre ausführliche Antwort. Leider brauchen wir die Zeit zwischen jedem Photon als unseren wichtigen Wert. Da ich heute mehr recherchiere, verstehe ich nicht, wie die Baudrate so niedrig sein kann. Zugegeben, ich sehe verschiedene Quellen, die die von Ihnen angegebenen Zahlen zitieren, also denke ich, dass Sie richtig sind. Aber eine der Fragen, die ich derzeit recherchiere, ist, wie so viel mehr Daten übertragen werden, beispielsweise über ein Ethernet-Kabel. Vielleicht liegt mein neues Verständnis außerhalb des Rahmens meiner ursprünglichen Frage, aber ... (Fortsetzung)
Ich muss einen Weg finden, die Zeit zwischen den einzelnen Photonen entweder mit meinem Intel Edison Arduino Breakout Board oder auf andere Weise zu zählen. Ich werde weiter forschen. Danke schön.
Auch dies liegt möglicherweise außerhalb des Rahmens der Frage, aber wenn Sie weitere Vorschläge haben, werde ich diese ebenfalls untersuchen.
@Paul: Zeit zwischen Ereignissen mit welcher Genauigkeit? Zeit zwischen jedem Ereignis oder durchschnittliche Zeit über ein bestimmtes Intervall oder ein Histogramm oder etwas anderes?

Es gibt zu viel Verwirrung, um es hier realistisch zu klären, also nur ein paar Punkte:

  1. TTL ist kein Protokoll. Es handelt sich um eine Logikfamilie, obwohl die Bezugnahme auf TTL manchmal bedeuten kann, dass die Spannungspegel dieser Logikfamilie verwendet werden, unabhängig davon, ob die TTL-Logik tatsächlich verwendet wird oder nicht.

  2. Anscheinend haben Sie eine Folge von Impulsen, aber es ist nicht klar, wie der analoge Pegel in diesen Impuls codiert wird. Sie sagen, die Spannungspegel und die hohe Impulszeit sind fest, wird der analoge Pegel also durch die Zeit zwischen den Impulsen codiert? Diese Kodierung muss man kennen, wenn man den analogen Pegel zurückgewinnen will. Vielleicht ist der durchschnittliche DC-Pegel dieser Impulse der analoge Pegel?

  3. "8 bit, no parity, 1 stop" bezieht sich auf ein UART-Protokoll, das in Bezug auf Ihre Impulsfolge überhaupt keinen Sinn ergibt. Ich kann nicht ansatzweise erraten, was Sie meinen, wenn Sie sich darauf beziehen.

  4. Das Entwerfen eines A/D-Systems, das mit 500 Millionen Abtastungen/Sekunde läuft, ist nicht trivial. Es gibt zu viele Probleme, um hier darauf einzugehen. Bei Ihrem aktuellen Stand der Elektronikkenntnisse lautet die Antwort, jemanden zu finden, der sich damit auskennt, um dies für Sie zu tun. Dies ist kein Anfängerprojekt.

  5. Sie sprechen davon, diese Impulsfolge bereits zu haben, also ist es ein völliges Rätsel, wie dieser A/D in das System passen soll.

1. Ich möchte ein UART-Protokoll. Ich habe gerade meinen ursprünglichen Beitrag editiert. 2. Die Impulse sind auf keinen internen Takt eingestellt. Sie kommen zu zufälligen Zeiten. Sie werden jedoch eine bestimmte Zeit dauern. 3. Beantwortet. 4. Danke. 5. Ich verstehe diesen Kommentar/diese Frage nicht
@PaulTerwilliger: Wie unterscheidet man dann eine 0?
@ Paul: # 5 - Da die Impulse anscheinend bereits das analoge Signal codieren, wofür ist der A / D? Und noch einmal, wie genau wird das analoge Signal in diesen Impulsstrom codiert?
Meine beste Vermutung war, einen A/D zu verwenden, aber wenn er nicht benötigt wird, sollte ich darauf verzichten. Meine Frage war offen: Wenn ich einen A/D brauche, werde ich einen kaufen, aber wenn nicht, was sollte ich sonst tun/verwenden? Aus diesem Grund habe ich auch einen Komparator erwähnt. Außerdem erwähnte der andere Kommentator die Verwendung einer MCU
@Paul: Verwenden Sie einen A / D , wo , um was zu tun ?
Hier braucht man wirklich keinen ADC. Ein ADC wird verwendet, um zwischen mehr als 2 Zuständen zu unterscheiden, aber Sie haben zunächst nur zwei Zustände.
@PaulTerwilliger: Was genau ist deiner Meinung nach ein UART-Protokoll? Du beschreibst wirklich nicht gut, was du willst. Sogar Ihre Abtastrate ... Wenn 10 Millionen Abtastungen pro Sekunde ausreichen, warum sollten Sie dann überhaupt nach 500 Millionen Abtastungen pro Sekunde suchen? Beginnen Sie damit, eine anständige Spezifikation zu schreiben. Was versuchst du zu machen?
Ich habe den Beitrag aus Gründen der Übersichtlichkeit umgeschrieben. Ich würde dies gerne für andere Systeme verwenden, die schnellere Impulse ausgeben, daher sind 500 MHz ideal für mein System

Ich würde eine MCU mit einem Hardware-Timer verwenden, der auf die Bitrate des Eingangssignals abgestimmt ist, zusammen mit einer Art Pegelumwandlung (Schmitt-Trigger-Puffer usw.), um das Signal auf Masse und Vcc der MCU zu verschieben.

Der Zeitgeber wird verwendet, um das Signal abzutasten, unmittelbar nachdem ein 1-Übergang hätte auftreten sollen. Ein Interrupt kann verwendet werden, um den Timer zunächst zu synchronisieren, wonach er basierend auf den Eigenschaften des Eingangssignals selbst möglicherweise frei läuft.

Sobald 8 Bits abgetastet wurden, wird der UART der MCU verwendet, um das Ergebnis stromaufwärts zu übertragen.

Kann diese Methode so schnell abtasten, wie ich es möchte? Mein Minimum sind 10 MHz, aber ich möchte idealerweise mit einer Rate von 500 MHz abtasten
@PaulTerwilliger: 500 MHz werden mit billigen, einfach zu verwendenden Teilen sehr schwierig. Sogar 10 MHz werden eine Herausforderung mit typischen CPUs um 1 MHz-100 MHz für direkte Hardware-Schnittstellen sein. Das obere Ende dieses Bereichs mag in Ordnung erscheinen, bis Sie feststellen, dass die meisten dieser Chips mehrere Takte pro Befehl (Variable) und mehrere Befehle zum Lesen und Verarbeiten eines digitalen Eingangs benötigen , ganz zu schweigen von einem analogen. Fügen Sie noch ein paar weitere Anweisungen auf der Berichtsseite hinzu, und Sie haben Ihr Budget vielleicht sogar auf einem schnellen Chip gesprengt. Trotzdem könnte es mit etwas Geschick möglich sein.
Auch wenn es teuer ist, möchte ich meine Möglichkeiten kennen. Hast du eine Empfehlung @AaronD ?
Irgendwas von XMOS könnte da mithalten, aber dafür kann ich keine feste Garantie geben.