如何解决对条件语句使用向量位选择
我在下面有以下 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
解决方法
当您想要进行位选择时,方括号必须位于信号名称的右侧。更改:
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 上的模拟器(如果您注册免费帐户)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。