Wurzel mit Xilinx Cordic Core

Gast #3286298
Lesenswert?

Hallo, beim Lesen dieser Themen:

Beitrag "CORDIC und Wurzel"
Beitrag "Wurzel ziehen - VHDL"
Beitrag "CORDIC in VHDL"
Beitrag "Xilinx Systemgenerator + Spartan 6 + Cordic 4.0 mit 250Mhz"

... bin ich noch nicht schlauer geworden, daher eine Frage:

Ich ziehe die Wurzel aus einer positiven Zahl (unsigend, Vektor) mit der 
Breite (27 downto 0) und erhalte als Ergebnis aus dem Xilinx Cordic die 
Breite (14 downto 0).

28 Bit werden also beim Wurzeln 1 Bit breiter, als erwartet. Kann das 
jemand erklären? Oder wirft der Cordic eine komplexe Zahl raus?
Gast #3287280
Lesenswert?

Thomas Werner schrieb:
> Kann der VDHL-Kern runden? Soweit mir bekannt kommt doch da der Rest mit
> raus. Die Vorkommastellen sind immer genau die Hälfte der
> Nachkommastellen:

Soweit mir bekannt arbeitet der IP-Core für die Wurzel entweder mit 
positiven Ganzzahlen oder mit Fixpunktzahlen im Bereich zwischen 0 und 
2. Fürs Runden gibt es laut IP-Core Datenblatt folgende Optionen:

Output rounding modes: Truncation, Round to Pos
Infinity, Round to Pos/Neg Infinity, and Round to
Nearest Even

Mit Ganzzahlen und jedem Rundungs-Modus außer Truncation würde ich also 
für die Wurzel aus xFFFFFFF den Wert x4000 erwarten (15 Bit breit).

Ist aber nur meine Erwartung, ausprobiert habe ich es nicht - das könnte 
Ralle mit seiner Implementierung ja mal machen.
Gast #3287474
Lesenswert?

Es ist egal, was ich als Rundung einstelle: Es bleibt bei 15 Bit 
Ausgabe. Der Eingang ist dabei ausdrücklich unsigned integer. Lediglich, 
wenn ich als Eingang "unsigned fraction" verwende, kann ich die 
Ausgangsbits zwischen 2 und 48 einstellen, was ich aber nicht verstehe.

Richtig wäre, die Vorkommazahlen und Nachkommazahlen anzugeben und der 
Core würde sich die Länge und die Darstellung des Ausgangs selber 
berechnen.

Ich verstehe auch noch nicht, was aus der Wurzel rauskommt. Die Werte 
sehen komisch aus.
Gast #3287485
Lesenswert?

Im Datenblatt steht dazu auch nicht viel. Es gibt nur eine 
Implementierungsübersicht, die etwas über Inputs und  Outputs sagt, 
sowie ein Rechenbespiel für die Wurzel.

1) "Iput/Output Pins vs. Functional Configuration", scheint aber nicht 
zum THema zu passen.

2) Hier ist das Beispiel aus dem Datenblatt:

The input, Xin, is expressed as an unsigned integer. The output, Xout, 
is expressed as an unsigned integer. In this example the input width is 
set to 10 bits so the output width is automatically set to 6 bits.

Xin : “0000100000” => 32
Xout : “000110” => 6

Er scheint also zu runden. Ich nehme an, dass bei Truncation das oberste 
Bit 0 ist und ignoriert werden kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren