假设' a'并且' y'是带有std_logic_vector(7 downto 0)数据类型的8位信号。如果信号被解释为无符号数,则以下赋值语句执行/ 8。 说明。 y< =“000”& a(7 downto 3); 这个问题在RTL硬件设计第3章问题3.6中。我有这个问题的答案,即通过三次右移到任何二进制值将被8整除,但我不知道如何。 任何人都可以解释这个。?
答案 0 :(得分: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 downto 3)连接到位(4 downto 0)并用零填充高三位。