これはかなり簡単な質問ですが、私はまだこの仕事をすることはできませんでした。 。VHDL - 9ビットベクトルに2つの8ビットベクトルを追加する
私がしようとしているのは、2つの8ビットベクトルを加算し、その結果を9ビットベクトルに格納することだけです。
signal operand1, operand2 : STD_LOGIC_VECTOR(7 downto 0);
signal sum : STD_LOGIC_VECTOR(8 downto 0);
sum <= operand1 + operand2;
私は警告を取得しかし:
Width mismatch. <sum> has a width of 9 bits but assigned expression is 8-bit wide.
は、VHDLは、余分なビットは、ほかのオーバーフローのために必要であることを知っているルーチンに建てられたのいくつかの並べ替えを持っているべきではないでしょうか。
私は、これらのパッケージには含まれています:おそらくSTD_LOGIC_VECTORは常に署名され
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
を?もしそうなら、私はそれらを明示的に符号なしとして定義する必要がありますか?
また、SIGNED型でも動作します。例えば、sum <= RESIZE(operand1、operand1'LENGTH + 1)+ RESIZE(operand2、operand2'LENGTH + 1)のようにnumeric_stdライブラリからRESIZEを使用できます。 – sbell
ジェネリックの場合は@sbell +1溶液! – rick