VHDL - N 次串联移位运算
VHDL - Shift operation of N times with concatenation
我想知道如果我有2个输入,一个输入,DATA1是一个数字(std_logic_vector),第二个输入DATA2代表次数,在VHDL中如何进行移位操作我想移动第一个输入。
例如,如果我必须总是左移一次,代码是
OUTALU <= '0' & DATA1(N-1 downto 1);
如果我想移动DATA2次,这样写对吗:
for i in 0 to DATA2 loop
OUTALU <= '0' & DATA1(N-1 downto 1);
DATA1 <= OUTALU
end loop;
对吗?
我必须定义信号并分配给这些信号 DATA1 和 DATA2?
谢谢你的帮助
你要找的是桶形移位器。你可以这样做:
OUTALU <= std_logic_vector(shift_left(unsigned(DATA1), to_integer(unsigned(DATA2)))); -- Shift left
OUTALU <= std_logic_vector(shift_left(unsigned(DATA1), to_integer(unsigned(DATA2)))); -- Shift right
OUTALU <= std_logic_vector(shift_left( signed(DATA1), to_integer(unsigned(DATA2)))); -- Arithmetic shift left
OUTALU <= std_logic_vector(shift_left( signed(DATA1), to_integer(unsigned(DATA2)))); -- Arithmetic shift right
这意味着您使用的 ieee.numeric_std.all' and that
DATA1and
DATA2` 是 std_logic_vector,因此是强制转换。
datao <= std_logic_vector(unsigned(data1) sll to_integer(unsigned(data2)));
sll逻辑左移,用‘0’填充
也可以用sla(左移算术,右位填充)代替sll。
ps: datao <= '0' & data1(7 downto 1) 是右移器,不是左移器:)。
使用 srl 或 sra。
我想知道如果我有2个输入,一个输入,DATA1是一个数字(std_logic_vector),第二个输入DATA2代表次数,在VHDL中如何进行移位操作我想移动第一个输入。 例如,如果我必须总是左移一次,代码是
OUTALU <= '0' & DATA1(N-1 downto 1);
如果我想移动DATA2次,这样写对吗:
for i in 0 to DATA2 loop
OUTALU <= '0' & DATA1(N-1 downto 1);
DATA1 <= OUTALU
end loop;
对吗? 我必须定义信号并分配给这些信号 DATA1 和 DATA2? 谢谢你的帮助
你要找的是桶形移位器。你可以这样做:
OUTALU <= std_logic_vector(shift_left(unsigned(DATA1), to_integer(unsigned(DATA2)))); -- Shift left
OUTALU <= std_logic_vector(shift_left(unsigned(DATA1), to_integer(unsigned(DATA2)))); -- Shift right
OUTALU <= std_logic_vector(shift_left( signed(DATA1), to_integer(unsigned(DATA2)))); -- Arithmetic shift left
OUTALU <= std_logic_vector(shift_left( signed(DATA1), to_integer(unsigned(DATA2)))); -- Arithmetic shift right
这意味着您使用的 ieee.numeric_std.all' and that
DATA1and
DATA2` 是 std_logic_vector,因此是强制转换。
datao <= std_logic_vector(unsigned(data1) sll to_integer(unsigned(data2)));
sll逻辑左移,用‘0’填充
也可以用sla(左移算术,右位填充)代替sll。
ps: datao <= '0' & data1(7 downto 1) 是右移器,不是左移器:)。 使用 srl 或 sra。