Hallo zusammen, ich habe eine Anwendung, bei der ich Signale taktsynchron mit einer Frequenz von 10Mhz rausgeben muss. Da ja während der Ausgabesignale Berechnungen ausgeführt werden müssen, stellt sich die Frage, welchen Clock Takt ein Mikrocontroller haben muss, damit er die 10Mhz Ausgabefrequenz stabil realisieren kann. Die Berechnungen Beschränken sich auf Grundrechenarten und ein paar sin-Terme. Kann man das abschätzen? VG Jo
Kommt ganz auf deinen Controller an. Hast du dich da schon entschieden? Ich denke, du wirst hier relativ hoch arbeiten müssen, da Berechnungen und vorallem Sinus Berechnungen (Vermute mal, das meinst du mit sin-terme) schon einiges an Zeit brauchen. Müssen die Berechnungen denn zwingend vor der nächsten Ausgabe fertig sein? Falls ja, viel Glück. Wenn du ein bisschen Assembler kannst weisst du, wie so eine Sinus Rechnung aussehen kann. Nicht ganz so einfach diese dann mit so wenig Code zu realisieren, dass das Zeitlich da noch passt..
Okay, also meinst du man sollte gleich einen FPGA nutzen? Ich hatte noch keinen speziellen µC im Blick - aber wenn du meinst, dass es nicht reichen wird...die Berechnungen müssen vor der Ausgabe fertig sein, ja.
Ist schwerig zu sagen. Ich kenne mich damit wohl etwas zu wenig aus, um eine genaue Analyse liefern zu können. Was ich dir mal beschreiben kann ist wie lange ein PIC16F887 für den Wechsel eines Bits benötigt. (Folgender ist alles aus dem Kopf und 2 Lehrjahre zurück, keine Garantie dass noch alles 100 % stimmt): Davon ausgehend, dass der PIC 8 MHz Systemtakt hätte, würde er für den Befehl:
1 | bsf Bit |
einen Maschinenzyklus benötigen. Dieser berechnet sich mit: 1 / (8 MHz / 4) = 500 nS. Und schon siehst du, dass bei einem Systemtakt von 8 MHz höchstens alle 500 nS ein Bitwechsel möglich wäre, was einer Frequenz von 2 MHz entspricht. Berechnet man für dein Vorhaben alles auf die genau selbe Art, bräuchtest du alleine um den Zustand an einem Ausgangspin zu wechseln einen Takt von 40 MHz. Willst du dazwischen noch Float-Rechnungen machen, wird das nichts mehr. Jo schrieb: > bei der ich Signale taktsynchron mit einer > Frequenz von 10Mhz rausgeben muss. Was sind dass den für Signale? Ist das ein ganz normaler Digitaler Ausgang, an welchem du den Zustand ändern willst? In meinen Augen ein komplizierteres Problem, aber wie gesagt, keine Garantie für die Angaben. Am besten wartest du noch ein wenig bis dir jemand aus dem Forum eventuell das etwas genauer Erklären kann oder jemand andere Lösungsvorschläge bringt. Hoffe konnte dir trotzdem ein wenig helfen Gruss
:
Bearbeitet durch User
Handelt es sich bei deinen 10MHz nur um ein normales Rechtecksignal oder soll das ein PWM-Signal werden? Ansonsten kann man das schlecht abschätzen, wenn man deine Formel nicht kennt. Aber mehrere Sinus Funktionen klingt schon mal nach viel Rechenaufwand (bzw. suchen in Lookup-Tables). Hier kommt es dann drauf an, wie viele Rechenschritte deine Formel in gekürzter Form noch hat. Also wie viele Additionen, Subtraktionen und Multiplikationen. Bei Divisionen wird es auch wieder knifflig, die dauern auch ewig. Soll das ganze auch noch als Float berechnet werden, dann braucht dein µC auch noch ein FPU, sonst wirst du wohl eine µC mit >1GHz brauchen (nur geraten, kenne die Formel ja nicht)
Ja vielen Dank! Ich habe schon damit gerechnet, dass es zeitkritisch ist. Ich möchte auch analoge Signale über einen D/A rausgeben. Die schnellsten Entwicklerboards liegen bei 200MHz oder? Das wird dann allerdings ziemlich eng...Vielleicht gibt es ja noch weitere Meinungen dazu? Wie sieht es zeitlich gesehen mit if Abfragen aus? Eventuell könnte ich vorher ein paar Rechnungen ausführen lassen und später immer nur auf diese Ergebnisse zurückgreifen über if Abfragen. Wenn ein Vergleich von zwei Werten dann auch wieder so viel Zeit in Anspruch nimmt, habe ich nichts gewonnen...
Schau doch was der µC kann. Der ARM Befehlsatz ist doch festgelegt... hier zB für einen ARM9: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0091a/BEIEDGJJ.html Oder hier für einen M4: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/CHDDIGAC.html Und es gibt genug Boards mit >200Mhz, kommt ganz drauf an was man machen will... Viel Erfolg Greez Ert
Jo schrieb: > Ich möchte auch analoge Signale über einen D/A rausgeben. Allerspätestens hier wirst du an die Grenzen der Möglichkeiten kommen. Kommt ganz darauf an, mit welchem Compiler du arbeitest. Ich würde schätzen, eine IF Abfrage braucht auch schnell man an die 6-7 Maschinenzyklen. Kannst dir das ja wieder selbst ausrechnen, die Links die Ert gepostet hat dürften dir dabei helfen... vorraussetzung dafür ist natürlich, dass du Assembler kennst.
Jo schrieb: > Hallo zusammen, > > ich habe eine Anwendung, bei der ich Signale taktsynchron mit einer > Frequenz von 10Mhz rausgeben muss. Was für Signale? Wie viele Signale? > Da ja während der Ausgabesignale > Berechnungen ausgeführt werden müssen, stellt sich die Frage, welchen > Clock Takt ein Mikrocontroller haben muss, damit er die 10Mhz > Ausgabefrequenz stabil realisieren kann. Sehr viele Controller haben DMA d.h. wenn das Signal nebenher/vorher berechnet werden kann, kann die DMA-Einheit die Daten nebenher passend zum Takt irgendwohin schaufeln und das meistens deutlich schneller als die CPU im Controller... > Die Berechnungen Beschränken > sich auf Grundrechenarten und ein paar sin-Terme. Kann man das > abschätzen? Der Sin könnte, je nach Anforderungen, auch aus einer Tabelle kommen. Damit könnte sich die Berechnung deutlich beschleunigen lassen. Falls die Tabellen zu groß für das interne SRAM gängiger Controller werden, was sich ohne nähere Angaben wiederum nicht genau sagen lässt, müsste was anderes überlegt werden. Tabellen im Flash: Die einzigen, mir bekannten, Controller, die auch bei vollem Takt (100 MHz) ohne Waitstates auf ihren Flashspeicher zugreifen können, wären die RX von Renesas. Bei Tabellen in einem externen Speicher (SRAM, SDRAM etc.) wäre die Controller-Auswahl wieder riesig.
:
Bearbeitet durch User
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.