Строки:
type some_array_type is array (0 to 4, 0 to 4) of unsigned(7 downto 0);
signal some_array : some_array_type := (others=>(others=>'0'));
заставляет vivado 2018.2 выдать ошибку:
[Synth 8-1807] character '0' is not in type unresolved_unsigned
по какой-то причине в файле VHDL 2008. Какой это волшебный синтаксис, чтобы заставить Vivado понять, что я просто пытаюсь инициализировать массив нулями? Я не должен был написать функцию, чтобы сделать это. Я также попытался без знака ((others => (others => '0')));
Приведенный ниже код, конечно, можно игнорировать и он вообще ни для чего не нужен. Это просто для людей ОКР. «Вы всегда должны включать минимальный рабочий пример!»
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity some_entity is
port (
clk, rst: in std_logic ;
);
end some_entity ;
architecture arch of some_entity is
type some_array_type is array (0 to 4, 0 to 4) of unsigned(7 downto 0);
-- throws error
signal some_array : some_array_type := (others=>(others=>'0'));
type some_other_array_type is array (natural range <>) of std_logic_vector(7 downto 0);
-- doesn't throw error
signal some_other_array : some_other_array_type(0 to 4) := (others=>(others=>'0'));
begin
-- some made up process
process(clk, rst)
begin
if(rising_edge(clk)) then
if rst = '1' then
some_array <= (others=>(others=>'0'));
else
some_array <= (others=>(others=>'1'));
end if;
end if;
end process;
end arch;