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