FPGA rx串口的仿真代码

📅 发布时间:2026/7/5 21:12:32 👁️ 浏览次数:
FPGA rx串口的仿真代码
timescale 1ns / 1ps //rx always语句块的仿真 module tb_rx( ); reg sysclk ; reg rst_n ; reg rx ;//数据线 wire [7:0] rx_data ; wire rx_done ; always #10 sysclk~sysclk; //第一种方法数据传输 // initial begin // sysclk 0; // rst_n 0; // rx 1; // #101 // rst_n 1; // #200 // rx 0;//起始位 // #(5208*20) // rx 1;//有效数据位第一位 // end initial begin sysclk 0 ; rst_n 0 ; rx 1 ; #101 rst_n 1 ; #200 rx_bit(8h56); #200 rx_bit(8ha3); #200 rx_bit(8h55); end //第二种方法 task rx_bit( input [7:0] rx_data ); integer i;//声明一个整数类型的变量 for(i0;i10;ii1)begin case(i) 0:rx0;//起始位 1:rxrx_data[0];//第一个有效数据位 2:rxrx_data[1];//第二个有效数据位 3:rxrx_data[2];//第三个有效数据位 4:rxrx_data[3];//第四个有效数据位 5:rxrx_data[4];//第五个有效数据位 6:rxrx_data[5];//第六个有效数据位 7:rxrx_data[6];//第七个有效数据位 8:rxrx_data[7];//第八个有效数据位 9:rx1;//停止位 default:rx1; endcase #(5208*20);//传输一个bit需要的时钟周期 end endtask rx rx_u( . sysclk ( sysclk ) ,//系统时钟 . rst_n ( rst_n ) ,//复位 . rx ( rx ) ,//一根数据线--传输串行输入数据一个bit一个bit的输入进来数据的 . rx_data ( rx_data ) ,//输出有效数据位并行打包输出 . rx_done ( rx_done ) //拍手信号握手信号---作用是意味着一帧数据传输完成 rx_done1---别的模块可以正常使用rx_data ); endmodule