Где синтаксическая ошибка в моем коде VHDL?
Я пишу генератор прямоугольных сигналов в vhdl, я просто был сбит с толку, почему я получаю синтаксическую ошибку в моем объявлении LUT (строка 21). Я потратил часы, пытаясь найти свою ошибку, комментируя определенные фрагменты кода и включая разные вещи, но это всегда одна и та же ошибка.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
entity highlow_square is
PORT ( clk : in STD_LOGIC; -- clock to be divided
reset : in STD_LOGIC; -- active-high reset
enable : in STD_LOGIC; -- active-high enable
Ampselect : in STD_LOGIC_VECTOR(3 DOWNTO 0);
-- useful to enable another device, like to slow down a counter
value : out STD_LOGIC_VECTOR (9 downto 0) -- outputs the current_count value, if needed
);
end highlow_square;
architecture Behavioral of highlow_square is
signal duty_cycle_sig : std_logic_vector (9 downto 0);
signal current_count : std_logic_vector(9 downto 0);
signal check : integer := 0;
type array_1d is array (0 to 15) of integer;
constant DutyCycle_LUT : array_1d := (
( 1023 ) ,
( 960 ) ,
( 897 ) ,
( 834 ) ,
( 771 ) ,
( 708 ) ,
( 645 ) ,
( 582 ) ,
( 519 ) ,
( 456 ) ,
( 393 ) ,
( 330 ) ,
( 267 ) ,
( 204 ) ,
( 141 ) ,
( 78 )
);
begin
duty_cycle_sig <= std_logic_vector(to_unsigned(DutyCycle_LUT(to_integer(unsigned(Ampselect))),duty_cycle_sig'length));
count: process(clk,reset,check,enable)
begin
if (reset = '1') then
current_count <= "0000000000" ;
elsif (rising_edge(clk)) then
if(enable = '1') then
if(check = 0) then
if(current_count < "1111111110") then
current_count <= current_count + "10";
value <= duty_cycle_sig;
end if;
if(current_count = "1111111100") then
check <= 1;
end if;
else
if(current_count > "000000000") then
current_count <= current_count - "10";
value <= "0000000000";
end if;
if(current_count = "0000000010") then
check <= 0;
end if;
end if;
end if;
end if;
end process;
END Behavioral;
Я получаю следующую ошибку
Error (10500): VHDL syntax error at highlow_square.vhdl(21) near text
Error (10500): VHDL syntax error at highlow_square.vhdl(21) near text ""; expecting ")", or ","
Error (10500): VHDL syntax error at highlow_square.vhdl(21) near text
Error (10500): VHDL syntax error at highlow_square.vhdl(47) near text ")"; expecting ":", or ","
Я не знаю, где я делаю ошибку в своем объявлении LUT или до нее. Был бы очень признателен за помощь!