如何在不截断第一位的情况下向右移动 std_logic_vector
How to shift an std_logic_vector to the right without truncating the first bits
我想将一个 std_logic_vector 向右移动 d 个位置,在每次移位中将移位后的值补全 0,并且 从不截断 剩余的位。这是一个具体的例子,a='110001', b=shiftRight(a,3) 那么b等于'000110001'。 '001' 的最后一位不会被截断,但是对于 srl,它将被截断。有没有可能的实现方式?
如前所述,您的示例只是串联。您还可以使用无符号调整大小向左侧添加位,如果要添加的位数是变量或参数,这可能会更好:
new_slv <= std_logic_vector(resize(unsigned(my_slv),my_slv'length + more_bits));
我想将一个 std_logic_vector 向右移动 d 个位置,在每次移位中将移位后的值补全 0,并且 从不截断 剩余的位。这是一个具体的例子,a='110001', b=shiftRight(a,3) 那么b等于'000110001'。 '001' 的最后一位不会被截断,但是对于 srl,它将被截断。有没有可能的实现方式?
如前所述,您的示例只是串联。您还可以使用无符号调整大小向左侧添加位,如果要添加的位数是变量或参数,这可能会更好:
new_slv <= std_logic_vector(resize(unsigned(my_slv),my_slv'length + more_bits));