是否在 verilog 中使用可合成的信号索引到数组中?
Is indexing into an array with a signal synthesizable in verilog?
下面合成有问题吗?:
// Read entry
assign entry[7:0] = my_array[read_address[10:0]][7:0];
其中 read_address 是用于读取 my_array.
的信号
我习惯了 AND-OR 逻辑来读取数组,但我想知道上面是否 1) 可综合和 2) 它会创建什么样的逻辑?
是的,您可以使用另一个变量或表达式作为数组的索引。问题是您只能在连续作业的 RHS 上执行此操作。你不会被允许做相反的事情
assign my_array[read_address[10:0]] = entry; // illegal
此外,如果这是元素或信号的整个范围,则无需 select [7:0]
。事实上,这会导致有符号信号出现问题,使它们成为无符号操作数。
下面合成有问题吗?:
// Read entry
assign entry[7:0] = my_array[read_address[10:0]][7:0];
其中 read_address 是用于读取 my_array.
的信号我习惯了 AND-OR 逻辑来读取数组,但我想知道上面是否 1) 可综合和 2) 它会创建什么样的逻辑?
是的,您可以使用另一个变量或表达式作为数组的索引。问题是您只能在连续作业的 RHS 上执行此操作。你不会被允许做相反的事情
assign my_array[read_address[10:0]] = entry; // illegal
此外,如果这是元素或信号的整个范围,则无需 select [7:0]
。事实上,这会导致有符号信号出现问题,使它们成为无符号操作数。