永发信息网

16位循环移位寄存器设计

答案:1  悬赏:0  手机版
解决时间 2021-04-28 07:58

16位循环移位寄存器设计

要求:首先设定参与循环位移的16位数值,而后每次一次脉冲降沿,16位数值一次右移1位

最佳答案
-- 16-bit right shift barrel shifter
-- SEL: in STD_LOGIC_VECTOR(3 downto 0);
-- B_INPUT: in STD_LOGIC_VECTOR(15 downto 0);
-- B_OUTPUT: out STD_LOGIC_VECTOR(15 downto 0);

--**Insert the following between the 'architecture' and
---'begin' keywords**

signal SEL_A, SEL_B: STD_LOGIC_VECTOR(1 downto 0);
signal C: STD_LOGIC_VECTOR(15 downto 0);

--**Insert the following after the 'begin' keyword**
SEL_A <= SEL(1 downto 0);
SEL_B <= SEL(3 downto 2);

process(SEL_A,B_INPUT)
begin
case SEL_A is
when "00" => --shift by 0
C <= B_INPUT;
when "01" => --shift by 1
C(15) <= B_INPUT(0);
C(14 downto 0) <= B_INPUT(15 downto 1);
when "10" => --shift by 2
C(15 downto 14) <= B_INPUT(1 downto 0);
C(13 downto 0) <= B_INPUT(15 downto 2);
when "11" => --shift by 3
C(15 downto 13) <= B_INPUT(2 downto 0);
C(12 downto 0) <= B_INPUT(15 downto 3);
when others =>
C <= B_INPUT;
end case;
end process;

process(SEL_B,C)
begin
case SEL_B is
when "00" => --shift by 0 more
B_OUTPUT <= C;
when "01" => --shift by 4 more
B_OUTPUT(15 downto 12) <= C(3 downto 0);
B_OUTPUT(11 downto 0) <= C(15 downto 4);
when "10" => --shift by 8 more
B_OUTPUT(15 downto 8) <= C(7 downto 0);
B_OUTPUT(7 downto 0) <= C(15 downto 8);
when "11" => --shift by 12 more
B_OUTPUT(15 downto 4) <= C(11 downto 0);
B_OUTPUT(3 downto 0) <= C(15 downto 12);
when others =>
B_OUTPUT <= C;
end case;
end process;

[DISABLELBCODE]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
猜谜…>>>?
九年级上册英语第一单元SELF CHECK 第2题的作
5530xm那个软件可以歌词同步显示!
关于心存善念的句子,心存善念名人素材50字
红栌温泉山庄-乒乓球怎么去啊,有知道地址的
一男人冲你摞管怎么办?
刘德华为浙江卫视我爱记歌词写的歌叫什么名字
为什么在一起后,就一定要分开
怀化市化省了没?叫什么省?
为什么皮肤老爱过敏?
新出的3个特产怎么跑?
自动柜员机是自动取款机吗?
为什么只有在线好有列表
这个人是谁啊?
固城狗肉馆地址有知道的么?有点事想过去
推荐资讯
怎么办啊 急!急!急!
腾讯资产多少?
PES2010在WIN7上玩不起!~
老是掉头发
《会长是女仆大人》第20集 结尾曲叫什么?
《水晶般透明》到底有没有第四部啊?是不是作
哪个网站是下载3D8.0的模型呢?
谁知道QQ宝宝社区里的许愿树在那个社区
QQ幻想世界 物攻宝宝合兽性 如果已经50多级了
魔兽data里的宙斯如何出装备
请问魔兽世界这个游戏的完美在哪里?
去JYP当练习生管吃住的吗?要交钱的吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?