2016-12-06 12 views
0

Я пишу небольшую игру на FPGA в System Verilog, и я хочу показать небольшие изображения через VGA-дисплей. Размер моей картинки 35 пикселей x 20 пикселей. Я преобразовал изображение в три отдельных массива (значения R, G и B) с помощью Matlab. Я не знаю, как создать аналогичные массивы в System Verilog, а затем вызывать элементы в них позже. Ниже мой текущий код, где я сделал белые точки и красные точки. Я хочу заменить эти точки изображениями, упомянутыми выше. Благодаря!Как создать 2-D массивы в systemverilog и вызвать элементы в этом массиве позже?

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 

ответ

0

Вы можете хранить информацию о цвете в 24-битовый регистр, как

24'hRRGGBB, (RR - красный, GG - зеленый, BB - синий) - один пиксель

35px 20px х = 700px , 700 * 3 байта = 2100 байт

Первые 35 * 3 = 105 байт памяти - это первая строка изображения.

Второй 35 * 3 = 105 байт памяти - это второй ряд изображений.

....

Вы можете использовать FPGA блок ОЗУ.