并行4bit计算CRC32的公式推导过程 FPGA做MAC功能,直接挂PHY芯片发送网络报文
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近花了一周时间调试这个功能,因为网上找的很多文章,包括MAC层协议说明与FPGA做CRC32算法的研究等,有些地方描述的不一致,导致调试的过程中走了很多弯路,特地把最近收集的以及自己思考的成果记录下来,如果有什么地方不对的,希望看到的人能指点一下。 一、FPGA做MAC首先就是与PHY的接口问题,常用的百兆接口有MII和RMII,传输速率一样,不过MII是4bit传输,时钟25M,而RMII是2bit传输,时钟是50M,这两种接口每秒钟传输的数据量一样,具体区别就不做介绍了。 我用的是MII接口,看PHY的芯片手册观察,操作大概就是25M的txc的下降沿,把使能en和数据txd赋值,上升沿的时候PHY芯片会锁存这些值并做处理。 二、其次FPGA做MAC与PHY通信上之后,需要遵循一定的协议,才能借助于PHY把想要发送的数据通过报文方式发送出去,这种协议就是MAC协议,也叫IEEE 802.3 a、引导码和定界字符,PHY在捕捉到7个字节101010....相间的二进制后,再捕捉一个字节的10101011,PHY就判断后面的数据就是6个字节的目标MAC,6个字节的源MAC,2个字节的报文类型等等。MAC层要求定界字符之后的内容要在64字节到1518个字节之间,其中包括14自己的目标和源MAC