Я хочу создать двумерный массив постоянных значений в виде синтезируемого кода Verilog.
Это для модуля, который предоставляет значения синусоидального сигнала в ЦАП.
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
Когда я компилирую код, ошибок нет, но возникает это критическое предупреждение:
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
Файл инициализации памяти:
-- 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;
Как я могу избежать этого критического предупреждения? Нужно ли использовать минимальную глубину памяти?