Неожиданная ошибка TICK - PullRequest
       9

Неожиданная ошибка TICK

1 голос
/ 02 ноября 2010

Я пытаюсь написать модуль 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 ]

2 голосов
/ 03 ноября 2010

Итак, вы исправили первую ошибку согласно ответу Марка.

Вторая ошибка заключается в том, что вы не можете использовать значение вывода.

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;
2 голосов
/ 02 ноября 2010

«1010» должно быть «1010» (двойные кавычки). Одиночная кавычка используется для символьного литерала (одного символа).

...