请教ASIC做查找表,一般用寄存器吗?有没有好的办法呢?
时间:10-02
整理:3721RD
点击:
我想在系统启动的时候,配置rst_info_mem变量,16个周期配置一次,有没有什么好的办法呢?
reg [31:0] cnt;
always @ (posedge i_clk)
if (~i_rst_n)
cnt <= #UDLY 32'h0;
else if ( cnt != 32'ha0)
cnt <= #UDLY cnt + 'b1;
reg rst_info_mem [76:0];
always @ (posedge i_clk)
case(cnt)
32'h10://B1
rst_info_mem <= 77'h1209090c580000026204;
32'h20://B2
rst_info_mem <= 77'h1408051000000000ffff;
32'h30://B3
rst_info_mem <= 77'h1408051400000000ffff;
32'h40://B4
rst_info_mem <= 77'h1209090c580000026204;
32'h50://B6
rst_info_mem <= 77'h160805200000050001e0;
32'h60://B7
rst_info_mem <= 77'h1289052834000780080e;
32'h70://B8
rst_info_mem <= 77'h1289052c3000000c0013;
32'h80://B9
rst_info_mem <= 77'h12080538000000000002;
32'h90://BA
rst_info_mem <= 77'h1289093c400000010001;
default:
rst_info_mem <= 77'h16080640000000100000;
endcase
reg [31:0] cnt;
always @ (posedge i_clk)
if (~i_rst_n)
cnt <= #UDLY 32'h0;
else if ( cnt != 32'ha0)
cnt <= #UDLY cnt + 'b1;
reg rst_info_mem [76:0];
always @ (posedge i_clk)
case(cnt)
32'h10://B1
rst_info_mem <= 77'h1209090c580000026204;
32'h20://B2
rst_info_mem <= 77'h1408051000000000ffff;
32'h30://B3
rst_info_mem <= 77'h1408051400000000ffff;
32'h40://B4
rst_info_mem <= 77'h1209090c580000026204;
32'h50://B6
rst_info_mem <= 77'h160805200000050001e0;
32'h60://B7
rst_info_mem <= 77'h1289052834000780080e;
32'h70://B8
rst_info_mem <= 77'h1289052c3000000c0013;
32'h80://B9
rst_info_mem <= 77'h12080538000000000002;
32'h90://BA
rst_info_mem <= 77'h1289093c400000010001;
default:
rst_info_mem <= 77'h16080640000000100000;
endcase
我想知道,是用单个寄存器还是寄存器组,上面的例子是单个寄存器,每隔16个周期赋值一次,
或者我们可以定义一个寄存器组 reg [76:0] rst_info_mem [8:0];然后定义一个buffer,reg [76:0] rst_info_mem_buffer,然后每16个周期,rst_info_mem_buffer= rst_info_mem [N],
或者还有别的方法,比如,生成ROM,RAM什么的,但是我设计的是ASIC,请大家指教
