Я инициализирую массив записей, который также содержит строку. Я получаю сообщение об ошибке HDLCompiler:806 Line 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);
Ну, у вас есть лишняя скобка в конце последней строки, но в остальном все в порядке. (Я сомневаюсь, что сообщение об ошибке, о котором вы сообщаете, вызвано этой скобкой.) Последняя строка должна быть:
text_passages(0) <= (text => "This is a Test.", x => 50, y => 50);
[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.)
Он компилируется на каждом из четырех симуляторов VHDL на EDA Playground (VCS, Incisive, Riviera Pro, GHDL) без ошибок. Попытайся. Какой симулятор используете?
Или вы пытаетесь поместить строку, начинающуюся с text_passages(0)
, перед begin
, то есть внутри декларативная область архитектуры?
Я поставил его перед началом. Спасибо.
Я рад слышать, что вы разобрались. Вот почему MCVE всегда является хорошей идеей: ошибка была фактически в коде, который вы не включили в свой вопрос.
Удаление второй скобки в назначении tex_passages(0) лишает ваших читателей возможности воспроизвести ответ, даже если они создадут свой собственный минимальный воспроизводимый пример.