查看: 1294|回复: 0

Spartan_6 LX9 试用-网口篇(上)

[复制链接]
  • TA的每日心情
    开心
    2016-12-22 22:43
  • 签到天数: 157 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-10-24 08:51:14 | 显示全部楼层 |阅读模式
    分享到:
    本次笔者为诸位带来的Spartan_9 LX9开发板上网口的实现,这也是上机操作的第一步,为什么这个网口作为第一步呢,其实很简单,搞一个东西首先第一步还是要把通讯搞通,方便交流,其实跟你去外国先学语言是一个道理。闲话少叙,待笔者喝口水,咱们马上开讲。。。。
           首先看看这物理结构,一个25Mhz无源晶振,一个Mag45(或者叫RJ45插座)这玩意儿什么结构?还请各位看官自行百度,虽说是生活中很常见的,笔者也啰嗦一句,请百度一波,不然回头人家问你,RJ45电气特性啥的,内部结构啥的,你不知道,那不是露了窃了,丢了脸笔者可不认,,,扯远了,这网口部分还有一个最重要的物理层芯片,Ti产的DP83848J芯片,,,什么啥叫物理层?还是那句老话,自行百度(笔者没有打广告的嫌疑,只是希望诸位看官多锻炼锻炼身体,养成好习惯!!!)说了那么多,咱还是贴上一张图,方便各位看官有个直观了解。

           诸位看官别吐槽我拍官网给的文档,我只是觉得官网拍照的相机好些。。。。
           实物看完了,笔者再给诸位贴上一张网口模块的原理图,看不清楚?那我没招了,在笔者开箱贴中,贴出了开发板原理图的原理图连接,自行下载获取吧。这是开箱贴的链接https://jingyan.eeboard.com/article/75513

    file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip11clip_image001.png主要也就是笔者上面说的RJ45接口,物理层芯片DP83848J,25Mhz 无源晶振,以及与FPGA芯片的引脚接口了。这些没太多可说的,其实芯片手册的也会详细给各位看官说明,笔者只是资料的搬运工。最后笔者再多嘴一句,,你看看人家安富利公司出原理图真心不错,人家连去耦,滤波电容PCB布局时怎么摆放注意事项都标注好了。笔者这里手动点赞...

    好,硬件咱们暂时就到这里,什么?觉得不够?那自己找资料补充去。。。。既然硬件部分咱们先告一段落,接下来咱们当然就做点软件的先行准备了,知己知彼才能百战不贷....所以诸位要想好好的使用它,那就去它的老家(官网),找到它的资料了,所以下面笔者就将TI官网的链接贴出了,方便各位看官查找,下载。(看这服务态度!!!为诸位看官能搞到干货,笔者也是操碎了心啊。。。。诸位看官链接在下面,顺手点点看啊!!!)
    https://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=DP83848J#linkId=1&src=top
    现在,该有的文档咱也有了,该有的基本的资料咱也有了,咱就来看看。。。。

           上图是MII与FPGA的数字接口以及具体意义,剩余文档笔者就不带着诸位看官看了(什么?你有意见?诸位看官还请饶过笔者吧,文档还得自行搞定的),咱就开门见山,开始搞事情。前面笔者已经说过了,这其实是一款单端口的物理层收发器,它只有一个MII/SNI(媒体独立接口/串行网络接口)接口。它实现了全部的10/100M以太网物理层功能,包括物理层编码子层(PCS),物理层介质连接设备(PMA),双绞线物理媒介相关子层(TP-PMD),10Base-Tx编解码和双绞线媒介访问单元(TPMAU)。所以咱们其实不需要对芯片进行太多的配置,直接按IP网络协议进行协议数据包的配置就行了。。。。。所以咱们说到这里了,聪明的看官可能已经猜到了笔者接下来要讲啥了。
           没错,此次将采用UDP的传输协议。什么?你问为啥用UDP,而不用TCP,UDP不可靠,等等…其实不然对于FPGA的并行操作特点,如果写TCP这种的话,累死笔者吧,这只是个开发板的使用贴,不是项目,留个活路…而且,UDP也不像你的认为的那么不可靠。SO笔者接下来要讲解的就是UDP数据包格式。下图为UDP的报文头格式,基本的数据包开头,源机,目标机之间的物理地址,IP地址等等。。。此处如果详细讲的话,笔者估计累死了。。。所以还是请诸位去百度科普吧。。笔者贴上两个张图。。。。


    有人问,笔者为啥贴两张图。因为第二张图清晰标明了又多少字节等等信息,但是第二张图并没有报文字头字节。而第一张图有这个首字节。而第一张图笔者看着也是觉得不那么清晰,所以粘两张图。各位看官,注意了!!!这个报文字头字节,笔者之前查阅资料在很多地方都没查清楚,也只有些只言片语的介绍。所以大家打起精神,记住它。笔者还是简单贴个图说明一下吧。仔细想了想,诸位看官只看一个表格,没个简单的文字说明,貌似也有些过分,不免有些偷懒嫌疑,那好吧,笔者将之前查阅资料总结UDP各个部分,以及字节,作用等等贴出,,,避免大家头大。这可是笔者一个字一个字总结的,纯干货。。。。不识货的自己洗眼睛去......
    0x55(7byte),0xd5(1byte)此为UDP包文件包头;
    Src MAC (6byte)源MAC地址;
    Dst MAC (6byte)目的MAC地址;
    Length/type (2byte)长度或者类型
    Version/Header Length(1byte)IP协议版本号,一般0100(IPV4)   但是例程采用累加。。。
    Type of service (1byte)服务类型
    Heather Checksum (2byte)头文件校验和,具体计算放法入下
    Src IP (4byte)源IP地址,当然可以人为分配
    Dst IP (4byte)目的IP地址,人为分配
    Src port (2byte)源端口号,人为分配,可以与目的端口号一致
    Dst IP (2byte)目的端口号,人为分配。
    Length(2byte)数据包长度,但是此处应注意这长度包含了UDP   数据报头长度,其中伪首部12byte,首部8byte,   因此,实际数据长度应该是Length - 20 byte
    checksum(2byte)校验和
    数据发送的数据
    所以,以上的码代码之间的准备,笔者就与诸位看官一起,准备的比较全面了。咱们硬件分析了,软件结构,流程也应该大概有个底了,之后能就能进行软件方面的设计了,,,鉴于网口篇篇幅较长,笔者决定分上下两篇。什么?觉得笔者估计拖沓,多发帖子?诸位看官,咱们讲道理,咱们开发一个模块是不是应该从硬件,芯片手册等全都了然于胸,才能搞定这个模块的设计呢?回答否的自己面壁去,真不知道平时开发怎么做的。。好了笔者也口水乱洒了半天,,还请诸位看官看完适当提点意见,彼此进步才是和谐社会吧,,那咱们下回接着说。。。。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 16:27 , Processed in 0.122328 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.