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

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.