【发布时间】:2012-08-13 08:54:16
【问题描述】:
我想设计一个可变移位寄存器来右移如下:
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
但是,不幸的是,verilog 不允许这种写法。 N 应该是常数。 关于如何从输入中获取移位迭代的任何想法?
【问题讨论】:
-
我认为这是不允许的,因为随着参数变大,它会导致所需逻辑量呈指数级增长。您需要这个用于一般情况,还是只用于那个特定的小例子?对于 3 位 N,只需编写一个 switch 语句就很容易了。
-
@Tim - 仅仅因为逻辑很大,并不意味着它不应该被允许:)
-
如果我理解正确,你想要一个桶形移位器:stackoverflow.com/questions/7543592/verilog-barrel-shifter
-
您的原始代码有语法错误 (input[7,0]) 以及一堆不匹配的名称。请参阅我的答案以进行更正。
-
是的,这是一个虚拟代码,只是为了展示概念。
标签: verilog