2

私はverilogで除算回路を実行しており、非復元除算アルゴリズムを使用しています。剰余を小数の2進数として表すのに問題があります。たとえば、0111/0011(7/3)を実行すると、商は0010として、余りは0001として取得されます。これは正しいですが、0010.0101として表現したいと思います。誰かが助けることができますか?

4

2 に答える 2

2

あなたの例のように、4ビットの数値を除算しているが、結果に4ビットの小数精度を追加したいとします。

1つのアプローチは、除算を行う前に、分子に2^4を掛けるだけです。

すなわち

instead of 
0111/0011 = 0010 (+remainder)
do
01110000/0011 = 00100101 (+remainder)
于 2012-11-10T19:35:45.007 に答える
0

こんにちは、数学をやってください!!!

あなたはすでにQ(商)とR(剰余)を持っています、今あなたはそれをバイナリ1010の10(10進数)で乗算します、例えば7/3はこの1を単に乗算するよりもQとして2と剰余として1を与えます10次​​に、10/3がQとして3を与えるロジックを再度適用すると、答えは3(Q(first_division))。3(second Division-Q)になります。

それが機能していることを試してみてください。そして、Verilogでの実装は非常に簡単です。

于 2015-04-16T08:04:46.957 に答える