在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11057|回复: 9

[求助] 循环移位器的verilog代码问题

[复制链接]
发表于 2011-5-16 16:31:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
老师布置的任务,我实现了,但是感觉算法不够好,资源浪费有点多啊。

这个循环移位器有两个输入,待移位的数(13个数,每个数是4bits,一共52bits),以及要移位的位数(每移一位,以一个数据为单位,即4bits)。输出就是移位后的13个数了。注意是13个数据,不是16个数据。

所有移位是右移。

比如如果输入是52‘h 0123456789ABC, 移动位数为1,输出是:C0123456789AB

    如果输入是52‘h 0123456789ABC, 移动位数为3,输出是:ABC0123456789

希望我描述清楚了。

模块的端口是 module shifter(Indata, shift, Outdata)
                  input [51:0] Indata,
                  input [3:0]shift;  //因为是13个数据,shift的值是0 到12
                  output [51:0] outdata;

求高手给出好的算法或者代码!先谢谢!
发表于 2011-5-16 16:54:31 | 显示全部楼层
是个循环移位问题。
发表于 2011-5-16 20:44:53 | 显示全部楼层
module shifter(Indata, shift, Outdata)
                  input [51:0] Indata,
                  input [3:0]shift;  //因为是13个数据,shift的值是0 到12
                  output [51:0] outdata;
always @(shift)
begin
case (shift);
   4'b0000: outdata=indata;
   4'b0001: outdata={indata[48:51],indata[0:47]};
   4'b0010: outdata={indata[44:51],indata[0:43]};
   4'b0011: outdata={indata[40:51],indata[0:39]};
   4'b0100: outdata={indata[36:51],indata[0:35]};
   4'b0101: outdata={indata[32:51],indata[0:31]};
   4'b0111: outdata={indata[28:51],indata[0:27]};
   4'b1000: outdata={indata[24:51],indata[0:23]};
   4'b1001: outdata={indata[20:51],indata[0:19]};
   4'b1010: outdata={indata[16:51],indata[0:15]};
   4'b1011: outdata={indata[12:51],indata[0:11]};
   4'b1100: outdata={indata[8:51],indata[0:7]};
   4'b1101: outdata={indata[4:51],indata[0:3]};
endcase
end
endmodule
发表于 2011-5-16 21:19:04 | 显示全部楼层
建议参看barrel shifter的设计
发表于 2011-5-17 20:18:58 | 显示全部楼层
input clk;
output reg data_out;
reg [11:0]val;
always @(posedge clk)begin
if(rst)begin

end
else begin
  val<={val[10:0],val[11]};
end
assign data_out=val[11];
发表于 2012-12-6 21:04:51 | 显示全部楼层
非常有用。谢谢
发表于 2014-6-13 11:25:53 | 显示全部楼层
,可以看看
发表于 2015-6-5 11:03:13 | 显示全部楼层
回复 3# faddist


这个综合后相当于barrel shifter吗?
发表于 2015-6-5 11:10:03 | 显示全部楼层
3#的写法跟 outdata=(indata<<shifter)这种写法有什么不同吗?
发表于 2018-11-28 16:56:24 | 显示全部楼层
学习中。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-9-27 20:22 , Processed in 0.029570 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表