RTL基本知识:快速填充矢量

【问题描述】

在使用Verilog进行设计时,经常会遇到多位向量需要全部填充为"1","x"或者"z"的情况,特别是在不指定位宽的时候,"'bx"或者"'b z"可以填充到矢量的所有位,但是"'b1"并不能得到期望的所有为位"1"的结果。本文针对这种情况,通过详细的示例解释其中原因,同时给出当向量位数不是2的倍数或者位数特别巨大时,如何能够正确的将"1","x"或者"z"赋值到对应的所有位的快捷方法?

【误区】

如果在设计中试图想给一个多位宽的向量各位赋予相同是的值,该如何进行呢?常见的代码编写情况如下:    

【解决方法】

第一种方法:使用拼位操作符“{}”法

第二种方法:省略数据类型法

【注意事项】

第一种方法:使用拼位运算符“{}”法

注意重复运算符使用的注意事项,可参考往期topic《Verilog中的拼位操作》。

第二种方法:省略数据类型法

注意忽略数据类型后,操作数可以为任何宽度,操作的具体对象是数据的每一bit。


猜你喜欢

转载自www.cnblogs.com/xgcl-wei/p/8906289.html