Вы должны прочитать очень внимательно. Он не говорит ( -1 до 0). он говорит ( data_width - 1 downto 0).
Таким образом, если data_width равен 8, вы получите (8-1 downto 0), которое является вашим (7 downto 0)
Теперь следующий: A_reg(data_width - 1 downto 1) <= A_reg(data_width - 2 downto 0);
Снова используя data_width 8, мы получаем: A_reg(7 downto 1) <= A_reg(6 downto 0);
Таким образом, биты 6,5,4, ... 0 передаются до битов 7,6,5, .. 1. Каждый бит перемещается на одну позицию влево, но бит 0 остается прежним:
A[7][6][5][4][3][2][1][0]
/ / / / / / /|
/ / / / / / / |
v v v v v v v v
A[7][6][5][4][3][2][1][0]