verilog中的可变移位寄存器

Ale*_*lex 0 verilog

我想设计一个可变移位寄存器向右移位,如下所示:

module sr(N,int,out);

  input [2:0] N;
  input [7:0] in;
  output [7:0] out;

  assign out={N'b0,input[7,N]}

endmodule
Run Code Online (Sandbox Code Playgroud)

但是,不幸的是 verilog 不允许这种写法。N 应该是常数。关于如何从输入获得移位迭代的任何想法?

Pet*_*vaz 5

Verilog 有一个右移运算符,因此您可以简单地编写:

assign out = in >> N;
Run Code Online (Sandbox Code Playgroud)

额外的位自动用零填充。