An array in a HDL code can have different meanings:
- it can describe a collection of individual register bits. The bits can be accesses individually without restrictions, but the "wiring" consumes a lot of FPGA resources
- it can describe FPGA internal RAM, if the requirements for RAM inference are met. Internal RAM can have maximal two ports, so only two register entities can be accessed simultaneously. In some cases, multiple "array" elements can be arranged as one RAM word, limited of course by the available RAM word width respectively the total amount of RAM.
Unfortunately, you didn't yet give a clear example of intended array usage, so it's difficult to decide about a possible solution. In the last code example you posted (on page three of this thread) the array is neither supplied with individual data nor needs to store it.