gpt4 book ai didi

algorithm - VHDL - N 次串联移位运算

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:23:32 25 4
gpt4 key购买 nike

我想知道如果我有 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' 并且DATA1DATA2` 是std_logic_vector,因此是强制转换。

关于algorithm - VHDL - N 次串联移位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com