Guten Morgen, für eine Applikation benötige ich eine delay Funktion. Die Verzögerung soll 100us betragen. Dafür setzte ich den NOP (Null Operation) Befehl ein. Dieser Befehl benötigt 2 Bytes. Im Datenblatt steht zu diesem Controller folgendes: 12.5 ns instruction cycle at 80 MHz CPU clock (single-cycle execution) Die fsys Frequenz ist bei mir auf 40 Mhz eingestellt. Wie länge benötigt somit ein NOP Befehl zur Verarbeitung ? Wie kommt man rechnerisch darauf ?
Leonhardt schrieb: > für eine Applikation benötige ich eine delay Funktion. Die Verzögerung > soll 100us betragen. Dafür setzte ich den NOP (Null Operation) Befehl > ein. Ist das eine Hausaufgabe? > Dieser Befehl benötigt 2 Bytes. Unnötige Information. > Im Datenblatt steht zu diesem Controller folgendes: > 12.5 ns instruction cycle at 80 MHz CPU clock (single-cycle execution) > Die fsys Frequenz ist bei mir auf 40 Mhz eingestellt. Wie lange dauert also ein Zyklus bei dir, wenn deine Taktfrequenz halb so schnell ist? > Wie länge benötigt somit ein NOP Befehl zur Verarbeitung ? Wie lange dauert also ein Zyklus bei dir, wenn deine Taktfrequenz halb so schnell ist? Wieviele Zyklen dauert ein NOP bei deinem Prozessor? Üblicherwese braucht ein NOP einen Maschinenzyklus. > Wie kommt man rechnerisch darauf ? Man nimmt die Anzahl der für einen NOP benötigten Zyklen mal die Zeit, die ein einziger Zyklus braucht. So, und jetzt hast du die Zeit für 1 NOP, und du kannst rechnen 100us/0,025us = 4000 Zyklen. Wenn du das jetzt aber mit einer Schleife abzählen willst, dann solltest du beachten, dass die Verwaltung dieser Schleife (Herunterzählen, Vergleichen, Springen) wesentlich mehr Zeit braucht, als das NOP... BTW: Du plenkst.
Ein Zyklus bei 40 Mhz dauert dann natürlich 25ns. Wieviel Zyklen benötigt somit eine NOP Operation ? Ich weiss nur laut Datenblatt benötigt ein NOP Befehl 2 Byte.
Leonhardt schrieb: > Ich weiss nur laut Datenblatt benötigt ein NOP Befehl 2 Byte. Dann siehst du an der falschen Stelle nach. Dich interessiert nicht, wieviel Platz ein NOP verbraucht, sondern wie lange die Ausführung dauert. Da steht dann auch im Datenblatt:
1 | 3.17 Instruction Set Summary |
2 | Table 10 lists the instructions of the XC226x. |
3 | The addressing modes that can be used with a specific instruction, |
4 | the function of the instructions, parameters for conditional execution |
5 | of instructions, and the opcodes for each instruction can be found in the |
6 | |
7 | “Instruction Set Manual” |
Na gut. Blöde nur, dass es sowas nicht gibt. Aber dafür findet sich ein "C166S V2 Core User's Manual". Und hoppla, da findet sich was ganz ausgefallenes:
1 | 1 to 31 cycles for ’multicycle’ NOP (opcode CC 000d:dddd) |
Ein NOP bei diesem Prozessor braucht also 1..31 Zyklen.
> ...Operation ? Ich...
Vor einem Fragezeichen/Ausrufezeichen/Komma/Punkt oder sonstigen
Interpunktionszeichen kommt kein Leerzeichen.
Hab die Stelle im Dokument auch gefunden. Danke für die Hilfe. So, laut Berechnung 31 * 25ns müsste man dann auf 775ns kommen.
Normalerweise benötigt ein NOP einen Zyklus. Du kannst bei diesen Controllern aber generell nicht die Dauer der Befehle bestimmen, da diese von vielen Umständen abhängig sind, die vor allem mit der Pipeline zusammenhängen. Andererseits haben sie massenweise Timer, die man ruhig für definierte Delays benutzen darf. Das Instruction-Set findet man in C166S-V2.pdf
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.