对条件语句使用向量位选择

Using vector bit-selects for conditional statements

我有下面的 SystemVerilog 代码,但我不知道如何合成它。我相信我的错误与我在条件语句中使用 bit-select 的事实有关,但我不确定要采取什么方法来完成这项工作。我尝试用不同的名称制作 wirereg 并将其替换为输入,但它没有用。任何建议表示赞赏。

module S(
input [15:0] DIN, 
input [7:0] PRBA,
input [22:1] VAD,
input SMCK,
output logic [31:0] CT2LIM,
);


always_ff @ (posedge SMCK) begin
      if (([21:15] VAD == [6:0] PRBA)) //issue is here, simply states I have a syntax error
            CT2LIM <= DIN;
            else
            CT2LIM <= CT2LIM;
        end

要获取位select,方括号必须在信号名称的右边。变化:

  if (([21:15] VAD == [6:0] PRBA))

至:

  if ((VAD[21:15] == PRBA[6:0]))

这与您在端口列表中声明信号的方式相反。


您还有一个语法错误。最后一个端口名称后不应有逗号。变化:

output logic [31:0] CT2LIM,

至:

output logic [31:0] CT2LIM

当您在不同的模拟器上编译代码时,例如在 edaplayground 上的模拟器(如果您注册了免费帐户),您可能会收到更多有用的错误消息。