Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller Auslegung


von Jo (Gast)


Lesenswert?

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

von San L. (zwillingsfreunde)


Lesenswert?

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..

von Jo (Gast)


Lesenswert?

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.

von San L. (zwillingsfreunde)


Lesenswert?

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
von unleashed (Gast)


Lesenswert?

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)

von Jo (Gast)


Lesenswert?

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...

von Ert (Gast)


Lesenswert?

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

von San L. (zwillingsfreunde)


Lesenswert?

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.

von Arc N. (arc)


Lesenswert?

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
Noch kein Account? Hier anmelden.