Как создать двумерные массивы в systemverilog и вызвать элементы этого массива позже?
Я пишу небольшую игру на FPGA в System Verilog и хочу показать несколько небольших картинок через VGA-дисплей. Размер моей картинки 35px X 20px. Я преобразовал изображение в три отдельных массива (значения R, G и B) с помощью Matlab. Я не знаю, как я могу создать подобные массивы в System Verilog и затем вызывать элементы в них позже. Ниже мой текущий код, где я сделал белые точки и красные точки. Я хочу заменить эти точки на фотографии, которые я упомянул выше. Спасибо!
begin:RGB_Display
if (missile_On == 1'b1)
begin
Red = 8'h00;
Green = 8'hff;
Blue = 8'h3f;
end
else if (ourMissileOn == 1'b1)
begin
Red = 8'hff;
Green = 8'hff;
Blue = 8'h00;
end
else if ((ball_on == 1'b1))
begin
Red = 8'hff;
Green = 8'hff;
Blue = 8'hff;
end
else if ((enemyAppear == 1'b1))
begin
Red = 8'hff;
Green = 8'h00;
Blue = 8'h2f;
end
else
begin
Red = 8'h3f;
Green = 8'h00;
Blue = 8'h3f; //- DrawX[9:3];
end
end
1 ответ
Вы можете хранить информацию о цвете в 24-битном регистре как
24'hRRGGBB, (RR - красный, GG - зеленый, BB - синий) - один пиксель
35px x 20px = 700px, 700 * 3 байта = 2100 байтов
Первые 35 * 3 = 105 байт памяти - это первая строка изображения.
Вторые 35 * 3 = 105 байт памяти - это второй ряд изображения.
....
Вы можете использовать FPGA Block RAM.