首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2D矩阵-临界警告(127005):内存深度

2D矩阵-临界警告(127005):内存深度
EN

Stack Overflow用户
提问于 2019-06-04 07:01:32
回答 2查看 380关注 0票数 1

我想要创建一个二维数组的常量值作为可综合的Verilog代码。

这是用于向DAC提供正弦波值的模块。

代码语言:javascript
运行
复制
reg [7:0] sine [0:19];

initial begin
    sine[0] = 8'd0;
    sine[1] = 8'd6;
    sine[2] = 8'd24;
    sine[3] = 8'd53;
    sine[4] = 8'd88;
    sine[5] = 8'd127;
    sine[6] = 8'd167;
    sine[7] = 8'd202;
    sine[8] = 8'd231;
    sine[9] = 8'd249;
    sine[10] = 8'd255;
    sine[11] = 8'd249;
    sine[12] = 8'd231;
    sine[13] = 8'd202;
    sine[14] = 8'd167;
    sine[15] = 8'd127;
    sine[16] = 8'd88;
    sine[17] = 8'd53;
    sine[18] = 8'd24;
    sine[19] = 8'd6;
end

当我编译代码时,没有错误,但会发生以下严重警告:

代码语言:javascript
运行
复制
Critical Warning (127005): Memory depth (32) in the design file differs from memory depth (20) in the Memory Initialization File "__.hdl.mif" -- setting initial value for remaining addresses to 0

内存初始化文件:

代码语言:javascript
运行
复制
-- begin_signature
-- DAC_SINE
-- end_signature
WIDTH=8;
DEPTH=20;

ADDRESS_RADIX=UNS;
DATA_RADIX=BIN;

CONTENT BEGIN
    19 :    00000110;
    18 :    00011000;
    17 :    00110101;
    16 :    01011000;
    15 :    01111111;
    14 :    10100111;
    13 :    11001010;
    12 :    11100111;
    11 :    11111001;
    10 :    11111111;
    9 :     11111001;
    8 :     11100111;
    7 :     11001010;
    6 :     10100111;
    5 :     01111111;
    4 :     01011000;
    3 :     00110101;
    2 :     00011000;
    1 :     00000110;
    0 :     00000000;
END;

我怎样才能避免这种严重的警告呢?我必须使用最小内存深度吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-13 05:03:09

我将Verilog模块替换为System,它现在将值存储为2D数组位参数(值不会更改)。通过这种修改,编译时不会出现关键警告。

代码语言:javascript
运行
复制
parameter bit [7:0] sine [0:19] = '{8'd0, 8'd6, 8'd24, 8'd53, 8'd88, 8'd127, 8'd167, 8'd202, 8'd231, 8'd249, 8'd255, 8'd249, 8'd231, 8'd202, 8'd167, 8'd128, 8'd88, 8'd53, 8'd24, 8'd6};
票数 0
EN

Stack Overflow用户

发布于 2019-06-04 16:09:42

推断存储设备通常将基于一些最小内存大小的量子,这取决于所使用的芯片结构。假设推断的内存确实被推断到32的深度,警告本身就证明了这一点,我认为最好的操作是修改MIF如下所示。因此,内存将被完全初始化,并满足警告检查。

代码语言:javascript
运行
复制
-- begin_signature
-- DAC_SINE
-- end_signature
WIDTH=8;
DEPTH=32;

ADDRESS_RADIX=UNS;
DATA_RADIX=BIN;

CONTENT BEGIN
    31 :    00000000;
    30 :    00000000;
    29 :    00000000;
    28 :    00000000;
    27 :    00000000;
    26 :    00000000;
    25 :    00000000;
    24 :    00000000;
    23 :    00000000;
    22 :    00000000;
    21 :    00000000;
    20 :    00000000;
    19 :    00000110;
    18 :    00011000;
    17 :    00110101;
    16 :    01011000;
    15 :    01111111;
    14 :    10100111;
    13 :    11001010;
    12 :    11100111;
    11 :    11111001;
    10 :    11111111;
    9 :     11111001;
    8 :     11100111;
    7 :     11001010;
    6 :     10100111;
    5 :     01111111;
    4 :     01011000;
    3 :     00110101;
    2 :     00011000;
    1 :     00000110;
    0 :     00000000;
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56438873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档