意外的TICK错误

时间:2010-11-02 17:07:03

标签: vhdl xilinx

我正在尝试编写VHDL模块但是if语句有问题。很可能这是一个愚蠢的错误,但由于我是VHDL的新手,我无法弄清楚问题。这是我的代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;


entity binary_add is
    port( n1 : in std_logic_vector(3 downto 0);
    n2 : in std_logic_vector(3 downto 0);
    segments : out std_logic_vector(7 downto 0);
    bool : out bit;
    o : out std_logic_vector(3 downto 0);
    DNout : out std_logic_vector(3 downto 0));

end binary_add;

architecture Behavioral of binary_add is
begin

process(n1, n2) 
begin

o <= n1 + n2;

if( o = '1010') then 
bool <= '1';
else
bool <= '0';
end if;

end process;

end Behavioral;

我从if语句的第一行得到以下答案:

ERROR:HDLParsers:## - "C:/Xilinx/12.3/ISE_DS/ISE/.../binary_add.vhd" Line ##. parse error, unexpected TICK

我做错了什么?

2 个答案:

答案 0 :(得分:2)

'1010'应为“1010”(双引号)。单引号用于字符文字(单个字符)。

答案 1 :(得分:2)

所以你已根据Mark的答案修正了第一个错误。

第二个错误是您无法使用输出值。

if output = "0101";    -- illegal

some_signal <= output; -- illegal

要解决此问题,您需要创建一个内部信号(比如总和)。然后使用内部信号,并将其分配给外部信号。

architecture Behavioral of binary_add is

signal sum : std_logic_vector(3 downto 0);

begin

process(n1, n2, sum) 
begin

sum <= n1 + n2;

if( sum = '1010') then 
bool <= '1';
else
bool <= '0';
end if;

end process;

o <= sum;

end Behavioral;