Hallo! Wenn das FPGA noch genug Ressourcen zur Verfügung stellt neige ich dazu, Aufgaben parallel durch mehrere Instanzen verarbeiten zu lassen. Soll eine FPGA z.B. mehrere Motoren regeln, würde ich erst mal für jeden Motor einen Regler instantiieren. Mit fortschreitender Projektlaufzeit komme ich aber häufig an den Punkt, an dem die Ressourcen auf dem FPGA knapp werden, so dass ich darüber nachdenke welche Aufgaben ich seriell abfrühstücken könnte. Da der Regler aus obigem Beispiel "nur" mit 1kHz arbeitet wäre es gut möglich, den Regler nur noch ein mal zu instantiieren und alle Motoren mit diesem Regler anzusteuern. Meine Fragen sind: - Gibt es für dieses umwandeln eines parallelen Designs in ein serielles Design ein Kochschema nach dem ich vorgehen kann? A la "Füge einen Kanalzähler hinzu, füge BlockRam für Zwischenergebnisse hinzu, eine Statemachine die die Kanäle weiterzählt [...]"? - Nach welchem Stichwort könnte ich eine Suchmaschine füttern??? Ich bin ja sicher nicht der erste der auf diese Idee gekommen ist... Gruß, Hendrik
Heinrich H. schrieb: > - Gibt es für dieses umwandeln eines parallelen Designs in ein serielles > Design ein Kochschema nach dem ich vorgehen kann? Mir ist bisher keine Veröffentlichung bekannt... > A la "Füge einen > Kanalzähler hinzu, füge BlockRam für Zwischenergebnisse hinzu, eine > Statemachine die die Kanäle weiterzählt [...]"? Genau so würde ich das auch machen. Wenn Du gut bist, ist Dein Einzelmodul schon für die Steuerung durch eine externe Statemachine vorbereitet. Da jedes zu serialisierende Modul andere Parameter zwischenspeichern muß, kann hier m.E. Schema F nicht wirklich funktionieren. Duke
Die brutale Methode ist, alle Inputs und Outputs zu multiplexen und sie mit 1/n to togglen. Dazu müssen sie natürlich zwischengespeichert werden, was dazu führt, dass man sie in jeder pipeline Tiefe benötigt. -> Register-BRAM bauen, zeitversetzt alle Inputs des Moduls bereitstellen und jeweils einen kompletten Registersatz für jeden Takt mit dranhängen. Die Synthese sucht sich dann die richtige Beziehung raus. Du musst nur die zum Zeitversatz passende Registernummer verdrahten. Dies ergibt sich aus k+d mit k = Nummer des Kanals und d=Delay mit der das Register innerhlb der FSM benötigt wird. Problem: Eine verschachtelte FSM baut Gabelungen in den Zeitebenen , was durch Fallunterscheidungen gelöst werden muss. Besser ist es, die FSM läuft linear und hat die pipeline schon mit drin. Dann ist es auch möglich, den gesamten Prozess von innen her zu multiplexen. Wenn du nur das BRAM mit allen Parametern hast, musst Du einen kompletten Prozess abwarten, bevor Du die Kanäle umschalten kannst. Dann läuft das ding sozusagen, wie ein Prozessor.
Jodi schrieb: > Die brutale Methode ist, alle Inputs und Outputs zu multiplexen und sie > [...] Hallo und danke für Deine Antwort. Ich hatte Urlaub, deswegen reagiere ich erst jetzt. Ich musste Deine Antwort mehrfach lesen, aber am Ende habe ich glaube ich verstanden was Du meinst. Im Grunde habe ich es bis jetzt auch so umgesetzt. Laufen tut es zwar noch nicht, aber ich arbeite dran. Gruß aus dem sonnigen Norden, Hendrik
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.