verilog中怎么取数组中的某几位

比如我定义
reg [7:0] h ;
reg [7:0] array [3:0];
然后我想把h[5:2]赋值为 array[2]的[7:4]
怎么写代码呢。。

alway@(*) 

array[2][7:4] = h[5:2];

可以试试这个

下面是我的代码,和仿真(为方便观察仿真先对Mem进行初始化,我是将pc写入到Mem[2]的[3:0],(Op是我的读取也类似))

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-12
assign icoef={{(mwidth-cwidth){coef[cwidth-1]}},coef} {coef[cwidth-1]}这里是取了codf的某一位,cwidth-1能算出一个值来吧。 {(mwidth-cwidth){coef[cwidth-1]}}这里是对coef中的那一位进行了mwidth-cwidth次的重复 最后在拼接coef的所有位

赞同0
暂无评论

alway@(*) array[2][7:4] = h[5:2]; 可以试试这个 下面是我的代码,和仿真(为方便观察仿真先对Mem进行初始化,我是将pc写入到Mem[2]的[3:0],(Op是我的读取也类似))
这个操作在numpy数组上的操作感觉有点麻烦,但是也没办法。
例如
a = [[1,2,3],
[4,5,6],
[7,8,9]]
取 a 的 2 3 行, 1 2 列
c=[1,2]
d =[0,1]
若写为
b = a[c,d]
output:
[4 8]
取的是 第二行第一列 和第三行第二列的数据
这并不是我们想要的结果。
正确做法是:
b = a[c]先取想要的行数据
b = b[:,d]
print(b)
output:
[[4 5]
[7 8]]
这才是我们想要的结果。必须要经过这两步才能完成。
以上这篇取numpy数组的某几行某几列方法就是小编分享给大家的全部内容了,
第2个回答  2018-06-01
assign icoef={{(mwidth-cwidth){coef[cwidth-1]}},coef}
{coef[cwidth-1]}这里是取了codf的某一位,cwidth-1能算出一个值来吧。
{(mwidth-cwidth){coef[cwidth-1]}}这里是对coef中的那一位进行了mwidth-cwidth次的重复
最后在拼接coef的所有位本回答被网友采纳
第3个回答  2020-11-12
你可以这样写的呀,一些比较老的教材也可能用的是老标准,是不支持直接访问数组的一个地址中的某一位或一部分,只能通过一个临时变量访问(楼下已经举例了)。verilog2001开始取消这个限制,直接访问没问题。
摘抄一段verilog2001的介绍:
The Verilog-1995 standard does not permit directly accessing a bit or part select of an array word. A full array word has to copied to a temporary variable, and the bit or part selected from the temporary variable. Verilog-2001 removes this restriction, and allows bit selects and part
selects of array words to be directly accessed. For example:
第4个回答  2020-11-11
verilog中怎么取数组中的某几位?assign icoef={{(mwidth-cwidth){coef[cwidth-1]}},coef}
{coef[cwidth-1]}这里是取了codf的某一位,cwidth-1能算出一个值来吧。
{(mwidth-cwidth){coef[cwidth-1]}}这里是对coef中的那一位进行了mwidth-cwidth次的重复
最后在拼接coef的所有位。alway@(*)
array[2][7:4] = h[5:2];
可以试试这个
下面是我的代码,和仿真(为方便观察仿真先对Mem进行初始化,我是将pc写入到Mem[2]的[3:0],(Op是我的读取也类似))