0

假设“a”和“y”是具有 std_logic_vector (7 downto 0) 数据类型的 8 位信号。如果信号被解释为无符号数,则下面的赋值语句执行 / 8。说明。y <= “000” & a(7 down to 3); 这个问题在 RTL 硬件设计第 3 章问题 3.6 中。我有这个问题的答案,那就是通过向右移动三倍到任何二进制值都可以被 8 整除,但我不知道如何.? 谁能解释一下。?

4

1 回答 1

0

看看计算 a/2 的更简单的情况。右移位意味着它们移动到一个值为前一个值一半的位置。

例子:

110 (binary) = 6 (decimal)  shifted to  011 (binary) = 3 (decimal)

101 (binary) = 5                        010          = 2 (decimal).

最后一个示例显示 5/2=2.5 自动截断为 2,因为最低有效位已移出。

要获得 a/8,只需重复 a/2 三次,即向下移动三个位置。在硬件中,这通常是通过“移动电线”来完成的,在这种情况下,通过将位(7 向下到 3)连接到位置(4 向下到 0)并用零填充高三位。

于 2015-02-01T20:06:10.960 回答