Unfortunately what i want to do is take input data from one pin and store it in an array internally. I could use a shift register but my problem is not creating the input as well as storing the input in the array.
Get data from the pin in each clock cycle and put it in a array. This can be done by changing the index of the array using a counter. The counter value should increment at every clock cycle.
if(rising_edge(clk)) then
count <= count + 1;
array(count) <= data_from_pin;
if(count = array_size) then
count = 0;
end if;
end if;
you want to store 10, 30, 25 in one cell, 30 if it hex number is a 6 bits long value, if it dec 5 bits, so you memory will be 2^address X 6bit size. If you use hex, you should create 6 bit shift register, after 6 clock cycles register assert signal "ready to store". then array(address) <= data_from_shift_register