我尝试在EDA运动场平台中为8x1多路复用器编写的代码出现了问题。向我显示一个错误,我搜索了它,发现它来自Verilog语言,但我不明白为什么?我一次又一次检查我的代码,我没有发现任何错误。请从下面的链接中查看代码以运行它,并帮助我解决问题,而且我了解为什么我会看到该错误
答案 0 :(得分:0)
您需要将测试台重命名为与模块不同的名称。
将其命名为“ multiplexer_test
”。
即以下几行
testbench.vhd
ENTITY multiplexer IS
END multiplexer;
ARCHITECTURE behavior OF multiplexer IS
到
ENTITY multiplexer_test IS
END multiplexer_test;
ARCHITECTURE behavior OF multiplexer_test IS
而且您还需要将顶部实体更改为multiplexer_test
而不是testbench
即
或者,如果您只是将测试平台模块从multiplexer
重命名为testbench
,则无需执行第二步
答案 1 :(得分:-1)
感谢您的帮助。我的代码现在可以运行
-- Code your design here
library IEEE;
use IEEE.std_logic_1164.all;
--declaration for 8x1
entity mux8x1 is
port( I : in std_logic_vector(7 downto 0); -- input that need 8x1
s: in std_logic_vector(2 downto 0); --is the enable
Y: out std_logic -- output of 8x1 is the output
);
end mux8x1;
architecture behavioral of mux8x1 is
signal f0,f1,f2,f3 : std_logic;
begin
process(I,S)
begin
if s(0)='0' then
f0<=I(7);
f1<=I(5);
f2<=I(3);
f3<=I(1);
else
f0<=I(6);
f1<=I(4);
f2<=I(2);
f3<=I(0);
end if;
if (s(1)='0' and s(0)='0')then
Y<=f0;
if (s(1)='0' and s(0)='1')then
Y<=f1;
if (s(1)='1' and s(0)='0')then
Y<=f2;
if (s(1)='1' and s(0)='1')then
Y<=f3;
end if;
end if;
end if;
end if;
end process;
end behavioral;