不理解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设计。