在Verilog中,可以使用shift
運算符實現移位寄存器。以下是一個示例代碼:
module shift_register(
input wire clk,
input wire enable,
input wire reset,
input wire in,
output wire out
);
reg [7:0] reg_data;
always @(posedge clk or posedge reset) begin
if (reset) begin
reg_data <= 8'b0;
end else if (enable) begin
reg_data <= {reg_data[6:0], in};
end
end
assign out = reg_data[7];
endmodule
在上述代碼中,reg_data
是一個8位的寄存器,用來存儲數據。在每個時鐘上升沿,如果enable
為高電平,則將in
的值移入寄存器的低位,并將其它位按位向左移動一位。最后,將寄存器的最高位賦值給out
輸出。如果reset
為高電平,則寄存器被清零。
可以根據需要調整寄存器的位寬和移位方向,以適應不同的應用場景。