大家好,又见面了,我是你们的朋友全栈君。
verilog变长移位寄存器
普通的移位寄存器可以按如下设置,下面是一个一次移动一位的移位寄存器。
代码语言:javascript复制module shift_stationary(
clk,
dat,
ctrl,
shift_out
);
input clk;
input [15:0]dat;
input [1:0]ctrl;
output reg [15:0] shift_out;
always@(posedge clk)
begin
case(ctrl)
2'b00:
begin
shift_out={
dat[14:0],1'b0};
end
2'b01:
begin
shift_out={
dat[14:0],dat[15]};
end
2'b10:
begin
shift_out={
dat[0],dat[15:1]};
end
2'b11:
begin
shift_out={
1'b0,dat[15:1]};
end
endcase
end
endmodule
如何根据输入来决定移位寄存器要移动几位?采用变长的移位寄存器:
代码语言:javascript复制module shift
(
clk,
dat,
shift_n,
lshift_out
);
input clk;
input [15:0]dat;
input [4:0]shift_n;
output reg [15:0] lshift_out;
always@(posedge clk)
begin
lshift_out=dat<<shift_n;
end
endmodule
可以根据输入值确定移动几位。以上的代码可以综合成功。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160454.html原文链接:https://javaforall.cn