对条件语句使用向量位选择
Using vector bit-selects for conditional statements
我有下面的 SystemVerilog 代码,但我不知道如何合成它。我相信我的错误与我在条件语句中使用 bit-select 的事实有关,但我不确定要采取什么方法来完成这项工作。我尝试用不同的名称制作 wire
和 reg
并将其替换为输入,但它没有用。任何建议表示赞赏。
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 上的模拟器(如果您注册了免费帐户),您可能会收到更多有用的错误消息。
我有下面的 SystemVerilog 代码,但我不知道如何合成它。我相信我的错误与我在条件语句中使用 bit-select 的事实有关,但我不确定要采取什么方法来完成这项工作。我尝试用不同的名称制作 wire
和 reg
并将其替换为输入,但它没有用。任何建议表示赞赏。
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 上的模拟器(如果您注册了免费帐户),您可能会收到更多有用的错误消息。