2017-01-16 4 views
0

Я проектирую базовый детектор низкого топлива, который включается, когда топливо равно 1/3 пустого или нижнего. Мой код выглядит следующим образом:Синтаксическая ошибка Synth 8-2715 около

ENTITY LFDetector_behav IS 
PORT (Fuel3, Fuel2, Fuel1, Fuel0: IN std_logic; 
    FuelWarningLight: OUT std_logic); 
END LFDetector_behav; 

ARCHITECTURE Behavior OF LFDetector_behav IS 
BEGIN 
PROCESS (Fuel3, Fuel2, Fuel1, Fuel0) 
BEGIN 
FuelWarningLight <= [(NOT(Fuel3)) AND (NOT(Fuel2))] OR [(NOT(Fuel1)) AND (NOT(Fuel0))] AFTER 5.8 ns; 
END PROCESS; 
END Behavior; 

Я получаю ошибку рядом с моим назначением FuelWarningLight, и я не понимаю, почему я создал другие конструкции с точно таким же форматом, который работал отлично. Спасибо.

+0

такой же * формат *? Но зачем здесь формат? Нам нужно правильно исправить эту логику? – Coffee

+0

Здесь есть простой синтаксис VHDL. Квадратные скобки здесь не допускаются. Ваш код не является [минимальным, полным и проверяемым примером] (https://stackoverflow.com/help/mcve), и ваша логика не выглядит корректной. Является ли Fuel3 ... Fuel0 двоичным кодированным значением? – user1155120

ответ

0

Я не уверен, где происходит ваша ошибка (synth или sim), но ключевое слово after не является синтезируемым. Я также не уверен, что вы намереваетесь, чтобы это было полностью комбинационным или нет.

Возможно, попробуйте следующее:

ARCHITECTURE Behavior OF LFDetector_behav IS 
BEGIN 
PROCESS (Fuel3, Fuel2, Fuel1, Fuel0) 
BEGIN 
FuelWarningLight <= ((not Fuel3) AND (not Fuel2)) OR ((not Fuel1) AND (not Fuel0)); 
END PROCESS; 
END Behavior; 

Рассмотрите возможность использования Хронометрировали процессы, как показано ниже (я на самом деле не synth'd это, так что извинения, если есть какая-либо ошибка).

ENTITY LFDetector_behav IS 
PORT (clk, Fuel3, Fuel2, Fuel1, Fuel0: IN std_logic; 
    FuelWarningLight: OUT std_logic); 
END LFDetector_behav; 

ARCHITECTURE Behavior OF LFDetector_behav IS 
BEGIN 
PROCESS (clk) 
BEGIN 
    if rising_edge(clk) then 
    FuelWarningLight <= ((not Fuel3) AND (not Fuel2)) OR ((not Fuel1) AND (not Fuel0)); 
    end if; 
END PROCESS; 
END Behavior; 
+0

С избытком или отсутствием избыточных пар круглых скобок или игнорируемого выражения задержки элемента формы игнорируемого выражения выражение, обеспечивающее значение прогнозируемой выходной формы волны [FuelWarningLight] (https://i.stg.imgur.com/3shMC.png), неверно. – user1155120

+0

Правда, есть лишние круглые скобки; Я фактически заменил его []. Однако я удалил задержку элемента формы сигнала, поскольку я предположил, что это была проблема синтеза (основанная на заголовке вопроса). Я не знаю, что именно Fuel0..Fuel3 представляет точно, поэтому я не потрудился экстраполировать. – gsm

Смежные вопросы