我收到以下错误: 第15行:“if”附近的语法错误。 第4行:由于先前的错误而忽略了单位。
这可能是一个非常愚蠢的问题,但任何人都可以提供帮助吗? :)
library IEEE;
use IEEE.std_logic_1164.all;
entity arithmetic is
port( I1 :in std_logic_vector(12-1 downto 0); -- Operand 1
I2 :in std_logic_vector(8-1 downto 0); -- Operand 2
O :out std_logic_vector(12-1 downto 0); -- Output
C :out std_logic; -- Carry Flag
V :out std_logic; -- Overflow Flag
VALID :out std_logic -- Flag to indicate if the solution is valid or not
);
begin
if ((unsigned(I1)-unsigned(I2)) > unsigned(I1)) and ((unsigned(I1)-unsigned(I2)) > unsigned(I2)) then
C <= '1';
else
C <= '0';
end if;
if I1(x)='1' and signed(std_logic_vector(unsigned(I1)-unsigned(I2)))>0 then --x ist das höchte Bit von I1
V <= '1';
else
V <= '0';
end if;
if unsigned(I1) < unsigned(I2) then
VALID <= '0';
else
VALID <= '1';
end if;
und
O <= std_logic_vector(unsigned(I1)-unsigned(I2));
end arithmetic;
答案 0 :(得分:1)
根据评论,您需要查看一些有效的VHDL代码。在示例中,将...
替换为适合您设计的信号/端口名称。你有一个像这样的结构:
entity arithmetic is
port(
-- Your port list
);
begin
if ( ... ) then
-- Do something
end if;
end arithmetic;
这完全无效。正确的描述看起来更像是:
entity arithmetic is
port(
-- Your port list
);
architecture Behavioral of arithmetic is
begin
process ( ... )
begin
if ( ... ) then
-- Do something
end if;
end process;
end Behavioral;
希望差异非常明显。