• 締切済み

Verilogでモンゴメリ乗算

私はVerilogについてはド素人で全くと言っていいほど書くことができません。そこに仕事上でVerilogでモンゴメリ乗算をしなくてはならなくなりました。どうかわかる方はこの以下のアルゴリズムを利用してプログラムを教えてください。お願いします。 まずはそのアルゴリズムを紹介します。 [モンゴメリ乗算アルゴリズム] Input: N,0<A<N,0<B<N,V  前計算: V=-N-1mod2r output: M=A・BmodN Step 1:Q=A・B・VmodR R=2r   Step 2:M=AB+QN Step 3: M=M/R 注.前計算,step1の2rは“2のr乗”です。また前計算の-N-1は   “-Nの-1乗”のことです。 ビット数は全て8bitでお願いします。  

みんなの回答

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

その計算をそのままverilogで記述すればいいだけですが、全くわからないとか言われると、何を答えてよいのかわかりません。 演算時にビットシフトをうまく使うとか、ノウハウがあることはあるのですが。 有名な演算なので、googleで探したりすれば、verilogソース自体がころがっているかもしれません。

yama-sm
質問者

お礼

ご回答ありがとうございます。 その後いろいろ自分なりに考えた結果、Step1のA・Bまで書くことができました。この後にVを掛ける前に、modRで割りたいのですがどのようにalways文を使ったりして書いたら良いでしょうか? またその後はどのように書けばよいでしょう?