serial到serial的转并没有太大的实际意义,实际上相当于将数据延迟输入。以下是serial到serial转换的代码:
module s2s(clk,rstn,si,so);
input clk;
input rstn;
input si;
output so;
reg[8:0] r;
always@(posedge clk or negedge rstn)
if(!rstn)
r <= 9'h0;
else
r <= {r,si};
assign so = r[8]; // 这里相当于将数据如数据延时8个时钟后,遇到时钟上升沿时,将数据输出
endmodule
testbench 内容如下
module s2s_tb;
reg clk;
reg rstn;
reg si;
wire so;
s2s ut (clk,rstn ,si,so);
initial clk = 0;
always #5 clk = ~clk;
initial begin
rstn = 0;
#5;
rstn = 1;
end
initial begin
si = 0 ;
#10;
si = 1 ;
#10;
si = 0;
#10;
si = 1;
#10;
si = 1;
#10;
si = 0;
end
endmodule |