mikrocontroller.net

Forum: Projekte & Code FPU mit AT89LP4052


Autor: Pieter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
moin moin,

anbei ein FPU mit dem AT89LP4052.

Mit Gruß
Pieter

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pieter wrote:
> anbei ein FPU mit dem AT89LP4052.

???

Ich sehe da nur irgendwelche 2 Files, mit denen niemand was anfangen 
kann.
Kannst Du mal erklären, was das soll?

Z.B.:
Welche Programmierumgebung ist das?
Was ist ein MAC-File?
Fehlen da nicht noch einige Includes?
Warum sollte ich float Rechungen extra umständlich in nen anderen MC 
schaufeln und wieder zurück?
Was ist so geheim daran?


Peter

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich kann da auch keinen sinn erhaschen ...

sinn machen würde eine in logik synthetisierte FPU mit schneller 
paralleler anbindung (0-1 waitstate)

dann ist eine float rechnung durch "schreiben, schreiben, lesen" 
schneller als die emulation auf dem eigentlichen system...

bis ich befehl, operanden und ergebnis geshiftet habe hat es die 
emulation doch 5mal durch :P

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nur so viel,das MAC kommt von "Macro-Assembler"
Ich habe Peter schon gesagt, das die MAcros bzw. Includes noch fehlen.
Die sind aber im BIN alle drin.
Außerdem kann kaum ein Assembler DF 1.009362 ( Def. Floatzahl )
Deswegen hat er es nicht drin.

Geheim ist daran, nichts, aber aufwändig. ( Resourcenverteilung)

Den Rest kann Peter besser erlären.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan Henning wrote:
> nur so viel,das MAC kommt von "Macro-Assembler"

Wie es scheint, weißt Du ja schon mehr als alle anderen.
Was für ein Macro-Assembler ist das denn, welche Toolchain?


> Ich habe Peter schon gesagt, das die MAcros bzw. Includes noch fehlen.
> Die sind aber im BIN alle drin.

Und das soll was bedeuten?
Ein BIN kann man doch nicht hinzulinken, also bleiben die Symbole 
trotzdem unbekannt.


> Außerdem kann kaum ein Assembler DF 1.009362 ( Def. Floatzahl )
> Deswegen hat er es nicht drin.

Aha, ein Codebeispiel, was kaum einer verwenden kann, kann also ruhig 
unvollständig sein?


> Geheim ist daran, nichts,

Ein BIN ist schon eine Art Verschlüsselung.
Bisher waren die Codebeispiele eigentlich immer Sourcen. Ich denke, das 
sollte man besser beibehalten.


> Den Rest kann Peter besser erlären.

Meinst Du Pieter?


Peter

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja Peter, den meine ich.

Die "FPU" bekommt Befehle von der "MCU" via SPI und gibt das Ergebnis 
dann zurück.
Als Rechenoperationen stehen 
zB._NEG,ABS,FLO,RND,SQRT,SQR,SIN,ASIN,COS,ACOS,TAN,ATAN,ADD,SUB,MUL
DIV,ATAN2, zur Vefügung.

Entstanden für die Steuerung einer CNC Fräse.
Wie gesagt da normale Assembler mit den eingebauten Funktionen nicht 
viel anfangen können, machen die komplette Quellen nicht viel Sinn. 
Dafür aber umso mehr eine Erläuterung des ganzen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>nur so viel,das MAC kommt von "Macro-Assembler"
>Ich habe Peter schon gesagt, das die MAcros bzw. Includes noch fehlen.
>Die sind aber im BIN alle drin.

Den Scheiss kannst du dir an die Tapete kleben.
Benutzen kann das keiner.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Am Ende des BIN-Files steht ne E-Mail Adresse.
Fragen also bitte dort hin schicken ;)

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holger,
jo die Adresse is da nicht um sonst. Fragen schadet nicht.
Wenigsten hast Du Dir die Mühe gemacht mal rein zu sehen.
4 Kb HEX wahsen ja nicht am Baum !!

Mit dem klatschen an die Tapete währe ich etwas zurückhaltender.
Du kennst weder den Assembler noch die Marofähigkeit.
Ich arbeite schon länger damit und möchte so einige Dinge nicht mehr 
missen.
Kann Dein ASM der offensichtlich nicht an die Tapete gehört ein LCD
live simulieren ?? Kann er Float Zahlen als Konstante definieren und
dann damit rechnen ??
Kann er freie Speicherplätze im RAM während der Laufzeit ermitteln und 
diese dann als Variable nutzen ???
Verurteile nicht was Du nicht kennst.

Diese FPU kann von jeder MCU per SPI genutzt werden.
Ob Mega8, Atmel 2313 oder 8051.....
Einfach den Befehl für die Berechnung mit den Variablen senden und dann
das Busy abfragen. Wenn fertig das Ergebnis als Float abholen und gut.

Also bleibt gespannt, der Peter macht noch ein "how to" fertig.


Gruß

Stephan

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holger,

nachdem ich mir noch einmal Deinen Kommentar durhgelesen habe,
frage ich mich warum Du das als Sheiss bezeichnest ???

Du weist weder worum es geht noch wie es funktioniert !!
Ist der Code nicht mundgerecht für Dich ??
Kein fertiges Beispiel zum linken und Brennen ???

Also ich kann deutlih erkennen das dort ein Software SPI läuft.
Das übermittelt ein Byte was ausgewertet wird.
Anhand des Bytes wird verzweigt.

Das dort was fehlt steht außer Frage. Wenn es Dich interessieren würde 
hättest du ja an die o.g. Adresse schreiben können.
Aber so weit bist Du ja nicht gekommen !!
Warum nicht ???

Weil Du mit dem Scheiss an Deiner Tapete nichts anfangen kannst ???

zu hoch ???

Oder ist ne Mail unter Deiner Würde ??? ....so als Profi !!

Autor: Pieter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
moin moin,

das UrPos war absichtlich kurz, einfach mal Reaktion testen.

Zum Hintergrund der FPU:
Bei Berechnungen zur Fräsensteuerung fallen diverse trigonometrische 
Gleichungen an. Aus dem SDCC habe ich dazu eine FloatLIB 
zusammengestellt und diese in (meinem) MacroAssembler optimiert. Damit 
habe ich gegenüber SDCC ca. 25% Zeitgewinn. Noch schneller geht es nur 
mit einer externen FPU, siehe 8087. Der 89LP4052 macht 20MIPS und kostet 
ca. 2€. Die FloatLIB wurde nun auf die vorhandenen 4K reduziert, der 
Befehlsvorrat ist in der  Datei FPU_8051.MAC zu finden. Die Datei 
FPU_8051.BIN ist das fertige BINÄRFile zum brennen in den AT89LP4052.

Im Anhang nun ein Stück Code zur Ansteuerung der FPU.
Als CPU benutzt ich einen 8051ED2 mit 22MHz und X2-Modus.
Die Gleichung X=SQRT( SQR(A) + SQR(B) ) dauert mit Datentransfer
CPU : 941µs
FPU : 318µs

Wirklich interessant wird es erst mit einem C8051F365, Samples habe ich 
bekommen. Eine Platine ist bei Bilex in Auftrag.
Dieser MC arbeitet mit 100MIPS und internem XTAL. Der Preis liegt bei 
mouser.com so bei 5€.

Mit Gruß
Pieter

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also mal ne doofe frage:

warum nehmt ihr nicht ne FPGA, holt euch den FPU-quellcode von 
http://www.opencores.org/

strickt eure SPI schnittstelle rein, und schwupps ist das lahmste an der 
geschichte der spi (mit ca 12µs@10MHz)

fpga is für 5euro auch drin und über 100MIPS lacht ihr dann

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habt ihr schon an ne eigene CORDIC implementierung gedacht? um noch mehr 
speed zu bekommen?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... wrote:

> fpga is für 5euro auch drin

Wo bekommt man einen FPGA + Config ROM für 5€? Sowas könnte ich gut 
gebrauchen.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, das war vllt etwas sehr optimistisch :D

digi-key
bietet die Xilinx Spartan-3AN ab 7,50

das tolle an denen, die beinhalten ihren configflash (nach aussen also 
wie ne cpld, aber eigentlich fpga)

schau dir die spartan 3an familie an, ich find die sehr 
anwenderfreundlich :)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... wrote:
> also mal ne doofe frage:
>
> warum nehmt ihr nicht ne FPGA, holt euch den FPU-quellcode von
> http://www.opencores.org/

Mal ne doofe Gegenfrage, das FPGA- und VHDL-Zeugs lernt man bestimmt 
spielend in max 1-2 Tagen?


> fpga is für 5euro auch drin und über 100MIPS lacht ihr dann

Träum weiter.
Schon durch die nötigen 5V-Pegelwandler, Spannungsregler, 4-Layer-PCB 
ist der Mehraufwand weit über 5€, den FPGA noch garnicht eingerechnet.

Was schluckt denn so ein FPGA, kommt er auch mit 1µA (Sleep) bzw. 
5..20mA (Vollast) aus?


Es würde mich mal ernsthaft interessieren, wie lange jemand vom Start 
mit FPGA bis zum ersten fertigen Projekt (nicht nur ne Blink-LED) im 
Chip gebraucht hat. Bei unter 6 Monaten würde ich ihn für ein Genie 
halten.


Peter

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... wrote:

> schau dir die spartan 3an familie an, ich find die sehr
> anwenderfreundlich :)

Kommt drauf an:
Außer dem XC3S50AN sind alle nur im BGA erhältlich. Das finde ich nicht 
unbedingt anwenderfreundlich.
10€ (7,5€ + MwSt usw.) ist trotzdem ein guter Preis für einen FPGA.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pieter wrote:
> das UrPos war absichtlich kurz, einfach mal Reaktion testen.

Meiner Meinung nach impliziert der Begriff "Codesammlung", daß hier 
Sourcecode zu finden ist.

Ich finde daher, daß Dein Posting nicht hierher paßt, sondern eher in 
eine Blackbox-Sammlung.

Hast Du hier etwa schonmal Projekte ohne Sourcecode gesehen?


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.