У меня есть следующие структуры:
typedef struct packed {
type1_t info1;
type2_t info2;
} module_info_registers_t;
typedef struct packed {
logic [0:0] data1;
logic [2:0] data2;
logic [11:0] data3;
logic [15:0] data4;
} info1;
typedef struct packed {
logic [1:0] data1;
logic [3:0] data2;
logic [10:0] data3;
logic [14:0] data4;
} info2;
Как видите, type1_t и type2_t определены как 32-битные структуры данных.
Я хочу создать следующее:
module_info_registers_t myregs;
и я хочу получить доступ к регистрам на основе индекса (вместо того, чтобы вводить myreqs.info2.data4):
myregs[1].data4
Это связано с тем, что определение module_info_registers_t время от времени меняется и генерируется автоматически, поэтому я не хочу жестко кодировать «info2» в своем RTL.
Однако я получаю сообщение об ошибке, говорящее о том, что у меня не может быть среза скалярного объекта.
Я понимаю, что по какой-то причине я не могу получить доступ к данным так, как хочу. Есть ли другой способ сделать то, чего я пытаюсь достичь?
info2
) изменится, не изменится ли индекс ([1]
) для этого конкретного регистра? В идеале у вас просто должны быть имена для ваших регистров, которые не меняются, и вы всегда можете обратиться к регистру какinfo2
- person Unn   schedule 18.03.2019