0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ZYNQ SOC案例开发:网络调试助手+W5500协议栈芯片

电子设计 来源:博客园 作者:没落骑士 2020-12-31 11:54 次阅读

在上一篇该系列博文中讲解了MATLAB待处理数据写入.bin二进制数据文件的过程,接下来需要将数据通过以太网发送到ZYNQ验证平台。之前了解过Xilinx公司面向DSP开发的System Generator可以通过硬件仿真的方式,进行算法板级验证。一个是本人不熟悉这种方式,再一个缺乏通用性,也无法在系统层面进行硬件验证。当然方案有很多,熟悉上位机的朋友完全可以自己写个软件完成数据传输和算法结果对比等功能。

这里选择最简单的方案:在上位机通过网络调试助手将数据打包并发送至以太网端口,ZYNQ端利用W5500硬件协议栈芯片解析数据。有人可能会说用ZYNQ这么高端的设备还使用外接协议栈芯片连接以太网真是浪费,这里就算是开个头吧,只能说根据能力和现有条件选择传输方案。如果数据量较大的场合,可考虑用LWIP开源协议栈或直接利用verilogHDL编写UDP/IP协议和MAC控制器的方式实现1000Mbps速率传输。

本文主要总结内容包括:TCP协议基础 网络调试助手应用事项,以及W5500的驱动移植。为了保证数据正确性,选用TCP这一可靠传输协议。以下介绍两个比较浅显易懂的博文,供没有网络和TCP协议基础的朋友参考。(见参考链接1 2)

有了以上基础知识,我们就可以正确配置网络参数了。查看W5500驱动中网络参数配置部分代码:
void Load_Net_Parameters(void) {
//加载端口0的工作模式,TCP客户端模式
S0_Mode = TCP_CLIENT; //UDP_MODE

Gateway_IP[0] = 192; //加载设备网关参数
Gateway_IP[1] = 168;
Gateway_IP[2] = 90;
Gateway_IP[3] = 1;

Sub_Mask[0] = 255; //加载设备子网掩码
Sub_Mask[1] = 255;
Sub_Mask[2] = 255;
Sub_Mask[3] = 0;

Phy_Addr[0] = 0x0c; //加载设备物理地址(mac)
Phy_Addr[1] = 0x29;
Phy_Addr[2] = 0xab;
Phy_Addr[3] = 0x7c;
Phy_Addr[4] = 0x00;
Phy_Addr[5] = 0x01;

IP_Addr[0] = 192; //加载本设备(FPGA端)IP地址
IP_Addr[1] = 168;
IP_Addr[2] = 90;
IP_Addr[3] = 199;
//加载设备端口0(socket 0)的端口号5000
S0_Port[0] = 0x13; //十六进制 1388转换成十进制为5000
S0_Port[1] = 0x88;

//设定的是客户端模式
if(S0_Mode == TCP_CLIENT)
{
//加载端口0的目的(如调试用的pc机)IP地址
S0_DIP[0] = 192;
S0_DIP[1] = 168;
S0_DIP[2] = 90;
S0_DIP[3] = 188;

//加载端口0的目的(如调试用的pc机)端口号6000
S0_DPort[0] = 0x17;
S0_DPort[1] = 0x70;
}

//设定的是UDP模式,初始化给一个目的IP和端口号。
if(S0_Mode == UDP_MODE)
{
//加载端口0的目的(如调试用的pc机)IP地址
UDP_DIPR[0] = 192;
UDP_DIPR[1] = 168;
UDP_DIPR[2] = 90;
UDP_DIPR[3] = 188;
//加载端口0的目的(如调试用的pc机)端口号6000
UDP_DPORT[0] = 0x17;
UDP_DPORT[1] = 0x70;
}
}

此处将PC端作为TCP协议中服务器,ZYNQ验证平台视为客户端,即为“呼叫端”。由代码看出PC端IP地址为192.168.90.188,子网掩码应设为:255.255.255.0,这样ZYNQ与PC端在一个子网内,可直接通过网线连接。 端口号为6000。驱动中包含W5500 SPI用户接口时序部分代码,可简单修改调用本人的博文《ZYNQ EMIO使用及可重用封装》中的EMIO接口函数(见参考链接3)。

根据上面参数配置好PC端的IP地址 子网掩码后,我们来看下网络调试助手的“坑”。

o4YBAF9uKYWAYGM7AAG3E_-d-Iw518.png

基本使用没什么可说的,网上教程很多。关键是画红框的部分。这里的发送周期要尽量设置大些,因为整个数据文件会被切割成多个数据包,每个包的发送和允许重传时间由总的发送周期分配得到。如果文件较大,发送周期又设置的较小,会导致后半部分被丢弃(所设置时间只够传输文件的前半部分)。RX方向接收数据时选择接收转向文件,注意两点:1 接收文件的扩展名同样要为.bin 2 不要选择十六进制显示,否则接收数据会变成字符串(可能是软件bug)。

W5500的C语言驱动基于网上流传的STM32版本代码。其中应用API为Process_Socket_Data中的发送和接收函数:Write_SOCK_Data_Buffer Read_SOCK_Data_Buffer。两者内部控制读写指针偏移以及调用SPI接口函数完成数据传输,此处不进行详述,关于W5500的C语言驱动可看教程视频(见参考链接4)。最后附上环回数据的demo效果:

pIYBAF9uKYeAbG1OAAKTv_cMx78744.png

对于网络传输部分的总结就到这里,后边可能会考虑利用LWIP完成高速传输。数据传到ZYNQ了,下一步当然是先缓存起来,再发送到PL端验证算法模块,这样做的好处是可以interwetten与威廉的赔率体系 实时数据流,比如验证通信算法和视频处理算法时尤为适用。华丽分割线

编辑:hfy


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Xilinx
    +关注

    关注

    71

    文章

    2167

    浏览量

    121384
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136791
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79068
  • 子网掩码
    +关注

    关注

    2

    文章

    41

    浏览量

    11025
  • 网络传输
    +关注

    关注

    0

    文章

    138

    浏览量

    17399
收藏 人收藏

    评论

    相关推荐

    使用W5500模块实现DHCP协议,请教一个问题

    W5500模块发送DHCP协议中的Discovery数据,抓包工具抓到了Offer数据,但模块却收不到。使用网络调试助手,UDP模式下,收
    发表于 10-16 15:40

    新华龙电子推出最新网络开发板(W5100&W5500方案)

    方案。  软件方面深圳新华龙电子有限公司提供了丰富的代码资源供用户评估。  网络开发板布局:芯片特性:1、W5500全硬件TCP/IP协议
    发表于 12-17 17:22

    WIZnet W5500的特点和应用介绍

    ),使得用户使用单芯片就能够在他们的应用中拓展网络连接。支持TCP,UDP,IPv4,ICMP,ARP,IGMP以及PPPoE协议W5500内嵌32K字节片上缓存以供以太网包处理。
    发表于 05-05 13:28

    什么是网络卸载?W5500中文资料

    。因此, WIZnet网络芯片可以被视作为一个MCU的协处理器。即:帮助主芯片处理一部分工作,从而降低主系统负载,降低开发难度,提高稳定性。W550
    发表于 06-11 14:30

    W5500模块的使用

    以太网芯片w5500是WIZnet公司研发的一款超高性价比的芯片,是新一代全硬件协议的专用芯片
    发表于 05-25 17:10

    基于FPGA和W5500的以太网传输系统实现

    区和接收缓存区存储用于数据传输。无需考虑协议内部各层关系,不涉及操作系统,只需要正确配置就可以实现网络连接,接口电路简单、编程灵活方便。本设计从成本控制和实现周期来考虑,采用了以W5500芯片
    发表于 08-07 10:10

    w5500 UDP模式网络调试助手发送数据>1472,收不到数据??

    设置UDP模式,socket接收和发送设置2k,使用网络调试助手,单次发送数据1472个字节,W5500接收不到数据。比如我单次发送1473个字节,上位机应该是分成2帧发送,还是说现在
    发表于 10-12 17:24

    W5500以太网芯片分享!

    w5500 集成硬件TCPIP协议,内置MAC/PHY,开发容易,使用简单。适用于,医疗、安防、工业、智能家居、智能电表等物联网领域。特点及优势全硬件TCP/IP
    发表于 09-26 19:33

    w5500 UDP

    w5500 UDP模式下用网络调试助手发送数据>1472,收不到数据?
    发表于 12-19 16:54

    使用w5500芯片网络通信

    W5500网关芯片 随笔最新在使用w5500芯片网络通信时 ,遇到一个问题,如果创建两个线程,一个线程 创建一个socket 进行局域网
    发表于 01-13 07:33

    W5500数据手册(中文资料PDF版免费下载)

    w5500是WIZnet公司研发的一款超高性价比的芯片,是新一代全硬件协议的专用芯片,不需要进行植入的软件
    发表于 10-23 13:56 0次下载

    w5500原理图_w5500电路图

    W5500是WIZnet推出的高性能以太网接口芯片系列之一,内部集成全硬件TCP/IP协议+MAC+PHY。全硬件协议
    发表于 10-23 19:14 5.5w次阅读
    <b class='flag-5'>w5500</b>原理图_<b class='flag-5'>w5500</b>电路图

    W5500以太网控制芯片的数据手册免费下载

    以太网控制芯片 W5500 在内部利用硬件实现了 TCP/IP 协议,即内部结构包含了物理层、数据链路层、网络层和传输层。全硬件 TCP/
    发表于 09-02 08:00 3次下载
    <b class='flag-5'>W5500</b>以太网控制<b class='flag-5'>芯片</b>的数据手册免费下载

    W5500芯片数据手册

    W5500芯片数据手册
    发表于 12-10 16:29 65次下载

    W5500 数据手册中文资料

    W5500是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。W5500集成了TCP/IP 协议,10/100M以太网数据链路层(MAC)及物
    发表于 01-06 16:58 19次下载