微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于《存储器赋初值》的误区!

关于《存储器赋初值》的误区!

时间:10-02 整理:3721RD 点击:
比如,给以下存储器赋初值:
reg  [9:0] ram [156:0];
一般来讲,在design中大家都不会采用以下方法(在testbench中可以):
  for(i=1;i<=156;i=i+1)
    ram<=0;
但是很多教科书中是这样赋初值的:
if(rst)
begin
ram[0] <=10'b0 ;
ram[1] <=10'b0 ;
.........................
ram[156] <=10'b0 ;
end
实际上这两种方式都是一样的,资源占用的结果如下(xilinx芯片):
Selected Device : 2v2000ff896-4
Number of Slices:                     2663  out of  10752    24%  
Number of Slice Flip Flops:           3170  out of  21504    14%  
Number of 4 input LUTs:               2056  out of  21504     9%  
Number of IOs:                          51
Number of bonded IOBs:                  51  out of    624     8%  
Number of GCLKs:                         1  out of     16     6%  
Timing Summary:
   Minimum period: 6.470ns (Maximum Frequency: 154.548MHz)
而去掉初始化的一段程序之后,资源占用的结果如下(xilinx芯片):
Selected Device : 2v2000ff896-4
Number of Slices:                       17  out of  10752     0%  
Number of Slice Flip Flops:             10  out of  21504     0%  
Number of 4 input LUTs:                 34  out of  21504     0%  
Number of IOs:                          51
Number of bonded IOBs:                  51  out of    624     8%  
Number of BRAMs:                         2  out of     56     3%  
Number of GCLKs:                         1  out of     16     6%  
Timing Summary:
   Minimum period: 4.864ns (Maximum Frequency: 205.613MHz)
这样赋初值的效果是很差的,不知道大家是怎么赋初值的,不妨说说看!
顺便说一下,似乎在芯片中,不给寄存器赋值时其值默认为0,哪么如果要使其初值为0,不理它行不?

经常用的都是第二种赋值的方法吧?
还可以用ip核来生成存储器

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top