FPGA PCIe 软核的实现——扒一扒复旦微、国微PCIe软核的实现
1、前言
近来复旦微、国微等厂家相继推出了可以兼容XILINX PCIe硬核的PCIe软核,销售也到所里来推广了一下,领导交代让抽自己的时间试用研究一下,看项目中用不用的起来。
读研的时候就接触过,PCIE协议非常非常复杂,要实现非常非常困难,稍微看过一些协议,看球不懂,真给这协议写出来,吊炸天。
复旦微作为国内首家正向FPGA做的比XILINX还牛逼的厂家,弄出来的PCIe软核肯定也是很了不得。国微则作为反向界的扛把子,真想看看这次这个PCIe软核是否和反向有关系。
2、IP初见
2.1 国微IP
国微的PCIe软核提供的是 edf 文件加上一个说明。
看看使用说明,就是告诉用户如何将.v 、.edf 替换原来的PCIE。使用简洁有效,国货之光啊。
2.2 复旦微IP
复旦微提供了整个的IP安装包,很专业,做的就像xilinx的IP一样。正向的就是不一样。
查看使用说明,这个 PCIe软核里还包含了一个DNA模块。使用说明就是告诉大家,这个IP该怎么用。
两个厂家的IP相比较, 还是复旦微的专业。能够在vivado界面里头调用,还能修改参数,和xilinx的一样。国微的使用方式就比较土了,很浓厚的反向的味道。
3、IP比较
对两家的PCIE IP都编译了一下,然后打开了网表查看了一下。国微的网表的结构:
PCIe软核的层级,比较清晰。查看module的名字,都是 fuji_modxx 这个命名很奇怪。。名字都是 xil_pcie_fuji_modxx ,这个有点是 xilinx 模块的味道了。
打开复旦微的IP综合后的网表:
发现复旦微的软核结构和国微的几乎一致。不过复旦微的PCIe软核名字是 fmsh_pcie_fuji_modxx。这个fmsh应该是复旦微的简写,看不到xil。复旦微还是走了心的,虽然后面 这个 _fuji_mod 比较扎眼 ,和国微的 似曾相识,但是工程师们还是正向开发了的,前缀名都换成了公司的名字。给力给力。
仔细对了一下两个IP的层级结构,虽然复旦微的模块名改了,但是基本上可以肯定,复旦微和国微的PCIe 软核 IP 就是一个东西。 国微的看着来自Xilinx,复旦微的大概率也是,不过改了名字了。
这两家的工程师不会存在泄密相互的IP吧?应该不会。。不过到底来自于xilinx的哪里呢?这该死的好奇心,继续往下扒。
4、意外发现
以前用PCIe硬核,会做仿真,会调用 仿真模型。 不过一般这个 vp 模块都是加密了的。
认识一个大神,能够解密xilinx的所有模块。 就拿 pcie的 vp的代码让大神解密了一下。结果。。。
xilin_pcie_fuji_mod19
原来这个 _fuji_mod 是仿真模型里头的啊。
国微的PCIe 软核来自于 Xilinx的PCIe仿真模型啊。
复旦微的PCIe 软核来自哪呢? 给 复旦微的代码,也拿去让大神解密了一下。。发现:
fmsh_pcie_fuji_mod19,一眼看起和仿真模型里头的 fuji_mod19 看起来就一样。复旦微的名字不同,注释更少。
再对比一下两个module里头的代码部分。
完全一样啊。。。
所以,复旦微的 PCIe 软核 IP,也是来自与Xilinx的仿真模型啊。不过改了名字。
改名后应该就和Xilinx的不一样了,和国微的也不一样,就是自主知识产权研发的正向IP。
5、其他PCIe软核调研
看了国微和复旦微的PCIe软核,又忍不住好奇去调研了一下国内现在的软核情况。
百度了一下:
FPGA PCIE软核 IP_soft pcie ip_FPGA_Linuxer的博客-CSDN博客
从描述看,这个PCIe 软核来自PLDA。 接口应该没办法和xilinx的一样。只能当成是pcie或者是dma用用。
基于 FPGA 的 PCIe IP 核简介_pcie硬核_三角芯科技的博客-CSDN博客
这家看不出来自于哪。不过看着lut、ff资源,和复旦微的差不多,一个妈妈?不得而知。。
6、小结
本文提供了一套思路,pcie的IP可以由仿真模型直接编译生成。相信不久过后,复旦微、国微、国内的大神们, pcie3.0/ pcie4.0 软核都会相继推出。通过对仿真模型的破解后作为ip,确实可以作为一条不错的路。正向反向破解仿制一起发力,我们的国产FPGA赶超美国指日可待~
本文仅作为八卦研究,请勿用于任何商业途径。有需要相关PCIe软核IP的可以联系我。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!