并转串
首先将N位输入保存到寄存器中通过移位实现并转串
- 创建一个大小为 N 的寄存器数组,用于存储并行输入数据。
- 将 N 位的并行数据分别存储到寄存器数组的每一位上。这可以通过并行赋值操作或者分别对每一位进行单独的写入操作来实现。
- 创建一个输出端口,并将寄存器数组中的第一位数据输出到该端口。
- 对寄存器数组进行右移操作,将数据往后移动一位。
- 重复步骤 3 和步骤 4,直到将寄存器数组中所有的数据都输出到端口。
module palltoSerial#(
input clk,
input rst_n,
input [N-1:0]data,
output dout
);
reg [N-1:0] reg_r;
always@(posedge clk or posedge rst)begin
if(rst_n)begin
reg_r<=0;
end
else begin
reg_r<=data;
end
end
always@(posedge clk)begin
dout<= register[0]
reg_r<=reg_r>>1;
end
endmodule
串转并
- 创建一个大小为 N 的寄存器数组,用于存储并行输出数据。
- 创建一个输入端口,接收串行输入数据。
- 在时钟上升沿时,将串行输入数据存储到寄存器数组的最高位(第 N 位)。
- 对寄存器数组进行左移操作,将数据往前移动一位。
- 重复步骤 3 和步骤 4,直到将所有串行数据存储到寄存器数组中。
module ParallelToSerial ( input clk, input rst_n, input data, oupt [N-1:0] dout ); reg [N-1:0] reg_r; always @(posedge clk or posedge rst_n)begin if(rst_n)begin reg_r<=0; end else reg_r<=data; end always@(posedge clk)begin reg_r<=reg_r<<1; end assign dout<=reg_r; endmodule