Vrilog实现 4位移位寄存器 && 32位可控制方向移位寄存器

4位 位移位寄存器

​        其中ena为移位方向使能信号,当ena值为1时,实现右移寄存器;当ena值为2时,实现左移寄存器。d为输入端数据信号,q为输出端数据信号。

always @ (posedge clk or posedge rst) begin 
    if (rst) 
        q <= 4'd0; 
    else if (ena == 2'b01)//右移
        q <= {d[0],d[3:1]}; 
    else if (ena == 2'b10)//左移
        q <= {d[2:0],d[3]};
end

32位可控制方向移位寄存器 

其中ena为移位方向使能信号,当ena值为1时,实现右移寄存器;当ena值为2时,实现左移寄存器。d为输入端数据信号,q为输出端数据信号。

变量:

input clk
input rst
input [1:0] ena
input [31:0] d
output [31:0] q

module top_module(
    input               clk ,
    input               rst ,
    input       [1:0]   ena ,
    input       [31:0]  d   ,
    output  reg [31:0]  q
  );

//  模块代码

endmodule

实现1.(移位符

always @ (posedge clk ) begin 
  if (rst)
      q <= 32'd0; 
  else if (ena == 2'b01) 
      q <= d>>1 | d<<31;
  else if (ena == 2'b10) 
      q <= d<<1 | d>>31; 
end

实现2.(位拼接:{  , }

always@(posedge clk)begin
  if(rst)
    q <=0;
  else if (ena == 2'b01)//右移
      q <= {d[0],d[31:1]}; 
  else if (ena == 2'b10)//左移
      q <= {d[30:0],d[31]};
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值