verilog变长移位寄存器
普通的移位寄存器可以按如下设置,下面是一个一次移动一位的移位寄存器。
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
如何根据输入来决定移位寄存器要移动几位?采用变长的移位寄存器:
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<
end
endmodule
可以根据输入值确定移动几位。以上的代码可以综合成功。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/130793.html