Forum: Mikrocontroller und Digitale Elektronik LPC2106 wie schnell ?


von Peter D. (peda)


Lesenswert?

Also auf der Philips Seite ist zwar ein "User Manual", aber nirgends
steht, wie schnell das Ding ist.
Bei allen anderen MCs findet man Taktdiagramme und MIPS-Angaben, bloß
nicht beim LPC. Ist das Ding etwa schnarchlahm ?

Ich hätte da ne Aufgabe, wo ich etwa 100-fache 8051-Speed bräuchte.

Ich suche also verzweifelt nach dem "Instruction Set" um
rauszukriegen, hat das Ding überhaupt Mul und Div und wenn ja, wie
lange braucht er dazu ?


Peter

von Matthias (Gast)


Lesenswert?

Hi

der LPC2106 hat einen ARM7TDMI-S Kern von ARM. Man geht also auf
www.arm.com und findet dort
http://www.arm.com/pdfs/DDI0234A_7TDMIS_R4.pdf

Dort kann man dann ersehen das ein ARM7 keinesfalls so einfach zu
durchschauen ist wie ein 8051 oder ein AVR. Die dreistufig Pipeline
verkompliziert das Ganze etwas. Ob du 100-fach (12MHz)MCS51-Performance
erreichen wirst kommt auf die Art der Daten an. Bei 32Bit Arithmetik
auf jeden Fall. Bei 16Bit-Arithmetik könnte es schon knapp werden. Bei
8Bit wirst du das nicht schaffen können.

DIV kennt der ARM7TDMI nicht. Man implementiert das typischerweise mit
einer Multiplikation und einem Shift um n-Stellen was Aufgrund des
Barrel-Shifters sehr schnell geht.

Matthias

von crazy horse (Gast)


Lesenswert?

wie wärs denn mit einem IP2000 oder IP3000?

von Matthias Friedrich (Gast)


Lesenswert?

aus dem lpc2106-infosheet:
"High-performance 60 MHz (54 Drystone MIPS)"

Das entspricht ungefähr der Leistung eines 486-DX2-66, soweit ich das
richtig in Erinnerung habe, leider finde ich die Quelle nicht mehr,
deswegen bitte mit vorsicht geniessen.

von Peter D. (peda)


Lesenswert?

Vielen Dank für den Link.
Da habe ich ja ne Menge zu lesen.

Schade, daß man heutzutage keine ausgedruckten Handbücher mehr kriegt.

Im Prinzip muß nur ein Interrupthandler sehr schnell sein. Die
32Bit-Berechnungen werde ich auch gut brauchen können.

Hat schon mal jemand den GCC dafür probiert oder sollte man doch etwas
für Geld kaufen ?


Peter

von OldBug (Gast)


Lesenswert?


von ibuz11 (Gast)


Lesenswert?

@ Peter

Ist zwar ur-alt und teuer , aber wie wäre es mit SAB 80C537 ?

Fast 32-bit division, 16-bit 2 multiplication,
Execution Time = 4 - 6 ysec. @ 12 MHz oscillator frequency.

Nicht mehr ein 8051 Fan  ;-)  ?

von Matthias Friedrich (Gast)


Lesenswert?

"Im Prinzip muß nur ein Interrupthandler sehr schnell sein. Die
32Bit-Berechnungen werde ich auch gut brauchen können."

Das ist beim ARM schwerer vorauszusagen, da er eine Pipeline besitzt,
die Voraussagen über das Laufzeitverhalten deutlich erschweren.

"Nicht mehr ein 8051 Fan  ;-)"
Das eine schließt das andere ja nicht aus, der 8051 kommt trotz ständig
erscheinender neuen Derivate langsam in die Tage, denn die Architektur
setzt doch gewisse Grenzen.

von Peter D. (peda)


Lesenswert?

"Ist zwar ur-alt und teuer , aber wie wäre es mit SAB 80C537 ?"

Ich bin jetzt eigentlich mehr Fan von allem mit IAP-Flash intern (z.B.
AT89C51CC01).
Das macht das Leben um vieles leichter (Software entwickeln, EMV,
Störsicherheit, Layout entwickeln).
Und nicht zuletzt ist heutzutage ein Update beim Kunden fast schon
Pflicht. Sei es, daß die Software nicht ganz ausgereift ist oder der
Kunde sein Wünsche noch gar nicht richtig kennt.


Das DIP40-Modul des LPC2106 scheint mir optimal zum Testen.
Was ich brauche ist ein Timerinterrupt mindestens alle 3µs, der auch
ein bischen 32Bit rechnen muß (*,+). Etwa 40kB SRAM werden auch
benötigt.


Peter

von Matthias (Gast)


Lesenswert?

Hi

zur Interruptlatenz spezielle beim LPC21XX:

Tritt ein Interrupt-Erieignis ein muß die Pipeline ne gefüllt aber auch
aus dem Flash neu gelesen werden. Das Flash ist beim LPC21XX 128Bit
breit angebunden. D.h. es liefert im Prinzip 4 mal zu viel Daten als
nötig wären. Da das Flash aber relativ langsam ist braucht es auch 4
Takte um ein 128Bit-Wort zu liefern. Daraus folgt dann wieder wenn es
nicht im Vorraus schon mit dem Lesen anfangen kann (weil ein INT eben
unerwartet auftritt) kommen nochmal 4 Takte zusätzlich dazu die
verloren gehen. An der Ganzen Geschichte kann man dann nochmal mit den
MAM-Registern rumstellen. Wie das genau zusammenhängt müßte ich mir
aber auch erstmal anlesen.

Grundsätzlich kann man aber sagen: Schnelle INT's legt man besser im
internen RAM ab (Muß man die Routine nach dem Start reinkopieren und
die INT-Vectoren entsprechend anpassen)  und spart sich damit ein paar
Takte. Evtl. reichen sogar die restlichen 24kB SRAM für die gesamt
Anwendung aus (evtl. über ARM Thumb nachdenken) so das man nach dem
Start einfach alles ins SRAM kopiert und dann richtig schnell ist.

Matthias

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.