Ich habe einen FPGA mit einem FT245 FIFO verbunden als Verbindung zum pc. Jetzt ist es so, dass es verschiedene datenquellen im fpga gibt, die ich gerne alle zum pc übertragen will. Wie mache ich das am geschicktesten? Ich dachte erstmal an jeweils einzelne fifos pro datenquelle und dann eine Art multiplexer. Der pc muss dann aber noch wissen woher der Datenstrom kommt.
Du könntest die Daten in irgendeinem Format übertragen. Also als Beispiel dass immer 64 Byte zusammengehören. Das erste Byte ist ein Startbyte mit definiertem Muster. Dann kommt ein Byte das sagt von welcher Quelle die Daten kommen. Und danach kommen 62 Bytes der Nutzdaten. Ja du brauchst eine Art Multiplexer. Der Lässt von jeder Quelle ein Paket in den FIFO hinein und schaltet dann zur nächsten Quelle. Wenn eine Quelle nichts schicken will wird zur nächsten Quelle weitergeschaltet.
Abhängig von Datenrate und Datenmenge kann man auch alle Daten in ein Paket schreiben und das raussenden. Also z.B. Datenwort Quelle 1 in Byte 0...15, Quelle 2 dahinter Byte 16...31 usw. Dann müssen die Daten nur in ein Array geschrieben und das Array dann ausgesendet werden.
Du brauchst eine Art Mulitplexing um die Daten auseinander zu halten. Schau Dir dafür mal COBS an: https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing Das hat den Vorteil daß der Overhead konstant ist und daher nicht abhängig von speziellen Mustern im Datenstrom ansteigen kann.
Der Multiplexer muß natürlich wissen, wann ein Submodul mit seinem Paket fertig ist. Sonst gibt es Datensalat, wenn alle wild drauflossenden. Alternativ werden alle Datenquellen verodert und der PC sagt an, von wem er was haben möchte. Im Ruhezustand müssen die Submodule eine '0' ausgeben. 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.