Wie groß muss die nötige Abtastfrequenz sein, um ein serielles Signal mit 300 baud richtig zu messen? Ich habe von NI eine Messerfassungskarte im Rechner drinnen und möchte damit aus Lernzwecken Daten aus einer seriellen Leitung lesen. Ich habe folgende Modellrechnung gemacht: RS232, 8bit, 1 Stopp-Bit. 1 Baud = 1 Zeichen pro Sekunde 300 Baud = 300 Zeichen pro Sekunde Bit pro Zeichen mit Sopp-Bit 9 (machen wir 10, damit es einfacher zu rechnen ist). Bei 300 Baud und 10 Bit = 3000 Bit/s, also Signalfrequenz 3kHz. Shannon-Theorem: Abtastfrequenz > 2x Signalfrequenz Also sollte die Abtastfrequenz mindestens 6,1 kHz betragen. Ist das vom Ansatz her richtig?
Wenn ich mich nicht irre, bedeutet bei der Baudrate ein Zeichen nicht ein ASCII Zeichen sondern ein Bit (bei uart). Somit kann man bei UART sagen, dass Baudrate = Bitrate ist, wobei du natürlich noch Bits für Start,Stop und ggf. Parität abziehen musst.
Ein digitales serielles Signal analog abtasten? Digitale Signale haben hochfrequente Anteile (idealer Sprung von 0 auf 1 wäre theoretisch die Summe ALLER auf der Welt erdenklichen Frequenzen) - im Normalfall solltest du - bevor du analog abtastest - einen Tiefpass davor setzen, um diese Frequenzen zu begrenzen. Nimm also die höchstmögliche Frequenz, und bau dir einen Tiefpass, der möglichst gut reinpasst (shannon). Oder versteh ich da was falsch?
AB.C. schrieb: > RS232, 8bit, 1 Stopp-Bit. > 1 Baud = 1 Zeichen pro Sekunde > 300 Baud = 300 Zeichen pro Sekunde Soweit OK. > Bit pro Zeichen mit Sopp-Bit 9 (machen wir 10, damit es einfacher zu > rechnen ist). Falsch. Baud = Zeichen/Sekunde, aber ein Zeichen ist beim UART ein Bit. Hintergrund: beim UART gibt es keine zusätzlich Kodierung/Modulation, Stichwort 'NRZ' (http://de.wikipedia.org/wiki/Non_Return_to_Zero). > Bei 300 Baud und 10 Bit = 3000 Bit/s, also Signalfrequenz 3kHz. Nein, es sind also: 300 Bit/s. Die max. Frequenz (ohne Oberwellen des Rechtecksignals) ist dann 150Hz (bei Bitfolge 101010..). > Shannon-Theorem: Abtastfrequenz > 2x Signalfrequenz > > Also sollte die Abtastfrequenz mindestens 6,1 kHz betragen. Nein: 300,x Hz. Allerdings ist dann keine Synchronisierung auf das Startzeichen + Toleranz von Zeichenverzerrung möglich. Ein UART tastet deswegen häufig mit 16x Baudrate ab. Gruß Dietrich
Für analoge Signale kann man dies tun. Wenn du aber digitale Signale so Interpretieren magst, dann solltest du die 10-20 fache Abtastfrequenz nehmen.
AB.C. schrieb: > RS232, 8bit, 1 Stopp-Bit. > 1 Baud = 1 Zeichen pro Sekunde > 300 Baud = 300 Zeichen pro Sekunde > Bit pro Zeichen mit Sopp-Bit 9 (machen wir 10, damit es einfacher zu > rechnen ist). > Bei 300 Baud und 10 Bit = 3000 Bit/s, also Signalfrequenz 3kHz. > Shannon-Theorem: Abtastfrequenz > 2x Signalfrequenz > > Also sollte die Abtastfrequenz mindestens 6,1 kHz betragen. Noe, Baud ist die Anazahl der Bits/s auf der Leitung also der 0 / 1 Pegel. ----------- | 1 | 0 | ------------- Bit Bit Wenn jetzt alle Bits abwechselnd 0 oder 1 haben entsteht die hoechste Signalfrequenz (Grundschwingung). Und die ist f = Baud / 2. Also die halbe Baudrate. Im Fall von 300Baud sind das 150Hz. Das reicht im Prinzip um das Signal zu uebertragen. Da aber dann die Flanken zu sehr verschliffen sind erhoeht man die zuverfuehgung stehende Bandbreite etwas.
300 Baud sind 300 Symbole pro Sekunde, in deinem Fall 300 Bit pro Sekunde. Nach Shannon reichen dann 600Hz Abtastfrequenz aus. Wie von dommy gesagt, brauchst du ein Anti-Aliasing Filter. Sonst misst du Mist. Das Ganze ist aber vom Ansatz her Overkill. Du kennst das Signal recht gut. Also nutze diese Kenntnisse. Sinnvoller ist es, auf die erste Flanke des Startbit zu warten (notfalls mit etwas Entprellung). Dann wartest du eine halbe Bit Periode (1.66ms) und von da an tastest du alle 3.3ms das Signal ab und generierst daraus dein Byte. Nachdem das Stopbit gekommen ist, gehst du zurück auf Anfang und wartest auf das nächste Startbit.
Dietrich L. schrieb: > AB.C. schrieb: >> RS232, 8bit, 1 Stopp-Bit. >> 1 Baud = 1 Zeichen pro Sekunde >> 300 Baud = 300 Zeichen pro Sekunde > > Soweit OK. Nein FALSCH. Baud ist die Rate von symbolen pro Sekunde. Bei binären Symbolen ist das dann identisch mit der Bitrate. Siehe auch: http://de.wikipedia.org/wiki/Baud Für serielle Übertragung braucht 1 Byte dann incl. Start/Stoppbits etwas mehr als 10Baud. Deine Abtastrate ist exakt die Baudrate, du erkennst die Flanke des Startbits, wartest die Hälfte der Bitlänge und tastest von dort die bekannte Anzahl von Bits in genau der Baudrate ab. Bessere Empfängerchips machen wenn ich mich recht erinnere eine Überabtastung von z.B. 3, aber da müsste man noch mal genauer in den Datasheets nachschauen.
Georg G. schrieb: > 300 Baud sind 300 Symbole pro Sekunde, in deinem Fall 300 Bit pro > Sekunde. Nach Shannon reichen dann 600Hz Abtastfrequenz aus. Noe, siehe oben. 300Hz reicht aus.
Udo Schmitt schrieb: > Nein FALSCH. Baud ist die Rate von symbolen pro Sekunde. Akzeptiert ;-) > Für serielle Übertragung braucht 1 Byte dann incl. Start/Stoppbits etwas > mehr als 10Baud. [Klugscheißer ein] Dann aber nicht 10 Baud, sondern 10 Symbole oder 10 Baud*Sekunde ;-) [Klugscheißer aus] Gruß Dietrich
Helmut Lenzen schrieb: > Georg G. schrieb: >> 300 Baud sind 300 Symbole pro Sekunde, in deinem Fall 300 Bit pro >> Sekunde. Nach Shannon reichen dann 600Hz Abtastfrequenz aus. > > Noe, siehe oben. 300Hz reicht aus. Bei den früheren USARTs (8251 oder ähnlich) konnte man die 16/64fache Überabtastung einstellen (BAUD RATE Factor) der dann in Folge die Mitte des Signals abtastete. Da wir hier von 300bit/s reden denke ich könnet man bequem mit 1200 oder 2400 Abtastungen/s arbeiten und muss nicht auf unterste Grenze gehen. rgds
6A66 schrieb: > Da wir hier von 300bit/s reden denke ich könnet man bequem mit 1200 oder > 2400 Abtastungen/s arbeiten und muss nicht auf unterste Grenze gehen. Der TO fragt im Titel nach der nötigen (ich interpretiere das mal als hinreichende ) fs, nicht nach einer guten oder optimalen fs :)
Vielen Dank für die Vielzahl Eurer Erklärungen. Ich hatte in dem Wiki-Artikel gedacht, dass mit der Definition Baud = 1 Symbol/Sek ein ASCII-Zeichen gedacht gewesen wäre, also falsch interpretiert. Also müsste nach dem Shannontheorem die Abtastrate bei 300 Baud mindestens 601 Herz betragen, also besser 1000 Herz. Können dann dennoch Alias-Effekte auftreten, wenn man ganz knapp über der Mindestabtastfrequenz liegt (also sagen wir mal 601 Herz), weil mit 601 Herz wäre ja die Bedingung von Shannon größer als zweimal Signalfrequenz erfüllt.
AB.C. schrieb: > Vielen Dank für die Vielzahl Eurer Erklärungen. Schön, keine Ursache AB.C. schrieb: > Also müsste nach dem Shannontheorem die Abtastrate bei 300 Baud > mindestens 601 Herz betragen, also besser 1000 Herz. Du solltest die Erklärungen bitte auch lesen und verstehen. NIX Shannon, nix Analog abtasten! Shannon brauchst du hier nur, wenn du die minimale Bandbreite für ein Übertragungskanal berechnen willst.
AB.C. schrieb: > Also müsste nach dem Shannontheorem die Abtastrate bei 300 Baud > mindestens 601 Herz betragen, also besser 1000 Herz. Nein, 300Baud sind maximal 150Hz. Der Extremfall ist die Bitfolge 01010101. Liest du auch mal was man dir schreibt?
Zum digitalen Abtasten von 300 Bau per UART reichen rein theoretisch 300 Hz. Praktisch nutzt man ehe die 8fach oder 16 fache Frequenz, damit wird das alles deutlich stabiler und einfacher. USB nutzt bei 12 Mbit/s eine Statemachine, die mit 48 MHz den Datenstrom abtastet, also Faktor 4, und das reicht auch.
>Nein, 300Baud sind maximal 150Hz. Der Extremfall ist die Bitfolge >01010101. Naja die frequnz ist zwar 150Hz aber die Symboldauer die er rekonstruieren will ist ja nur 1/300s also muß er mindesten mit doppelter Symbolrate samplen.
Falk Brunner schrieb: > Zum digitalen Abtasten von 300 Bau per UART reichen rein theoretisch 300 > Hz. Praktisch nutzt man ehe die 8fach oder 16 fache Frequenz, damit wird > das alles deutlich stabiler und einfacher. USB nutzt bei 12 Mbit/s eine > Statemachine, die mit 48 MHz den Datenstrom abtastet, also Faktor 4, und > das reicht auch. Danke :)
AB.C. schrieb: > serielles Signal > mit 300 baud richtig zu messen? Da Signal und Messung asynchron sind würde ich mal mindestens die doppelte Frequenz vorsehen. Es besteht die Gefahr dass Sampling genau auf dem Bitwechsel stattfindet und dann ist die Messung für den Popo. rgds
6A66 schrieb: > Da Signal und Messung asynchron sind würde ich mal mindestens die > doppelte Frequenz vorsehen. Es besteht die Gefahr dass Sampling genau > auf dem Bitwechsel stattfindet und dann ist die Messung für den Popo. Nein! Ein digitaler serieller Empfänger synchronisiert auf die erste Flanke des Startbits, und ab dann immer möglichst auf Mitte der nachfolgenden Bits. Das Ganze ist wie Falk schon gesagt hat normalerweise als Zustandsautomat (state machine) implementiert. Und ja, die inneren Timer müssen natürlich dann mindestens die halbe Zeit eines Bouds als minimale Zeitauflösung haben.
:
Bearbeitet durch User
Im deutschen Wikipedia ist das leider nicht sauber erklärt (manchmal habe ich das Gefühl das deutsche Wikipedia wird immer schlechter), im englischen ist es besser beschrieben: http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter
Udo Schmitt schrieb: > Nein! Ein digitaler serieller Empfänger synchronisiert auf die erste > Flanke des Startbits, und ab dann immer möglichst auf Mitte der > nachfolgenden Bits. Das ist völlig korrekt. Das aber erfordert oversampling, das war schon beim 8251 so (siehe oben und Datenblatt dort). Wir reden aber nicht vom UART intern sondern: AB.C. schrieb: > Ich habe von NI eine Messerfassungskarte im Rechner drinnen und möchte > damit aus Lernzwecken Daten aus einer seriellen Leitung lesen. Also von extern. Also entweder einsynchronisiert durch oversampling beim Startbit - wie der Name schon sagt oversampled. Oder dann einfach irgendwann gestartet, völlig asynchron. Dann eben mit mindestens doppelter Frequenz wie man das immer beim aufsynchronisieren zweier völlig unterschiedlicher Systeme macht (BTW: Der erste Prozessor der das meine Wissens gemacht hat war der erste frei verfügbare ARM (3 ?), das Businterface extern lief völlig asynchron zum Kern). rgds
6A66 schrieb: > Udo Schmitt schrieb: >> Nein! Ein digitaler serieller Empfänger synchronisiert auf die erste >> Flanke des Startbits, und ab dann immer möglichst auf Mitte der >> nachfolgenden Bits. > > Das ist völlig korrekt. > Das aber erfordert oversampling, das war schon beim 8251 so (siehe oben In wikipedia: [reciever] runs at a multiple of the data rate, typically 8 times the bit rate. rgds
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.