verilog 移位寄存器
示例
具有异步复位功能的N位深移位寄存器。
module shift_register #( parameter REG_DEPTH = 16 )( input clk, //时钟信号 input ena, //使能信号 input rst, //复位信号 input data_in, //输入位 output data_out //输出位 ); reg [REG_DEPTH-1:0] data_reg; always @(posedge clk or posedge rst) begin if (rst) begin //异步复位 data_reg <= {REG_DEPTH{1'b0}}; //加载REG_DEPTH零 end else if (enable) begin data_reg <= {data_reg[REG_DEPTH-2:0], data_in}; //将输入数据加载为LSB并将所有其他位左移 end end assign data_out = data_reg[REG_DEPTH-1]; //MSB是输出位 endmodule