如何解决[接近“然后”:(VCOM-1576)预计==或 '+' 或 ' - ' 或 '&']错误?

问题描述 投票:1回答:1

我正在编译此代码后3个同样的错误 -

**错误:C:/Modeltech_pe_edu_10.4a/examples/DECODER.vhd(24):近 “然后”:(VCOM-1576)期望==或 '+' 或 ' - ' 或 '和'。

我曾尝试加入“END IF;”在最后,但它给了我上面的错误和下面的错误 -

**错误:C:/Modeltech_pe_edu_10.4a/examples/DECODER.vhd(35):VHDL编译器离开

library IEEE;

use IEEE.std_logic_1164.all;

entity DECODER is
port
(
I0: in std_logic;
I1: in std_logic;
D0: out std_logic;
D1: out std_logic;
D2: out std_logic;
D3: out std_logic
);
end DECODER;

architecture bhv of DECODER is
begin
process(I0,I1) is
begin
if (I0='0' AND I1='0') then 
  D0<= (NOT I0) AND (NOT I1);

elseif (I0='0' AND I1='1') then 
  D1<= (NOT I0) AND I1;

elseif (I0='1' AND I1='0') then 
  D2<= I0 AND (NOT I1);

elseif (I0='1' AND I1='1') then 
  D3<= I0 AND I1;
end process;
end bhv;
vhdl
1个回答
0
投票

有两种语法错误。

更改elseifelsif

只是end if之前添加最终end process

在功能上与代码是奇数;如果合成将推断的锁存器因为分配的输出依赖于输入值,并用于在if的每个分支做一个分配的条件是相同的分配值,因此,分配的值'1',所以process相当于:

process (I0, I1) is
begin
  if (I0 = '0' and I1 = '0') then
    D0 <= '1';
  elsif (I0 = '0' and I1 = '1') then
    D1 <= '1';
  elsif (I0 = '1' and I1 = '0') then
    D2 <= '1';
  elsif (I0 = '1' and I1 = '1') then
    D3 <= '1';
  end if;
end process;

与用于不输出初始或重置值,看来该代码将不执行任何有意义的操作。

© www.soinside.com 2019 - 2024. All rights reserved.