Как создать двумерные массивы в 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.

Другие вопросы по тегам