Несоответствующие размеры массива в 2D массиве - PullRequest
0 голосов
/ 26 января 2020

Я хочу создать постоянный двумерный массив со значениями конфигурации, чтобы переключать конфигурацию на общее значение c. Каждая конфигурация состоит из семи 8-битных значений:

entity Foo is
   Generic (   CONFIG      : INTEGER := 0;
           );
end Foo

...

type Config_t is array(0 downto 1, 0 to 6) of STD_LOGIC_VECTOR(7 downto 0);

constant Configs        : Config_t  := ((x"39", x"08", x"06", x"17", x"01", x"02", x"0F"),
                                        (x"39", x"08", x"06", x"17", x"01", x"02", x"0C"),
                                        (others => (others => '0'))
                                        );

Но я получаю ошибку

[Synth 8-421] mismatched array sizes in rhs and lhs of assignment

Так что же не так с этим объявлением? Я не понимаю.

1 Ответ

1 голос
/ 26 января 2020

downto должно быть с убывающими значениями индекса, а 2 значения заданы явно, поэтому пропустите часть others, в результате чего:

type Config_t is array(1 downto 0, 0 to 6) of STD_LOGIC_VECTOR(7 downto 0);

constant Configs        : Config_t  := ((x"39", x"08", x"06", x"17", x"01", x"02", x"0F"),
                                        (x"39", x"08", x"06", x"17", x"01", x"02", x"0C")
                                        );
...