请教verilog如何取数组的值
比如 b是数组
always@(posedge clk)
if(!rst_n)
begin
for(i=0;i<3;i=i+1)
a <= b[i+4:i];
end
这个赋值有语法错误,请教要实现,a <= b[i+4:i];应该如何写?
[i+:4]
非常感谢,请问这个语法怎么写
for(i=0;i<3;i=i+1)
begin
a <= mem[i+4:i];
b <= mem[i+8:i+5];
c <= mem[i+12:i+9];
end
可能你理解有误,连带着你描述的需求也有问题,都不晓得怎么给你解释了,完整的描述下你电路要实现的功能吧
verilog数组不支持变量,在2000版本里加了一个语法支持变量取值,即二楼的写法[i+:cons],其中cons为常数
我只是要做一个testbench,command是数组,400bit command = {'h0,
8'h1b,8'h3b,8'h5b,8'h7b,4'hc,
8'h12,8'h34,8'h56,8'h78,4'he,
8'h9a,8'hbc, 8'hde,8'hf0, 4'hf,
8'h1b,8'h3b,8'h5b,8'h7b,4'hf};
循环取值,先把最后一行的数据赋值给五个变量,然后依次是其他几行。
仿照二楼的提示,写了一下
while(wr_byte_cnt<num_byte) begin
o_cmd_byte_en = mem_command[m+:4];
m = m+4;
o_cmd_din_0 = mem_command[m+:8];
m = m+8;
o_cmd_din_1 = mem_command[m+:8];
m = m+8;
o_cmd_din_2 = mem_command[m+:8];
m = m+8;
o_cmd_din_3 = mem_command[m+:8];
m = m+8;
end
