2012-04-10 12 views
0

Alle Links zu Literatur, die den Algorithmus diskutieren, würden ausreichen. Ich arbeite an einem Verilog-Code in Xilinx. Es verwendet den integrierten% -Operator von Verilog. Das Problem ist, dass% nicht in Xilinx synthetisiert werden kann.Algorithmus für die Restoperation in Verilog, der in einem einzigen Taktzyklus ausgeführt wird

Vielen Dank im Voraus!

+0

Haben Sie einen bestimmten Divisor oder ist es eine allgemeine Modulo-Operation? Für eine allgemeine Modulo-Lösung benötigen Sie im Grunde genommen einen vollständigen Teiler, AFAIK. –

+0

Dies ist eine Festkomma-Division? Die Division durch 2 mit Festkomma ist ziemlich einfach. –

Antwort

2

In den meisten Werkzeugen kann% simuliert, aber nicht synthetisiert werden.

Zum Beispiel, wenn Sie m% n benötigen, wenn n eine feste Zahl ist, besonders ist es die Macht von 2, Sie können eine leicht schreiben.

Wenn n nicht die Leistung von 2 ist, aber der Wertebereich von m klein genug ist, können Sie eine Tabelle erstellen und parallele Vergleiche durchführen, um die Modulation durchzuführen.

Normalerweise, wenn m zufällig oder n ist nicht festgelegt, ist es ziemlich schwierig, in Hardware zu tun. Wahrscheinlich ist es besser, den Hardware-Algorithmus zu ändern, um diese Modulation möglichst zu vermeiden.

Die meiste Zeit benötigen Sie keine genaue Modulation, die Verringerung der Präzision von m und n würde helfen.

+0

Ich versuche Code für Diffie-Hellman Schlüsselaustausch zu synthetisieren. In meinem Fall ist m 1024 Bits. Also, es ist nicht die Macht von 2, seine große und genaue Modulation ist erforderlich! – Nullpoet

+0

Ich kenne Diffie-Hellman nicht genau, aber google es. Es scheint, dass eine (g ** b)% p Berechnung benötigt wird, während g, b und p eine kleine Zahl sind. Wenn ich recht habe, (g ** b)% p == ((g% p) ** b)% p. Zum Beispiel (28 ** 16)% 53 == (((28 ** 4)% 53) ** 4)% 53, und bei dieser Berechnung ist jede Zahl im Allgemeinen klein genug, um sie zu verarbeiten. Auf der anderen Seite, jede Möglichkeit, Pipelined-Berechnung zu tun? Es scheint mir möglich zu sein. –