不理解vhdl联机编译器错误
我正在使用内联编译器(),我不理解联机编译器的错误消息。我正在尝试构建布尔表达式不理解vhdl联机编译器错误,vhdl,digital-logic,Vhdl,Digital Logic,我正在使用内联编译器(),我不理解联机编译器的错误消息。我正在尝试构建布尔表达式(a*!b)+(b*!c)+(!b*c) 我的代码是: library IEEE; use IEEE.std_logic_1164.all; ENTITY (MySimp) IS PORT (A: in STD_LOGIC; B: in STD_LOGIC; C: in STD_LOGIC; Z: out STD_LOGIC; ); End MySimp; ARCHITECT
(a*!b)+(b*!c)+(!b*c)
我的代码是:
library IEEE;
use IEEE.std_logic_1164.all;
ENTITY (MySimp) IS
PORT (A: in STD_LOGIC;
B: in STD_LOGIC;
C: in STD_LOGIC;
Z: out STD_LOGIC;
);
End MySimp;
ARCHITECTURE (details) OF (MySimp) IS
BEGIN
PROCESS
VARIABLE D, E, F: STD_LOGIC;
BEGIN
IF A AND (NOT B)= '1' THEN D:= '1';
ELSE D:= '0';
END IF:
IF B AND (NOT C)= '1' THEN E:= '1';
ELSE E:= '0';
END IF:
IF C AND (NOT B)= '1' THEN F:= '1';
ELSE F:= '0';
END IF:
Z <= D OR E OR F;
END PROCESS;
END details;
IEEE库;
使用IEEE.std_logic_1164.all;
实体(MySimp)是
端口(A:标准_逻辑中;
B:标准逻辑;
C:标准逻辑;
Z:输出标准逻辑;
);
结束MySimp;
(MySimp)的架构(细节)是
开始
过程
变量D,E,F:STD_逻辑;
开始
如果A和(不是B)='1',则D:='1';
否则D:='0';
如果:
如果B和(不是C)='1',那么E:='1';
其他E:='0';
如果:
如果C和(不是B)='1',那么F:='1';
其他F:='0';
如果:
Z如错误所示,您正在将VHDL文件(.vhd)编译为(系统)Verilog文件(.sv)。这是两种不同的硬件描述语言。
在左侧的语言和库
选项卡中,需要将Testbench+Design
设置为VHDL
但是你的代码中有一个问题。进程
语句没有一个。HDL通常是并行语言,这意味着您需要指示何时需要触发进程:否则它将尝试在无限小的时间内无限循环。您或者需要添加一个wait
-语句来停止循环,或者通过将触发器信号添加到进程敏感度列表来隐式地停止循环。e、 g
process (a,b,c)
您的代码存在更多的语义问题。我在评论中添加了它们
library ieee;
use ieee.std_logic_1164.all;
entity MySimp is -- no braces around the name
port (
a: in std_logic;
b: in std_logic;
c: in std_logic;
z: out std_logic -- no semicolon
);
end entity;
architecture arch of MySimp is
begin
process(a, b, c)
variable d, e, f: std_logic;
begin
if (a and (not b))= '1' then -- add braces around the logic expression
d:= '1';
else
d:= '0';
end if; -- semicolon instead of colon
-- alternative method 1
if b='1' and c='0' then
e:= '1';
else
e:= '0';
end if;
-- alternative method 2
f := c and (not b);
z <= d or e or f;
end process;
-- or replace the whole process by:
--z <= (a and (not b)) or (b xor c);
-- as (b and (not c)) or (c and (not b)) is an exclusive-or operation
end architecture;
ieee库;
使用ieee.std_logic_1164.all;
实体MySimp是--名称周围没有大括号
港口(
答:标准逻辑;
b:标准逻辑;
c:标准逻辑;
z:out std_逻辑——没有分号
);
终端实体;
MySimp的建筑拱门是
开始
过程(a、b、c)
变量d,e,f:std_逻辑;
开始
如果(a和(不是b))='1',则--在逻辑表达式周围添加大括号
d:=‘1’;
其他的
d:='0';
如果结束;——分号代替冒号
--替代方法1
如果b='1'和c='0',则
e:=‘1’;
其他的
e:='0';
如果结束;
--替代方法2
f:=c和(不是b);
根据错误消息和.sv,我敢打赌您试图将代码编译为(系统)verilog而不是VHDL!我不熟悉这个编译器,谢谢。现在我收到了一条不同的错误消息:Aldec,Inc.VHDL编译器,build 2017.02.99 VLM已初始化,路径为:“/home/runner/library.cfg”。DAGGEN警告DAGGEN_0523:“源代码在编译时未使用-dbg开关。行断点和断言调试将不可用。”COMP96文件:design.vhd COMP96文件:testbench.vhd COMP96错误COMP96_0018:“预期的标识符。”“design.vhd”4 8 COMP96错误COMP96_0016:“预期的设计单元声明。”“design.vhd”4 9COMP96错误COMP96_0018:“应为标识符。”“design.vhd”13 14 COMP96错误COMP96_0016:“应为设计单元声明。”“design.vhd”13 15 COMP96错误COMP96_0016:“应为设计单元声明。”“testbench.vhd”4 0 COMP96编译失败5错误0警告分析时间:0.0[ms]应为退出代码:0,收到:1我从未见过对象的名称,这里是实体,位于()。删除它们,它正好在第4行char 8处,正如错误所说,从错误消息的图像链接中,您告诉了任何工具您提供了SystemVerilog设计,而实际上您附带提供了VHDL设计。