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(8'h56);
        #200
        rx_bit(8'ha3);
        #200
        rx_bit(8'h55);
    end
    
//第二种方法
    task rx_bit(
        input [7:0] rx_data
    );
        integer i;//声明一个整数类型的变量
        for(i=0;i<10;i=i+1)begin
            case(i)
                0:rx=0;//起始位
                1:rx=rx_data[0];//第一个有效数据位
                2:rx=rx_data[1];//第二个有效数据位
                3:rx=rx_data[2];//第三个有效数据位
                4:rx=rx_data[3];//第四个有效数据位
                5:rx=rx_data[4];//第五个有效数据位
                6:rx=rx_data[5];//第六个有效数据位
                7:rx=rx_data[6];//第七个有效数据位
                8:rx=rx_data[7];//第八个有效数据位
                9:rx=1;//停止位
                default:rx=1;
            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_done==1--->别的模块可以正常使用rx_data
    );
endmodule

    
    
    
    
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值