www.mikrocontroller.net

Forum: FPGA, VHDL & Co. unsigned ganzzahl sqrt()


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich möchte auf einem fpga die wurzel einer ganzen zahl berechnen.

Ich brauche 1 Berechnung pro Taktzyklus (~50mhz), Latenz ist egal (bis 
100 takte oder so ist ok).
Das ganze soll in einem Spartan3E/500 laufen, nebenbei kommt noch 
einiger anderer kram mit rein.

Am liebsten wären mir 48bit als Eingabe. Zur not gehen aber auch 32Bit.
Ist das machbar ? wieviel logik braucht sowas ?
Ich wollte den cordic3 aus dem Xilinx Coregen nehmen (oder was andres ?)

Hat da jemand Erfahrungswerte was noch machbar ist und was nicht ?
Ich kann nicht einschätzen wie komplex so eine sqrt berechnung ist :-\

Thnx

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso nimmst Du nicht einfach den Core und synthetisierst ihn?
Dann siehst Du doch, wieviel er braucht. Dauert nur ein paar Minuten.

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, der CORDIC sieht mir ganz schön groß aus wenn du nur sqrt berechnen 
willst. Kannst ihn ja trotzdem erstmal probieren, aber wenn der zu groß 
ist, meld dich nochmal, da kann man sicher mehr rausholen.

Autor: Betreuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weis es nur für den Cyclone auswendig: 32Bit bei 50MHz erfordern 
etwa 12 Takte Latenz. Ich schätze mal, Du brauchts 20. Da das viel 
unnötige Logik kostet, wären einige parallele sicher besser.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich bin mir nicht sicher ob der cordic core wirklich pro takt einen wert 
"ausspuckt".
In der Grafik sieht es irgendwie so aus als ob nur alle 2 takte ein Wert 
berechnet werden kann (S25, Fig 14)
http://www.xilinx.com/bvdocs/ipcenter/data_sheet/cordic.pdf

Naja ich werds heute abend einfach mal ausprobieren :)

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so habs mal getestet. scheint wirklich pro takt einen wert zu liefern.
komischerweise bleibt die simulation manchmal haengen, je nachdem wie
ich die eingabewerte anlege (timing) wird der ausgang nicht mehr 
geupdatet...
komisch :-\

Hier mal meine getesteten einstellungen (XC3S500E)

32bit, no  pipelining -> latency=2  ->  13 Mhz /  4% dev usage
32bit, opt pipelining -> latency=10 ->  90 Mhz /  5% dev usage
32bit, max pipelining -> latency=17 -> 154 Mhz /  6% dev usage

48bit, no  pipelining -> latency=2  ->   7 Mhz /  8% dev usage
48bit, opt pipelining -> latency=14 ->  78 Mhz / 10% dev usage
48bit, max pipelining -> latency=25 -> 145 Mhz / 13% dev usage

(webpack 8.2 / cordic core v3.0)

Autor: Chefingenieur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann hast Du ein timing Problem.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ne daran kanns nicht liegen, hab nur 20mhz als clock simuliert...

das scheint ein bug im core zu sein :-X
http://www.xilinx.com/support/answers/20371.htm

In der post route simulation funktioniert es nun korrekt ::)

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.