Требуется объяснение кода VHDL (std_logic_vector) - PullRequest
1 голос
/ 04 апреля 2020

1) std_logic_vector(data_width - 1 downto 0)

В этом коде я не понимаю (от -1 до 0). Я знаю, что это говорит нам, что это 8 бит. Но не понимая, как? Например, (7 donwto 0) не требует пояснений, например. 0,1,2,3,4,5,6,7.

2) A_reg(data_width - 1 downto 1) <= A_reg(data_width - 2 downto 0);

Я знаю, что мы сдвигаемся влево. Но кто-нибудь может объяснить, как? Я хотел знать, как изменяется или изменяется положение бита.

1 Ответ

0 голосов
/ 04 апреля 2020

Вы должны прочитать очень внимательно. Он не говорит ( -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]
...