Given you just mentioned you want a 512x512 array, it looks like you are trying to store an entire image.
The problem is, you are thinking like VHDL is software which has access to an entire 512x512 memory array. Its not like that in hardware. You can store the 512x512 array in a memory and read it out one pixel at a time. Using pipelining you can create a window into a small part of the image that you want to do the image processing on.
I do lots of image processing, and you never ever store the image in an array. I fear you havent got past thinking like a software programmer.