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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2510|回复: 7

[求助] 求助!求高手帮我用Verilog或者VHDL编写一个循环寄存器

[复制链接]
发表于 2010-4-29 11:21:03 | 显示全部楼层 |阅读模式

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

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

x
求助!求高手帮我用Verilog或者VHDL编写一个循环寄存器,我试了很多次没编好,我也是初学,普通寄存器在编写的时候移位之后剩余位都是补零啊....请高手帮忙!最后实现的功能就是例如一个256位的F89ABCDE移位后变成89ABCDEF。就是说在每个时钟周期里,将这个数的低32位移至高32位,从而实现信号逆序的目的。
发表于 2010-4-29 11:34:38 | 显示全部楼层
本帖最后由 skytang007 于 2010-4-29 12:27 编辑

parameter WIDTH = 256;
parameter SWID = 32; //以SWID为单位进行循环移位
reg [WIDTH-1 : 0]  data;
always@(posedge clk or negedge rstn)
if(~rstn) begin
   data <= {WIDTH{1'b0}};
end
else if(shift_en) begin //移位使能(如果有的话)
   data <= {data[WIDTH - 1 - SWID:0], data[WIDTH - 1:WIDTH - SWID] };
end
发表于 2010-4-29 11:35:48 | 显示全部楼层
always@(posedge clk)
a<={a[31:0],a[255:32]};
发表于 2010-4-29 13:06:21 | 显示全部楼层
都是正解。
发表于 2010-4-29 14:44:15 | 显示全部楼层
顶二、三楼的~~
发表于 2010-8-13 13:41:13 | 显示全部楼层
data <= {data[WIDTH - 1 - SWID:0], data[WIDTH - 1:WIDTH - SWID] };  

能解释下这个移位操作是怎么做到的吗,{}这个不是拼接操作吗?
发表于 2010-8-13 17:16:43 | 显示全部楼层
就是将高位的移位单元拼接到低位,这不就是实现了循环移位吗?
发表于 2010-8-14 22:39:48 | 显示全部楼层
楼上说的没错,可以实现移位,要是你不明白,自己假设一个环境就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-15 07:35 , Processed in 0.026086 second(s), 10 queries , Gzip On, Redis On.

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