verilog 定义memory类型变量 reg[16:1] a[7:0], 赋值时候可不可以这样:a[5][16:9]=8'b11111111;

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog 定义memory类型变量 reg[16:1] a[7:0], 赋值时候可不可以这样:a[5][16:9]=8'b11111111;相关的知识,希望对你有一定的参考价值。

参考技术A 可以,IEEE-Verilog-2001中有这么一段,你可以参考一下
reg [7:0] twod_array[0:255][0:255];
wire threed_array[0:255][0:255][0:7];
Examples:
twod_array[14][1][3:0] // access lower 4 bits of word
twod_array[1][3][6] // access bit 6 of word
twod_array[1][3][sel] // use variable bit select
threed_array[14][1][3:0] // Illegal

请教Verilog 中memory 型数据的问题

请教Verilog 中memory 型数据的问题

在Verilog中定义一个memory型的数据,如:

reg [7:0] mem1[255:0]
如果想引用其中第七行第八列元素应如何引用:reg[6][7]怎么不对的?请各位大虾指教一下。

恩,楼上的都不对。
首先你要明确mem1不是一个二维数组,它是一维的。reg表示mem1中的元素都是寄存器类型,reg后面的[7:0]表示的是mem1每个数组的元素的位宽是8bit。

如果想表示mem1数组的第A个元素的第B到第C位的内容,可表示如下
mem1[A][B:C]

凭记忆写的,大致如上,你可以查阅verilog相关书籍的语法部分验证一下~

参考资料:大脑中关于verilog的记忆

参考技术A 应该是 mem[6][7]吧,reg是类型。
这个mem是一维压缩数组,mem[6][7]表示第7个元素的第8位,只是一位。
参考技术B mem1[6][7] 参考技术C 起码也应该是 mem1[6][7] 吧……

以上是关于verilog 定义memory类型变量 reg[16:1] a[7:0], 赋值时候可不可以这样:a[5][16:9]=8'b11111111;的主要内容,如果未能解决你的问题,请参考以下文章

请教Verilog 中memory 型数据的问题

怎么对Verilog定义的memory初始赋值

verilog中如何将wire类型的变量A 与reg类型的变量B进行比较?

verilog模块中各个变量的类型怎么确定

Verilog中wire与reg类型的区别

verilog求解释