Как инициализировать массив записи в VHDL? - PullRequest
0 голосов
/ 10 апреля 2019

Я инициализирую массив записей, который также содержит строку. Я получаю сообщение об ошибке HDLCompiler: 806 Строка 109: синтаксическая ошибка рядом с "text_passages" (последняя строка в коде ниже). Какой правильный способ инициализации?

type text_info is
    record
        text : string(1 to 15);
        x: integer;
        y: integer;
    end record;
constant init_text_info: text_info := (text => "               ", x => 0, y => 0);
type text_info_array is array(natural range <>) of text_info;

Моя декларация и инициализация выглядит следующим образом

signal text_passages : text_info_array(0 to 1) := (others => init_text_info);
text_passages(0) <= (text => "This is a Test.", x => 50, y => 50);

1 Ответ

2 голосов
/ 10 апреля 2019

Ну, у вас есть дополнительная скобка в конце вашей последней строки, но кроме этого, все в порядке.(Я сомневаюсь, что сообщение об ошибке, о котором вы сообщаете, вызвано этой скобкой.) Последняя строка должна быть:

text_passages(0) <= (text => "This is a Test.", x => 50, y => 50);

An [MCVE]:

entity E is
end entity ;

architecture A of E is

  type text_info is
    record
        text : string(1 to 15);
        x: integer;
        y: integer;
    end record;
  constant init_text_info: text_info := (text => "               ", x => 0, y => 0);
  type text_info_array is array(natural range <>) of text_info;
  signal text_passages : text_info_array(0 to 1) := (others => init_text_info);

begin

  text_passages(0) <= (text => "This is a Test.", x => 50, y => 50);

end architecture A;

https://www.edaplayground.com/x/4ARJ

(Всегда лучше представить MCVE.)

...