2010-11-02 3 views
1

Я пытаюсь написать модуль VHDL, но у меня проблема с оператором if. Скорее всего, это глупая ошибка, но поскольку я очень новичок в VHDL, я не мог понять проблему. Вот мой код:Неожиданная ошибка TICK

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; 

И я получаю следующий ответ от первой линии, если заявление:

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

Что я делаю неправильно?

+0

Hi. Если ответ помог вам, пожалуйста, воздержитесь. Примите самое полезное! – Marty

ответ

2

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

+0

Затем я получаю эту ошибку; Параметр o режима не может быть связан с формальным параметром режима в. – makyol

+0

Было бы это из-за того, что я не использовал параметр o внутри процесса()? Кроме того, могу ли я выполнить внутренний процесс, так как это результат? – makyol

2

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

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

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; 
Смежные вопросы