Ошибки в VHDL при использовании WHEN ELSE
Я новичок в VHDL и имею простые ошибки.
В основном у меня есть 4 двоичных входа и 3 двоичных выхода. Условия просты: если во всех 4 входах у меня только одна "1", выход l3 получает "1", а остальные "0", если у меня две "1", выход l2 получает "1" и слишком много ". 0 ', и если у меня больше двух' 1 ', выход l1 получит' 1 ', а остальные' 0 '.
Обычно входы J1, J2, J3 и J4. L1, L2 и L3 - выходы. Вы можете проверить таблицу истинности.
Я пытаюсь решить эту проблему с помощью этого кода в EDA Playground (https://www.edaplayground.com/)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SistemaVotacion IS
PORT (j1, j2, j3, j4: IN std_logic;
l1, l2, l3: OUT std_logic);
END SistemaVotacion;
ARCHITECTURE SistemaArchitecture OF SistemaVotacion IS
BEGIN
l1 <= '1' WHEN (j1 = '0' and j2 = '1' and j3 = '1' and j4 = '1')
ELSE '1' WHEN (j1 = '1' and j2 = '0' and j3 = '1' and j4 = '1')
ELSE '1' WHEN (j1 = '1' and j2 = '1' and j3 = '0' and j4 = '1')
ELSE '1' WHEN (j1 = '1' and j2 = '1' and j3 = '1' and j4 = '0')
ELSE '1' WHEN (j1 = '1' and j2 = '1' and j3 = '1' and j4 = '1')
ELSE '0';
l2 <= '1' WHEN (j1 = '0' and j2 = '0' and j3 = '1' and j4 = '1')
ELSE '1' WHEN (j1 = '0' and j2 = '1' and j3 = '0' and j4 = '1')
ELSE '1' WHEN (j1 = '0' and j2 = '1' and j3 = '1' and j4 = '0')
ELSE '1' WHEN (j1 = '1' and j2 = '0' and j3 = '0' and j4 = '1')
ELSE '1' WHEN (j1 = '1' and j2 = '0' and j3 = '1' and j4 = '0')
ELSE '1' WHEN (j1 = '1' and j2 = '1' and j3 = '0' and j4 = '0')
ELSE '0';
l3 => '1' WHEN (j1 = '0' and j2 = '0' and j3 = '0' and j4 = '0')
ELSE '1' WHEN (j1 = '0' and j2 = '0' and j3 = '0' and j4 = '1')
ELSE '1' WHEN (j1 = '0' and j2 = '0' and j3 = '1' and j4 = '0')
ELSE '1' WHEN (j1 = '0' and j2 = '1' and j3 = '0' and j4 = '0')
ELSE '1' WHEN (j1 = '1' and j2 = '0' and j3 = '0' and j4 = '0')
ELSE '0';
END SistemaArchitecture;
Но я получаю много ошибок, например:
- COMP96 ОШИБКА COMP96_0015: "';' ожидается ". "design.vhd" 24 8
- COMP96 ОШИБКА COMP96_0019: "Ожидается конец ключевого слова". "design.vhd" 24 8
- COMP96 ОШИБКА COMP96_0016: "Ожидается декларация единицы конструкции". "design.vhd" 24 11
Как я могу это сделать?
0 ответов
Как заявил пользователь 1155120, проблема заключалась в следующем:
Что произойдет, если l3=> в строке 24 станет l3 <=? Скобки здесь не обязательны, условие ограничено зарезервированными словами.
Поменял и работает.