[发明专利]一种基于FPGA的NVMe SSD PCIe数据包解析方法有效
| 申请号: | 201910420009.0 | 申请日: | 2019-05-20 |
| 公开(公告)号: | CN110134629B | 公开(公告)日: | 2021-12-10 |
| 发明(设计)人: | 张京超;刘旺;孟凡廓;朱凯晖;乔立岩;彭喜元 | 申请(专利权)人: | 哈尔滨工业大学 |
| 主分类号: | G06F13/40 | 分类号: | G06F13/40;G06F13/42 |
| 代理公司: | 哈尔滨市松花江专利商标事务所 23109 | 代理人: | 时起磊 |
| 地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 fpga nvme ssd pcie 数据包 解析 方法 | ||
1.一种基于FPGA的NVMe SSD PCIe数据包解析方法,其特征在于,所述基于FPGA的NVMeSSD PCIe数据包解析方法中需要解析的TLP包括读内存TLP和写内存TLP;且对于每个TLP均需要解析出其对应的格式信息、类型信息和长度信息;
其中:格式信息和类型信息用于确定对应的TLP的类型,长度信息用于确定对应的TLP的作用;
每个TLP的TLP参数均为一个16位2进制数,TLP参数的高8位为对应TLP的格式信息和类型信息,TLP参数的低8位为对应TLP的长度信息的低8位;
所述TLP参数包括5种类型;类型1的TLP参数表示为0x0010,类型2的TLP参数表示为0x0010或0x0004,类型3的TLP参数表示为0x0040,类型4的TLP参数表示为0x4020,类型5的TLP参数表示为0x4004;
所述类型2的TLP参数表示替换为0xad04/0xad10,0xad04/0xad10用于与类型1的TLP参数进行区分;
所述基于FPGA的NVMe SSD PCIe数据包解析方法,其具体包括以下步骤:
步骤一、FPGA接收到新的TLP后,将接收到的新TLP的编号信息缓存,并跳转至步骤二;
步骤二、判断当前TLP的格式和类型信息是否为0x00,若是,则跳转至步骤三,否则,跳转至步骤五;
步骤三、判断当前TLP的RxUser[2]是否为1,若是,则跳转至步骤四,否则,跳转至步骤五;
其中:RxUser[2]代表接收总线用户自定义信号的第2位;
步骤四、生成当前TLP的TLP参数为0xad04或0xad10,并跳转至步骤八;
步骤五、根据当前TLP的格式信息、类型信息和长度信息生成TLP参数,跳转至步骤六;
步骤六、判断当前TLP的TLP参数的类型是否为类型4或类型5,若是,跳转至步骤七,否则,跳转至步骤八;
步骤七、缓存当前TLP中的数据载荷,并跳转至步骤十;
步骤八、将当前TLP的TLP参数缓存在先进先出存储器中,跳转至步骤九;
步骤九、FPGA获取先进先出存储器中缓存的类型1,2或3的TLP参数,读取FPGA获取的TLP参数对应的数据,并向NVMe SSD发送完成报文,跳转至步骤十;
步骤十、结束。
2.根据权利要求1所述的一种基于FPGA的NVMe SSD PCIe数据包解析方法,其特征在于,所述RxUser[2]为1时,代表当前TLP的地址信息在PCIe BAR0地址区间范围内,否则,当前TLP的地址信息不在PCIe BAR0地址区间范围内。
3.根据权利要求2所述的一种基于FPGA的NVMe SSD PCIe数据包解析方法,其特征在于,所述当前TLP的地址信息通过当前TLP的长度信息和前一个TLP的地址信息计算得到,具体为:
Address(n+1)=4×Length(n+1)+Address(n)
其中:Address(n+1)代表当前TLP的地址信息,Length(n+1)代表当前TLP的长度信息,Address(n)代表前一个TLP的地址信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910420009.0/1.html,转载请声明来源钻瓜专利网。





