需要 VHDL 代码解释 (std_logic_vector)

VHDL Code explanation needed (std_logic_vector)

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)。它说 (data_width - 1 下降到 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);

再次使用 8 的 data_width,我们得到: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]