基于FIFO的异步数据传输模块题目要求:设计一个基于 FIFO(先入先出)原则的异步数据传输模块。该模块应能够接收一个输入数据流,并按顺序传送到输出。模块应能够处理数据的存取、发送等操作。功能要求:• 输入:时钟信号 clk_in(输入时钟),clk_out(输出时钟),数据输入 data_in 和写使能信号 write_en。• 输出:数据输出 data_out 和读使能信号 read_en。• 该FIFO具有存储深度为8的缓冲区,能够存储最多8个数据。测试平台(testbench):module FIFO_tb;reg clk_in, clk_out, write_en;reg [7:0] data_in;wire [7:0] data_out;wire read_en;FIFO uut (.clk_in(clk_in),.clk_out(clk_out),.write_en(write_en),.data_in(data_in),.data_out(data_out),.read_en(read_en));initial beginclk_in = 0; clk_out = 0; write_en = 0; data_in = 8'b0;#10 write_en = 1; data_in = 8'b11001100; // 写入数据#20 write_en = 1; data_in = 8'b10101010; // 写入数据#30 write_en = 0; // 停止写入#50 $finish;endalways #5 clk_in = ~clk_in; // 输入时钟always #10 clk_out = ~clk_out; // 输出时钟endmodule