アキュムレータを使用して4ビットのバイナリ加算器をコーディングしています。
library ieee;
use ieee.std_logic_1164.all;
entity binadder is
port(n,clk,sh:in bit;
x,y:inout std_logic_vector(3 downto 0);
co:inout bit;
done:out bit);
end binadder;
architecture binadder of binadder is
signal state: integer range 0 to 3;
signal sum,cin:bit;
begin
sum<= (x(0) xor y(0)) xor cin;
co<= (x(0) and y(0)) or (y(0) and cin) or (x(0) and cin);
process
begin
wait until clk='0';
case state is
when 0=>
if(n='1') then
state<=1;
end if;
when 1|2|3=>
if(sh='1') then
x<= sum & x(3 downto 1);
y<= y(0) & y(3 downto 1);
cin<=co;
end if;
if(state=3) then
state<=0;
end if;
end case;
end process;
done<='1' when state=3 else '0';
end binadder;
出力 :
--binadderのアーキテクチャbinadderをコンパイルします
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(15):
中置演算子「xor」の実行可能なエントリはありません。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(15):
中置式「xor」をstd.standard.bit型として解決するエラーを入力します。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中置演算子「and」の実行可能なエントリはありません。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中置式「または」の右オペランドの式が正しくありません。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中置演算子「and」の実行可能なエントリはありません。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中置式「または」の左オペランドの式が正しくありません。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中置式「または」の右オペランドの式が正しくありません。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中置式「または」をタイプstd.standard.bitとして解決するタイプエラー。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(28):
中置演算子「&」の実行可能なエントリはありません。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(28):
タイプieee.std_logic_1164.std_logic_vectorとして、中置式「&」を解決するエラーを入力します。
**エラー:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(39):
VHDLコンパイラが終了します
std_logic_vectorを正しく処理していないと思います。方法を教えてください。:(