我是VHDL的初学者。我正在使用GHDL来实现我的VHDL代码并对其进行测试。我为XOR门编写了一个简单的VHDL行为代码。我正在尝试编写一个测试台来测试XOR门。
XOR VHDL代码:
library ieee;
use ieee.std_logic_1164.all;
entity XORGate is
port(
xora, xorb : in std_logic;
xorout : out std_logic
);
end XORGate;
architecture behave of XORGate is
begin
process(xora, xorb)
begin
xorout <= xora xor xorb;
end process;
end behave;
XOR测试台VHDL代码:
library ieee;
use ieee.std_logic_1164.all;
entity XORGate_tb is
end XORGate_tb;
architecture structural of XORGate_tb is
component XORGate
port(
xa, xb : in std_logic;
xout : out std_logic
);
end component;
signal xa, xb, xout : std_ulogic;
begin
xorgate1 : XORGate port map(xa, xb, xout);
process
begin
xa <= '0';
xb <= '0';
wait for 100 ns;
xa <= '0';
xb <= '1';
wait for 100 ns;
xa <= '1';
xb <= '0';
wait for 100 ns;
xa <= '1';
xb <= '1';
wait for 100 ns;
assert false report "Reached end of test";
wait;
end process;
end structural;
当我使用以下命令时:"ghdl-s XORGate_tb.vhdl";检查语法"ghdl-一个XORGate_tb.vhdl";分析文件没有给出错误。当我使用以下命令时"ghdl-e XORGate_tb";我得到以下错误
XORGate_tb.vhdl:18:1:error: for default port binding of component instance "xorgate1":
XORGate_tb.vhdl:18:1:error: signal interface "xa" has no association in entity "xorgate"
XORGate_tb.vhdl:18:1:error: signal interface "xb" has no association in entity "xorgate"
XORGate_tb.vhdl:18:1:error: signal interface "xout" has no association in entity "xorgate"
我无法修复错误。尝试更改信号名称,但仍然得到相同的错误。如何修复上述错误?
实体中的端口名称与组件不匹配。组件中有xa
、xb
和xout
。但在实体中它们是xora
、xorb
和xorout
。
为了避免这样的问题,我建议使用直接实例化,因为实例化和实体之间的不匹配是语法错误,你可以简单地删除组件,而在两个不同的地方没有有效的相同代码:
xorgate1 : entity work.XORGate port map(xa, xb, xout);