私はvhdlの初心者であり、私たち全員がハイスクールで行ったように、2つの符号なしベクトルを乗算する必要があります
だから私はプログラムを書きました、そしてそれはコンパイルしますが、結果は良くありません。
ロジックは問題ないように見えますが、それでも機能しません。ここにコードを配置する方法がわかりませんでしたので、添付の画像をご覧ください。
どうも
私はvhdlの初心者であり、私たち全員がハイスクールで行ったように、2つの符号なしベクトルを乗算する必要があります
だから私はプログラムを書きました、そしてそれはコンパイルしますが、結果は良くありません。
ロジックは問題ないように見えますが、それでも機能しません。ここにコードを配置する方法がわかりませんでしたので、添付の画像をご覧ください。
どうも
VHDLを作成するときは、何よりもまずハードウェアについて考える必要があります。さまざまなステートメントが他の言語で知っているものと似ているように見える場合でも、ハードウェアにマップされ、順次ではなく並列に評価されるため、これらの多くは動作が異なります。
たとえばfor
、VHDLのループはループを反復処理するのではなく、ループの内容を複製し、これらすべてを並行して評価します。temp
したがって、のすべての値がtemp1
次々にではなく同時に利用可能になるため、累積するというあなたの考えは機能しません。
乗算を処理する簡単な方法は、*
演算子を使用することです。多くのシンセサイザーがこれを取得し、必要なハードウェアを自動的にインスタンス化します。ただし、これは何らかの演習であり、機能を自分で実装する必要があると思います。 for
ループを破棄し、中間結果を独自の変数に格納して、最後にすべてを合計するだけです。