UDP数据传输测试

UDP数据传输测试

  • 网络数据接口主要基于AXI_Stream接口,该接口主要包含5个主要的信号:

    1. tdata:待传输数据,位宽可变,可支持8bits ~ 64bits。

    2. tkeep:指定tdata中具体位置的字节是否有效。tdata为16bits,则tkeep为2bits,高位对应高字节,低位对应低字节。tkeep某一位为1则表示tdata对应位字节有效,否则无效。

    3. tvalid:数据有效信号,由主机(master)侧发起,该信号有效表示主机待发送数据有效。

    4. tready:接收有效信号,由从机(slave)侧发起,该信号有效表示从机可以接收该数据。

    5. tlast:最后一个数据信号,常用于传输一帧数据中,该信号有效表示对应的数据为该数据帧中的最后一个数据。

    6. tvalidtready为握手信号,当两者同时有效时传输一次数据。数据在 AXI-Stream接口的时钟信号上升沿传输。

    具体传输数据波形图如下。传输两次数据,在tvalidtready同时有效时、clk上升沿完成一次传输。tlast为高表示D1为最后一个数据。tuser为用户自定义信号。

                __    __    __    __    __    __    __    __    __
      clk    __/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__
                      _____ _________________
      tdata  XXXXXXXXX_D0__X_D1______________XXXXXXXXXXXXXXXXXXXXXXXX
                      _____ _________________
      tkeep  XXXXXXXXX_K0__X_K1______________XXXXXXXXXXXXXXXXXXXXXXXX
                      _______________________
      tvalid ________/                       \_______________________
             ______________             _____             ___________
      tready               \___________/     \___________/
                            _________________
      tlast  ______________/                 \_______________________
    
      tuser  ________________________________________________________ 
    
  • 本设计中以太网数据传输主要需要操作以下几个信号:

    1. tx_udp_payload_axis_tdata:待发送数据,位宽自定义,目前为8bits。

    2. tx_udp_payload_axis_tvaild:待发送数据有效信号,每发送一次数据,保持该信号为高电平。

    3. tx_udp_payload_axis_tlast:帧数据结束信号,当发送一帧数据中的最后一个数据时,将该信号置为有效。

    4. tx_udp_payload_axis_tuser:用户信号,可以不操作。

    5. tx_udp_hdr_valid:发送udp帧头数据。

    具体传输过程如下。需要先将hdr_valid(tx_udp_hdr_valid)置为有效以发送帧头部数据,待头部数据发送完成后在根据tvalid(tx_udp_payload_axis_tvaild)tready(tx_udp_payload_axis_tready)信号发送待传输数据。

                    __    __    __    __    __    __    __
      clk        __/  \__/  \__/  \__/  \__/  \__/  \__/  \__
                 ______________                   ___________
      hdr_ready                \_________________/
                          _____ 
      hdr_valid  ________/     \_____________________________
                          _____
      hdr_data   XXXXXXXXX_HDR_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                          ___________ _____ _____
      tdata      XXXXXXXXX_A0________X_A1__X_A2__XXXXXXXXXXXX
                          ___________ _____ _____
      tkeep      XXXXXXXXX_K0________X_K1__X_K2__XXXXXXXXXXXX
                          _______________________
      tvalid     ________/                       \___________
                                _________________
      tready     ______________/                 \___________
                                            _____
      tlast      __________________________/     \___________
    
      tuser      ____________________________________________
    

    另外以太网数据帧包含的mac地址ip地址端口数据长度等参数都需要在发送前指定好。本次测试设置参数如下:

    1. local_mac:48'h02_00_00_00_00_00,即02 00 00 00.

    2. dest_ip:{8'd192, 8'd168, 8'd1, 8'd10},目标IP为192.168.1.10.

    3. source_ip:{8'd192, 8'd168, 8'd1, 8'd128},本机IP为192.168.1.128.

    4. source_port:5000。必须指定,否则内部无法知道源端口。

    5. dest_port:8080。必须制定,否则内部无法知道目标端口。

    6. tx_udp_length:数据长度,这里为21。

  • 测试时由于ADC采样模块损坏无法使用,因此只用了固定长度的数据组进行发送。设定数据组长度为21,即从AU,采用ASCII码发送。板卡设定发送端口为192.168.1.128:5000,接收端口为192.168.1.10:8080,接收结果如下。上位机端基本上每1ms接收一次数据,基本达到操作系统数据处理的上限,因此测试时会有软件卡死的问题。
    test


本文章使用limfx的vscode插件快速发布