-- point to top of RAM - 2*words
constant spStart : std_logic_vector(maxAddrBitIncIO downto 0) :=
conv_std_logic_vector((2**(maxAddrBitBRAM+1))-8, maxAddrBitIncIO+1);
What does this "conv_std_logic_vector((2**(maxAddrBitBRAM+1))-8, maxAddrBitIncIO+1);" tell us?
no, this is exponential, and left side of the ** can be integer or floating point, but right side must be integer only. i recommend u download some VHDL book. good luck