`timescale 1ns/1ns module huawei5( input wire clk , input wire rst , input wire [3:0]d , output wire valid_in , output wire dout ); reg [3:0] temp; reg [2:0] count; reg out; always @(posedge clk or negedge rst) begin if(!rst) begin count<=0; end else begin count<= count==3'd4 ? 3'd1 : count+3'd1; end end assign valid_in= count==3'd4; always @(posedge clk or negedge rst) begin if(!rst) begin temp=4'd0; out<=0; end else begin temp<= count==3 ? d : temp; end end always @(*) begin case (count) 1 : out=temp[2]; 2 : out=temp[1]; 3 : out=temp[0]; 4 : out=temp[3]; default : out=0; endcase end assign dout=out; endmodule
`timescale 1ns/1ns module textbench(); reg clk,rst; reg[3:0] d; wire valid_in,dout; huawei5 u0 ( clk , rst , d , valid_in , dout ); always #5clk=~clk; initial begin rst=0; clk=0;d=0; #10 rst=1; #20 d=4'b1010; #20 d=4'b0110; #20 d=4'b1110; #150 $finish; end endmodule
仿真结果如下: