2012-04-10 27 views
0

アルゴリズムについて議論する文献へのリンクであれば十分です。 私はザイリンクスでVerilogコードを作成しています。これは、verilogの組み込み%演算子を使用します。問題は、%をザイリンクスで合成できないことです。単一クロックサイクルで実行するVerilogでの剰余演算のアルゴリズム

ありがとうございます!

+0

特定の除数を念頭に置いているのですか、それとも一般的なモジュロ演算ですか?一般的なモジュロ・ソリューションでは、基本的にフル・フライ・ディバイダAFAIKが必要です。 –

+0

これは固定小数点除算ですか?固定小数点で2で割るのはかなり簡単です。 –

答えて

2

ほとんどのツールでは、%はシミュレートできますが合成されません。

例えば、m%nが必要な場合、nが固定数、特に2のべき乗である場合は、簡単に書き込むことができます。

nが2の累乗ではなく、mの値の範囲が十分小さい場合は、表を作成し、並列比較を行って変調を行うことができます。

通常、mがランダムまたはnが固定されていない場合は、ハードウェアで実行するのはかなり困難です。 可能であれば、この変調を避けるためにハードウェアアルゴリズムを変更する方がよいでしょう。

ほとんどの場合、正確な変調は必要ありません。mとnの精度が低下してしまうことがあります。

+0

私はDiffie-Hellman鍵交換のためのコードを合成しようとしています。私の場合、mは1024ビットです。だから2のパワーではなく、大きくて正確な変調が必要です! – Nullpoet

+0

私はDiffie-Hellmanを正確には知りませんでしたが、それをGoogle検索しました。 g、b、pは少数ですが、(g ** b)%pの計算が必要です。私が正しいとすれば、(g ** b)%p ==((g%p)** b)%p。たとえば、(28 ** 16)%53 ==(((28 ** 4)%53)** 4)%53この計算では、すべての数値は一般に処理するのに十分です。一方、パイプライン計算を行う機会はありますか?私のために可能性があります。 –

関連する問題