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

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

3天内不再提示

全硬件TCP/IP协议栈学习笔记 (第八天:W5500+FPGA实现tcp连接)

学FPGA,慢慢来 2017-12-18 10:28 次阅读

经历了一个多月的调试,最终终于使用basys2将tcp模式配置成功了。

首先说一下思路吧,首先W5500的发送与接收与开发板的通信使用的是SPI协议,下降沿发送,上升沿接收。每次发送的数据格式为前十六位为地址位,之后五位为寄存器区的选块,例如常用的为5‘b00000为通用寄存器区,5’b00001为socket1寄存器区。接下来一位为读写操作位,0为读数据,1为写数据。接下来两位是SPI模式选择,00代表使用SCSN信号确定位宽,01代表一位字长(八个二进制数),10代表两位字长(十六个二进制数),11代表四位字长(32个二进制数)。随后便是和之前字长相匹配的数据位。格式如下:

0000000000000000_ 00000__1_01_00000000

地址位 寄存器区 写 一位字长 数据

在发送数据与接收数据的时候,要保证数据位和SCK信号沿对其,同时要保证SCSN为低电平。具体的SPI发送可以参考之前的博客。

说完了发送的格式,接下来我们来说一说发送的数据。

首先我们要明确我们要配置数据,我们要发送我们的IP,GATEWAY,MAC,端口以及目的IP,端口。实际上我们讲的发送应该是配置寄存器,我们是在将我们发送所必须的信息写入寄存器中。在发送数据之前我们要首先将我们W5500通过外边的接口硬复位,之后对模式寄存器进行读操作,直到模式寄存器的最低位为0时,即复位完成,我们在进行其他的写入操作。在复位结束之后,我们可以将IP,MAC,GATEWAY等数据写入对应的寄存器中,具体的寄存器地址和所属寄存器区具体参看W5500的手册,里边的东西都写的非常清楚。

在配置完成这些之后,我们对socket1 mode即1端口的模式选择寄存器进行书写,将W5500模式选择为TCP模式。具体的操作为将对应的后三位写入为001。之后再对该寄存器进行读操作,以此来确定模块却是在TCP模式运行。确认之后开始配置目标IP,端口,最大字长等信息。之所以先配置TCP模式是因为我们后边配置的寄存器都属于端口寄存器区,而我们在配置之前应先配置模式寄存器。

完成这些配置之后,我们来接触两个很特殊但是也很重要的寄存器,一个是CR寄存器,另一个是SR寄存器(原谅我平板打字实在不想写全称了)。在我们完成以上基础的寄存器配置之后,我们对CR寄存器写入对应特定的值,该值可以让模块进行对应的操作。而我们要知道该操作是否完成,我们就要对SR寄存器进行读操作,读出的对应值代表模块当前所处在的模式状态。如我们最初对CR寄存器写入值0x01,表示我们将模块设置为TCP,之后我们对SR寄存器进行读操作,如果读出的值是0x13,那么代表模块当前处在TCP客户端模式,我们即可进行下一步操作。我们之后再进行对应的操作,例如要将模块设置为侦听状态下,将CR寄存器写入0x04,读SR寄存器值为0x17即为处在侦听状态。接下来我们对发送区读指针寄存器读操作来获取当前读指针,随后根据读指针读出的数据将我们要发送的数据写入到发送缓存即可。这样就完成了数据的发送。

这样,我们将配置的大概思路讲完了。

设计模块如下

在具体书写时,我将SPI发送与接收写在了一个模块,而且发送与接收都只是发送8位和接收8位。SCSN信号是在该模块中产生,具体发送与接收都是使用状态机来书写,SCSN信号在发送第一位的时候拉低,最后一位发送结束之后拉高。(注意,是发送结束之后不是发送最后一位时就拉低。)SPI发送与接收部分就结束了,在书写时要注意接收条件为SCSN信号为低信号同时SCK信号的上升沿,发送的条件是SCSN信号为低同时SCK信号的下降沿。

8位发送数据波形如下

我们将要发送的信息写在一个状态机模块中,通过状态机来实现发送信息的按顺序发送。我们将每次发送的信息按照8位来拆解,想对应的想发送一位时就要发送总共32位,和下来就是发送四段。两位时发送五段,四位时发送7段。相应的读操作也是一样,由于我在我所做的项目中所需读的数据均为一个字长,即为8位,所以我只写了读一个字长的操作。拆解的过程就是移位加取高8位,另加一个计数器即可完成。而每次发送的触发信号即为上边的SPI控制模块在接受或者发送结束后发送的结束信号。当接收到发送或接收的结束信号,即可将下一个8位数据传输给SPI控制模块。

最后我写了一个同步FIFO来将几个拆分的几位数据合并。

合并之后波形如下

其实最初这个FIFO是用来救场的,由于最初书写的时候没有认真的研究说明书,想成每次发送8位,后来意识到这件事情的时候时间有些紧张,就想写一个FIFO来救个场,就过再后来做的时候,发现实际上是因祸得福,这种书写方式可以有效的减少资源,而且在SPI控制模块也会更加简单,在最后纠错时也好找错误字段。

到此,设计思路和配置思路均结束。这几天还是有些忙,稍后把仿真图补一下吧。等到元旦后期末结束了认认真真的将W5500数据传输从硬件连接到网络编程写一篇大报告分享出来。

最后,说个心声吧,从ping通到今天完成,足足过了5,6这五六周,有踌躇满志,更多的是茫然无措。但是我就决定一定要做出来。现在完成之后激动的都不想睡觉了抓紧时间总结发出来。代码量对于我来说感觉仿佛突破了自己,风格可能还很稚嫩,但是真的很有成就感。尤其是在一个问题卡住了2周多的时间结果一个偶然发现是配置管脚的UCF错了但时候,恨透了愚蠢的自己。这段时间的学习真的收获了太多了,感谢这段时间的自己。

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

    关注

    9

    文章

    428

    浏览量

    26510
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79055
收藏 人收藏

    评论

    相关推荐

    什么是socket编程 socket与tcp/ip协议的关系

    基于TCP/IP协议族,这是一组用于网络通信的协议,包括传输控制协议TCP)和互联网
    的头像 发表于 11-01 16:01 290次阅读

    w5500 作为tcp server,客户端异常发送【RST,ACK】断开连接问题

    测试1 w5500 作为tcp server,上位机labveiw程序作为clinet,正常第二次交互结束后,客户端发送一个【RST,ACK】报文断开了连接; (1)使用wireshark抓取
    发表于 10-14 14:01

    TCP协议是什么

    在网络通信的广阔领域中,TCP(Transmission Control Protocol,传输控制协议)扮演着举足轻重的角色。作为TCP/IP协议
    的头像 发表于 10-09 13:54 581次阅读

    EtherNet/IP主站转Modbus-TCP协议网关

    捷米特JM-EIPM-TCP网关实现连接EtherNet/IP设备和网络到Modbus TCP网络系统。该网关可
    的头像 发表于 09-25 11:49 233次阅读
    EtherNet/<b class='flag-5'>IP</b>主站转Modbus-<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>网关

    Linux网络协议实现

    网络协议是操作系统核心的一个重要组成部分,负责管理网络通信中的数据包处理。在 Linux 操作系统中,网络协议(Network Stack)负责
    的头像 发表于 09-10 09:51 299次阅读
    Linux网络<b class='flag-5'>协议</b><b class='flag-5'>栈</b>的<b class='flag-5'>实现</b>

    EtherNet/IP转Modbus-TCP协议网关(EtherNet/IP转Modbus-TCP

    /IP转Modbus TCP从站协议网关,可以实现对这些设备的集中管理和控制。 二,典型应用拓扑图 三,设备技术参数 捷米特JM-EIP-TCP
    的头像 发表于 09-04 11:09 390次阅读
    EtherNet/<b class='flag-5'>IP</b>转Modbus-<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>网关(EtherNet/<b class='flag-5'>IP</b>转Modbus-<b class='flag-5'>TCP</b>)

    串口服务器和TCP/IP协议是什么关系

    串口服务器与TCP/IP协议之间存在着紧密而复杂的关系。这种关系主要体现在串口服务器如何利用TCP/I
    的头像 发表于 08-25 17:35 1541次阅读

    一文了解TCP/IP协议

    TCP/IP协议是现代计算机网络通信的基础,是互联网及局域网广泛使用的一套协议TCP/IP
    的头像 发表于 08-07 15:38 1826次阅读
    一文了解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>

    华纳云:TCP IP协议的发展和优势

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是互联网和现代计算机网络的基础
    的头像 发表于 07-25 16:49 488次阅读

    TCP IP协议属性设置中的IP配置

    在现代网络中,TCP/IP协议是基础架构的重要组成部分。掌握TCP/IP协议属性设置中的
    的头像 发表于 07-23 10:10 489次阅读

    TCP/IP协议的设计与实现_中文

    电子发烧友网站提供《TCP/IP协议的设计与实现_中文.pdf》资料免费下载
    发表于 07-03 11:28 4次下载

    LwIP协议源码详解—TCP/IP协议实现

    电子发烧友网站提供《LwIP协议源码详解—TCP/IP协议实现.pdf》资料免费下载
    发表于 07-03 11:22 3次下载

    Microchip TCP/IP 协议应用笔记

    电子发烧友网站提供《Microchip TCP/IP 协议应用笔记.pdf》资料免费下载
    发表于 04-17 14:16 1次下载

    ethernetif_input和tcpip协议线程的作用

    tcpip协议线程是lwIP协议的核心线程,负责处理TCP/IP
    的头像 发表于 03-20 10:01 1316次阅读

    TCP/IP协议数据的处理流程

    TCP/IP协议的设计目标是提供一种通用、灵活且可扩展的协议体系,使得不同种类的设备和系统能够互相通信,实现互联网的互联互通。
    发表于 02-03 16:30 1593次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>数据的处理流程