Verilog中能否用二进制数作为数组索引?求正确写法
在Verilog中使用二进制数作为数组索引的正确写法
在Verilog里,直接写111会被默认解析为十进制整数111,而不是你想要的二进制数7,这就是A = B[111];达不到预期效果的原因。
要直接用二进制数作为索引,必须给数字加上二进制基数说明符,格式为'b(大小写'B也可以),写法有两种:
- 显式指定位宽:在基数符前加上位宽数字,比如
3'b111,这里的3表示这是一个3位的二进制数,对应十进制7。这种写法更清晰,能避免位宽歧义,推荐使用。 - 省略位宽:直接写
'b111,Verilog会根据上下文自动推断位宽,但在数组索引场景下,省略位宽通常也能正常工作。
对应的正确代码示例:
// 显式指定位宽的写法 A = B[3'b111]; // 省略位宽的写法 A = B['b111];
补充:Verilog还支持其他基数的数字表示,比如十六进制'h、八进制'o,但针对二进制索引需求,使用'b前缀就可以解决问题。
内容的提问来源于stack exchange,提问作者Charmi Toliya
相关产品推荐
相关产品推荐

