1

可変ビット数の全加算器を作成しています。3 つの入力 (加算する 2 ビットとキャリー イン ビット) を取り、2 つの出力 (1 ビット出力とキャリー アウト ビット) を与える半加算器であるコンポーネントがあります。

ある半加算器のキャリーアウトを別の半加算器のキャリーインに結び付ける必要があります。そして、これを可変回数実行する必要があります (4 桁の数値を加算する場合は、4 つの半加算器が必要です。32 ビットの数値を加算する場合は、32 の半加算器が必要です)。シグナルを使用して、ある半加算器のキャリーアウトを別の半加算器のキャリーインに結び付けようとしましたが、可変数のシグナルを作成する方法がわかりません。

プロセス内で for ループを使用して可変数の半加算器をインスタンス化できますが、シグナルはプロセスの外部で定義されるため、for ループを使用することはできません。半加算器をどのように結合すればよいかわかりません。

4

2 に答える 2

2

VHDL で加算器を作成する最も簡単な方法は、全加算器と半加算器を気にせずに次のように入力することです。

a <= b + c;

ここで、a、b、c はsignedまたはunsigned

95% の確率で、合成ツールはあなたよりもうまく機能します。

于 2012-11-05T21:58:06.083 に答える
1

可変数のシグナルではなく、可変幅のシグナルが必要だと思います

たとえば、信号が必要std_logic_vector(31 downto 0)です。次に、これらの信号のビットを半加算器に適切に接続します。

もちろん、これらのシグナルは数値であるため、or (および ieee.numeric_std ライブラリ) をstd_logic_vector使用しないでください。signedunsigned

そして (Philippe が正しく指摘しているように) これが学習課題でない限り、+演算子を使用してください。

于 2012-11-06T10:01:30.427 に答える