串行输入,并行输出,每8bit为一个字节输出。
使用3位寄存器cnt作为计数器,计数到7之后,cnt+1变成0;输出字节时,需要进行判断。
cnt = 1时,写入1位;cnt = 7时,写入了7位,所以cnt = 0输出字节。
verilog 代码如下:
module serial2pa(
input clk,
input rstn,
input din,
output [7:0] out_data
);
//msb first
reg [7:0] out = 8'd0;
reg [2:0] cnt = 3'd0;
always@(posedge clk)
begin
if (!rstn) begin
out <= 8'd0;
cnt <= 3'd0;
end
else begin
cnt <= 3'd1 + cnt;
out <= {out[6:0], din};
end
end
assign out_data=(cnt == 3'd0)? out:out_data;
endmodule