1
typedef struct {
    Vector#(4, INDEX)             index;
    Vector#(2, TAG1)     comp_tag1_table;
    Vector#(2, TAG2)     comp_tag2_table;
   } Prediction_Packet deriving(Bits, Eq, FShow);
Prediction_Packet pred_pkt <- mkReg(unpack(0)); 

在上面的 BSV 代码中,我需要为comp_tag1_table(有 2 个 TAG1 数据类型的条目)和comp_tag2_table(有 2 个 TAG2 数据类型的条目)分配值。

我尝试过使用...类似...的东西, pred_pkt.comp_tag1_table[ti] <= 8'b101其中 ti 可以是 0 或 1,但这似乎并不能解决问题。我猜它不可能是一个数组。

4

2 回答 2

0

pred_pkt.comp_tag1_table[ti] = 8'b0101;如果它是一个变量,则可以使用。当然,它是一个变量。

<=用于将值分配给寄存器的情况。

于 2020-07-30T12:25:57.577 回答
0

BSV 不支持更新寄存器的字段或元素。如果 pred_pkt 是一个寄存器,那么你可以这样做:

let new_pred_pkt = pred_pkt;
new_pred_pkt.comp_tag1_table[ti] = 8'b101;
pred_pkg <= new_pred_pkt;
于 2021-04-01T19:51:33.750 回答