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

    文章

    425

    浏览量

    26273
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1271

    浏览量

    78290
收藏 人收藏

    评论

    相关推荐

    Microchip TCP/IP 协议栈应用笔记

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

    tcp/ip协议包含哪几层?tcp和udp有什么区别?

    tcp/ip协议包含哪几层?tcp和udp有什么区别? TCP/IP
    的头像 发表于 11-29 17:40 567次阅读

    TCP协议连接状态

    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程
    的头像 发表于 11-13 15:47 564次阅读
    <b class='flag-5'>TCP</b><b class='flag-5'>协议</b>的<b class='flag-5'>连接</b>状态

    TCP协议详细解析

    TCPTCP/IP协议族中一个最核心的协议,它向下使用网络层IP
    的头像 发表于 11-03 09:14 1695次阅读
    <b class='flag-5'>TCP</b><b class='flag-5'>协议</b>详细解析

    TCP/IP 协议通信接口的实现

    电子发烧友网站提供《TCP/IP 协议通信接口的实现.pdf》资料免费下载
    发表于 10-26 09:21 1次下载
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b> <b class='flag-5'>协议</b>通信接口的<b class='flag-5'>实现</b>

    基于PIC单片机的TCP/IP协议实现

    电子发烧友网站提供《基于PIC单片机的TCP/IP协议实现.ppt》资料免费下载
    发表于 10-20 10:03 1次下载
    基于PIC单片机的<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>栈<b class='flag-5'>实现</b>

    TCP/IP协议是什么?TCP/IP参考模型的结构是怎样的?

    TCP/IP协议组在OSI模型之前流行。最初的TCP/IP有四层,显然与OSI模型的层不匹配。当OSI模型被引入时,人们相信它将在商业上压倒
    的头像 发表于 08-11 15:26 1433次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>是什么?<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>参考模型的结构是怎样的?

    TCP/IP协议不止是两个协议

    TCP/IP(TransmissionControlProtocol/InternetProtocol,传输控制协议/网际协议)是指能够在多个不同网络间
    的头像 发表于 07-31 23:07 788次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>不止是两个<b class='flag-5'>协议</b>

    TCP/IP协议进阶课程:6、TCP协议

    电子发烧友网站提供《TCP/IP协议进阶课程:6、TCP协议.pdf》资料免费下载
    发表于 07-31 11:47 1次下载
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>进阶课程:6、<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>

    初级课程-tcp ip协议

    电子发烧友网站提供《初级课程-tcp ip协议.pdf》资料免费下载
    发表于 07-31 11:04 0次下载
    初级课程-<b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>协议</b>

    TCP/IP协议包括哪些协议 一文详解TCP/IP协议

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间
    发表于 07-21 09:56 6585次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>包括哪些<b class='flag-5'>协议</b> 一文详解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>

    TCPIP协议详解

    此文档详细讲述了TCP-IP协议内容,有想了解的可以看看,丰富自己的知识。
    发表于 07-13 14:25 2次下载

    网络通信OSI协议TCP/IP协议

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间
    发表于 05-06 17:06 1803次阅读

    TCP/IP协议的组成

    TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议
    发表于 05-06 15:05 1811次阅读

    什么是TCP/IP协议

    TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/网际互联协议,又名网络通讯
    发表于 05-06 15:01 2548次阅读