Quelle für Quadratwurzelalgorithmus

Gast #2460028
Lesenswert?

Hi, ich habe hier im Forum diesen Algorithmus gefunden:

Beitrag "Wurzel ziehen - VHDL"
1
public static int sqrt(int num) {
2
        int op = num;
3
        int res = 0;
4
        int one = 1 << 14; // The second-to-top bit is set: 1L<<30 for long
5
 
6
        // "one" starts at the highest power of four <= the argument.
7
        while (one > op)
8
            one >>= 2;
9
       
10
        while (one != 0) {
11
            if (op >= res + one) {
12
                op -= res + one;
13
                res += 2 * one;
14
            }
15
            res >>= 1;
16
            one >>= 2;
17
        }
18
        return res;
19
    }
Da ich den in einer wissenschaftlichen Arbeit verwenden möchte, brauche 
ich eine Quelle. Weiß jemand wer sich das ausgedacht hat? Also auf 
welchen Mathematiker das Verfahren zurück geht?

danke für eure Hilfe
Gast #2463978
Lesenswert?

Kann man den Cordic eigentlich so aufziehen, dass er einen 
Flash-Kombinatorik abgibt?

CORDIC ist ja ein iterativer Algo der nach einer gewissen Schrittzahl 
zum Ergebnis kommt. Wenn man die Iterationen als loop formuliert, müsste 
man ein Schaltwerk erhalten, das in einem Schritt arbeiten kann. Bei 
entsprechend geringer Frequenz natürlich.
(Firma: www.dossmatik.de) #2464613
Lesenswert?

Harko schrieb:
> Kann man den Cordic eigentlich so aufziehen, dass er einen
> Flash-Kombinatorik abgibt?

Was meinst du damit?



> CORDIC ist ja ein iterativer Algo der nach einer gewissen Schrittzahl
> zum Ergebnis kommt. Wenn man die Iterationen als loop formuliert, müsste
> man ein Schaltwerk erhalten, das in einem Schritt arbeiten kann. Bei
> entsprechend geringer Frequenz natürlich.

Geht sicher theoretisch, doch das macht man nicht. Die Stufen werden 
getaktet. Man kann bereits nach einem Takt den Eingang mit dem nächsten 
Wert füttern. So kann mit jedem Takt ein Wert ausgerechnet werden. Die 
Latenzzeit ist so lang, wie die Anzahl der Stufen.
Gast #2464786
Lesenswert?

Damit müsste aber die gesamte Latzen steigen. Wenn man soviele Daten gar 
nicht hat, um einen hohen Druchsatz zu bekommen, liessen sich viele 
Register und etwas Zeit sparen, wenn man ihn ungetaktet laufen lässt und 
ein multi cycle constraint verwendet, um die Daten verarbeiten zu 
können.
Moderator (Firma: Titel) Persönliche Seite #2464930
Lesenswert?

BB schrieb:
> liessen sich viele Register und etwas Zeit sparen,
Keine Sorge: es lohnt sich nicht, in einem FPGA Register sparen zu 
wollen und deshalb mehr Logik verdrahtet. Denn die Register hinter einer 
LUT in einem Funktionsblock/Slice sind sowieso nicht mehr verwendbar, 
wenn diese LUT "nur" für Kombinatorik verwendet wird.

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