module sreg_piso #(parameter N = 8)( input sys_clk, input sys_rst_n, input load, input [N - 1 : 0] D, output sout ); // 请在下面添加代码,完成8位并入串出移位寄存器(左移)的建模 // 代码量预计7行 /****** Begin ******/ /****** End ******/ endmodule
时间: 2023-06-29 11:08:45 浏览: 131
module sreg_piso #(parameter N = 8)(
input sys_clk,
input sys_rst_n,
input load,
input [N - 1 : 0] D,
output sout
);
reg [N-1:0] shift_reg;
assign sout = shift_reg[N-1];
always @(posedge sys_clk or negedge sys_rst_n) begin
if (~sys_rst_n) begin
shift_reg <= 0;
end else begin
if (load) begin
shift_reg <= D;
end else begin
shift_reg <= {shift_reg[N-2:0], 1'b0};
end
end
end
endmodule
注:以上代码实现的是并入串出移位寄存器(左移),即每当 sys_clk 上升沿到来,数据都会向左移动一位,最高位被新输入的数据所替换。同时,如果 load 信号为 1,那么 shift_reg 将被加载为输入的数据 D。
阅读全文