Hallo zusammen Ich möchte einem FPGA über eine serielle Schnittstelle Parameter übergeben. Die Receive-Routine verwaltet dazu ein Flag RxDataAvailabe. Man weiss damit, dass neue gültige Daten da sind. Die Routine sollte für diverse Projekte möglichst flexibel sein. Was haltet ihr von der folgenden Lösung?: 1.) Im FPGA wird ein Speicherbereich Names DataRec definiert (siehe auch Bild): reg [7:0] DataRec [0:255]; 2.) mittels einer State-Maschine werden die Daten, wenn RxDataAvailable gesetzt ist, der RS232 gelesen und in einen Zwischenpuffer (InputBuf) geschrieben. Die Daten bestehen aus Byte StartByte Byte Datenlänge Byte Adresse Byte[20] Data; // maximal 20 Byte lang 3.) Nachdem die Daten vorhanden sind wird der Inhalt von InputBuf nach DataRec kopiert. 4.) Der Datenzugriff erfolgt im FPGA dann schliesslich z.B über AdjustValue=DataRec[AdjAddress]; Im ähnlichen Stil könnte man evtl. beim Lesen vorgehen. Dünkt Euch dieses Konzept praktisch oder würdet ihr anderweitig vorgehen? Vielen Dank für Euer Feedback Geri
Klingt für mich so als wenn Du einen Microcontroller im FPGA nachbildest, der dann 'klassisch' Daten empfängt die dann der Apllikationslogik übergeben werden. Warum nicht eine SPI-Schnittstelle? 1. Byte Adresse und dann je nach dem Datenbytes hinterher. Je nach dem dann Autoinkrement beim Adresszähler falls mehrere Paramater übergeben werden.... Dagegen spricht aus meiner Sicht eigentlich nur das Du ggf. die Daten vom PC empfangen willst und der kein 'native' SPI hat. Evtl. definierst Du in dem 1 Byte 1 Bit für Lesen (Daten werden dann auch seriell herausgeschoben) und 1 Bit für Autoincrement an/aus je nach dem ob weitere Zugriffe dann auf das nächste Byte zugreifen sollen oder das gleiche (ggf Doppelbyte für 16 Bit Wörter).
Hallo Tom Vielen Dank für Deine Rückmeldung. Die RS232 war hier eigentlich nur exemplarisch gedacht. Es könnte, wie du sagst auch die SPI, I2C oder eine andere Schnittstelle sein. Fragwürdig ist für mich das Konzept an sich. Irgendwie möchte ich Parameter im FPGA setzen und nachdem diese gesetzt sind eine Operation ausführen (z.B. eine Temperatur regeln oder einen PWM-Ausgang gemäss Vorgabe setzen). Du hast auch recht, diese Lösung verwende ich beim Mikrocontroller. Sie funktioniert dort sehr gut:). Prinzipiell müsste das Konzept auch beim FPGA funktionieren. ..ob es aber vielleicht eine professionellere Lösung gäbe..:)? Ach ja, das CMD-Byte wäre hier eigentlich nicht erforderlich. Vielleicht aber in der Zukunft praktisch:) Beste Grüsse Geri
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.