Verilog RTL:将数字数据写入预定义的内存“地址”

时间:2018-07-23 19:01:50

标签: verilog register-transfer-level

我有[8:0]个数字数据输入。我想预定义这些值并用一个唯一的地址存储它们,以便以后可以通过调用它们的地址值以逻辑方式访问它们。

不确定,我正在做类似的事情(此外,这是针对Verilog RTL(可合成的):

reg array[8:0];
array[8] = 9'b000000000;
array[7] = 9'b000000001;
array[6] = 9'b000000010;
array[5] = 9'b000000011;
array[4] = 9'b000000100;
array[3] = 9'b000000101;
array[2] = 9'b000000111;
array[1] = 9'b000001000;
array[0] = 9'b000000000;

我不确定,这只是我头上的事。

1 个答案:

答案 0 :(得分:1)

如果您希望创建一个LUT(基本上是您的建议),那么您就走对了:

reg [8:0] lut [8:0]; // Its an array of 9 elements (0 through 8 after the variable name), each of which is 9 bits wide (before the variable name)
assign lut[8] = 9'b000000000; // If there is a pattern to the array, use generate statement and loops to initialize it, Im just doing it one-by-one here
assign lut[7] = 9'b000000001;
assign lut[6] = 9'b000000010;
assign lut[5] = 9'b000000011;
assign lut[4] = 9'b000000100;
assign lut[3] = 9'b000000101;
assign lut[2] = 9'b000000111;
assign lut[1] = 9'b000001000;
assign lut[0] = 9'b000000000;