Forum: Mikrocontroller und Digitale Elektronik delay mit XC2267 Controller


von Leonhardt (Gast)


Lesenswert?

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 ?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Leonhardt (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Leonhardt (Gast)


Lesenswert?

Hab die Stelle im Dokument auch gefunden. Danke für die Hilfe.

So, laut Berechnung 31 * 25ns müsste man dann auf 775ns kommen.

von Guido (Gast)


Lesenswert?

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