需要 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]
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]