题解 | #并串转换#
并串转换
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。