Indexing 可在verilog中合成的索引部件选择

Indexing 可在verilog中合成的索引部件选择,indexing,verilog,counter,xilinx,synthesis,Indexing,Verilog,Counter,Xilinx,Synthesis,我可以在我的verilog代码中使用下面的代码(向量索引中的计数器值)吗 data_out[cnt*32 + 31 : cnt*32] = data_in; 这个构造可以在xst中合成吗?我有一个常数定义的数据输出范围,cnt在时钟上递增,永远不会达到大于最大数据输出范围的值。其他所有内容都与一个clk同步。我非常确定您的示例不会编译,但是从Verilog 2001可以做到这一点: data_out[cnt*32 +: 32] = data_in; IEEE 1364-2005中的第5.2.

我可以在我的verilog代码中使用下面的代码(向量索引中的计数器值)吗

data_out[cnt*32 + 31 : cnt*32] = data_in;

这个构造可以在xst中合成吗?我有一个常数定义的数据输出范围,cnt在时钟上递增,永远不会达到大于最大数据输出范围的值。其他所有内容都与一个clk同步。

我非常确定您的示例不会编译,但是从Verilog 2001可以做到这一点:

data_out[cnt*32 +: 32] = data_in;
IEEE 1364-2005中的第5.2.1节矢量位选择和部分选择寻址


或者。

我很有信心地说,你不能用任何合成器合成它

据我所知,当计数器递增时,您希望保持输出的先前值(较低索引)。我不知道没有寄存器怎么做


在我看来,一种方法是将每个32位存储在寄存器中(由计数器值启用),并将这些寄存器的串联分配给输出。

我认为在上面的语句中:
data\u out[cnt*32+31:cnt*32]=data\u In
如果
cnt=0
,则为
data\u out[31:0]=data\u in

同样,同样的语句可以写成
data\u out[cnt*32+:32]=data\u in如摩根所解释