题解 | #并串转换#
并串转换
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
);
//*************code***********//
reg valid;
reg [3:0] din;
reg [1:0] counter;
always @(posedge clk, negedge rst) begin
if(!rst) begin
counter <= 0;
valid <= 0;
din <= 0;
end
else if(counter == 3) begin
counter <= 0;
valid <= 1;
din <= d;
end
else begin
counter <= counter + 1;
din <= {din[2:0], din[3]};
valid <= 0;
end
end
assign dout = din[3];
assign valid_in = valid;
//*************code***********//
endmodule
串并转换,就是一位一位输出多bit数据。 核心思想就是多bit数据移位。用counter表示多bit数据的位数,每次count都移位。valid信号意思是在此时接收输入信号,则我们在每次counter的最后一次接收信号,使valid为1。



