Hallo Liebe Gemeinde, nach Jahren stillen mitlesen, brauch ich nun eure Hilfe bei einem Projekt wo ich selbst nur helfen möchte. :) Für die Uni wird gefragt: wie man die Baudrate des UART berechnet. Board: XYLINX NEXYS4 DDR, hat wohl eine Baudrate von 12Mbaud das Bild von der Kamera ist downscaled auf 640x480/4 = 76800bytes stimmt dann diese Rechnung: [(12M/10)/(640*480/4)] ? 1200000bit/S / 76800bytes 1200000bit/s / 614400bit kann mir da jemand weiterhelfen? Vielen Dank im voraus!
Wieviel Start und Stopbits? Wenn du von einem Start- und einem Stopbit ausgehst, stimmt deine Rechnung. Von einem UART mit 12MBaud hab ich allerdings noch nie was gehört, das muss aber nichts heißen.
Die Rechnung verstehe ich nicht ganz. Warum 12M/10? Edit: Ja, man kann durch 10 teilen, dann sollte beim Ergebnis aber Byte stehen und nicht Bit. /Edit Auf dem Board ist ein FT(2)232H, der kann maximal 12 MBaud. Was wirklich gemacht wird hängt davon ab was du einstellst und was dein UART im FPGA kann. Ja, Achtung: Viele IP UARTs (auch die von Xilinx mit AXI) können ohne Modifikationen keine 12 MBaud. Du müsstest also einen UART schreiben oder suchen und verwenden. Zusätzlich musst du auf den Takt achten. Bei 12 MBaud ist ein Bit 83.333 ns lang. Wenn du einen 100 MHz Takt verwendest und ein Bit 8 Takte lang machst, dann ist jedes Bit um 3.333 ns zu kurz. Bei 9 Bits (Start+Daten) sind das dann schon 30 ns. Das könnte grenzwertig oder fehlerhaft werden. Also mit einer PLL einen geeigneteren Takt erzeugen, z. B. 120 MHz oder 96 MHz. Dann zur Rechnung: Die Baudrate ist noch nicht die Nutzdatenrate. Von den 12 MBaud können im Idealfall 8/10 genutzt werden. Datenrate = 12 MBaud*8/10 = 9,6 MBit/s. Datenmenge = 640*480/4 Bytes = 76800 Bytes. Zeitdauer = Datenmenge/Datenrate = 76800 Bytes / 9,6 MBit/s = 64 ms. https://www.wolframalpha.com/input/?i=%28640*480%2F4%29Bytes%2F%2812*8%2F10%29MBit%2Fs
:
Bearbeitet durch User
Vielen Dank für die schnellen Antworten, das hilft mir sehr. mir ist leider ein Fehler unterlaufen, Datenmenge ist bit nicht byte: Datenmenge = 76800bit und konkret weiß ich, dass Takt = 25MHz kann ich so sagen wie ich die baudrate für das board berechne? diese 12Mbaud sind ja weit hergeholt, ich brauch ja nichtmal 9,6Mbaud...es geht halt schon darum wie man den UART selbst schreibt und was die Rechnung dahinter ist. Würde mich über weitere Antworten sehr freuen :)
Rza D. schrieb: > Datenmenge = 76800bit Schreib doch einfach welche Auflösung dein Bild und wie viel Bit jedes seiner Pixel hat. Rza D. schrieb: > Takt = 25MHz Das ist recht egal, da du im FPGA eine andere Frequenz erzeugen kannst und bei 25 MHz vermutlich auch machen musst wenn du mit höheren Baudraten arbeiten willst. Rza D. schrieb: > kann ich so sagen wie ich die baudrate für das board berechne? Nein. Rza D. schrieb: > ich brauch ja nichtmal 9,6Mbaud Wie kommst du auf den Wert? Die Information die fehlt ist: In welcher Zeit soll die Datenmenge übertragen werden? Wenn du da eine Sekunde Zeit hast, dann kommt eine deutlich geringere minimale Baudrate raus wie wenn du nur wenige Millisekunden Zeit hast für die Übertragung. Rza D. schrieb: > es geht halt schon darum wie man den UART selbst schreibt > und was die Rechnung dahinter ist. OK, du willst also den UART selber schreiben. Dann guck dir an wie generell UART funktioniert. https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter Um deinen UART zu schreiben und zu testen brauchst du auch keine Bilddaten oder so, du kannst dir einfach einzelne Bytes hin und her schicken. Sinnvoll ist ein Loopback. PC schickt zum UART, der empfängt, gibt Byte aus, das gleiche Byte wird wieder dem UART gegeben, der sendet es zum PC und der vergleicht. Du kannst auch noch eine Logik dahintersetzen die im empfangenen Byte alle Bits invertiert und das dann sendet oder um 1 hochzählt und sendet, ... Viel Spaß, einen UART zu schreiben ist eine schöne und sinnvolle Übungsaufgabe.
Hallo, also das Bild hat 640*480 pixel wird aber durch 4 geteilt (downscale) 1pixel entspricht 1bit Ich hab mir schon gedacht, dass das ein anspruchsvolles Projekt ist. Aber egal ich will das jetzt lernen. Das Problem ist das ich bits und bytes etwas verdrehe. Gustl B. schrieb: > Wie kommst du auf den Wert? Ich dachte Mbaud = Mbit, deshalb habe ich deine Rechnung mit 8/10 angenommen Gustl B. schrieb: > im Idealfall 8/10 genutzt werden. > Datenrate = 12 MBaud*8/10 = 9,6 MBit/s. So wie du mir das jetzt erklärt hast, habe ich verstanden Maximale Baudrate/Bild Größe = Bilder pro sekunde bloß woher bekomme ich die Maximale Baudrate Wirklich vielen Dank bis hier hin. Grüße
Der Meister hat es doch schon vorgekaut: http://www.lothar-miller.de/s9y/categories/42-RS232 Die Takterzeugung kannst du auch per ip-Generator erstellen.
Ok thanks. Das zieh ich mir sofort rein
Rza D. schrieb: > bloß woher bekomme ich die Maximale Baudrate Du siehst den Schaltplan deiner Baugruppe an, und dann die Datenblätter der im Signalpfad verwendeten Komponenten, und dann nimmst du den niedrigsten Wert, den du dort an Datenrate findest. Das wars. Und dann teilst du diese "Bruttomaximaldatenrate" noch durch 2, wenns unkompliziert sein soll. Rza D. schrieb: > diese 12Mbaud sind ja weit hergeholt, ich brauch ja nichtmal 9,6Mbaud... Das ist im Grunde das selbe. Denn die 12MBd ist der Wert, wenn kein Teilnehmer irgendeinen Schluckauf bekommt und zwischendurch "ein wenig bremst". Erst wenn du mal einen Faktor von 2 oder gar eine Zehnerpotenz drüber oder drunter bist, dann kannst du von "nichtmal" reden. Jonas B. schrieb: > Der Meister hat es doch schon vorgekaut Vermutlich könnte das hier sogar noch wesentlich einfacher ausfallen, weil ja nur gesendet werden muss. Dafür ist das Timing viel leichter herzustellen, weil ja kein Oversampling zur Erkennung der Bitmitte nötig ist.
Alles klar! Top! Das und der Blog konnten meine Fragen abschließend klären... Merci! und sonnige Grüße aus Karlsruhe
Sehr schön. Hier scheint auch die Sonne. VG jibi
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.