16位移位寄存器设计与FPGA实现(逻辑左移、逻辑右移、算术右移、循环左移、循环右移)

module shift_reg
(
input clk,
input rst_n,
input Logic_L,//逻辑位移使能信号
input Arith_L,//算术位移使能信号
input Circu_L,//循环位移使能信号
output [15:0]data_0//输出数据
);
【16位移位寄存器设计与FPGA实现(逻辑左移、逻辑右移、算术右移、循环左移、循环右移)】
reg [15:0]data; //原数据
always@(posedge clk or negedge rst_n)
begin
if(~rst_n)
data<=0;
else
data<=16'b1010101010101010; //data_i;
end

reg Logic_L1,Arith_L1,Circu_L1; //使能信号打三排,消抖和为检测沿做准备
reg Logic_L2,Arith_L2,Circu_L2;
reg Logic_L3,Arith_L3,Circu_L3;

always@(posedge clk or negedge rst_n)
begin
if(~rst_n)
begin
Logic_L1<=0;
Arith_L1<=0;
Circu_L1<=0;

Logic_L2<=0;
Arith_L2<=0;
Circu_L2<=0;

Logic_L3<=0;
Arith_L3<=0;
Circu_L3<=0;
end
else
begin
Logic_L2<=Logic_L;
Arith_L2

    推荐阅读