在我的项目中,我有这样的东西:
reg [15:0] mem [3:0];
wire [63:0] data;
我知道我可以将mem连接到data
中,
assign data = {mem[3], mem[2], mem[1], mem[0]};
但是当内存变大时,这会变得很糟糕:
reg [3:0] mem [255:0];
wire [1023:0] data;
即使我可以写一些其他的Python或Ruby脚本来生成这样的行,恐怕也不应该写这样的东西。
assign data = {mem[255], ..........., mem[0]};
summon_cthulhu();
有什么更好的方法吗?
注意:这不是XY问题-这是我要解决的确切问题。
答案 0 :(得分:0)
使用generate-for循环
genvar ii;
for (ii=0;ii<256;ii=ii+1)
assign data[ii*16+:16] = mem[ii];
答案 1 :(得分:0)
这是一种方法。
parameter MEM_WIDTH = 4;
parameter MEM_DEPTH = 256;
localparam DATA_SIZE = (MEM_WIDTH * MEM_DEPTH);
reg[MEM_WIDTH-1:0]mem[MEM_DEPTH-1:0];
reg[DATA_SIZE-1:0]data;
always@(*)
begin
for(i=0; i<MEM_DEPTH; i=i+1)
begin
data[i*MEM_WIDTH +: MEM_WIDTH] = mem[i];
end
end