RTL代码:
module serial_parallel(
input clk,
input rst_n,
input en,
input data_in, //一位输入
output reg[7:0] data_out //8位并行输出
);
//移位寄存器方式
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
data_out <= 8'b0;
else if (en == 1'b1)
data_out <= {data_out[6:0], data_in}; //低位先赋值
else
data_out <= data_out;
end
//计数器方式
// reg [2:0]cnt;
//
// always @(posedge clk or negedge rst_n)begin
// if(!rst_n)begin
// data_out <= 8'b0;
// cnt <= 3'd0;
// end
// else begin
// data_out[7 - cnt] <= data_in;
// cnt <= cnt + 1'b1;
// end
// end
endmodule