题解 | #并串转换#
并串转换
https://www.nowcoder.com/practice/296e1060c1734cf0a450ea58dd09d36c
`timescale 1ns/1ns module huawei5( input wire clk , input wire rst , input wire [3:0]d , output wire valid_in , output wire dout ); reg valid; reg [3:0]din; reg [1:0]cnt; reg [1:0]state; reg data; reg en; always@(posedge clk or negedge rst)begin if(!rst) cnt<=0; else if(cnt==3) cnt<=0; else cnt<=cnt+1; end always@(posedge clk or negedge rst)begin if(!rst) valid<=0; else if(cnt==3) valid<=1; else valid<=0; end always@(posedge clk or negedge rst)begin if(!rst) din<=0; else if(cnt==3) din<=d; else din<=din; end always@(*)begin if(!rst) data=0; else case(cnt) 0:data=din[3]; 1:data=din[2]; 2:data=din[1]; 3:data=din[0]; endcase end assign valid_in=valid; assign dout=data; //*************code***********// //*************code***********// endmodule
观察时序图,发现数据有效是在复位信号到来后数4个时钟数据才有效,且到四个时钟的时候才进行数据的并转串。数据是在每第四个时钟到的时候才发生变化,因此需要缓存