Итак, я создаю разделитель, который делит 8-значные числа без знака на 53. Он показывает частное, а остаток - как результат. Для выполнения этой задачи я использую одно выражение if/else. Я получаю синтаксическую ошибку возле каждого оператора if/elseif/else, просто объявляя синтаксическую ошибку, и я НЕ МОГУ найти ошибку, где моя синтаксическая ошибка?VHDL if/else не найденная синтаксическая ошибка
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
entity divider is
Port (input : in STD_LOGIC_VECTOR (7 downto 0);
output : out STD_LOGIC_VECTOR (7 downto 0);
r : out STD_LOGIC_VECTOR (7 downto 0));
end divider;
architecture Behavioral of divider is
signal input : unsigned(7 downto 0);
signal n : unsigned(7 downto 0);
signal quotient : unsigned(7 downto 0);
signal remainder : unsigned(7 downto 0);
signal a : unsigned(7 downto 0);
signal b : unsigned(7 downto 0);
signal c : unsigned(7 downto 0);
signal d : unsigned(7 downto 0);
signal zero : unsigned(7 downto 0);
signal one : unsigned(7 downto 0);
signal two : unsigned(7 downto 0);
signal three : unsigned(7 downto 0);
signal four : unsigned(7 downto 0);
signal x : unsigned(7 downto 0);
signal y : unsigned(7 downto 0);
signal z : unsigned(7 downto 0);
signal t : unsigned(7 downto 0);
begin
a <= "11010100"; -- 212
b <= "110011111"; -- 159
c <= "01101010"; -- 106
d <= "00110101"; -- 53
zero <= "0000000"; -- 0
one <= "00000001"; -- 1
two <= "00000010"; -- 2
three <= "00000011"; -- 3
four <= "00000100"; -- 4
x <= n - a; -- input - 212
y <= n - b; -- input - 159
z <= n - c; -- input - 106
t <= n - d; -- input - 53
input <= n;
if (x > zero) then
quotient <= four;
remainder <= n - a;
elsif (y = zero) then
quotient <= three;
remainder <= n - b;
elsif (z > zero) then
quotient <= two;
remainder <= n - c;
elsif (t > zero) then
quotient <= one;
remainder <= n - d;
else
quotient <= zero;
remainder <= n;
end if;
output <= quotient;
r <= remainder;
end behavioral;
Это очень просто. Оператор if представляет собой последовательный оператор, который не может использоваться в месте, подходящем для параллельных операторов. В этом месте должен находиться оператор процесса (параллельный оператор). – user1155120
Ошибка не связана с делением. Вы могли бы сократить свой код без потери ошибки. Это сделает его [MCVE] (http://stackoverflow.com/help/mcve), и вопрос (и его ответ) будет полезен для будущих читателей. –