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
Wieso nimmst Du nicht einfach den Core und synthetisierst ihn? Dann siehst Du doch, wieviel er braucht. Dauert nur ein paar Minuten.
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.
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.
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 :)
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)
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 ::)
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.