标题简易桶形移位寄存器
图给出了一个简单桶形移位寄存器的电路图。在这个例子中,输出值或者是输人矢量左移一位得到的结果,或者就等于输人矢量(不进行移位)。当输入矢量左移一位(sit=1)时,oup(0)=‘0’,outp(i)=inp(i-1),1≤i≤7。移位后空出的最低位将充’0’(如电路图的左下角所示)。当输人矢量不移位时,输出与输入相同。下面给出了完整的VHDL代码,其中展示了FOR/LOOP语句的使用方法。
---------------------------------------
library ieee;
use ieee.std_logic_1164.all;
---------------------------------------
entity barrel is
generic (n: integer :=8);
port(inp: in std_logic_vector(n-1 downto 0);
shift: in integer range 0 to 1;
outp: out std_logic_vector(n-1 downto 0)
);
end barrel;
----------------------------------------
architecture rtl of barrel is
begin
process (inp,shift)
begin
if(shift=0)then
outp <= inp;
else
outp(0) <= '0';
for i in 1 to inp'high loop
outp(i) <= inp(i-1);
end loop;
end if;
end process;
end rtl;
-----------------------------------------